Reader
Latest posts from blogs I follow
-
-
-
Creating Beautiful Tracebacks with Python's Exception Hooks(opens in new tab)
We all spend a good chuck of our time debugging, sifting through logs or reading tracebacks. Each of these can be difficult and time-consuming and in this article we will focus on making the last one - dealing with tracebacks ...
-
520 byte sectors and Ubuntu(opens in new tab)
I recently bought a server which came with Samsung PM1643 SSDs. Trying to install Ubuntu on them didn’t work at first try, because the drives had 520 byte sectors instead of 512 byte. Luckily, there’s a fix–get the drive(s) to ...
-
Building GitHub Apps with Golang(opens in new tab)
If you're using GitHub as your version control system of choice then GitHub Apps can be incredibly useful for many tasks including building CI/CD, managing repositories, querying statistical data and much more. In this article we will walk through the ...
-
-
-
Profiling and Analyzing Performance of Python Programs(opens in new tab)
Profiling is integral to any code and performance optimization. Any experience and skill in performance optimization that you might already have will not be very useful if you don't know where to apply it. So, in this article we will ...
-
import attrs(opens in new tab)
An attempt at catharsis. This is a deeply personal blog post about the most influential project I’ve ever created: attrs, the progenitor of modern Python class utilities. I’m retelling its history from my perspective, how it begot dataclasses, and how ...
-
How to use Contentful with Eleventy(opens in new tab)
Contentful is an immensely well-featured headless content management system, but the density of its featureset can be daunting to integrate with static site generators. The great news is, Eleventy is so well-designed and modular — it doesn’t have to be ...
-
How to use Vue to template your Eleventy projects(opens in new tab)
Okay quick disclaimer before I kick this off — this post does not cover how to use interactive Vue components in an Eleventy project. This post covers using Vue entirely server-side! The client will not receive any Vue code. All ...
-
On Tzimtzum(opens in new tab)
The book Life of Pi, written in 2001 by Canadian author Yann Martel, tells the story of a young Indian boy fascinated by philosophy, spirituality, and religious syncretism from an early age. After a devastating shipwreck on his way to ...
-
The curse of scalable technology(opens in new tab)
Some of the downsides of technology stacks that are massively scalable and general purpose
-
Writing a simple VM in less than 125 lines of C(opens in new tab)
This tutorial is intended for intermediate C developers who want to get some coding practice and, in the process, gain valuable insights into low-level programming and how (some) Virtual Machines operate under the hood. The reader should already be comfortable ...
-
How to Ditch Codecov for Python Projects(opens in new tab)
Codecov’s unreliability breaking CI on my open source projects has been a constant source of frustration for me for years. I have found a way to enforce coverage over a whole GitHub Actions build matrix that doesn’t rely on third-party ...
-
WSL2, keychain, /etc/hosts and you(opens in new tab)
There unfortunately are still a few stumbling blocks toward getting a properly, fully-working virt-manager setup running under WSL2 on Windows 11. apt install virt-manager just works, of course–but getting WSL2 to properly handle hostnames and SSH key passphrases takes a ...
-
A tale of Java Hash Tables(opens in new tab)
The intended audience for this article is undergrad students who already have a good grasp of Java, or seasoned Java developers who would like to explore an in-depth analysis of various hash table implementations that use Open Addressing. The reader ...
-
A Day In The Life Of Four Software Engineers(opens in new tab)
What is a typical day in the life like for a software engineer? To close out Season 6, we thought it’d be a great idea to give you some insight into our workdays, as we all have very different roles ...
-
Implementing Hash Tables in C(opens in new tab)
Table of contents Contents Table of contents Code Introduction C++ (unordered_map) Java (HashMap) Python (dict) Performance: Why Size Doesn’t Matter Hash Functions Hash Collisions What makes a “Good” Hash Function? Families of Hashing Functions Division hashing Multiplicative hashing Hashing strings ...
-
What Is An API & How Do You Use One?(opens in new tab)
APIs are part of our daily roles as software developers, but what are they? What different types are there? And how can you design a good one?
-
All About Agile(opens in new tab)
The definition of Agile is the ability to create and respond to change. Ultimately dealing with and succeeding in an uncertain or turbulent environment. I think we can all say with confidence that in the world of software development, being ...
-
Getting Started With Java(opens in new tab)
Java is a high-level, class-based, object-oriented programming language. It’s a general-purpose programming language designed to let app developers: write once, run anywhere. Today we’re diving into the world of Java.
-
How To Start A Company(opens in new tab)
Whether you’re looking to start your own side business or create a lifelong career, the process of starting a new business can be overwhelming. This week on the podcast we’re discussing how to start your own business. We’ll dig deep ...
-
Diving Deep On Databases(opens in new tab)
It’s easy to overlook documentation when building an application, but documentation can make or break a consumer’s experience. Today we’re diving into the world of documentation to discuss what it takes to write good documentation, the ethics of documentation, and ...
-
-
Announcing a New Section: TIL(opens in new tab)
Trying out something new: today I’m launching my own Today I Learned section. In this essay I will sum up what my plans and hopes are.
-
How To Create Great Documentation(opens in new tab)
It’s easy to overlook documentation when building an application, but documentation can make or break a consumer’s experience. Today we’re diving into the world of documentation to discuss what it takes to write good documentation, the ethics of documentation, and ...
-
Getting Started With TypeScript(opens in new tab)
TypeScript is an open-source programming language built on JavaScript that provides static type definitions. It has taken the front-end development community by storm over the past few years and today we’re going to give you a beginner-level rundown on the ...
-
How To Create A Study Plan(opens in new tab)
What is it about sitting down building a good study plan that... kinda sucks? Is it the planning? The execution? The Time commitment? Are we committing to learn too much? Regardless of this answer, today we’re sitting down to talk ...
-
How To Choose A Tech Stack(opens in new tab)
What is it about sitting down building a good study plan that... kinda sucks? Is it the planning? The execution? The Time commitment? Are we committing to learn too much? Regardless of this answer, today we’re sitting down to talk ...
-
npm audit: Broken by Design(opens in new tab)
Found 99 vulnerabilities (84 moderately irrelevant, 15 highly irrelevant)
-
Subclassing in Python Redux(opens in new tab)
The conflict between subclassing and composition is as old as object-oriented programming. The latest crop of languages like Go or Rust prove that you don’t need subclassing to successfully write code. But what’s a pragmatic approach to subclassing in Python, ...
-
Canonical SEO Failure(opens in new tab)
This post is less about teaching and more about schadenfreude amusement for you, and catharsis for me. It’s the story of how one unfortunate HTML tag kicked me off almost all search engines and my months-long way back. And why ...
-
Writing a Universal Chess Interface (UCI) Client in Java(opens in new tab)
Contents Introduction Working with an UCI-enabled engine from the command line Installing Stockfish (and Leela Zero) Listing supported options Changing an option Analyzing a position Writing the Java UCI Client library Opening and closing the engine process Sending commands to ...
-
Top-Level Menu Visibility in SwiftUI for macOS(opens in new tab)
Working around SwiftUI's CommandsBuilder limitations to conditionally show top-level menus on macOS using direct AppKit integration.
-
-
-
Semantic Versioning Will Not Save You(opens in new tab)
The widely used Python package cryptography changed their build system to use Rust for low-level code, which caused an emotional GitHub thread. Enthusiasts of 32-bit hardware from the 1990s aside, a vocal faction stipulated adherence to Semantic Versioning from the ...
-
Measuring Web Performance in Mobile Safari(opens in new tab)
How often do you test your site in iOS Safari? Do you even know how?!
-
-
Before You memo()(opens in new tab)
Rendering optimizations that come naturally.
-
-
Lie vs Lay(opens in new tab)
Lie and lay are infamously confusing to non-native speakers. It’s so bad that it sparked a cottage industry of click-baity articles full of sketchy ads. Since English is my third language, I stumbled a lot myself until I wrote this ...
-
XML to JSON using MapNeat(opens in new tab)
mapneat is a library I’ve written a long time ago. I am biased. Introduction Following my previous article, I wanted to expand on the capabilities of the mapneat library. In this tutorial, I will show you how to transform an ...
-
Fixing keyboardShortcut in SwiftUI(opens in new tab)
Debugging and fixing a SwiftUI keyboardShortcut bug that fails when mixing SwiftUI with UIKit through reverse engineering and LLDB analysis.
-
Hello world, mapneat!(opens in new tab)
mapneat is a library I’ve written a long time ago. I am biased. Introduction One of the most common challenges I’ve encountered in Software Engineering is data manipulation: taking a raw data structure, applying business logic, restructuring it, and finally ...
-
Git Your Way: includeIf(opens in new tab)
Implement finer control of your Git configuration.
-
Supporting Both Tap and Long Press on a Button in SwiftUI(opens in new tab)
Creating a SwiftUI button that supports both tap and long-press gestures by bridging to UIKit when SwiftUI's gesture system fails on Catalyst.
-
Computing Eigenvalues and Eigenvectors using QR Decomposition(opens in new tab)
Contents Introduction Using QR Decomposition to Determine Eigenvalues Implementing the Naive Algorithm Improving the Algorithm: Practical QR with Shifts More Improvements: The Hessenberg Form But what about the Eigenvectors? References Introduction In my last two articles, I explored some fundamental ...
-
Linear transformations, Eigenvectors and Eigenvalues(opens in new tab)
Contents Introduction Think of matrices as functions Matrix transformations Linear Transformations Eigenvalues and Eigenvectors Why are they “special”? Why are they important? Where to go next Introduction There are rumors saying Computer Vision Engineers consider Eigenvalues and Eigenvectors the single ...