New
The latest blog posts to take off on Hacker News. 1,508 posts.
Back to old tricks, or, baby steps in Rust
I’ve been learning Rust for the past twenty days or so, working through the Blandy & Orendorff book, coding up things as I go. Once I got into playing with Rust traits and closures and as…
Lisp Badge: A single-board computer that you can program in uLisp
The Lisp Badge is a self-contained computer with its own display and keyboard, based on an ATmega1284, that you can program in uLisp:
Bitcoin From Scratch – Part 1
Understanding the fundamental building blocks of Bitcoin can be daunting for some developers. The purpose of this guide is to explain through simple pieces of code, how Bitcoin works.
How to list all the targets on a Makefile
A tip on how to add a target on your Makefile to list all available targets
The gap between learning code and producing usable software
One of the unspoken areas about software development is building usable software.
What is the core of the Python programming language?
Why ask this question? It's no secret that I want a Python implementation for WebAssembly [https://webassembly.org/]. It would not only get Python into the browser, but with the fact that both iOS [https://developer.apple.com/documentation/javascriptcore] and Android [https://developer.android.com/guide/webapps]…
Mastering Jq: Part 1
This is the first part of an ongoing series on mastering jq. jq is a valuable tool that every fast coder has in their tool chest. It contains depths of immense power. In part 1, we'll start off with the basics.
All about Modelica: An equation-based language for modeling physical systems
Marco Bonvini’s personal website.
Does scrum ruin great engineers or are you doing it wrong?
A question on Stack Overflow’s Software Engineering site caught our attention recently. It tries to come to terms with the impact of scrum on developers' ability to do a great job. The claim is a bold one: Scrum is turning good developers into average ones. Could that be true?
A Few More Reasons Rust Compiles Slowly
Learn about the benefits of TiDB and the TiDB Cloud solutions from PingCAP. Read our latest post "A Few More Reasons Rust Compiles Slowly" here.
Worrying about the NPM Ecosystem
There are too many packages and too many dependencies, too deeply nested. Can we measure the problem? And what do we do about it?
Better Geometry Through Graph Theory (2018)
A few months ago, I decided to implement set operations on curved regions. I had the the canonical textbook on computational geometry , which described approaches for polygons comprised of straight lines, and it seemed like other projects had extended these techniques to parametric curves . I figured it would take a…
Software should be designed to last
And why I am trying to minimize my dependence on external libraries (whenever possible).
Guide to Linux System Calls (2016)
This complete guide explains all about Linux system calls with sample codes and results.
GNU GCC does not round floating-point divisions to the nearest value
I know that floating-point arithmetic is a bit crazy on modern computers. For example, floating-point numbers are not associative: 0.1+(0.2+0.3) == 0.599999999999999978 (0.1+0.2)+0.3 == 0.600000000000000089 But, at least, this is fairly consistent in my experience. You should simply not assume fancy properties like…
Using Zig to provide stack traces on kernel panic on bare metal (2018)
Last week, I reached an exciting milestone in my career as a programmer. For the first time in my life, I ran code directly on hardware , with no Operating System sitting between the bare metal and my code.
Xi-Editor Retrospective
A bit more than four years ago I started the xi-editor project. Now I have placed it on the back burner (though there is still some activity from the open source community). The original goal was to deliver a very high quality editing experience. To this end, the project spent a rather large number of “novelty…
Building a high performance JSON parser
JSON is important, damn near everything that we do as programmers or operators involves JSON at some point. JSON decoding is expensive, if your product talks JSON then performance of marshalling data in and out of JSON is important. This is a talk about designing an efficient replacement for encoding/json.Decoder .
Cache Oblivious Algorithms
Cache-Oblivious Algorithms Cache-oblivious algorithms seemed incredible to me when I first heard about it in 6.854 (Advanced Algorithms). It’s relatively straightforward to imagine algorithms that utilizes information about page size $B$ and cache size $M$ to create efficient data structures. However, cache-oblivious…
Examining ARM vs. x86 Memory Models with Rust
With Apple’s recent announcement that they are moving away from Intel X86 CPU’s to their own ARM CPU’s for future laptops and desktops I thought it would be a good time to take a look at the some differences that can affect systems programmers working in Rust.
Engineering Dropbox Transfer: Making simple even simpler
One of the challenges of application engineering within an established company like Dropbox is to break out of the cycle of incremental improvements and look at a problem fresh. Our colleagues who do user research help by regularly reminding us of the customer’s perspective, but so can our friends and family when they…