New
The latest blog posts to take off on Hacker News. 21,833 posts.
Dave Prosser's C Preprocessing Algorithm (2006)
For about five years I've been trying to implement a fully conforming C preprocessor for the front end of the CScout refactoring browser. I've found this to be a fiendishly difficult task. Although what I have written can correctly process million-line real-life projects, every once in a while I come across a…
Persisting React State in LocalStorage
A common thing in React development is that we want to store a bit of React state in localStorage, and re-initialize from that value on the next page-load. This quick tutorial shows you how we can build a custom hook that does exactly this!
I Want Off Mr. Golang's Wild Ride
My honeymoon with the Go language is extremely over. This article is going to have a different tone from what I’ve been posting the past year - it’s a proper rant. And I always feel bad writing tho...
Advanced usage of Python requests: timeouts, retries, hooks
Learn about the advanced features the requests library hides under the hood. DRY base URLs, hooks, retry on failure, default timeouts and mocking.
A quick primer on type traits in modern C++
Discovering one of the pillars of C++ generic programming.
Programming trick questions
Note: me telling you up front that these are trick questions rather gives the answers away in most cases, but oh well. Questions Question 1 What's the fastest way to sort a jumbled array, given that the array has length N and contains all the integers from 1 to N inclusi...
Will VBA Die? (2019)
The questioning of the VBA languages lifespan seems to be a question that is on everyone’s mind. Let’s explore why so many people utilize this language, Microsoft’s current thinking on it’s uses, and when it will ultimately retire from being used.
Don’t try to sanitize input – escape output
Why you should escape output correctly, but generally not sanitize user input.
Building a command line tool to design a farm layout in Stardew Valley
This week's post will cover a command line tool that helps you play the video game Stardew Valley .
You can't make C++ not ugly, but you can't not try (2010)
...everything that's wrong with C++ comes down to that. Background: I've been programming in C++ since about 1993; that's 17 years now. As...
Isomorphic-git v1.0
Today marks the release of isomorphic-git version 1.0! 🎉 There are a lot of big improvements to celebrate.
Implement with types, not your brain (2019)
When asked about the virtues of Haskell’s strong type system, most people will say the best part is that it lets you refactor with a zen-like tranquility, or that it stops your program from crashing at runtime. I mean, those are both great. But my favorite part is that having a strong type system means I don’t need to…
Securing Firefox with WebAssembly
Protecting the security and privacy of individuals is a central tenet of Mozilla’s mission. While we continue to make extensive use of both sandboxing and Rust in Firefox to address ...
SwiftUI Defaults Considered Harmful
A few notes on SwiftUI and why UI frameworks should not try to be “smart”
Reverse engineering the rendering of The Witcher 3 (2018)
Welcome, This is the index page for my "Reverse engineering the rendering of The Witcher 3" small series where I select some rendering tec...
Donald Knuth was framed
YOW! Talk My YOW! talk, "Designing Distributed Systems with TLA+", is now available! You can watch it here. Donald Knuth Was Framed The other day I was...
Legible Mathematics: Sketches of interactive arithmetic for programming (2014)
Sketches of an interactive arithmetic for programming by Glen Chiacchieri.
On Voice Coding
(contains amazon affiliate links) I have had repetitive stress injury (RSI) flareups on and off for many years. I’ve kept them under control mostly through use of a Kinesis Advantage ergonomic keyboard that I’ve had for fifteen years. However, several months ago, I was diagnosed with carpal tunnel syndrome and…
Jailed Just-in-Time Compilation on iOS
Saagar Jha's website.
Reflections on Software Performance
At this point in my career, I’ve worked on at least three projects where performance was a defining characteristic: Livegrep, Taktician, and Sorbet (I discussed sorbet in particular last time, and livegrep in an earlier post). I’ve also done a lot of other performance work on the tools I use, some of which ended up on…
Developer Experience: Fundamentally harder than normal UX
Many (maybe most) of us Software Engineers are deeply involved in projects where UI and UX are very important concerns (or at least they should be). Throughout the short history of our profession, we
The Slippery Slope of Docker Dev Environments
Explore the pros and cons of Docker for local development and learn how to set up a developer-friendly, container-based workflow. Perfect for DevOps enthusiasts and developers!
The Zen of Go
This article was derived from my GopherCon Israel 2020 presentation. It’s also quite long. If you’d prefer a shorter version, head over to the-zen-of-go.netlify.com .
Production-Oriented Development
Throughout my career, I’ve developed some opinions. Some have worn particularly deep ruts, reinforced by years of experience. I tried to…
Programming a space invader in OCaml and OpenGL: lessons learned
After a first experience with ReasonML, I wanted to check if its parent language, OCaml, was also that good. It took me an entire game to form a clear opinion.
Requirements volatility is the core problem of software engineering
It's now been more than 50 years since the first IFIP Conference on Software Engineering, and in that time there have been many different software engineering methodologies, processes, and models proposed to help software developers achieve that predictable and cost-effective process. But 50 years later, we still seem…