Throw away your first draft of your code
The next time you start on a major project, I want you to write code for a couple of days and then delete it all . Just throw it away.
Topics /
The most popular blog posts about software engineering on Hacker News. 14,534 posts.
The next time you start on a major project, I want you to write code for a couple of days and then delete it all . Just throw it away.
Update: You can find a newer version of this article on Python Morsels. In every Intro to Python class I teach, there’s always at least one “how...
Tell me if you recognize this scenario: you’re in the middle of rewriting your local commits when you suddenly realize that you have gone too far and, after one too many rebases, you are left with a history that looks nothing like the way you wanted. No? Well, I certainly do. It was in one of those moments of despair…
Note: This blog post was written for GCC 7. Later versions of the compiler may have added some of these warnings to -Wall or -Wextra . ...
Stale Bot’s are a type of automated bot on Github, which locks issues which are “stale” (as in have no recent activity). This seems like a helpful tool at first, but in reality it’s terrible for all p
In 2013, I had an idea: "what if I were to build my programming language?". Back then my idea came down to "an interpreted language that mixes elements from Ruby and Smalltalk", and not much more.
Updated 2026-07-10 for the agent-teams era. Originally published September 2025. A subagent in Claude Code is a separate agent your session spawns to do a...
More or less all the big APIs are RESTful these days. Yeah, you can quibble about what “REST” means (and I will, a bit) but the assertion is broadly true. Is it going to stay that way forever? Seems unlikely. So, what’s next?
I first became acquainted with Pat Conroy's work when, as a freshman in college, I watched The Great Santini as a requirement for one of my honors courses. This film struck me as both sad and hopeful. Since then, I have seen a couple of other movies adapted from his novels.
This idea is a complete rip off an article that appeared in Wired a little while ago and it got me thinking what would my list for Compu...
From the highly eclectic blog of Mark Dominus
Over the past year I’ve refined my approach to arena allocation . With practice, it’s effective, simple, and fast; typically as easy to use as garbage collection but without the costs. Depending on need, an allocator can weigh just 7–25 lines of code — perfect when lacking a runtime . With the core details of my own…
Amazing as it may seem after all these years, there are still junior developers in the world. A few weeks ago at work we had a talk where senior developers (including me) were invited to spend around five minutes each talking about our personal software development philosophies....
It’s been a very exciting year for ClojureScript. It’s clear that things have been accelerating and here is a personal selection of highlights:
“A man is a success if he gets up in the morning and gets to bed at night, and in between he does what he wants to do.” ― Bob Dylan I am a lifestyle programmer. I run a one-man software product bus…
In order to give some structure to my ongoing investigation of git’s data structures, protocols and implementation I decided to re-implement git clone without using any of git’s plumbing commands or any of the existing git libraries. Along the way I tried to keep some implementation notes that should help to…
Let's create a Git commit using Git's low-level (plumbing) commands
From the operating system's point of view, we have a large pool of memory from some starting address to some ending address. We can use our linker script (the virt.lds file) to provide us symbols representing the address of the starting and ending points.
Nope, you don't know how to validate an email address. Even if you think you'd get the domain part right, fuggeddabout the local part. Seriously.
We need languages and systems that are less powerful, not more powerful, and easy ways to create and use such languages.
Understand the core problems state management libraries need to solve. And how the proliferation of modern libraries address them in new ways.
Perhaps the most often repeated complaint about Rust is its slow feedback loop and long compilation times. I hear about it all the time; in Rust podcasts, blog posts, surveys, conference talks or offline discussions. I also regularly complain about it, being a Rust user myself!
Over the last decade, we’ve seen great advancements in distributed systems, but the way we program them has seen few fundamental improvements. While we can sometimes abstract away distribution (Spark, Redis, etc.), developers still struggle with challenges like concurrency, fault tolerance, and versioning. There are…
A developer's lament about Xcode's opaque errors, unreadable project files, and Apple's culture of pretending everything is fine.
I got some fancy new speakers last week. They’re powered speakers and they have streaming service integrations built in, unlike the 35-year-old passive speakers I’m upgrading from. Overall they’re great! But they’re so loud that it’s difficult to make small volume adjustments within the range of safe volume levels for…
Here's a preview from my zine, Bite Size Bash ! If you want to see more comics like this, sign up for my saturday comics newsletter or browse more comics !
Update 10 Feb 2011 : Tim Bray has written a much shorter, clearer and less technical explanation of the broken use of hash-bangs URLs . I thoroughly recommend reading and referencing it.