New
The latest blog posts to take off on Hacker News. 1,517 posts.
Namedtuple in a Post-Dataclasses World
namedtuple has been around since forever, and over time, its convenience saw it used far outside its originally intended purpose. With dataclasses now covering part of those use cases, what should one use named tuples for? In this article, I address this question, and give a few examples from real code.
0x7FDE623822FC16E6: A magic constant for double float reciprocal (2011)
EDIT: I never expected this post to garner so much interest. Just to be clear, using the constant is a very bad idea in almost every situation I can think of. Even instructions like RCPSS should only be used by people who are convinced that the tradeoffs are worth it (or don’t have any other choice). Subtracting from…
Useful algorithms that are not optimized by Jax, PyTorch, or TensorFlow
In some previous blog posts we described in details how one can generalize automatic differentiation to give automatically stability enhancements and all sorts of other niceties by incorporating graph transformations into code generation. However, one of the things which we didn’t go into too much is the limitation of…
MGBA Integration: Introducing the Integrated GBA
Your eyes are not deceiving you. As of 5.0-14690, Dolphin now has mGBA directly built into it as a new way to handle Game Boy Advance connectivity with GameCube titles. For those who don't know, mGBA is the most renowned and accurate GBA emulator of this era and has been…
Crystal 1.1.0
We are releasing the first post-1.0 release, making efforts to keep our promise of making regular releases each 3 months, a bit delayed because of the conference, and with special focus on keeping the language stability. Below we list the most important or interesting changes, without mentioning the several bugfixes…
A monorepo misconception – atomic cross-project commits
Are cross-project changes in a single atomic commit the key advantage of monorepos? I do not think so.
Julia's multiple dispatch explained with Pokemons
T hese days, I find myself evangelizing for Julia quite a bit. It’s a good language, especially for scientific computing, but I believe its focus on performance also makes it a good general language as well. At some level, programmers who know multiple languages have an abstract understanding of the constructs used…
Reverse-Engineering the Mali G78
Collabora reverse-engineers Mali G78 instruction set and releases documentation, disassembler, and assembler for its
Clojure builds as an amalgamation of orthogonal parts
The Clojure Core team recently released a new Clojure library, tools.build , that is a culmination of thought around batteries-included build support for Clojure projects. I won’t go into detail around the history and contents of the library in this post because much of that is found elsewhere, including the…
GPU Architecture Types Explained
The behavior of the graphics pipeline is practically standard across platforms and APIs, yet GPU vendors come up with unique solutions to accelerate it, the two major architecture types being tile-based and immediate-mode rendering GPUs. In this article we explore how they work, present their strengths/weaknesses, and…
We don’t use Kubernetes
“No, we don’t use Kubernetes”. That always gets raised eyebrows... so we decided to write about our reasoning behind this cloud architecture decision.
Software engineering research is a train wreck
I'm a big advocate of Empirical Software Engineering. I wrote a talk on it. I wrote a 6000-word post covering one controversy. I spend a lot of time reading...
Node-RED 2.0
Find out more on the blog
Papers every developer should read at least twice (2009)
10 Papers Every Developer Should Read - (At Least Twice)
JVM Anatomy Quark #26: Identity Hash Code
"JVM Anatomy Quarks" is the on-going mini-post series, where every post is describing some elementary piece of knowledge about JVM. The name underlines the fact that the single post cannot be taken in isolation, and most pieces described here are going to readily interact with each other.
Racket v8.2
_posted by John Clements_ Racket version 8.2 is now available from https://download.racket-lang.org. Racket CS improved the performance of large-integer arithmetic. Racket has improved support for layered and tethered installation. Racket ...
GitHub Copilot: First Impressions
A glimpse of the upcoming paradigm shift in how we do development
Generating JSON Directly from Postgres
PostgreSQL has built-in JSON generators that can be used to create structured JSON output right in the database, upping performance and radically simplifying web tiers.
Postgres sequences can skip 32 unexpectedly
The other day, we started getting strange reports from some customers of incident.io. Their incident identifiers — unique numbers to identify each incident — appeared to have jumped unexpectedly.
Pharo 9
Pharo is a pure object-oriented programming language and a powerful environment, focused on simplicity and immediate feedback.
Paxos vs. Raft: Have we reached consensus on distributed consensus?
In our 54th reading group meeting, we were looking for an answer to an important question in the distributed systems community: “What about Raft?” We looked at the “ Paxos vs Raft: Have we reached consensus on distributed consensus? ” paper to try to find the answer. As always, we had an excellent presentation, this…
Zig, Skia, Clojure, Geometry and the Japanese TV Show: ICFP Contest 2021
4-day coding marathon
macOS Nix setup: an alternative to Homebrew (2020)
I recently got a new Macbook, and began setting up the Nix package manager to install my developer toolset. I mainly did this to try and have a working setup without installing Homebrew. Since I ran into a few issues, I wanted to briefly document what I did and why in case others wanted to try the same. Why Nix? (and…
Thinking in Events: From Databases to Distributed Collaboration Software [video]
Keynote at 15th ACM International Conference on Distributed and Event-based Systems (DEBS) , Online (originally planned to be in Milan, Italy), July 2021.
Beating TimSort at Merging
Learn how to beat TimSort at merging sorted lists in Python by creating a C extension. Discover the performance advantages of merging lists compare...