Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 14,541 posts.
Ruby Blocks
How to start really getting Ruby, especially blocks.
Comfy Software: A software aesthetic for hackers with depression
A software aesthetic for hackers with depression.
Hidden Changes in GPT-4, Uncovered
The tool instructions in this article are not up to date as of 2024-01-12, see this post to learn more about the new tool OpenAI added to block conversations about U.S. elections using function calls.
Revenge of the Types
Some notes about what appears to be current trend of programming languages and my thoughts about it.
The responsibility we have as software engineers
I had the chance to chat this week with the very awesome Kate Heddleston who mentioned that she’s been thinking a lot about the ethics of being a software engineer, something she just spoke a…
Exploring the new .NET “dotnet” CLI
I've never much liked the whole 'dnvm' and 'dnu' and 'dnx' command line stuff ...
Concurrency in Haskell: Fast, Simple, Correct
Yet another programming blog. Thoughts on software and related misadventures.
Organizational Skills Beat Algorithmic Wizardry
It's not about technology for its own sake. It's about being able to implement your ideas.
Leveraging Zig's Allocators
How Zig's allocators can help manage memory and improve performance
I built a GPU back end for Emacs
A few months ago I became obsessed with a silly question: why does my Emacs, on a laptop with a perfectly capable GPU, draw all of its text using the…
The new APT 3.0 solver
APT 2.9.3 introduces the first iteration of the new solver codenamed solver3, and now available with the –solver 3.0 option. The new solver works fundamentally different from the old one. How does it work? Solver3 is a fully backtracking dependency solving algorithm that defers choices to as late as possible. It…
Want to call C from Python? Use D
In my last blog post I wrote about the power of D’s compile-time reflection and string mixins, showing how they could be used to call D from Python so easily it might as well be magic. As ama…
Your First THINK C Program
Welcome, child! Come in, come in! I have so few visitors to this little hut. Pull up a chair, and I’ll put on some tea.
Exploring Gleam, a type-safe language on the BEAM
From Erlang, to Elixir and now, GLEAM!?
Let Me Ch...
That morning I woke up at 6:58, two minutes before the alarm. I lay there and waited for it to ring. And it rang. We both did our jobs. I still don’t know why I remember it in such detail. I used to forget what I’d had for dinner the night before. And now I remember the whole morning minute by minute, as if someone…
Fine-tuning LLMs is a waste of time
People think they can use Fine-Tune for Knowledge Injection. People are Wrong
Playing guitar tablatures in Rust
Introducing Ruxguitar, a guitar tablature player written in Rust
Building websites with lots of little HTML pages
And by LLMS I mean: (L)ots of (L)ittle ht(M)l page(S). I recently shipped some updates to my blog. Through the design/development process, I had some insights…
CPU cache-friendly data structures in Go
False sharing, AoS vs SoA, random access, branch prediction: re-measured with go test -bench on two machines. Some claims held, some didn't.
How to not waste time on a side project when trying to get a job
For the distinct purpose of getting a job in tech, side projects are either a great use of your time or a great waste of your time.
Tail recursion in Python
The Personal blog and musings of Chris Penner, a designer, developer and future opsimath.
Small Programs and Languages
My Implementing a Forth article got some great feedback, particularly around the subject of tiny Forth implementations. (And it was an excuse to list some of the tiniest Forths I’ve seen.)
Representing Graphs in PostgreSQL
Some tricks and techniques for working with graph or tree like data in Postgresql
Stacking triangles for fun and profit
One thing you may have noticed about the trigonometric functions sine and cosine is that they seem to have no agreed upon definition. Or rather, different authors choose different definitions as the starting point, mainly based on convenience. This isn’t problematic or even particularly unusual in mathematics: as long…
Writing a Unix Shell
Building your own UNIX shell in parts. This post focuses on the semantics of the fork system call.
Become a Better Developer by Reading Source Code
In this post, I share why I think that reading source code is an important technique which can be applied to become a better software developer.