New
The latest blog posts to take off on Hacker News. 1,517 posts.
Use the 'tail' command to monitor everything
This article is about how to use the 'tail' command. Here is an overview of how you can use the 'head' and 'tail' commands to output different parts of a file:
Updating the Go Memory Model
The current Go language memory model was written in 2009, with minor updates since. It is clear that there are at least a few details that we should add to the current memory model, among them an explicit endorsement of race detectors and a clear statement of how the APIs in sync/atomic synchronize programs.
Emacs Tramp over AWS SSM APIs
Cattle not pets The majority of AWS EC2 I need to operate these days are members of Kubernetes clusters. For remote access to them I’m more commonly authenticating to the Kube API to spawn a privileged ephemeral debugger pod rather than accessing the host directly. I have little need for host access even for the…
Haskell for Beginners
This is the first article of a series on the functional language Haskell for beginners
I wrote a 231-byte Brainfuck compiler by abusing everything
We wrote a Brainfuck compiler back in April . That one developed a simple architecture to support multiple backends. Today, I want to write a new Brainfuck compiler. One that can only run on a single system, OpenBSD /amd64. And one that is as small as I can possibly make it. I broke into the sub-256 bytes club with my…
How to Review Code as a Junior Developer
Emma Catlin | Software Engineer
Why do we use R rather than Excel?
I recently had cause to take a beginners course in R - a language I'm fairly familiar with. One of the other students had never used it before, so we were buddied up in order for me to show them the ropes. The first lesson of R is always the same. Read a CSV, manipulate it a bit, draw a graph. We did it all without…
Good and Bad Monitoring
You remember that time you passive-aggressively completed a story in the most useless way possible to check that checkbox? That’s most…
Rethinking software testing: perspectives from the world of hardware (2019)
The conventional view of Software Testing The hardware and software worlds may seem poles apart, and in many ways, they indeed are. But there’s a wealth of knowledge that each can learn from the ot…
Behind the scenes, AWS Lambda
How does AWS Lambda work under the hood? Let's find out together!
Against SQL
But SQL is the only widely-used implementation of the relational model, and it is:
Programmers, teach non-geeks the true cost of interruptions (2014)
Interruptions are one of the biggest sources of inefficiency for programmers. Now, to be fair, they’re probably a big source of inefficiency for everyone, but relatively speaking, they’re worse for programmers. To understand what I mean, let’s take someone whose job is in sales. A lot of the day is probably spent on…
What I learned from Erlang about resiliency in systems design (2019)
Failure in computer systems is inevitable. Adopting Erlang's philosophy of "Let it crash" at the many layers of abstractions in software can have a huge positive impact on resiliency.
GraalVM at Facebook
Facebook is using GraalVM to accelerate its Spark workloads and reduce memory & CPU usage. Keep reading to learn about their migration…
I made a mistake with Terraform and Azure made it worse
Craig Stuntz's personal website about programming languages, type theory, DIY synthesizers, compilers, and math.
The Greatest Regex Trick Ever (2014)
Describes a regular expressions technique to match a word or pattern except in certain contexts: excluding tags, ignoring contents, word blacklist.
How JavaScript Works: deep dive into call, apply, and bind
PlaybookUX is an all-in-one software that allows you to recruit, conduct and analyze both qualitative and quantitative research, enhanced by AI.
Compiling Rust is NP-hard
...though it's not the flagship borrow checking that's at fault. What I noticed, and would like to share with you today, is that the exhaustiveness checking performed by the Rust compiler on match patterns is a superset of the SAT problem.…
Functools – The Power of Higher-Order Functions in Python
<p> Python standard library includes many great modules that can help you make your code cleaner and simpler and <code class="inline">functools</code> is d...
Reverse Engineer the BL602 WiFi Driver
What happens inside the WiFi Driver on RISC-V BL602... And how we found the incomplete source code for the driver
Coming to Terms with Tailwind
For a while, I blocked the Tailwind keyword on Twitter. I was a bit mad that @tailwindcss and author Adam blocked me on Twitter after I wrote a bit of criticism that got popular.
Designing Our Serverless Engine: From Kubernetes to Nomad, Firecracker, and Kuma
We decided to build our own serverless engine, one that would not be limited by existing implementations. The first version of Koyeb was built on top of Kubernetes and allowed us to quickly build a working cloud platform. After a few months of operating with this version, we decided to move user workloads from…
Npm Audit: broken by design?
Found 99 vulnerabilities (84 moderately irrelevant, 15 highly irrelevant)
Complex game worlds, simple text interfaces (2015)
UPDATE July 2021: 6 years later, there’s a game and also an updated explainer video .
Debugging in Clojure
A guide to debugging in Clojure, using the REPL
Programming Language Memory Models
Programming language memory models answer the question of what behaviors parallel programs can rely on to share memory between their threads. For example, consider this program in a C-like language, where both x and done start out zeroed.