Lessons learned from writing ShellCheck
ShellCheck is a static analysis tool that points out common problems and pitfalls in shell scripts.
Alpine makes Python Docker builds slower, and images larger
Alpine Linux is often recommended as a smaller, faster Docker base image. But if you’re using Python, it will slow down your build and make your image larger.
When did I run that command? Update your Bash prompt with the command start time
Update your Bash prompt with the command start time.
Making Rust as Fast as Go
software engineer in sydney, australia
Implementing simple cooperative threads in C
Using setjmp(), longjmp(), and assembly to implement a simple threading system in C!
So you want to write your own CSV code (2014)
So You Want To Write Your Own CSV code? Fields separated by commas and rows separated by newline. Easy right? You can write the code yourself in just a few lines.
Docker's Second Death
I do enterprise cloud stuff at Google, also at k8sfiles.com. Words are my own.
What I wish someone had told me about tensor computation libraries
I get confused with tensor computation libraries (or computational graph libraries, or symbolic algebra libraries, or whatever they’re marketing themselves as these days). I was first introduced to PyTorch and TensorFlow and, having no other reference, thought they were prototypical examples of tensor computation…
Better Git diff output for Ruby, Python, Elixir, Go
A small tweak to your Git config that will make the diff output smarter and more language aware
How to make roguelike games in Rust
This tutorial is free and open source, and all code uses the MIT license - so you are free to do with it as you like. My hope is that you will enjoy the tutorial, and make great games!
Xfce switches to GitLab
Starting today, May 1, we’re switching from our cgit/gitolite setup to GitLab. Our old server, git.xfce.org, is now a ready-only in-sync mirror (so you can still pull code). Our new server is gitlab.xfce.org.
Clojure on the Desktop
With cljfx and Java 14 it’s finally here
What's Next for Scala
A recent tweet by a friend of mine noted how the public interest in the Scala programming language seems to have plateaued or waned, which matches my feeling of the latest trends and zeitgeist. This blog post will go into why I think that has happened, where Scala stands now, and what the future holds for the Scala…
A Programmer’s Intuition for Matrix Multiplication
What does matrix multiplication mean? Here's a few common intuitions: This is useful when first learning about vectors: vectors go in, new ones come out.…
List of YouTube channels for improving web development and programming skills
Discover and get inspired, explore through hundreds of tech products.
Why NetNewsWire Is Fast
NetNewsWire is fast because performance is one of our core values. Being fast is part of the very definition of the app.
Don’t try to sanitize input – escape output
Why you should escape output correctly, but generally not sanitize user input.
State Machines in Rust
Every now and then I like to think about topics that don't directly relate to my daily work. One of those topics has been parsers: back in January I wrote about byte-ordered stream parsing and how I think we can improve streaming parsing in Rust with a small set of API additions.
Things I wish I knew about state management when I started writing React apps
Think about the most complex frontends you’ve used. Frontends that made you wonder — “how did they create this”?
We chose Java for our high-frequency trading application
In the world of High-Frequency Trading, automated applications process hundreds of millions of market signals every day and send back…
A Visual Guide to React Mental Models: UseState, UseEffect and Lifecycles
I love mental models. They’re crucial to understanding complex systems, allowing us to intuitively grasp and solve complex problems.
The Big Little Guide to Message Queues
A guide to the fundamental concepts that underlie message queues, and how they apply to popular queueing systems available today.
QBE vs. LLVM
Both QBE and LLVM are compiler backends using an SSA representation. This document will explain why LLVM does not make QBE a redundant project. Obviously, everything following is biased, because written by me.
Parsing JSON at the CLI: A Practical Introduction to jq and more
JSON is everywhere you look these days. The `jq` tool makes it easy to slice, dice, and transform JSON from the command line. It can be hard to map the official manual to real-world applications, so let's look at some practical examples of `jq` and its cousins that handle YAML & HTML!
Fast Inverse Square Root
The famous fast inverse square root is some mysterious code not written by programming legend John Carmack to calculate a fast approximation of $1/\sqrt{x}$: