New
The latest blog posts to take off on Hacker News. 14,543 posts.
How an Optimizing Compiler Works
Optimizing compilers are a mainstay of modern software: allowing a programmer to write code in a language that makes sense to them, while transforming it into a form that makes sense for the underlying hardware to run efficiently. The optimizing compiler's job is to figure out what your input program does, and create…
Let's Create a Simple Load Balancer with Go
Load Balancers plays a key role in Web Architecture. In this post we are going to develop a simple load balancer with power of Go
Notes on Type Layouts and ABIs in Rust
Over the years I’ve found myself with a weird amount of knowledge about how types and ABIs in Rust work, and I wanted to write it all down in one place so that… it’s written down in one place. Much of this information can or should be found in the Rust Language Reference and the Rustonomicon .
Building a CRUD App with Datomic Cloud Ions
Software engineer, etc etc
How Swift Achieved Dynamic Linking Where Rust Couldn't
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…
Making Wrong Code Look Wrong (2005)
Way back in September 1983, I started my first real job, working at Oranim, a big bread factory in Israel that made something like 100,000 loaves of bread every night in six giant ovens the size of…
Parse, Don’t Validate
Historically, I’ve struggled to find a concise, simple way to explain what it means to practice type-driven design. Too often, when someone asks me “How did you come up with this approach?” I find I can’t give them a satisfying answer. I know it didn’t just come to me in a vision—I have an iterative design process…
Is GraphQL Still Relevant in an HTTP2 World?
GraphQL offers a lot more than reduced round trips.
Layers in Software: From Data to Value
Then Back in the 2000s, we wrote applications in layers. Presentation layer, client, data transfer, API, business logic, data access, database. We maintained strict separation bet ween these layers…
C++ 20: The Core Language
My last post C++20: The Big Four started with an overview of concepts, ranges, coroutines, and modules. Of course, C++20 has more to offer. Today, let’s continue my overview of the core language.
RISC-V OS Using Rust: Memory Management Unit
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.
Algebraic Structures: Things I wish someone had explained about FP
Algebraic Structures are something I wish I’d understood better, sooner. I had a hazy idea of what they were, but didn’t know the correct terminology. That was a massive barrier to finding out more. This article is my attempt to stop that happening to others. We’ll look at: What are algebraic structures? How do we use…
A CS degree is better than teaching yourself how to code?
Should I teach myself to code or get a college CS degree? This is a question that many face. Software development is a field that is heavily reliant on skills. So surely teaching yourself to code should be enough right? Wrong.
Why to use ‘python -m pip’
Fellow core developer and Canadian, Mariatta, asked on Twitter about python -m pip and who told her about that idiom along with asking for a reference explaining it: I learned sometime ago that we should be doing `python -m pip install ...` instead of simply `pip install ...` but now I can'
Typestates in Rust (2018)
A long time ago, the Rust language was a language with typestate. Officially, typestates were dropped long before Rust 1.0. In this entry, I’ll get you in on the worst kept secret of the Rust community: Rust still has typestates.
FastSpark: A New Fast Native Implementation of Spark from Scratch
TLDR: Here is the code to explore.
XML is almost always misused
In 1996, XML was invented. No sooner than it was created, it was adopted for all manner of misconceived applications for which it was a poor choice.
A Quick and Easy Guide to Tmux (2015)
Become a master of tmux in a few minutes
JavaScript Is C
JavaScript and C both make you maintain your invariants the most painful way possible. Happily, there are better alternatives these days.