10 interesting stories served every morning and every evening.
I’m very excited to announce that I have recently joined Turso as a software engineer. For many in the field, including myself, getting to work on databases and solve unique challenges with such a talented team would be a dream job, but it is that much more special to me because of my unusual and unlikely circumstances. As difficult as it might be to believe, I am currently incarcerated and I landed this job from my cell in state prison. If you don’t know me, let me tell you more about how I got here.
Nearly two years have passed since I published How I got here to my blog. That post was my first real contact with the outside world in years, as I’d been off all social media and the internet since 2017. The response and support I would receive from the tech community caught me completely off guard.
A brief summary is that I’m currently serving prison time for poor decisions and lifestyle choices I made in my twenties, all related to drugs. Three years ago, I enrolled in a prison college program that came with the unique opportunity to access a computer with limited internet access. This immediately reignited a teenage love for programming and a lightbulb immediately lit up: that this would be my way out of the mess I had gotten myself into over the past 15 years. I quickly outgrew the curriculum, preferring instead to spend ~15+ hours a day on projects and open source contributions.
Through fortunate timing and lots of hard work, I was selected to be one of the first participants in the Maine Dept of Correction’s remote work program, where residents who meet certain requirements are allowed to seek out remote employment opportunities. I landed a software engineering job at a startup called Unlocked Labs building education solutions for incarcerated learners, while contributing to open source on the side. After just a year, I was leading their development team.
Last December I was between side-projects and browsing Hacker News when I discovered Project Limbo, an effort by Turso to rewrite SQLite from scratch. I’d never worked on relational databases, but some experience with a cache had recently sparked an interest in storage engines. Luckily for me I saw that the project was fairly young with plenty of low hanging fruit to cut my teeth on.
To put this entirely into perspective for some of you may be difficult, but in prison there isn’t exactly a whole lot to do and programming absolutely consumes my life. I either write code or manage Kubernetes clusters or other infrastructure for about 90 hours a week, and my only entertainment is a daily hour of tech/programming YouTube; mostly consisting of The Primeagen, whose story was a huge inspiration to me early on.
Through Prime, I had known about Turso since the beginning and had watched several interviews with Glauber and Pekka discussing their Linux kernel backgrounds and talking about the concept of distributed, multi-tenant SQLite. These were folks I’d looked up to for years and definitely could not have imagined that I would eventually be in any position to be contributing meaningfully to such an ambitious project of theirs. So needless to say, for those first PR’s, just the thought of a kernel maintainer reviewing my code had made me quite nervous.
Helping build Limbo quickly became my new obsession. I split my time between my job and diving deep into SQLite source code, academic papers on database internals, and Andy Pavlo’s CMU lectures. I was active on the Turso Discord but I don’t think I considered whether anyone was aware that one of the top contributors was doing so from a prison cell. My story and information are linked on my GitHub, but it’s subtle enough where you could miss it if you didn’t read the whole profile. A couple months later, I got a Discord message from Glauber introducing himself and asking if we could meet.
In January, Glauber’s tweet about our interaction caught the attention of The Primeagen, and he ended up reading my blog post on his stream, bringing a whole lot of new attention to it.
To this day I receive semi-regular emails either from developers, college kids or others who maybe have either gone through addiction or similar circumstances, or just want to reach out for advice on how to best start contributing to open source or optimize their learning path.
I’m incredibly proud to be an example to others of how far hard work, determination and discipline will get you, and will be forever grateful for the opportunities given to me by the Maine Dept of Corrections to even be able to work hard in the first place, and to Unlocked Labs for giving me a chance and hiring me at a time when most assuredly no-one else would.
I’m also incredibly proud to announce that I am now working for Turso full time, something I would never have dreamed would be possible just a few years ago, I’m very excited to be a part of the team and to get to help build the modern evolution of SQLite.
Although some recent bad news from the court means that I won’t be coming home as early as my family and I had hoped, my only choice is to view this as a blessing and for the next 10 months, will instead just be able to continue to dedicate time and focus to advancing my career at such a level that just wouldn’t be possible otherwise.
Thank you to everyone who has taken the time to reach out over the past couple years, to my team at Unlocked Labs, and especially my parents. Thanks to Turso for the opportunity and to all the other companies with fair chance hiring policies who believe that people deserve a second chance. This journey has been totally surreal and every day I am still in awe of how far my life has come from the life I lived even just a few years ago.
...
Read the original on turso.tech »
Thanks to war, geopolitics, and climate change, Europe will have more frequent and more severe internet
disruptions
in the very near future. Governments and businesses need to prepare for catastrophic loss of communications. Unfortunately, the necessary changes are risky and expensive, which means they won’t do it until a
crisis is already here. However, small groups of volunteers with a little bit of time and money can provide crucial initial leadership to bootstrap recovery.
An Internet Resiliency Club is a group of internet experts who can communicate with each other across a few kilometers without any centralized infrastructure using cheap, low-power, unlicensed
LoRa radios and open source
Meshtastic text messaging software. These volunteer groups can use their radios, technical skills, and personal connections with other experts to restore internet connectivity.
This page is a quick-start guide to forming your own Internet Resiliency Club. You can also join a mailing
list for general questions and discussion about internet resiliency clubs:
I am Valerie Aurora, a systems software engineer with 25 years of experience in open source software, operating systems, networking, file systems, and volunteer organizing. When I moved from San Francisco to Amsterdam in 2023, I started looking for ways to give back to my new home. In addition to systems consulting, I am a special rapporteur for the EU’s Cyber Resilience Act, serve as a RIPE Meeting program committee member, and speak at European technical conferences.
One of my nightmares is waking up one morning and discovering that the power is out, the internet is down, my cell phone doesn’t work, and when I turn on the emergency radio (if you have one), all you hear is “Swan Lake” on repeat.
As a recent immigrant to Amsterdam, I began to realize that this nightmare was increasingly likely. Russia regularly knocks out communications and power in Ukraine, using both bombs and hackers. In 2022, German windmills were disabled by malware aimed at Ukraine. Dubious tankers continue to “accidentally” drag their anchors and cut undersea cables in the Baltic. The head of NATO advised everyone to keep three days of supplies at home.
What made me finally take action is watching a video created by
Ukrainian IXP
1-IX to teach other European countries what Ukrainian internet operators have learned about hardening and repairing internet infrastructure leading up to and following the 2022 Russian invasion. The practical realities of keeping networks operating during war were sobering: building camoflouged router rooms with 3 days of generator power, replacing active fiber optic cable with passive, getting military service exemptions for their personnel, etc.. You can watch the most recent version, “Network Resilience: Experiences of survival and development
during the war in
Ukraine”, a 30 minute presentation at RIPE 90.
Unfortunately, the government of the Netherlands is not following Ukraine’s lead. Bert Hubert’s blog post
describes the Netherlands’ cloud-based “emergency communications” system, which will definitely not work in any emergency that affects power or internet connectivity.
I have asked many Dutch network operators if there is any official plan for the communications equivalent of a “black start” of the electrical grid. If there is one, it isn’t being shared with the people who will have to implement it.
The final piece of the idea came from a class I took on Crisis
Engineering from Layer Aleph, on how organizations facing an existential crisis either swiftly transform themselves into a more functional form, or they fail and become even more dysfunctional. Our class’s first question was, “How do you convince an organization that a crisis is coming and they need to prepare for it?”
Their answer was both depressing and freeing: “You can’t. All you can do is be prepared with tools and a plan for when the crisis arrives. That’s when the organization will listen.”
I started thinking about what I could personally do without any help from government or businesses. What if I could organize a group of volunteer networking experts who could communicate without any centralized infrastructure? We could effectively bootstrap communications recovery with just a few volunteers and some cheap hardware.
Initially I looked into ham radio, but it is just too expensive, difficult, and power-hungry to be practical. Then Alexander Yurtchenko told me about LoRa (Long Range) radio and Meshtastic, a cheap, low-power method of sending text messages across a few kilometers.
After a few months of part-time research and organizing, the Amsterdam Internet Resiliency Club was born. This page exists to make it easier for other people to start Internet Resiliency Clubs in their area.
The evidence that Internet Resiliency Clubs are necessary keeps growing. Since I started this project, the city of Amsterdam announced that it is planning for three weeks without electricity. Spain and Portugal lost power for most of a day. The U. S. re-elected Donald Trump, who may at some point realize that he can hold Europe hostage by threatening to cut off access to U.S.-owned internet services like AWS and Microsoft Exchange. Simultaneously, large parts of Dutch government are migrating to email hosted by Microsoft, and major Dutch technology firms continue to migrate to AWS and Microsoft Azure.
If you and I don’t do this, dear reader, no one will.
How to form an Internet Resiliency Club:
* Collect a group of internet-y people within ~10 km of each other
* Decide how to communicate normally (Signal, Matrix, email, etc.)
* Buy everyone LoRa (Long Range) radios and a powerbank with trickle charge
If you work for a internet infrastructure company, you can suggest giving interested employees a LoRa radio, a mobile phone powerbank, and maybe even a small solar panel for their personal use (perhaps as part of an annual gift or bonus).
LoRa radios have several advantages for use in emergency communications:
* low-power (< 1W, can power with an ordinary mobile phone powerbank)
* can send text messages across several line-of-sight hops (several kms)
* can connect via Bluetooth or WiFi to phones/computers
* many urban areas have a good Meshtastic network already
Amateur ham radio can transmit at higher bandwidth for longer distances, but requires extensive training, licensing, larger antennas, and more power. Ideally, both would be available in an emergency.
With a LoRa radio running the Meshtastic firmware, anyone can send text messages to anyone else with a Meshtastic node as long as it takes three or fewer forwards from other Meshtastic nodes to get from source to destination (usually around ~10 km but highly dependent on local terrain and weather).
Specifically, LoRa is a proprietary technique for sending low bit-rate radio messages (~1 - 25 kbps) using very low power (< 1W), derived from chirp spread spectrum techniques. Meshtastic is open source firmware for LoRa radios that uses a flood-forward mesh protocol to send message across up to three line-of-sight hops between LoRa nodes running Meshtastic.
LoRa radios are for sale online. The cheapest versions are development boards, intended for companies to use while building a product, often without batteries, cases, or good antennas. To use them, you must connect to them from a phone or computer, either over Bluetooth via the Meshtastic app or over WiFi using a web browser. The more expensive systems may include an enclosure, battery, solar panel, larger screen, keyboard, etc. Some can be used without an additional phone or computer.
LoRa radios use relatively little power, often in the range of 100 - 200 mA. A normal mobile phone power bank with a capacity of 10000 - 20000 mAh can power a LoRa radio approximately 2 - 8 days, depending on chipset, time spent transmitting, whether WiFi or Bluetooth are in use, etc. The powerbank should support “trickle charging”; without this, many powerbanks will stop supplying power because the power draw of many LoRa radios is so low that the powerbank thinks nothing is connected and stops supplying power.
LoRa radios can be powered by directly plugging them into a small solar panel with USB output, or by charging a battery used by the LoRa radio. A small folding 800 cm^2 solar panel generating 15w with a 5W/500 mA max output is sufficient to power many LoRa radios. With this small of a setup, you don’t need fuses, charge controllers, buck/boost converters, or anything other than the solar panel and an optional mobile phone power bank.
LoRa radios are available in a huge range of capabilities and features. For an Internet Resiliency Club, we recommend one of:
IMPORTANT: Never turn on a LoRa device without an antenna attached! The power sent to the antenna can destroy the device if there is no antenna attached to radiate it.
Note: While many LoRa devices have USB-C ports, they often don’t implement USB-C PD (Power Delivery) and won’t charge their battery correctly on USB-C to USB-C cables. Use a USB-A to USB-C cable (often supplied with the device).
If you have more time than money, try the latest Heltec V3, currently one of the cheapest boards available at around €20. It has a postage stamp-sized OLED screen, a couple of tiny buttons, WiFi/Bluetooth, and USB-C input/power (but use a USB-A to USB-C cable). Received messages are displayed on the OLED and can be cycled through with tiny buttons. Sending messages requires connecting to it via WiFi or Bluetooth.
It has no case, but the little plastic box it comes in can easily be turned into one with a sharp pen knife. It also has no battery, but it is a good idea to have a separate power bank anyway since you need a working phone or computer to send messages. It has no GPS.
The Meshtastic
page on this
board
includes links to purchase from in Europe. I bought mine from
TinyTronics.
If you have more money than time, I recommend the LILYGO T-Echo, a simple small low-power ready-to-use handheld device for about €80. It has ~3cm square e-ink display, a case with a few buttons, Bluetooth, GPS, and about a day’s worth of battery. Input/output/charging is via USB-C (but use a USB-A to USB-C cable). Received messages are displayed on the e-ink screen and can be cycled through with the buttons. Sending messages requires connecting with another device via Bluetooth.
The Meshtastic
page on this
board
includes links to purchase from in Europe. I bought mine from
TinyTronics.
If you want a standalone device that doesn’t require a separate phone or computer to send messages, the LILYGO
T-Deck
includes a keyboard, trackball, and touch screen for about €70 - 80, depending on whether it includes a case and whether the antenna is internal or external. It has about 8 hours of battery. I’m not a fan because the screen and keyboard aren’t as good as the one on your phone and take extra battery to run. It is often out of stock, especially if you’re looking for a case and external antenna.
The Meshtastic page on this
board
includes links to purchase from in Europe.
Most of the antennas that ship with evaluation boards are not very good. One option for an upgrade if you’re using the recommended 868 MHz network is the Taoglas
TI.08. A.
IMPORTANT: Never turn on a LoRa device without an antenna attached! The power sent to the antenna can destroy the device if there is no antenna attached to radiate it.
Some boards ship with Meshtastic already installed, but it’s undoubtedly several months out of date. Flashing LoRa boards is relatively easy; it can be as simple as using the Meshtastic web
browser
flasher
(requires Chrome or Edge) or dragging and dropping a file into a mounted USB drive presented by the device. A command line tool using a serial interface is also an option, but may require some fiddling with a Python env.
In Europe, two frequencies are available for use by LoRa: 868 MHz and
433
MHz. 868 MHz is the most popular for Meshtastic users in
Europe. Several modem presets are available; use the default mode LONG_FAST unless you have a specific reason not to.
LoRa has
channels, a stream of messages using the same encryption key and channel name. Each device is configured with a default primary channel shared by all Meshtastic nodes. You can also configure secondary channels that can only be accessed by nodes with the same key and channel name. Choose an encryption key and channel name for a shared secondary channel. You can share a QR code to configure a device with the appropriate channels and settings.
The best time to learn how to work together with a group of people is before a crisis, not during it. Crisis engineering tells us that a team is more likely to be successful if everyone has already worked together.
Since this is a volunteer group, “working” together has to be fun. Invite your group to do fun things together, changing up what activity you are doing, where it is located, and what time it is held so that a wide variety of people can participate.
If you have more questions or suggestions, please join our mailing
list:
Many people helped me with Internet Resiliency Club:
...
Read the original on bowshock.nl »
...
Read the original on tim.dierks.org »
...
Read the original on arxiv.org »
My earliest memory of the ocean is of a tropical lagoon. Ammonites rose and fell in the warm water column, occasionally propelling themselves forwards, their curled ram’s horn shells surprisingly streamlined in the water.
This tropical lagoon was in fact in my imagination, fired as I explored the old limestone quarry near my childhood home in Leicester, some 60 miles from the coast.
For a small boy in the 1930s this was a marvellous place for adventures, and the knowledge that millions of years ago it would have been a warm and wild lagoon only increased its appeal. Here I could spend days searching for treasure buried in rocks laid down in ancient tropical seas. Holding the fossils of long-dead sea creatures that I had chipped out of the rock, knowing my eyes were the first ever to see them, ignited my curiosity. I would spend much of the rest of my life wondering what lived below the surface of the ocean.
I have been fortunate enough to live for nearly 100 years. During this time we have discovered more about our ocean than in any other span of human history. Marine science has revealed natural wonders a young boy in the 1930s could never have imagined. New technology has allowed us to film wildlife behaviour I could only have dreamt of recording in the early stages of my career, and we have changed the ocean so profoundly that the next 100 years could either witness a mass extinction of ocean life or a spectacular recovery.
To date we have done such a good job of telling the stories of demise and collapse that many of us can all too easily picture a future ocean of bleached reefs, turtles choking on plastic, sewage plumes, jellyfish swarms and ghost towns where fishing villages were once full of life. There may be much to fear in the near future, yet it could also be the most exciting time to be alive.
We know already that the ocean can recover. Mangroves and kelp forests can regrow, whales can return and dying coastal communities can flourish once again.
Attenborough prepares for a dive while filming Life on Earth, 1979. The series was watched by 500 million people worldwide
We now understand how to fix many of the biggest problems we face as a species, and we have centuries of progress to draw on for inspiration. Indeed, in the past 100 years alone we have dramatically reduced infant mortality, suppressed many of our most feared diseases, increased access to education and healthcare, acquired scientific knowledge that has transformed our understanding of the world and co-operated on global issues to a degree never seen before.
Young children playing on a beach today will live through perhaps the most consequential time for the human species in the past 10,000 years. They will grow up to see how this story ends, to see how our choices play out. If we use our great discoveries, apply our unique minds and direct our unparalleled communication and problem-solving skills to restoring our ocean, then those children will bring their own into a world where the biggest challenges our species has ever faced have already been navigated.
They will witness decades of recovery and restoration. They will see shoals of fish, roosts of seabirds and pods of whales beyond anything anyone alive has ever laid eyes upon. They will experience the rebirth of coastal communities and the turning point in the stabilisation of our climate. But more than that, they will live in a world where our species, the most intelligent to exist on Earth, has moved beyond trying to rule the waves and instead has learnt to thrive alongside the greatest wilderness of all.
I will not see how that story ends but, after a lifetime of exploring our planet, I remain convinced that the more people enjoy and understand the natural world, the greater our hope of saving both it and ourselves becomes. With that in mind, here are some of my favourite ocean experiences, which I hope will inspire you to look beyond the shore and beneath the waves.
Filming a blue whale in the Gulf of California, 2001
A blue whale cruises off the coast of Sri Lanka
Blue whales are perfectly adapted for ocean voyaging. Their powerful yet streamlined bodies enable them to travel unseen for thousands of miles each year. But in certain places, and at certain times, they come close to the shore in order to give birth and to suckle their young.
One such place and time is the Gulf of California during the winter months. It was there that I went with a team from the BBC to try and film a blue whale for a series called The Life of Mammals. Even today, no one would describe the blue whale as easy to film. But almost 25 years ago it was far more challenging. There were no drones to launch within seconds from a boat; nor were there satellite tags to alert you to a tracked whale’s location. We had to rely on spotters on the shore and hope that a light plane guided by them could fly to the right place in time to capture an aerial view of a whale swimming alongside our boat.
The beginning of the new millennium was only 15 years after the ban on commercial whaling had been agreed. So the total number of blue whales in the ocean was approximately 5,000 — only 2 per cent of their natural level.
David Attenborough gets wet as a whale surfaces close to his boat in The Life of Mammals, which aired in 2002-3
To these difficulties we added a challenge of our own. The shot we wanted was one in which, as I was speaking in a small inflatable launch, a whale would break the surface alongside me so that both it and I appeared in the same frame, and thus give as vivid an idea as possible of just how gigantic it is.
Early one morning we left harbour and headed for the bay. Our pilot guide in his slow-flying aircraft appeared overhead and circled several hundred feet above the ocean. He had explained to us how he could distinguish the spout of a blue whale from that of other species — it shoots up to 30 feet in a relatively straight jet, and the height, volume and sheer power make it hang in the air for far longer than a spout made by any other kind of whale.
Once he had spotted one, he would tell us on the radio which way to go in the hope that we could catch up with it before it dived again. After several attempts we managed to do that. As soon as we were within 20 yards of it, we pushed a small inflatable launch over the side. I jumped in, tied myself on, and within seconds we were above the whale as it cruised 20 feet or so below the surface.
“It’s a blue whale,” I shouted excitedly over the noise of our outboard engine, and a great spout of water shot into the air and fell, drenching me. It was one of the most thrilling moments of my life.
• The David Attenborough locations that could inspire your next holiday
Drifting in a wetsuit above a submarine forest in southern California, I found myself alongside one of the most blissful of creatures. On its back, all four paws tucked into its body fur for warmth, gently rolling in a manner that brought to mind a swaddled newborn baby, lay a southern sea otter. They were once seen linked together in rafts hundreds strong, but this one was alone and seemed to be quite unconcerned by my clumsy attempts to float nearby.
I was no more than 200 yards offshore, preparing to record a piece to camera on the wildlife of the Pacific coast of North America. If I looked towards shore I could see houses and the odd car, yet if I looked down I felt I was in a wilderness. The forest beneath my otter companion and me was one of giant kelp, each frond anchored by a holdfast to a rock on the sea floor some 150 feet below. I only had a snorkel, so those depths were out of reach.
But not for my neighbour. Periodically it dived down beyond my sight. A sea otter’s hind paws are fully webbed and reasonably flat, so although they are capable of moving fast on land, they are also effective divers. They can close their nostrils and ears, and their lungs are so big that not only can they float without any effort but they can also remain underwater for about four minutes at a time. This otter was diving in one of the richest marine environments on the planet, so finding food was no problem.
The sea otter suddenly reappeared beside me. It had used its sensitive whiskers and front paws to locate and collect a clam from the sea floor. Once back on the surface and floating on its back, it produced both a clam and a rock from a pouch of skin under its forelegs. I watched, captivated by the practised skill with which it balanced the rock on its belly and then smashed the clamshell repeatedly against it until the shell broke apart. Sea otters are one of the few species that, like human beings, regularly use tools.
They eat a wide range of the inhabitants of the kelp forest but one is of particular importance to them — sea urchins. In a healthy, balanced kelp forest sea urchins play a key role, acting like a kind of kelp gardener. They gnaw away at the algae growing on the rocks and in doing so create pits that enable the kelp to anchor their holdfast. Left unchecked, the urchins can destroy such a forest by eating the holdfasts that keep the kelp in place.
The importance of the sea otter was revealed when almost 200 years of hunting brought them to the verge of extinction. Unusually for a marine mammal, sea otters don’t have blubber, so they were not targeted by humans in the way that seals were, for the extraction of oil.
In lieu of blubber, however, they have the thickest fur of any mammal, a double-layered pelt that enables them to keep warm in these frigid seas, and in the 18th and 19th centuries they were hunted for that in their thousands. As a consequence, the global population fell from 150,000-300,000 to fewer than 2,000 individuals.
Urchin numbers exploded and as a result many kelp forests all but vanished, taking with them much of the other life that used the forests for food or shelter. The delicate balance of this complex system was devastatingly disrupted by the targeted removal of a single species.
But promisingly, this process can also happen in reverse. Since hunting sea otters was banned in the early 1900s, numbers have slowly recovered across significant parts of their old habitats. Recovery is not yet complete, but where it has happened the effects on the kelp forests are often spectacular. As the otters feast on the urchins, the kelp gets some respite. Being so fast-growing, it quickly begins to provide habitat that attracts other species, including other urchin eaters.
Capuchin monkeys use ‘sheer intelligence’ to survive in the mangrove forest
While making The Life of Mammals I spent several weeks in a mangrove forest hoping to film the behaviour of two separate troops of extremely intelligent monkeys — capuchins. We wanted to show how sheer intelligence enabled different monkey species to thrive in a variety of difficult conditions — and it is fair to say that none of us expected to be filming it in an ocean habitat! But we had read scientific studies of the way capuchins harvested shellfish at low tide in a mangrove forest in Costa Rica, and it sounded an interesting way to begin the programme.
The capuchin is a particularly clever species of monkey. Capuchins are often described simply as “inquisitive”, but when watching them at close range for a period of time you realise that, much like ourselves, they are able to imagine the future and plan how to deal with the problems it will bring — exactly the characteristics required to exploit the complex world of mangroves.
We couldn’t hope to track the capuchins in the mangroves; they moved through the tangles of aerial roots much faster than we could. But we found a suitably open area well stocked with crabs, clams and oysters, and waited. Eventually a troop of capuchins arrived. Some of the braver ones plunged their hands into holes in the mud. The successful ones pulled out crabs, the unsuccessful quickly withdrew in pain! It was fascinating to watch. But the behaviour we really wanted to film was the way in which they located and ate clams.
The troop moved with the ebb and flow of the tides. Each day the muddy ground would be exposed approximately 50 minutes later than the previous day, and the monkeys adjusted their movements accordingly. By the time we had been filming for a few days, they took little notice of us and allowed us to get close and film as they dug in the mud and located clams.
The shellfish clamp the two halves of their shell so tightly that even a human can’t open them without a knife or similar tool. But the capuchins have worked out their own way of getting at a clam’s flesh. Having collected one, they take it to a convenient branch and start knocking it, over and over again. Eventually the clam gets so tired it relaxes its muscle and the capuchin is able to prise it open.
Ever since I was a boy I had been thrilled by pictures of the Great Barrier Reef ’s multicoloured, infinitely varied colonies of coral and its islands thronged by immense numbers of breeding seabirds. I had always yearned to see this wonder with my own eyes. This was my chance.
With the help of Vince, the acquaintance of a friend, I sailed northwards from Cairns up the reef, stopping to investigate any island or reef that particularly attracted us, until on the 14th day we reached Raine Island — the reef’s northern limit.
The island was said to have one of the biggest and most varied colonies of breeding seabirds to be found anywhere on the reef. It was also the world’s largest breeding site for green turtles.
Happily for us, there were clouds of seabirds as numerous and dense as I have ever seen. The most abundant were two species of tern — the noddy and the white-capped. There were three species of booby — the common, the brown and the red-footed. But for me the most impressive and certainly least familiar were the frigate birds: glossy black, with six-foot wingspans and long, deeply forked tails.
On our first walk around the island we saw perhaps twenty curving tracks weaving through the sand hills. I didn’t know at the time, but scientists now believe that every year more than 60,000 female green turtles travel immense distances to get to this one small and remote island. The few here now were just end-of-season stragglers.
Attenborough filming the series Life on Earth in 1978 — a three-year project that raised the bar for natural history film-making
Each morning we found several that had dragged themselves far enough inland to be beyond the reach of a high tide and were now digging with powerful swishes of their fore-flippers. Every now and then they swivelled slightly so that the holes they were creating were circular. When one female was down in the sand by about 12 inches, she started to use her hind flippers as well, until finally the top of her shell was virtually level with the surface of the sand. Then, using just one hind flipper at a time, she begins to widen the downward passage to create an egg chamber.
All the time she weeps to clear sand from her eyes. She gasps, making great breathy exhalations, and follows each one with a sudden intake of air, as though she is still in the sea and preparing to make another dive. The nest hole must not be too deep, for the eggs will need the warmth of the sun if they are to develop. But it must, nonetheless, be deep enough to be beyond the reach of predators. Then she lays a hundred or so eggs, fills in the hole and returns to the sea. A single female may repeat this exhausting process half a dozen times during a single breeding season.
The sheer quantity of hatchlings that emerge on the beaches of Raine Island in a single season is hard to imagine. But great numbers are essential because only one out of every thousand hatchlings is likely to reach maturity. Within minutes of appearing on the surface of the sand, most are eaten by birds. Those that do reach the water are then attacked by marine predators. Only a tiny minority reach the relative safety of the open ocean.
I didn’t get to dive in the shallow, warm waters of the Great Barrier Reef until 1957. I was so taken aback by the spectacle before me that I momentarily forgot to breathe. I could have spent days swimming above it and never tired of the colours, the movement, the interactions. It is life at its most mesmerising.
Nothing can prepare you for actually seeing so many different species, all with their own way of overcoming life’s trials, somehow fitting together in an ecosystem so vivid and vibrant. Even though we know that a tropical rainforest harbours extraordinary animal diversity, you see relatively little of it on a single walk. Yet on that half-hour dive I saw more species of animals than I could have begun to count, let alone identify.
© Sir David Attenborough and Colin Butfield, 2025. Extracted from Ocean: Earth’s Last Wilderness by Sir David Attenborough and Colin Butfield (John Murray Press £28), published on Thursday. Order at timesbookshop.co.uk
Times+ members can win a signed copy of Oceans. Visit thetimes.com/timesplus to find out more
...
Read the original on www.thetimes.com »
Previously I have covered a relatively obscure now-removed placeholder string in Android that doubles as an easter egg, the fictitious carrier by the name of El Telco Loco. But this time it is about methods and other parts of the publicly facing Android API that may generally be more humourous than they are useful. Easter eggs, jokes, whatever you want to call them, that are visible to Android app developers rather than regular users.
While it may initially look like a joke when it’s described as returning true if the UI is “currently being messed with by a monkey” without any further elaboration in the documentation, this is probably the one in the list with the most usefulness attached to it.
It is referring to the UI Exerciser Monkey, which is a developer tool for Android that simulates random sequences of user input in order to stress-test apps. So this method will return a boolean of whether the Monkey is currently running or not.
The introduction of such a method to detect the usage of the Monkey appears to have an origin in something that happened during Android’s development, as per a quote from the book Androids: The Team that Built the Android Operating System:
One day I walked into the monkey lab to hear a voice say, ’911 -What’s your emergency?” That situation resulted in Dianne adding a new function to the API, isUserAMonkey() which is used to gate actions that monkeys shouldn’t take during tests (including dialing the phone and resetting the device).
Indeed, when feeding random and inherently unpredictable input into an app, you would want to have some way of locking away portions of an app that may have unintended real-world consequences such as calling emergency services. As such, isUserAMonkey was implemented and later made its way into the public API in Android 2.2 Froyo (API 8).
This one is more of a joke. The developer documentation says it is “used to determine whether the user making this call is subject to teleportations”, which in itself is likely a reference to a hidden column in the Chrome task manager that shows how many goats a browser process has teleported.
It was first introduced in Android 4.2 (API 17), and originally just returned false. However in Android 5.0 Lollipop (API 21) it was changed to “automatically identify goats using advanced goat recognition technology”. The game Goat Simulator had released earlier that year and was made available for Android in September during Lollipop’s development, so this method was changed to instead detect the presence of the Android version of Goat Simulator being installed on the device:
Later in Android 11 (API 30), it was changed such that apps targetting API 30 and above will once again always return false when the method is called. According to the developer documentation this was made to “protect goat privacy”.
Android 11 is also the version where the QUERY_ALL_PACKAGES permission was introduced, meaning that apps targetting Android 11 would not be able to query for information of other apps through the PackageManager without this permission. So it makes sense to also wall off this method in order to not leak any information about other apps installed on an user’s device, even as a joke.
This constant refers to a device policy added in Android 6 Marshmallow (API 23) which restricts the user from having “fun”. The description given in the developer documentation is, ironically, amusing and reminds me of something GLaDOS would probably say:
Specifies if the user is not allowed to have fun. In some cases, the device owner may wish to prevent the user from experiencing amusement or joy while using the device.
This is in fact a real device policy that a device owner may change to restrict what users of the device is able to do with it. And third-parties can then hook into this to disable features of their app that are deemed “too fun”. I don’t know if any third-party apps actually make use of it, but in the Android system it is used to disable the Android version easter egg that shows up when pressing the version label in the settings.
Considering that “fun” easter eggs like the Google Chrome “No internet” Dinosaur minigame end up being distractions that e.g. schools want to disable for enrolled devices (see Chromium issue #41159706), maybe the Android version easter egg could very much be a distraction depending on the version.
The Chronometer class had a new method by the name of isTheFinalCountdown added to it in Android 8 Oreo (API 26). When called, it will send an Intent to open the YouTube video for The Final Countdown by Europe.
No really. That’s what it does:
This constant was added in Android 2.3 Gingerbread (API 8) and is used to describe a device that supports tracking 5 simultaneous touch inputs, with the name being a reference to Jazz hands.
According to the developer documentation, WTF stands for “What a Terrible Failure” (sure…), and is intended to log things that should never happen. It logs the message at the assertion level.
This is a method with an oddly humourous informal name, which was likely caused by some developer coming up blank on naming it and has now ended up in the public Android API, being added in Android 3.0 Honeycomb (API 11). It gets called by an AppWidgetHost when advancing the views inside of the AdapterViewFlipper object.
Indeed, naming things is one of the two hard problems in computer science, the other being off-by-one errors and cache invalidation.
The Android Binder system is used for performing IPC and transactions are distinguished using different types, one of them being… TWEET_TRANSACTION. It was added in Android 3.2 Honeycomb (API 13) and claims to be used to send a tweet to a target object.
It does not actually do anything, let alone send a tweet. The document mentions that messages have a limit of 130 characters, referencing Twitter’s old message character limit.
In a similar fashion, a new transaction type by the name of LIKE_TRANSACTION was added in Android 4.0.3 ICS (API 15). It’s used to tell an app that the caller likes it, there is no counter to keep track of the amount of likes but it is claimed that sending such transactions will improve the app’s self-esteem.
I do have to admit I didn’t know what a Tricorder is, but it appears to be a fictional device from Star Trek and the constant was “added” in Android 1.0 (meaning it likely was present since before Android’s first official release).
The SENSOR_* constants in SensorManager have since then been deprecated in API level 15 in favour of the Sensor class, which does not include any equivalent reference to the Tricorder. Unfortunate.
The SensorManager class has a lot of constants which store the gravitational velocity of various bodies in our solar system ranging from GRAVITY_SUN to GRAVITY_PLUTO. While whether any of these outside of GRAVITY_EARTH is useful in any real-world scenarios is debatable, there are some that are actually just jokes.
GRAVITY_DEATH_STAR_I stores the gravity of the first Death Star in SI units (referred to as Empire units). This appears to be a Star Wars reference.
GRAVITY_THE_ISLAND stores the gravity of “the island”. Apparently this is a reference to The Island in the 2004 TV show Lost.
Last one, and this one is particularly crazy. Did you know there is a hidden tag inside the Android view layout system by the name of ? Because that is a thing:
It makes any children that is wrapped inside of it blink, like the old HTML tag. This one appears to be completely undocumented in the Android Developer reference, but was added in a commit in 2011 with the title “Improve LayoutInflater’s compliance” (right…) and is still present in the AOSP master branch.
Whether you should actually use it is debatable however.
Did you find the blog post to be informative, amusing or otherwise interesting? All blog posts are written by a human who would appreciate a donation
if you got some value out of this piece of writing.
...
Read the original on voxelmanip.se »
Nanonets-OCR-s is a powerful, state-of-the-art image-to-markdown OCR model that goes far beyond traditional text extraction. It transforms documents into structured markdown with intelligent content recognition and semantic tagging, making it ideal for downstream processing by Large Language Models (LLMs).
Nanonets-OCR-s is packed with features designed to handle complex documents with ease:
* LaTeX Equation Recognition: Automatically converts mathematical equations and formulas into properly formatted LaTeX syntax. It distinguishes between inline ($…$) and display ($$…$$) equations.
* Intelligent Image Description: Describes images within documents using structured tags, making them digestible for LLM processing. It can describe various image types, including logos, charts, graphs and so on, detailing their content, style, and context.
* Signature Detection & Isolation: Identifies and isolates signatures from other text, outputting them within a tag. This is crucial for processing legal and business documents.
* Watermark Extraction: Detects and extracts watermark text from documents, placing it within a tag.
* Smart Checkbox Handling: Converts form checkboxes and radio buttons into standardized Unicode symbols (☐, ☑, ☒) for consistent and reliable processing.
* Complex Table Extraction: Accurately extracts complex tables from documents and converts them into both markdown and HTML table formats.
from PIL import Image
from transformers import AutoTokenizer, AutoProcessor, AutoModelForImageTextToText
model_path = “nanonets/Nanonets-OCR-s”
model = AutoModelForImageTextToText.from_pretrained(
model_path,
torch_dtype=“auto”,
device_map=“auto”,
attn_implementation=“flash_attention_2”
model.eval()
tokenizer = AutoTokenizer.from_pretrained(model_path)
processor = AutoProcessor.from_pretrained(model_path)
def ocr_page_with_nanonets_s(image_path, model, processor, max_new_tokens=4096):
prompt = “”″Extract the text from the above document as if you were reading it naturally. Return the tables in html format. Return the equations in LaTeX representation. If there is an image in the document and image caption is not present, add a small description of the image inside the tag; otherwise, add the image caption inside . Watermarks should be wrapped in brackets. Ex: . Page numbers should be wrapped in brackets. Ex: or . Prefer using ☐ and ☑ for check boxes.“”″
image = Image.open(image_path)
messages = [
{“role”: “system”, “content”: “You are a helpful assistant.“},
{“role”: “user”, “content”: [
{“type”: “image”, “image”: f”file://{image_path}“},
{“type”: “text”, “text”: prompt},
text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = processor(text=[text], images=[image], padding=True, return_tensors=“pt”)
inputs = inputs.to(model.device)
output_ids = model.generate(**inputs, max_new_tokens=max_new_tokens, do_sample=False)
generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(inputs.input_ids, output_ids)]
output_text = processor.batch_decode(generated_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True)
return output_text[0]
image_path = “/path/to/your/document.jpg”
result = ocr_page_with_nanonets_s(image_path, model, processor, max_new_tokens=15000)
print(result)
vllm serve nanonets/Nanonets-OCR-s
from openai import OpenAI
import base64
client = OpenAI(api_key=“123”, base_url=“http://localhost:8000/v1”)
model = “nanonets/Nanonets-OCR-s”
def encode_image(image_path):
with open(image_path, “rb”) as image_file:
return base64.b64encode(image_file.read()).decode(“utf-8”)
def ocr_page_with_nanonets_s(img_base64):
response = client.chat.completions.create(
model=model,
messages=[
“role”: “user”,
“content”: [
“type”: “image_url”,
“image_url”: {“url”: f”data:image/png;base64,{img_base64}“},
“type”: “text”,
“text”: “Extract the text from the above document as if you were reading it naturally. Return the tables in html format. Return the equations in LaTeX representation. If there is an image in the document and image caption is not present, add a small description of the image inside the tag; otherwise, add the image caption inside . Watermarks should be wrapped in brackets. Ex: . Page numbers should be wrapped in brackets. Ex: or . Prefer using ☐ and ☑ for check boxes.”,
temperature=0.0,
max_tokens=15000
return response.choices[0].message.content
test_img_path = “/path/to/your/document.jpg”
img_base64 = encode_image(test_img_path)
print(ocr_page_with_nanonets_s(img_base64))
pip install docext
python -m docext.app.app –model_name hosted_vllm/nanonets/Nanonets-OCR-s
@misc{Nanonets-OCR-S,
title={Nanonets-OCR-S: A model for transforming documents into structured markdown with intelligent content recognition and semantic tagging},
author={Souvik Mandal and Ashish Talewar and Paras Ahuja and Prathamesh Juvatkar},
year={2025},
...
Read the original on huggingface.co »
Isaac Newton was never entirely happy with his law of universal gravitation. For decades after publishing it in 1687, he sought to understand how, exactly, two objects were able to pull on each other from afar. He and others came up with several mechanical models, in which gravity was not a pull, but a push. For example, space might be filled with unseen particles that bombard the objects on all sides. The object on the left absorbs the particles coming from the left, the one on the right absorbs those coming from the right, and the net effect is to push them together.
Those theories never quite worked, and Albert Einstein eventually provided a deeper explanation of gravity as a distortion of space and time. But Einstein’s account, called general relativity, created its own puzzles, and he himself recognized that it could not be the final word. So the idea that gravity is a collective effect — not a fundamental force, but the outcome of swarm behavior on a finer scale — still compels physicists.
Earlier this year, a team of theoretical physicists put forward what might be considered a modern version of those 17th-century mechanical models. “There’s some kind of gas or some thermal system out there that we can’t see directly,” said Daniel Carney of Lawrence Berkeley National Laboratory, who led the effort. “But it’s randomly interacting with masses in some way, such that on average you see all the normal gravity things that you know about: The Earth orbits the sun, and so forth.”
This project is one of the many ways that physicists have sought to understand gravity, and perhaps the bendy space-time continuum itself, as emergent from deeper, more microscopic physics. Carney’s line of thinking, known as entropic gravity, pegs that deeper physics as essentially just the physics of heat. It says gravity results from the same random jiggling and mixing up of particles — and the attendant rise of entropy, loosely defined as disorder — that governs steam boilers, car engines and refrigerators.
Attempts at modeling gravity as a consequence of rising entropy have cropped up now and again for several decades. Entropic gravity is very much a minority view. But it’s one that won’t die, and even detractors are loath to dismiss it altogether. The new model has the virtue of being experimentally testable — a rarity when it comes to theories about the mysterious underpinnings of the universal attraction.
What makes Einstein’s theory of gravity so remarkable is not just that it works (and does so with sublime mathematical beauty), but that it betrays its own incompleteness. General relativity predicts that stars can collapse to form black holes, and that, at the centers of these objects, gravity becomes infinitely strong. There, the space-time continuum tears open like an overloaded grocery bag, and the theory is unable to say what comes next. Furthermore, general relativity has uncanny parallels to heat physics, even though not a single thermal concept went into its development. It predicts that black holes only grow, never shrink, and only swallow, never disgorge. Such irreversibility is characteristic of the flow of heat. When heat flows, energy takes a more randomized or disordered form; once it does, it is unlikely to reorder itself spontaneously. Entropy quantifies this growth of disorder.
Indeed, when physicists used quantum mechanics to study what happens in the distorted space-time around a black hole, they find that black holes give off energy like any hot body. Because heat is the random motion of particles, these thermal effects suggest to many researchers that black holes, and the space-time continuum in general, actually consist of some kind of particles or other microscopic components.
Following the clues from black holes, physicists have pursued multiple approaches to understanding how space-time emerges from more microscopic components. The leading approach takes off from what’s known as the holographic principle. It says the emergence of space-time works a bit like an ordinary hologram. Just as a hologram evokes a sense of depth from a wavy pattern etched onto a flat surface, patterns in the microscopic components of the universe may give rise to another spatial dimension. This new dimension is curved, so that gravity arises organically.
Entropic gravity, introduced in a famous 1995 paper by the theoretical physicist Ted Jacobson of the University of Maryland, takes a related but distinct tack. Previously, physicists had started with Einstein’s theory and derived its heatlike consequences. But Jacobson went the other way. He started from the assumption that space-time has thermal properties and used these to derive the equations of general relativity. His work confirmed that there’s something significant about the parallels between gravity and heat.
“He turned black hole thermodynamics on its head,” Carney said. “I’ve been mystified by this result for my entire adult life.”
How might gravitational attraction arise out of more microscopic components? Inspired by Jacobson’s approach, Carney and his co-authors — Manthos Karydas, Thilo Scharnhorst, Roshni Singh and Jacob Taylor — put forward two models.
In the first, space is filled with a crystalline grid of quantum particles, or qubits. Each has an orientation, like a compass needle. These qubits will align themselves with a nearby object that possesses mass and exert a force on that object. “If you put a mass somewhere in the lattice, it causes all of the qubits nearby to get polarized — they all try to go in the same direction,” Carney said.
By reorienting the nearby qubits, a massive object creates a pocket of high order in the grid of otherwise randomly oriented qubits. If you place two masses into the lattice, you create two such pockets of order. High order means low entropy. But the system’s natural tendency is to maximize entropy. So, as the masses realign the qubits and the qubits in turn buffet the masses, the net effect will be to squash the masses closer together to contain the orderliness to a smaller region. It will appear that the two masses are attracting each other gravitationally when in fact the qubits are doing all the work. And just as Newton’s law dictates, the apparent attraction diminishes with the square of the distance between the masses.
The second model does away with the grid. Massive objects still reside within space and are acted upon by qubits, but now those qubits do not occupy any particular location and could in fact be far away. Carney said this feature is intended to capture the nonlocality of Newtonian gravity: Every object in the universe acts on every other object to some degree.
Each qubit in the model is able to store some energy; the amount depends on the distance between the masses. When they are far apart, a qubit’s energy capacity is high, so the total energy of the system can fit in just a few qubits. But if the masses are closer together, the energy capacity of each qubit drops, so the total energy has to be spread over more qubits. The latter situation corresponds to a higher entropy, so the natural tendency of the system is to push the masses together, again in keeping with Newtonian gravity.
Carney cautioned that both models are ad hoc. There’s no independent evidence for these qubits, and he and his colleagues had to fine-tune the strength and direction of the force exerted by them. One might ask whether this is any improvement over taking gravity to be fundamental. “It actually seems to require a peculiar engineered-looking interaction to get this to work,” Carney said.
And what works is just Newton’s law of gravity, not the full apparatus of Einstein’s theory, where gravity is equivalent to the curvature of space-time. For Carney, the models are just a proof of principle — a demonstration that it is at least possible for swarm behavior to explain gravitational attraction — rather than a realistic model for how the universe works. “The ontology of all of this is nebulous,” he said.
Mark Van Raamsdonk, a physicist at the University of British Columbia, is doubtful that the models really represent a proof of principle. A practitioner of holography, the leading approach to emergent space-time, Van Raamsdonk notes that the new entropic models don’t have any of the qualities that make gravity special, such as the fact that you feel no gravitational force when you’re freely falling through space-time. “Their construction doesn’t really have anything to do with gravity,” he said.
Furthermore, the models dwell on the one aspect of gravity that physicists think they already understand. Newton’s law arises naturally out of Einstein’s theory when gravity is comparatively feeble, as it is on Earth. It’s where gravity gets strong, as in black holes, that it gets weird, and the entropic model has nothing to say about that. “The real challenge in gravitational physics is understanding its strong-coupling, strong-field regime,” said Ramy Brustein, a theorist at Ben-Gurion University who said he used to be sympathetic to entropic gravity but has cooled on the idea.
Proponents of entropic gravity respond that physicists shouldn’t be so sure about how gravity behaves when it is weak. If gravity is indeed a collective effect of qubits, the Newtonian force law represents a statistical average, and the moment-by-moment effect will bounce around that average. “You have to go to very weak fields, because then these fluctuations might become observable,” said Erik Verlinde of the University of Amsterdam, who argued for entropic gravity in a much-discussed 2010 paper and has continued to develop the idea.
Carney thinks the main benefit of the new models is that they prompt conceptual questions about gravity and open up new experimental directions.
Suppose a massive body is in a quantum combination, or “superposition,” of being in two different locations. Will its gravitational field likewise be in a superposition, pulling on falling bodies in two different directions? The new entropic-gravity models predict that the qubits will act on the massive body to snap it out of its Schrödinger’s cat–like predicament.
This scenario connects to the much-fretted-over question of wave function collapse — which asks how it is that measuring a quantum system in superposition causes its multiple possible states to become a single definite state. Some physicists have suggested that this collapse is caused by some intrinsic randomness in the universe. These proposals differ in detail from Carney’s but have similar testable consequences. They predict that an isolated quantum system will eventually collapse of its own accord, even if it’s never measured or otherwise affected from without. “The same experimental setups could, in principle, be used to test both,” said Angelo Bassi of the University of Trieste, who has led the effort to perform such experiments, already ruling out some collapse models.
For all his doubts, Van Raamsdonk agrees that the entropic-gravity approach is worth a try. “Since it hasn’t been established that actual gravity in our universe arises holographically, it’s certainly valuable to explore other mechanisms by which gravity might arise,” he said. And if this long-shot theory does work out, physicists will need to update the artist Gerry Mooney’s famous gravity poster, which reads: “Gravity. It isn’t just a good idea. It’s the law.” Perhaps gravity is not, in fact, a law, just a statistical tendency.
...
Read the original on www.quantamagazine.org »
For more than a century the telephone exchange has formed the backbone of our telecommunications system. A vast array of more than 5,500 mostly nondescript buildings sit unnoticed on city, town or village streets, and quietly link up more than 254 million kilometres of cables and wires — keeping people in the UK connected to each other and the rest of the world.
Since the first telephone exchange was established in London in 1879 with just eight subscribers, these anonymous looking buildings have spread the length and breadth of the UK — from the smallest on the remote Shetland Isle of Papa Stour, with just 14 homes, to the largest in Oldham, Manchester, serving more than 45,000.
But the recent explosive growth in new digital fibre based services means the majority of these iconic communication hubs will soon route their last ever call.
The advent of tiny but powerful microprocessors and glass fibres, thinner than the width of a human hair, only need a tiny fraction of the space taken up by miles of copper wires and bulky racks of switching machinery to run the old copper based phone network or Public Switched Telephone Network (PSTN).
This seismic shift means that today we’re able to provide fibre broadband services to the entire country from just 1,000 ‘super digital exchanges’ or Openreach Handover Points (OHPs).
Sadly, this spells the beginning of the end for the remaining 4,600 exchanges used to support traditional copper based phone and broadband voice services. And these copper customers are dwindling fast as people migrate to faster more efficient fibre
Openreach is now consulting with its communication provider (CP) customers — like Sky, Vodafone, TalkTalk and BT, who use our network to connect their own customers — about how to close these ‘legacy’ exchanges over the next decade or so.
This will be a major undertaking with several million services to be migrated, and the importance of ensuring vulnerable customers and the UK’s Critical National Infrastructure providers are protected along the way. So we’re planning it in stages — with the first 103 exchanges to close by December 2030. These have some of the highest running costs so there’s a clear advantage in targeting them first. Most of the remaining 4,500 exchanges will likely follow in the early 2030s.
...
Read the original on telephone-exchanges.org.uk »
The seekable format splits compressed data into a series of independent “frames”, each compressed individually, so that decompression of a section in the middle of an archive only requires zstd to decompress at most a frame’s worth of extra data, instead of the entire archive.
Zeekstd makes additions to the seekable format by implementing an updated version of the
specification, however, it is fully compatible with the
initial version of the seekable format.
A seekable Encoder will start new frames automatically at 2MiB of uncompressed data. See
EncodeOptions to change this and other compression parameters.
use std::{fs::File, io};
use zeekstd::Encoder;
fn main() -> zeekstd::Result
By default, the seekable Decoder decompresses everything, from the first to the last frame, but can also be configured to decompress only specific frames.
use std::{fs::File, io};
use zeekstd::Decoder;
fn main() -> zeekstd::Result
This repo also contains a CLI tool that uses the library.
* The zstd C library is under a dual BSD/GPLv2 license.
...
Read the original on github.com »
To add this web app to your iOS home screen tap the share button and select "Add to the Home Screen".
10HN is also available as an iOS App
If you visit 10HN only rarely, check out the the best articles from the past week.
If you like 10HN please leave feedback and share
Visit pancik.com for more.