Topics /
Software Engineering
The most popular blog posts about software engineering on Hacker News. 1,733 posts.
Go 1.21 will (likely) have a static toolchain on Linux
You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…
Changing the Rules of Rust
In Rust, there are certain API decisions about what is and isn’t sound that impact all Rust code. That is, a decision was made to allow or not allow types which have certain safety requirements, and now all users are committed to that decision. They can’t just use a different API with different rules: all APIs must…
Git commands you probably do not need
Ah, git ! Love it, hate it. Few things are as central to the modern software development workflow as source-control management (SCM) tools. Although there have been and still are plenty of alternatives to git in the world of SCMs, none other seem quite as prevalent both in open-source and the enterprise.
Some notes on local-first development
How local-first software works: sync engines, CRDTs, replicated databases, developer tools, architecture tradeoffs, and when to use each approach.
LuaX: A Lua Dialect with JSX
This site now runs on a custom dialect of Lua.
Writing a Simple Garbage Collector in C (2014)
People seem to think that writing a garbage collector is really hard, a deep magic understood by a few great sages and Hans Boehm (et al) . Well it’s not. In fact, it’s rather straight forward. I claim that the hardest part in writing a GC is writing the memory allocator, which is as hard to write as it is to look up…
Prolog for data science
I demonstrate a widely applicable pattern which integrates Prolog as a critical component in a data science analysis. Analytic methods are used to generate properties about the data under study and Prolog is used to reason about the data via the generated properties. The post includes some examples of piece-wise…
Prompt Engineering: Steer a large pretrained language model to do what you want
Prompt Engineering, also known as In-Context Prompting, refers to methods for how to communicate with LLM to steer its behavior for desired outcomes without updating the model weights. It is an empirical science and the effect of prompt engineering methods can vary a lot among models, thus requiring heavy…
Tokenized Tokens
Documentation and guides from the team at Fly.io.
Reducing technical debt by valuing comments as much as code
Annotations, such as Javadoc, help maintainers understand your coding decisions.
An unexpected benefit of unit tests
While I won’t go so far as to diagnose myself with ADD without consulting a doctor, those who know me know I can be distracted quite easily. So recently, I decided to do something a little different with a personal project I started a few weeks ago (link to come). I wrote unit tests. That may seem rather uninspired…
The simplicity of single-file Golang deployments
Deploy Go apps as single static binaries with systemd. No Docker, no npm, zero-downtime via socket activation. Modern complexity is often unnecessary.
MVC Isn’t MVC
In December of 1979 Tyrgve Reenskaug, an employee of Xerox PARC, published a paper called MODELS-VIEWS-CONTROLLERS about a design pattern he had invented for developing applications with a graphica…
Kubernetes is hard
Recently, 37signals unveiled mrsk , a tool developed internally to ease with deployments of their services and an accompanying blog post which sparked a lengthy discussion on Hacker News .
When deployments are easy, code becomes simpler
You bump into DORA in the wild a lot.
Thirty Years Ago: MS-DOS 6.00
A retrospective on MS-DOS 6.00 and my small contributions to the product.
Learn Wayland by writing a GUI from scratch
Wayland is all the rage those days. Distributions left and right switch to it, many readers of my previous article on writing a X11 GUI from scratch in x86_64 assembly asked for a follow-up article about Wayland, and I now run Wayland on my desktop. So here we go, let's write a (very simple) GUI program with Wayland…
Lessons From Linguistics: i18n Best Practices for Front-End Developers
Here are a few internationalization (i18n) best practices to help front-end developers avoid errors and serve more robust text content on multilingual websites and apps.
I wrote a string type
I write compilers for fun. I can’t help it. Consequently, I also write a lot of parsers. In systems programming, it’s usually a good idea to try to share memory rather than reuse it, so as such my AST types tend to look like this.
Why we need to know LR and recursive descent parsing techniques
A couple of people have asked me for my thoughts on part of an article from Tiark Rompf called (roughly) “ Just Write the Parser ” which advocates the use of recursive descent parsing over more “formal” approaches to parsing, at least in the context of teaching compilers. I’m fairly sure I read this article a couple…
MSW 2.0 – Mock Service Worker
The biggest library release is finally here! Learn more about the changes, motivation behind them, and how to upgrade to the next version today.
Reverse engineering an e-ink display
We bypass read-out protection on the CC2510
Spin 2.0 – open-source tool for building and running WASM apps
Read some of the latest blog posts from Akamai Developers.
Removing PGP from PyPI
PyPI has removed support for uploading PGP signatures with new releases.
What makes developers productive?
Many ingredients go into developer productivity. Some are obvious and easy to measure (build times are an easy example to point to). But I think we tend to miss other important factors, perhaps because they are hard to directly measure. For example, no system collects a number that shows how well each developer…
Why You Should Write Your Own Static Site Generator
I rewrote my personal website using basic libraries and the flexibility is incredible.
Elixir and Phoenix can do it all
Documentation and guides from the team at Fly.io.
DuckDB 0.8
The DuckDB team is happy to announce the latest DuckDB release (0.8.0). This release is named “Fulvigula” after the Mottled Duck (Anas Fulvigula) native to the Gulf of Mexico. To install the new version, please visit the installation guide. The full release notes can be found on GitHub. There have been too many…
The many faces of DISTINCT in Postgres (2017)
3 interesting uses of DISTINCT in PostgreSQL