New
The latest blog posts to take off on Hacker News. 21,833 posts.
GitHub Trip Report
I, the founder of Fossil, was invited and attended the first meeting of the GitHub Open Source Advisory Board in San Francisco on 2019-11-12. This post is a report of my adventures.
Syntax Highlighting Is Backwards (2018)
Most code editors color different pieces of your program in different ways. For instance, they’ll make keywords like if bold and bright so that you notice when you’ve misspelled them. They’ll make non-executable parts like comments and documentation fainter so that you know that the computer isn’t seeing that part of…
TLA+ model checking made symbolic
TLA+ model checking made symbolic Konnov et al., OOPSLA’19 TLA+ is a formal specification language (Temporal Logic of Actions) particularly well suited to reasoning about distributed algorith…
Making Git and Jupyter Notebooks play nice
Summary: jq rocks for speedy JSON mangling. Use it to make powerful git clean filters, e.g. when stripping out unwanted cached-data from Jupyter notebooks. You can find the documentation of git 'clean' and 'smudge' filters buried in the page on git-attributes , or see my example setup below.
Discovering less-known Postgres v12 features
Get to know and learn how to use some less-known features of Version 12 of PostgreSQL. You'll surely discover something new for yourself.
PHP 7.4
PHP is a popular general-purpose scripting language that powers everything from your blog to the most popular websites in the world.
Debuggers Suck
Robert O'Callahan. Christian. Kiwi. Software guy. All content human-authored unless otherwise noted.
Latency/throughput tradeoffs, illustrated with coffee
You’re making morning drip coffee. You need to make 2 cups. Do you:
Building a language server for Muon
I’m a big fan of interactive tool support for programming. I often use features like “go to definition”, “find symbol”, compile error underlining, etc. Also, earlier this year, I launched Muon, a new low-level programming language. As no tooling existed beyond the compiler, writing the initial Muon programs (such as a…
In defense of 'flicks' (or how I learned to stop worrying and love 705600000)
Essentially a flick is just a really big number, specifically the number 705,600,000 and tries to solve a problem that nobody in digital media actually has.
The Birth of Legacy Software – How Change Aversion Feeds on Itself
Here’s a common pattern that I see play out very often in software teams: There is a need to change the existing system behavior to accomplish new functionality. The software engineer l…
Git-subtrac: all your Git submodules in one place
Long ago, I wrote git-subtree to work around some of my annoyances with git submodules. I've learned a lot since then, and the development e...
Lightweight API Design in Swift
This week, let’s take a look at a few core language features that enable us to design really lightweight APIs in Swift, and how we can use them to make a feature or system much more capable through the power of composition.
Mergeable replicated data types – Part I
Mergeable replicated data types Kaki et al., OOPSLA’19 This paper was published at OOPSLA, but perhaps it’s amongst the distributed systems community that I expect there to be the greatest in…
Shipping a compiler every six weeks
This blog post is a slightly edited version of the live transcript of the talk I gave at RustFest 2019 in Barcelona on November 10th, 2019. As it's a transcript some parts of it are a bit repetitive or badly worded, but I hope the message behind the talk will be conveyed by this post anyway.
Towards a unified theory of reactive UI
Update 26 Sep 2020: A followup to this post is Towards principled reactive UI.
Overview of Rust error handling libraries
Rust's error handling is a pleasure to use thanks to the Result type . It ensures Rust's error handling is always correct , visible , and performant . And with the addition of the ? operator in Rust 1.13 , and the addition of return types from main in Rust 1.26 Rust's error handling has only kept improving.
GitLab 12.5
GitLab release announcements and feature highlights.
The Danger of “Simplicity”
Opinions and discussions of various topics, mostly related to programming.
Mu: Sketching out a minimal system programming language
In the previous post , I described what my new hobbyist computing stack looks like today, and how the design decisions seemed to accumulate inevitably from a small set of axiomatic goals. In this post I describe some (far more speculative) future plans for Mu and try to articulate how the design process continues to…
The care and feeding of software engineers, or why engineers are grumpy (2012)
The Official Web Site of Nicholas C. Zakas
Things I’ve learned in 20 years of programming
This year, I’ve become increasingly acquainted with the DEV platform. It’s a refreshingly positive oasis in the large sea of angry Reddit commenters and “well actually” connoisseurs that is the broader software world. One interesting facet of this community is that it seems pretty beginner-heavy. I regularly see posts…
Go’s Features of Last Resort
A “Feature of Last Resort” (FOLR) is a useful feature which solves certain otherwise hard-to-solve problems, but are often best avoided.
Multi-Value All the Wasm
Multi-value is a proposed extension to core WebAssembly that enables functions to return many values, among other things. It is also a prerequisite for Wasm interface types. Nick Fitzgerald has ...
How to make your C codebase Rusty: rewriting keyboard firmware keymap
Recently, my colleague introduced me to QMK 1, an open-source keyboard firmware. Like many non-trivia C projects, macro is heavily used everywhere, especially in keymap files 2. It didn’t bother me much since I have been programming C for many years. But I kept thinking to myself, “what would it look like if I can…
Common Mistakes and Missed Optimization Opportunities in SQL
Made by Developers and Non-Developers