Classes vs. Data Structures
Or rather, an object is a set of functions that operate on implied data elements.
Topics /
The most popular blog posts about software engineering on Hacker News. 874 posts.
Or rather, an object is a set of functions that operate on implied data elements.
Spectrum is an open source chat app for large online communities. With the benefit of hindsight, here are the technology choices I regret.
The Official Web Site of Nicholas C. Zakas
Reverse-engineering Safeway's coupon APIs to automate adding digital offers to an account.
Not bad just backwards
How to split up your large, complex, frontend codebases into simple, composable, independently deliverable apps.
For those who don’t follow Swift’s development, ABI stability has been one of its most ambitious projects and possibly it’s defining feature, and it finally shipped in Swift 5 . The result is something I find endlessly fascinating, because I think Swift has pushed the notion of ABI stability farther than any language…
Is the traditional 2D imaging model nearing the end of its usefulness, or does it have a shiny future in the “modern graphics” world? I spent a week on a research retreat in a cottage in the woods to answer this question, as it shapes the future of UI toolkits. Performant UI must use GPU effectively, and it’s…
Can using clang-format make your code slower? Kind of.
This post recaps some of the C64 coding tricks used in my little Commodore 64 coding competition . The competition rules were simple: make a C64 executable (PRG) that draws two lines to form the below image. The objective was to do this in as few bytes as possible.
Note: this is a pretty long post. If you’re not interested in the details, the conclusion at the bottom is intended to be read in a standalone fashion. There’s also a related blog post …
Sircmpwn (the main developer behind the Sway Wayland compositor ) recently wrote a blog post about how he thinks Rust is not a good C replacement . I don’t know if he’d like the D programming language either, but it’s become a C replacement for me.
To kick off this series, will start with something simple yet foundational: linear regression via ordinary least squares. While not particularly exciting, linear regression finds widespread use both as a standalone learning algorithm and as a building block in more advanced learning algorithms.
The SOLID principles are a set of software design principles that teach us how we can structure our functions and classes to be as robust, maintainable and flexible as possible.
Robert O'Callahan. Christian. Kiwi. Software guy. All content human-authored unless otherwise noted.
Ever wondered how Bash completion works? In this first article on the topic, we’ll look at how it works under the hood.
I’ve seen the inside of the Google and Amazon tech stacks. There are common threads that run through them and also, I bet, through most BigTechCos. Here and there down the stack is a lot of C++ and vestigial remnants from earlier days, Perl or PHP or whatever. Out in front of humans, of course, JS. But in between…
In a post a few months back I said it’s a popular myth that const is helpful for enabling compiler optimisations in C and C++ . I figured I should explain that one, especially because I used to believe it was obviously true, myself. I’ll start off with some theory and artificial examples, then I’ll do some experiments…
In 2017, I wrote a series of articles about diff and merge algorithms, and promised that one day they would form part of a book about the Git version control system. In 2018 I didn’t write anything at all on this blog, and that’s because I was writing that book.
During the last few days there has been an ongoing Twitter storm about 10× developers. And like all the ones before it (and all the future o...
This article teaches the fundamentals of parser combinators to people who are already Rust programmers. It assumes no other knowledge, and will explain everything that isn't directly related to Rust, as well as a few of the more unexpected aspects of using Rust for this purpose. It will not teach you Rust if you don't…
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...
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.