New
The latest blog posts to take off on Hacker News. 80,909 posts.
What I have changed my mind about in software development
I really like this quote from Jeff Bezos: “Anybody who doesn’t change their mind a lot is dramatically underestimating the complexity of the world we live in.” Lately I have been thinking about wha…
New Bézier curves for vector graphics
Mathematical insights create a more intuitive UI for Bézier curves.
Training and aligning LLMs with RLHF and RLHF alternatives
I frequently reference a process called Reinforcement Learning with Human Feedback (RLHF) when discussing LLMs, whether in the research news or tutorials.
How does Linux NAT a ping?
A few months ago, I found myself wondering how a command like ping 1.1.1.1 works from within a private network. In most private networks, multiple hosts connect to the Internet through a router. For IPv4, the router performs network address translation (NAT) by rewriting the original host’s source address to the…
“Make” as a static site generator (2022)
Static site generators are in fashion for good reasons. The resulting pages are easy to host, fast and extremely low on maintenance while being sufficient for many use cases. As I learned when setting up my blog , writing a simple script myself is faster and more satisfying than learning one of the other site builders…
I wired up my bike's GPS to order me pizza during a gravel race
As harvest season begins here in the Midwest, I once again celebrate by grinding Nebraska gravel at the Gravel Worlds Long Voyage bike race. As in previous years ( 2021 ) ( 2022 ), I spent more time writing code for a marginally-useful project than I did training. But hey, I finished!
Amiga C Tutorial (2022)
Amiga C Tutorial
Flake8-Logging
The Python standard library’s logging module is a go-to for adding observability to applications. Many tools also integrated with it or enhance its capabilities, such as structlog and Sentry.
I wrote a string type
I write compilers for fun. I can’t help it. Consequently, I also write a lot of parsers. In systems programming, it’s usually a good idea to try to share memory rather than reuse it, so as such my AST types tend to look like this.
Coffee in a Can
Life’s inconveniences, when they happen to you and me, are just that. Inconveniences. When they happen to some people though they end up becoming multi-billion dollar businesses. This is the story of Japan’s canned coffee. One finds at least one vending machine in almost every street in
No Google Topics in Vivaldi
Spying on people’s behavior & profiling them is wrong. That’s why we have made sure that Google’s Topics is disabled in two separate ways in Vivaldi browser.
Why you might want async in your project
There is a common sentiment I’ve seen over and over in the Rust community that I think is ignorant at best and harmful at worst.
The end of the subscription era is coming
You’re overpaying for your porn (and journalism)
The U.S. housing market vs. the Canadian housing market
The housing market is even worse in Canada than it is here.
Learning Zig
Welcome to Learning Zig, an introduction to the Zig programming language. This guide aims to make you comfortable with Zig. It assumes prior programming experience, though not in any particular language.
My mental model of Clojure transducers
I’ve been programming in Clojure for a long time, but I haven’t been using transducers much. I learned to mechanically transform (into [] (map f coll)) to (into [] (map f) coll) for a slight performance gain, but not much beyond that. Recently, however, I’ve found myself refactoring transducers-based code at work…
It's My Monitor
This is the first in (maybe) a series of “Tales From Tech Support”, which are true stories from my point of view. I’ll probably only post these on a Friday. In the 1990s, I worked as a contractor for a large, well-established accounting firm. We’d often buy new equipment and unpack it at the helpdesk, throw away all…
Privacy Nightmare on Wheels’: Every Car Brand Reviewed by Mozilla
Mozilla’s latest edition of *Privacy Not Included reveals how 25 major car brands collect and share deeply personal data, including sexual activity, facial expressions, and genetic and health information.
Bare-Metal Kubernetes, Part I: Talos on Hetzner
I’ve been running a Kubernetes cluster on a mix of virtual and bare metal machines with Hetzner for about a year now, and while the setup has served me well, being a very exploratory exercise at the time it wasn’t very well documented.
The Development of the C Language (2003)
C came into being in the years 1969-1973, in parallel with the early development of the Unix operating system; the most creative period occurred during 1972. Another spate of changes peaked between 1977 and 1979, when portability of the Unix system was being demonstrated. In the middle of this second period, the first…
Profound Beliefs
This post previously appeared in EIX. In the early stages of a startup your hypotheses about all the parts of your business model are your profound beliefs. Think of profound beliefs as “strong opi…
Snoop unto them as they snoop unto you
The official videos from DEFCON 31 have been posted! Below you can watch our talk “Snoop unto them as they snoop unto you”. The talk, slides, files
Using LD_PRELOAD to cheat, inject features and investigate programs
This post assumes some basic C skills. Linux puts you in full control. This is not always seen from everyone’s perspective, but a power user loves to be in control. I’m going to show yo…
Scammers can exploit email forwarding flaws to impersonate high-profile domains
Sending an email with a forged address is easier than previously thought, due to flaws in the process that allows email forwarding, according to a research team led by computer scientists at the University of California San Diego.
Maybe Rust isn’t a good tool for massively concurrent, userspace software
Yet another programming blog. Thoughts on software and related misadventures.