Simulating water over terrain
If you don't want a long an boring introduction, skip directly to the virtual pipes method description . I will get a little bit sad if you do this, though x)
Topics /
The most popular blog posts about software engineering on Hacker News. 14,532 posts.
If you don't want a long an boring introduction, skip directly to the virtual pipes method description . I will get a little bit sad if you do this, though x)
If your app has just ruined my day, I need help, not humour.
I felt the familiar feeling of depression and lethargy creep in while my eyes darted from watching claude-code work and my phone. “What’s the point of it all?” I thought, LLMs can generate decent-ish and correct-ish looking code while I have more time to do what? doomscroll? This was the third time I gave claude-code…
Open Source Freelancer
Sharp pixels, gritty colour banding, and DOS games running at resolutions their own era couldn’t manage. Why I still prefer the software renderer, and why it needs a fast PC.
Tuesday was Stateless MCP day—the rollout of MCP 2.0, or the 2026-07-28 Model Context Protocol specification to use the more formal but less memorable name. This is the most significant …
One fine day in January 2017 I was reminded of something I had half-noticed a few times over the previous decade. That is, younger hackers don’t know the bit structure of ASCII and the meaning of the odder control characters in it.
From the highly eclectic blog of Mark Dominus
Most command line programs that offer line editing -- like bash, Python, GDB, psql, sqlite and more -- do so using GNU readline. Readline's a powerful library that grants history, completion, movement and editing to programs that use it --- and a stable and consistent set of keyboard shortcuts. Shame, then, that even…
If you are a backend developer like me, logging is the window to your application. Unlike in the frontend, there’s not much to see except of your log messages. Here are some of my personal guidelines I use when I write logs.
I read a blog post by Alex Muscar, “Beautiful Binary Search in D”. It describes a binary search called “Shar’s algorithm”. I’d never heard of it and it’s i…
How does a good developer become a great developer?
I made a new years resolution to read at least one C source file from OpenBSD daily.The goal was to both get better at C and to contribute more to the base s...
Increasingly popular in the last couple of years, I think 2020 is going to be the year of “no code”: the movement that say you can write business logic and even entire applications without having the training of a software developer. I empathise with people doing this, and I think some of the “no code” tools are…
Asynchrony is not concurrency.
One of my favourite uses for the GPT-3 AI language model is generating explanations of how code works. It’s shockingly effective at this: its training set clearly include a vast …
At this point we have a TCP/IP stack that is able to communicate to other hosts in the Internet. The implementation so far has been fairly straight-forward, but missing a major feature: Reliability. Namely, our TCP does not guarantee the integrity of the data stream it presents to applications. Even establishing the…
Writing code is cheap now - Agentic Engineering Patterns
A detailed explanation of why I chose OCaml as the ‘default’ programming language for every project.
Alexis Beingessner's Text Rendering Hates You , published exactly a month ago today, hits very close to my heart.
I’m happy to announce the official release of the Light Table Playground ! You can find instructions for getting it here: http://app.kodowa.com/playground
Whether it's building a new project from scratch, implementing a big feature, or beginning a large refactor, it can be difficult to stay motivated and complete large technical projects. A method that works really well for me is to continuously see real results and to order my work based on that.
Announcing AoCO 2025 - daily December posts about compiler optimisations
Anubis could not load its JavaScript. The server may be overloaded. Please reload the page to try again.
Developing Opinions - A blog by Jimmy Breck-McKye