In the morning I finished Desert Star by Michael Connelly. I liked this Bosch and Ballard book more than the previous one; what a page turner, highly recommended.
This post shows how to set up SSH port forwarding ("tunnels") - both local and remote - using the extended Go standard library.
Source: SSH port forwarding with Go, an article by Eli Bendersky.
State machines are a great way to design software but they can be difficult to implement well.To illustrate this I’ll develop a simple state machine then increase the complexity to demonstrate some of the difficulties
Source: Implementing State Machines, an article by Stephen Friederichs.
Naru, a skilled warrior of the Comanche Nation, fights to protect her tribe against one of the first highly-evolved Predators to land on Earth.
In the evening we watched Prey. I liked the movie a lot and give it an 8 out of 10.
There’s a lot of exciting work going on in the Swift project, and it’s hard to keep track of it all because it’s happening in many different repositories, pull requests, and forum threads. To give the community a better view of the big picture, the Core Team surveyed workgroups and developers across the project and collected information about what they’re focused on over the next year.
Please keep in mind that nothing here is a lock for any particular release of the project — plans and priorities can change over time. This also isn’t an exhaustive list of everything happening in the project. But we hope you find this interesting and informative, and if you have questions about any of these areas, please feel free to reach out and ask for more details.
Source: Swift project in 2023, an article by John McCall.
Kiosks are designed to offer users specific information or a specific experience, while preventing access to any other activities on the device. They are often found in airports, shops, hospitals, cafes, and museums — any location where people need easy access to information or services like timetables, waiting times, product information, directions, self check-in machines, and so on.
Kiosk mode on your Raspberry Pi allows you to boot straight into a full-screen web page or an application without using the desktop environment. It’s the foundation for many different projects where you want to display information for a dedicated interaction with a user.
Source: Tree views in CSS, an article by Kate Rose Morley.
Revsets are a declarative language from the Mercurial version control system. Most commands in Mercurial that accept a commit can instead accept a revset expression to specify one or more commits meeting certain criteria. The git-branchless suite of tools introduces its own revset language which can be used with Git.
Source: Bringing revsets to Git, an article by Waleed Khan.
I find blockchain fascinating because it extends open source software development to open source + state. This seems to be a genuine/exciting innovation in computing paradigms; We don’t just get to share code, we get to share a running computer, and anyone anywhere can use it in an open and permissionless manner. The seeds of this revolution arguably began with Bitcoin, so I became curious to drill into it in some detail to get an intuitive understanding of how it works. And in the spirit of “what I cannot create I do not understand”, what better way to do this than implement it from scratch?
We are going to create, digitally sign, and broadcast a Bitcoin transaction in pure Python, from scratch, and with zero dependencies. In the process we’re going to learn quite a bit about how Bitcoin represents value. Let’s get it.
Source: A from-scratch tour of Bitcoin in Python, an article by Andrej Karpathy
SwiftUI’s various stacks are some of the framework’s most fundamental layout tools, and enable us to define groups of views that are aligned either horizontally, vertically, or stacked in terms of depth.
When it comes to the horizontal and vertical variants (
VStack), we might sometimes end up in a situation where we want to dynamically switch between the two. For example, let’s say that we’re building an app that contains the following
LoginActionsView, which lets the user pick from a list of actions when logging in.
Source: Switching between SwiftUI’s HStack and VStack, an article by John Sundell.
I've started learning about spectrum analysis a long time ago at university, but failed to gain a true insight in how it works under the hood. For me, it was just some magical math formulas I had to memorize and know about. I knew the theory but it didn't really "click".
A few years ago I wanted to do some audio programming and play around with analyzing sound. That's how I got interested into building an intuition on how the Fourier transform "actually" works.
Source: Demystifying Fourier analysis, an article by Davorin Šego.
What I want to achieve is to build a CRUD application for an items table. And in the end, compare the performance with an equivalent application built in PHP (lumen).
Source: Rust: building a CRUD REST API, an article by Jorge Da Silva.
Automatic hyphenation on the web has been possible since 2011 and is now broadly supported. Safari, Firefox and Internet Explorer 9 upwards support automatic hyphenation, as does Chrome on Android and MacOS (but not yet on Windows or Linux).
Source: All you need to know about hyphenation in CSS, an article by Richard Rutter.
After accidentally crash-landing in 2022, time-traveling fighter pilot Adam Reed teams up with his 12-year-old self for a mission to save the future.
In the evening I watched The Adam Project. I liked the movie and give it a 7 out of 10.
After stumbling upon Gautham's APE Python port and seeing how far along the Cosmopolitan Libc has come along, I was inspired to see what it would take to port my scripting language of choice, Perl, to the Cosmopolitan Libc and turn it into a self-contained binary. My motivation came from wanting to prove that if Python can do it, Perl can do it too, wanting a more robust Windows Perl port for running my personal media server (MHFS), and the cool factor of hacking on Perl and the Cosmopolitan Libc.
Source: Perl is Actually Portable, an article by Gavin Hayes.
If you’re using NumPy, Polars, Zarr, or many other libraries, setting a single environment variable or calling a single API function might make your code run 20%-80% faster. Or, more accurately, it may be that your code is running that much more slowly than it ought to.
The problem? A conflict over who controls parallelism: your application, or the libraries it uses.
Source: Who controls parallelism? A disagreement that leads to slower code, an article by Itamar Turner-Trauring.
Last week, I finally started exploring textual. The main motivation was to start implementing a few project ideas I've had in my todo list for years. I don't particularly have a preference between TUI (terminal user interface) and GUI (graphical user interface) for these projects. Seeing a few Textual demos on twitter (courtesy Will McGugan) over the past few months, I felt like exploring this framework first.
Source: Building TUIs with textual: first impressions, an article by Sundeep Agarwal.
Trail of Bits has developed abi3audit, a new Python tool for checking Python packages for CPython application binary interface (ABI) violations. We’ve used it to discover hundreds of inconsistently and incorrectly tagged package distributions, each of which is a potential source of crashes and exploitable memory corruption due to undetected ABI differences. It’s publicly available under a permissive open source license, so you can use it today!
I have found a new bugbear. Something to be creatively annoyed about. I’m going to call it 80/20 refactoring, to express the idea that a refactoring is started, but then not finished. Probably because doing all of the edge cases in a refactoring is hard.
Source: 80/20 Refactoring, an article by Adriaan De Groot.
Staged programming consists of evaluating parts of a program at compile time for greater efficiency at runtime, as some computations would have already been executed or made more efficient during compilation. The poster child for staged programming is the exponential function: to compute
bis known at compile time,
a^bcan be replaced by
bexplicit multiplications. Staged programming allows you to write
a^5, but have the expression compile to
Source: Staged programming with typeclasses, an article by Thomas Bagrel.
A year has passed since LAPD detective Renée Ballard quit the force in the face of misogyny, demoralization, and endless red tape. But after the chief of police himself tells her she can write her own ticket within the department, Ballard takes back her badge, leaving “the Late Show” to rebuild and lead the cold case unit at the elite Robbery-Homicide Division.
For years, Harry Bosch has been working a case that haunts him—the murder of an entire family by a psychopath who still walks free. Ballard makes Bosch an offer: come volunteer as an investigator in her new Open-Unsolved Unit, and he can pursue his “white whale” with the resources of the LAPD behind him.
First priority for Ballard is to clear the unsolved rape and murder of a sixteen-year-old girl. The decades-old case is essential to the councilman who supported re-forming the unit, and who could shutter it again—the victim was his sister. When Ballard gets a “cold hit” connecting the killing to a similar crime, proving that a serial predator has been at work in the city for years, the political pressure has never been higher. To keep momentum going, she has to pull Bosch off his own investigation, the case that is the consummation of his lifelong mission.
The two must put aside old resentments and new tensions to run to ground not one but two dangerous killers who have operated with brash impunity. In what may be his most gripping and profoundly moving book yet, Michael Connelly shows once again why he has been dubbed “one of the greatest crime writers of all time” (Ryan Steck, Crimereads).
In the evening I started in Desert Star, a Renée Ballard and Harry Bosch novel by Michael Connelly.
If you read the title and thought “well, you were probably just doing something silly beforehand”, you’re right! But what is programming if not an exercise in making silly mistakes? Tracking down silly mistakes is where all the fun is to be had!
Source: Making a Go program 42% faster with a one character change, an article by Harry Marr.
At the time of writing, most articles on the Nix package manager are written with individuals or small teams in mind. Unfortunately, these articles do not offer much insight or advice on adopting Nix across an entire engineering organization. This blog post is our attempt to fix that.
Source: Taking off with Nix at FlightAware, an article by Andrew Brooks.
The other day at work one of our python processes stopped responding. It was on one of our servers that was responsible for fetching and analyzing the web pages that we might recommend to people.
By the time I got around to debugging this problem, the last log message was over 20 minutes old - and the server had been maxed out at 100% CPU for the whole time. And while it wasn’t dead, it wasn’t responding to any requests, or even sending out any heartbeats. Even worse, in the meantime this problem had repeated itself on another server. Our whole ability to ingest new web pages looked to be going down one server at a time.
Source: Python, Catastrophic Regular Expressions and the GIL, an article by Ben Frederickson.
Pitchforks down, please! I felt your anger as soon as you clicked on the article. I have nothing against Rust — I prefer it for various use cases. All programming languages are means to an end. In my case, Rust simply did not cut it, and I had to gut the project and rewrite it in Golang.
Source: Why I Switched From Rust to Go on the Backend, an article by Anthony Oleinik.