Book Summary: The Pragmatic Programmer(opens in new tab)
Curated river of news
Latest posts from blogs I follow
Before any new feature, change or improvement makes it into Python, there needs to be a _Python Enhancement Proposal_, also knows as PEP, outlining the proposed change. These PEPs are a great way of getting the freshest info about what ...
Atomic Habits by James Clear changed how I think about productivity. Key insights on building systems, habit stacking, and compounding small improvements.
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 ...
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 ...
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 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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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?
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 ...
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.
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 ...
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 ...
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.
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 ...
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 ...
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 ...
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 ...
Found 99 vulnerabilities (84 moderately irrelevant, 15 highly irrelevant)
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, ...
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 ...
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 ...
Working around SwiftUI's CommandsBuilder limitations to conditionally show top-level menus on macOS using direct AppKit integration.
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 ...
How often do you test your site in iOS Safari? Do you even know how?!
Rendering optimizations that come naturally.
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 ...
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 ...
Debugging and fixing a SwiftUI keyboardShortcut bug that fails when mixing SwiftUI with UIKit through reverse engineering and LLDB analysis.
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 ...
Implement finer control of your Git configuration.
Creating a SwiftUI button that supports both tap and long-press gestures by bridging to UIKit when SwiftUI's gesture system fails on Catalyst.