SWE Blog Directory

Discover active software engineering blogs

Latest Posts

Last updated on October 15, 2024

A swim with a chat bot

I have 4 (rounded up) beefs with language-y AI bots that have resulted in me sort of avoiding them altogether: They have the personality of a middle manager who writes Google Docs all day that nobody wants to read They’re reallllly good at guessing but not actually that smart, which leads to very convincing lies (see: the “how many Rs in strawberry?” saga). If I had the inclination to double check all the bot’s work, I would’ve just done it myself Absolutely no thank you to the scam that ... Take me to this post.

Interviewed by Book Overflow podcast on Refactoring

I was interviewed on the Book Overflow podcast about the Refactoring book. We talked about the origins of the book, the relationship between refactoring, testing, and extreme programming, how refactoring is used in the wild, and the role of books and long-form prose today. more…... Take me to this post.

Check whether a CSS property is supported

Sometimes when using JavaScript, you need to determine whether a certain CSS property is supported by the current browser or not. For instance when setting opacity for an element, you need to find out whether the property that the browser supports is opacity, -moz-opacity (MozOpacity), -khtml-opacity (KhtmlOpacity) or the IE proprietary filter. Instead of performing a forwards incompatible browser detect, you can easily check which property is supported with a simple conditional. The only thing ... Take me to this post.

Some notes on upgrading Hugo

Warning: this is a post about very boring yakshaving, probably only of interest to people who are trying to upgrade Hugo from a very old version to a new version. But what are blogs for if not documenting one’s very boring yakshaves from time to time? So yesterday I decided to try to upgrade Hugo. There’s no real reason to do this – I’ve been using Hugo version 0.40 to generate this blog since 2018, it works fine, and I don’t have any problems with it. But I thought – maybe it won’t be as hard a... Take me to this post.

Fake it till you make it: testing transactional emails with Mailcoach in Laravel

Read more... Take me to this post.

The CI Flake

I analyzed a flaky test failure in our Materialize CI today: $ docker compose up -d --scale default=0 default no such service: default mzcompose: error: running docker compose failed (exit status 1) I had seen this error already once or twice in the last year, but it was incredibly rare in our Continuous Integration (CI) runs, and never happened locally. As usual, there were more pressing product issues to debug, so I never looked into it. But last week I switched most of our CI tests to run o... Take me to this post.

Windows dynamic linking depends on the active code page

Windows paths have been WTF-16-encoded for decades, but module names in the import tables of Portable Executable are octets. If a name contains values beyond ASCII — technically out of spec — then the dynamic linker must somehow decode those octets into Unicode in order to construct a lookup path. There are multiple ways this could be done, and the most obvious is the process’s active code page (ACP), which is exactly what happens. As a consequence, the specific DLL loaded by the linker may depe... Take me to this post.

Ecma International approves ECMAScript 2024: What’s new?

On 26 June 2024, the 127th Ecma General Assembly approved the ECMAScript 2024 language specification, which means that it’s officially a standard now. This blog post explains what’s new.... Take me to this post.

The Inevitability of Mixing Open Source and Money

This year, one of the projects I was involved in at Sentry was the launch of The Open Source Pledge. The idea behind it is simple: companies pledge an amount proportional to the number of developers they employ to fund the Open Source projects they depend on. I have written about this before. Since then, I've had the chance to engage in many insightful discussions about Open Source funding and licensing. In the meantime we have officially launched the pledge, and almost simultaneously WordPres... Take me to this post.

Reckoning: Part 4 — The Way Out

Other posts in the series: Reckoning: Part 1 — The Landscape Reckoning: Part 2 — Object Lesson Reckoning: Part 3 — Caprock Frontend took ill with a bad case of JavaScript fever at the worst possible moment. The predictable consequence is a web that feels terrible most of the time, resulting in low and falling use of the web on smartphones.[1] shows what I warned about, citing Google-private data, in 2019. In the US, time spent in browsers continues to stagnate while smartphone use grows, an... Take me to this post.

Collective #872

Feature detect Style Queries Support in CSS * js13kGames 2024: Winners announced!... Take me to this post.

The Apple

The man with the green eyes gave the journalist an apple too natural-looking to have grown on a tree.“It carries a retrovirus that will change your skin chemistry,” he said. He pointed at the computer on the table. Table and chair were the only furniture in the locked room the journalist had spent two years attempting to be kidnapped and brought into. “In about half an hour your fingertips should be able to unlock the biometric sensor.”“A bit biblical, don’t you think?”“The retrovirus will also ... Take me to this post.

Prohibit running destructive DB commands in Laravel

It’s always a good idea to follow best practices when it comes to software development. One of the best practices is to restrict the running of destructive commands on your servers, intentionally or unintentionally.... Take me to this post.

Mapping Mario Kart 8's real-life courses

I was playing Mario Kart 8 recently, trying out one of the courses based on a real city. I wondered: how were these courses distributed throughout the world? Mario Kart has 14 tracks based on real cities1. Here’s a breakdown by continent: Europe: 7 courses (Amsterdam Drift, Athens Dash, Berlin Byways, London Loop, Madrid Drive, Paris Promenade, Rome Avanti) Asia: 3 courses (Bangkok Rush, Singapore Speedway, Tokyo Tour) North America: 3 courses (Los Angeles Laps, New York Minute, Vancouver Veloc... Take me to this post.

ModuleNotFoundError: No module named ‘trimage’ on Arch Linux

It’s been a minute since I’ve last used Trimage. I probably installed it when I had initially setup Arch Linux on this system. Curious about whether or not an image that was part of a pull request I was reviewing could be improved, I launched the app. Much to my dismay, nothing happened. No flash […] The post ModuleNotFoundError: No module named ‘trimage’ on Arch Linux appeared first on Josh Sherman.... Take me to this post.

Home-cooked web apps

Recently, my attention has been focused on building web apps to suit my very specific needs. The first one was a financial dashboard of sorts, where I took the data from my YNAB account and built out custom reports so help me make sure we're hitting our investment goal and spending according to our values. The second one (I just finished) was a digital recreation of the weekly layout from my Hobonichi Techo Cousin. Now my daily time-tracking data is going in to a database, and I'm excited to co... Take me to this post.

C++ String Conversion: Exploring std::from_chars in C++17 to C++26

With the introduction of C++17, the C++ Standard Library expanded its capabilities for converting text to numbers with the addition of std::from_chars. This low-level, high-performance API offers significant advantages over previous methods, such as atoi and stringstream. In this article, we will explore the evolution of string conversion routines from C++17 through C++26, highlighting key improvements like constexpr support and enhanced error handling. Let’s dive into the details and see how st... Take me to this post.

Implementing Raft: Part 4 - Key/Value Database

This is Part 4 in a series of posts describing the Raft distributed consensus algorithm and its complete implementation in Go. Here is a list of posts in the series: Part 0: Introduction Part 1: Elections Part 2: Commands and log replication Part 3: Persistence and optimizations Part 4: Key …... Take me to this post.

I love Continuity Camera, I hate Continuity Camera

Continuity Camera is the macOS feature that allows to use an iPhone as a webcam.... Take me to this post.

Accumulated Test Vectors

Accumulated test vectors make it possible to run large sets of random known-answer tests without checking in large assets.... Take me to this post.

Cypress Env Types

Let's say you store the user login information used during tests in your Cypress config... Take me to this post.

What projects to put on you resume

What projects to put on your resume? Should you even have a projects section? Let's choose your projects wisely together. The post What projects to put on you resume appeared first on Software Engineering Blog.... Take me to this post.

rsync Command in Linux with Examples

The rsync command is one of the most popular and powerful tools in Linux for synchronizing files and directories between different locations. Continue reading...... Take me to this post.

Neurodivergence and accountability in free software

In November of last year, I wrote Richard Stallman’s political discourse on sex, which argues that Richard Stallman, the founder of and present-day voting member of the board of directors of the Free Software Foundation (FSF), endorses and advocates for a harmful political agenda which legitimizes adult attraction to minors, consistently defends adults accused of and convicted of sexual crimes with respect to minors, and more generally erodes norms of consent and manipulates language regarding s... Take me to this post.

OpenSearch Project Joins the Linux Foundation

Yesterday, the Linux Foundation (LF) announced the new OpenSearch Software Foundation, with Amazon transferring the 3½ year old open-source project to LF (RT). This outcome ensures the long term viability of this technology in a vendor-neutral way, under the most enterprise-friendly open-source Apache License v2. It is the result of the work of hundreds of people, but is also something I am personally very proud of, because I worked on the 6-page proposal to move OpenSearch to a neutral foundati... Take me to this post.

Publish an NPM Package to JFrog Artifactory

Publish an NPM Package to JFrog Artifactory... Take me to this post.

iPhone 16 Screen Sizes

Two new sizes as the Pro phones grow in size, and weight, and get even smaller bezels. Here’s what you need to know about the iPhone 16. The New Models in a Nutshell As in earlier years, Apple has discontinued the iPhone 15 Pro models and added features to the base iPhone 16 models. Apple also continues to sell the base iPhone 15, iPhone 14, and the iPhone SE. The Pro models increase in size from last year given us four different screen sizes across the iPhone 16 range: The base models have the... Take me to this post.

The Kind King

Back in the late 80s, my mom bought me a 386sx 16MHz computer equipped with a 2400 baud modem. It was my first computer that enabled me to connect to an online world. Back then, there was large behemoths like AOL and CompuServe but there were also independent services called bulletin board systems, aka BBSs. A BBS was somewhat of a one-to-one connection. Most independent BBSs had only one or two phone lines with which someone could dial into. They were little islands of community that one coul... Take me to this post.

Binging on Bytes: The Danger of Overprocessed Engineering Content

It’s universally agreed that eating a lot of junk food and candy over your lifetime will lead to all sorts of problems: diabetes, increased cancer risk, obesity, heart problems, digestive issues, etc. And if you grew up in the early 90s, maybe you learned these lessons from the “Food Pyramid”: an ominous, overly simplified, all encompassing guide to the various food groups. The pyramid was an attempt to teach the youth of America what acceptable portion sizes are, how to balance their diet, and ... Take me to this post.

How to Download a YouTube Video or Channel

The ability to download media on the internet almost feels like a lost art. When I was in my teens, piracy of mp3s, movies, and just about everything else via torrents and apps like Kazaa, LimeWire, Napster, etc. was in full swing. These days sites use blob URLs and other means to prevent downloads. Luckily […] The post How to Download a YouTube Video or Channel appeared first on David Walsh Blog. ... Take me to this post.

Reflections on Founder Mode

Paul Graham’s Founder Mode is an important piece, and you should read it if for no other reason that “founder mode” will surely enter the lexicon (and as Graham grimly predicts: “as soon as the concept of founder mode becomes established, people will start misusing it”). When building a company, founders are engaged in several […]... Take me to this post.

Absorb, Accelerate, Act as a Risk Sponge

Good leaders absorb risk to optimize learning rate, unblock teams, and break through indecision. A well-functioning team applies this fractally.... Take me to this post.

Send More Investor Updates

I’ve made like a hundred angel investments over the years, and I get the sneaking suspicion that the most successful startups in my portfolios are the ones that talk to their investors. Like, that’s it. That’s the nugget for this post. Holy shit no one can help you if they don’t know you need help Like most good advice, this is kind of obvious, but writing about it just serves as a reminder and/or a kick in the pants. To wit: it’s hard to give help if you don’t know what help is needed. Let’... Take me to this post.

Is Telegram really an encrypted messaging app?

This blog is reserved for more serious things, and ordinarily I wouldn’t spend time on questions like the above. But much as I’d like to spend my time writing about exciting topics, sometimes the world requires a bit of what Brad Delong calls “Intellectual Garbage Pickup,” namely: correcting wrong, or mostly-wrong ideas that spread unchecked … Continue reading Is Telegram really an encrypted messaging app? →... Take me to this post.

Programming With ChatGPT

Using ChatGPT when I code has been a real productivity boost for me. Instead of reading an example on Stack Overflow and figuring out how to adapt it to my particular case, I immediately get code tailored to my specific … Continue reading →... Take me to this post.

Async hazard: mmap is secretly blocking IO

Memory mapping a file for reading sounds nice: turn inconvenient read calls and manual buffering into just simple indexing of a memory… but it does blocking IO under the hood, turn a &[u8] byte arrays into an async hazard and making “concurrent” async code actually run sequentially! Code affected likely runs slower, underutilises machine resources, and has undesirable latency spikes. I’ve done some experiments in Rust that show exactly what this means, but I think this applies to any system th... Take me to this post.

Making a Chess Engine in Zig

Learning zig by making a chess engine... Take me to this post.

How good can you be at Codenames without knowing any words?

About eight years ago, I was playing a game of Codenames where the game state was such that our team would almost certainly lose if we didn't correctly guess all of our remaining words on our turn. From the given clue, we were unable to do this. Although the game is meant to be a word guessing game based on word clues, a teammate suggested that, based on the physical layout of the words that had been selected, most of the possibilities we were considering would result in patterns that were "too ... Take me to this post.

Level up your Python skills this August

It’s August! For many of us, that means it’s time for hot weather and perhaps even a vacation. But if you’re a Python/Pandas nerd like me, it’s is the perfect time to level up your programming skills. And in the coming weeks, I’ll be offering 13 (!) live, online courses on a wide variety of […] The post Level up your Python skills this August appeared first on Reuven Lerner.... Take me to this post.

6 Questions To Ask Yourself Before Applying To That Job

The current job market is overflowing with competition, put yourself in better stead for meeting the job spec by asking yourself these 6 questions before applying.... Take me to this post.

No More Blue Fridays

In the future, computers will not crash due to bad software updates, even those updates that involve kernel code. In the future, these updates will push eBPF code. Friday July 19th provided an unprecedented example of the inherent dangers of kernel programming, and has been called the largest outage in the history of information technology. Windows computers around the world encountered blue-screens-of-death and boot loops, causing outages for hospitals, airlines, banks, grocery stores, media b... Take me to this post.

The Challenges of Maintaining the Built for Shopify Badge: A Developer’s Perspective

As a developer in the Shopify ecosystem, achieving and maintaining the “Built for Shopify” badge is a significant milestone. It’s a symbol of quality, trust, and adherence to best practices. However, one particular requirement for this badge—the Largest Contentful Paint (LCP) metric—has proven to be a challenging and often frustrating aspect for many of us. […]... Take me to this post.

Lessons from election night

Introduction On Thursday (July 4th, 2024) the UK held a general election. There are many, many blog posts, newspaper articles, podcast episodes etc covering the politics of it, and the lessons that the various political parties may need to learn. I, on the other hand, learned very different lessons on the night of the 4th … Continue reading Lessons from election night →... Take me to this post.

How to try experimental CSS features

I love that browsers are now shipping new CSS features that may not necessarily have been fully baked yet behind feature flags. I can’t actually pinpoint the exact date or event that started this, but my personal observation (because I was there) tags it at the development of CSS grid. If you were not around for it, all the major browsers supported the stable version of CSS grid within 8 months of each other. Trust me, I took the time to check the dates in order to make this image for my talks. ... Take me to this post.

Finding near-duplicates with Jaccard similarity and MinHash

Suppose we have a large collection of documents, and we wish you identify which documents are approximately the same as each other. For instance, we may have crawled the web over some period of time, and expect to have fetched the “same page” several times, but to see slight differences in metadata, or that we have several revisions of a page following small edits. In this post I want to explore the method of approximate deduplication via Jaccard similarity and the MinHash approximation trick.... Take me to this post.

The Disappearance of Lived Time (film)

Drawing from Debord and Heidegger, this film examines our subjective experience of time throughout history. It reveals how the relentless pursuit of productivity has shaped society and our perceptions of time, creating a perpetual present driven by an autonomous economy and accelerated by surveillance capitalism. The film explores the societal obsession with busyness and advocates for reclaiming time and leisure to foster true human flourishing. ... Take me to this post.

Building with nightly Swift toolchains on macOS

The Swift website provides nightly builds of the Swift compiler (called toolchains) for download. Building with a nightly compiler can be useful if you want to check if a bug has already been fixed on main, or if you want to experiment with upcoming language features such as Embedded Swift, as I’ve been doing lately. A toolchain is distributed as a .pkg installer that installs itself into /Library/Developer/Toolchains (or the equivalent path in your home directory). After installation, you have... Take me to this post.

Ecobee Settings for Heat Pumps with Resistive Aux Heat

I’m in the process of replacing a old radiator system with a centrally-ducted, air-source heat pump system with electric resistive backup heat. I’ve found that the default ecobee algorithm seems to behave surprisingly poorly for this system, and wanted to write up some of the settings that I’ve found yield better behavior. A disclaimer. I’m not an HVAC professional. I have two decades in software operations, a background in physics, and far too much experience inferring system dynamics from time... Take me to this post.

Work in Progress?

Nothing I publish is perfect. Everything I publish is a “work in progress” to some degree or another. I once wrote about Agile Blogging. My thought was, “What if I could incrementally build up content, rather than have to sit down and write until all my thoughts were fully fleshed out and ‘perfect’? What would that look like?” I took some cues from the Agile software development methodology, and decided that I’d value continual enhancement and gradual build-up of my content, over and above lon... Take me to this post.

Building Proofessor

A behind-the-scenes look at the making of the Proofessor app. (This links out to viget.com)... Take me to this post.

Featured Posts

My next book will be Practical Math for Programmers A High-Level Overview of Fully Homomorphic Encryption Searching for Riemann Hypothesis Counterexamples Linear Programming and Healthy Diets Hybrid Images Bezier Curves and Picasso... Take me to this post.

Back to Home