# Dan Lew Blog

Thoughts on life, the universe and the mystery of it all; but actually mostly just code.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## How automated testing improves development of complex features

DevFeed: [How automated testing improves development of complex features](<https://devfeed.tech/articles/my-life-before-after-automated-testing-38402.md>)

Original publisher: [Read original article](<https://blog.danlew.net/2026/09/15/my-life-before-after-automated-testing/>)

Author: Dan Lew

Published: 2026-09-15T13:16:49Z

Content type: opinion

Language: en

Sources: [Dan Lew Blog](<https://devfeed.tech/sources/dan-lew-blog.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [coding](<https://devfeed.tech/topics/coding.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Database](<https://devfeed.tech/topics/database.md>)

Tags: [automated](<https://devfeed.tech/tags/automated.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [database](<https://devfeed.tech/tags/database.md>), [regression](<https://devfeed.tech/tags/regression.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

The author contrasts manual testing with automated testing while developing job cancellation in a work queue. Automated tests help expose concurrency and regression risks, cover corner cases, and simulate mid-execution cancellation more reliably.

### Source excerpt

It's hard for me to overstate how much my coding has improved since embracing automated testing. And yet, I used to think of it as a waste of time! This post is for my former self, demonstrating why I embrace the practice now. Allow me to demonstrate with

## Nitpicking in code reviews wastes time

DevFeed: [Nitpicking in code reviews wastes time](<https://devfeed.tech/articles/nitpicking-in-code-reviews-wastes-time-38401.md>)

Original publisher: [Read original article](<https://blog.danlew.net/2026/09/01/nitpicking-in-code-reviews-wastes-time/>)

Author: Dan Lew

Published: 2026-09-01T13:00:13Z

Content type: opinion

Language: en

Sources: [Dan Lew Blog](<https://devfeed.tech/sources/dan-lew-blog.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [code productivity](<https://devfeed.tech/topics/code-productivity.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [bugs](<https://devfeed.tech/tags/bugs.md>), [code](<https://devfeed.tech/tags/code.md>), [code-reviews](<https://devfeed.tech/tags/code-reviews.md>), [development](<https://devfeed.tech/tags/development.md>), [features](<https://devfeed.tech/tags/features.md>), [problems](<https://devfeed.tech/tags/problems.md>), [refactor](<https://devfeed.tech/tags/refactor.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [time](<https://devfeed.tech/tags/time.md>)

### AI overview

An opinion article argues that nitpicking minor issues in code reviews wastes time. Small problems usually have limited impact, may never cause trouble, and can often be fixed later, so review effort should prioritize major problems, bugs, and features.

### Source excerpt

I once wrote about how I've stopped nit-picking in code reviews, which improved the signal-to-noise ratio and helped everyone get along better. I'm back with a third reason to ditch the practice: nit-picking wastes time. By definition, nitpicks are about minor problems:

## There's more to software development than coding

DevFeed: [There's more to software development than coding](<https://devfeed.tech/articles/there-s-more-to-software-development-than-coding-38400.md>)

Original publisher: [Read original article](<https://blog.danlew.net/2026/08/17/theres-more-to-software-development-than-coding/>)

Author: Dan Lew

Published: 2026-08-17T16:38:20Z

Content type: opinion

Language: en

Sources: [Dan Lew Blog](<https://devfeed.tech/sources/dan-lew-blog.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [coding](<https://devfeed.tech/topics/coding.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [AI Development](<https://devfeed.tech/topics/ai-development.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [career](<https://devfeed.tech/tags/career.md>), [developer](<https://devfeed.tech/tags/developer.md>), [developers](<https://devfeed.tech/tags/developers.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [engineering-manager](<https://devfeed.tech/tags/engineering-manager.md>), [like](<https://devfeed.tech/tags/like.md>), [manager](<https://devfeed.tech/tags/manager.md>), [product](<https://devfeed.tech/tags/product.md>), [quality-assurance](<https://devfeed.tech/tags/quality-assurance.md>), [software-development](<https://devfeed.tech/tags/software-development.md>)

### AI overview

This opinion article argues that software development involves much more than writing code. It describes requirements refinement, design and logic review, communication, tradeoff discussions, architecture, project coordination, mentoring, and cross-functional work as important parts of the role. It concludes that these non-coding skills may remain valuable as AI improves at coding.

### Source excerpt

Like many software developers, I've been considering the future of my profession in the face of AI. AI can write code. Our job is to write code. It seems natural that we'd be replaced by AI, no? But recently I've been considering the warning

## Obfuscated Rhythm Games

DevFeed: [Obfuscated Rhythm Games](<https://devfeed.tech/articles/obfuscated-rhythm-games-38399.md>)

Original publisher: [Read original article](<https://blog.danlew.net/2026/06/23/obfuscated-rhythm-games/>)

Author: Dan Lew

Published: 2026-06-23T14:17:46Z

Content type: opinion

Language: en

Sources: [Dan Lew Blog](<https://devfeed.tech/sources/dan-lew-blog.md>)

Topics: [obfuscation](<https://devfeed.tech/topics/obfuscation.md>), [standard](<https://devfeed.tech/topics/standard.md>)

Tags: [game](<https://devfeed.tech/tags/game.md>), [games](<https://devfeed.tech/tags/games.md>), [music](<https://devfeed.tech/tags/music.md>), [obfuscation](<https://devfeed.tech/tags/obfuscation.md>), [standard](<https://devfeed.tech/tags/standard.md>)

### AI overview

The article examines three rhythm games released in 2025 that intentionally obscure which buttons players should press and when. It discusses how Rift of the Necrodancer, Rhythm Doctor, and Unbeatable derive much of their challenge from less legible note charts and altered visual or auditory cues.

### Source excerpt

I've been a rhythm game fiend since my introduction to Dance Dance Revolution in the early 2000s. I spent years obsessed with DDR, took a detour into Beatmania, then played Guitar Hero / Rock Band nonstop for years. I haven't gone deep on any rhythm games recently,

## How to use Jest mocks

DevFeed: [How to use Jest mocks](<https://devfeed.tech/articles/how-to-use-jest-mocks-38398.md>)

Original publisher: [Read original article](<https://blog.danlew.net/2026/05/28/how-to-use-jest-mocks/>)

Author: Dan Lew

Published: 2026-05-28T13:10:16Z

Content type: tutorial

Language: en

Sources: [Dan Lew Blog](<https://devfeed.tech/sources/dan-lew-blog.md>)

Topics: [Jest](<https://devfeed.tech/topics/jest.md>), [Mocking](<https://devfeed.tech/topics/mocking.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Dependency injection](<https://devfeed.tech/topics/dependency-injection.md>)

Tags: [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [jest](<https://devfeed.tech/tags/jest.md>), [mocking](<https://devfeed.tech/tags/mocking.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

A practical introduction to Jest mocks covering module mocking, mock hoisting, automock behavior, and configuring mocked return values. It also notes limitations in the documentation and discusses considerations for TypeScript users.

### Source excerpt

For better or worse, my life has become infested by Jest mocks. I come from the land of dependency injection (I even gave a talk once!), but whenever I talk about dependency injection to JavaScript developers I get this reaction: Instead, mocking is king. Unfortunately, I've found Jests&

## Passkeys: How They Address Password Defects and Their Limitations

DevFeed: [Passkeys: How They Address Password Defects and Their Limitations](<https://devfeed.tech/articles/what-the-fuck-are-passkeys-and-why-are-they-everywhere-now-38397.md>)

Original publisher: [Read original article](<https://blog.danlew.net/2026/05/21/what-the-fuck-are-passkeys-and-why-are-they-everywhere-now/>)

Author: Dan Lew

Published: 2026-05-21T13:29:09Z

Content type: tutorial

Language: en

Sources: [Dan Lew Blog](<https://devfeed.tech/sources/dan-lew-blog.md>)

Topics: [Passkeys](<https://devfeed.tech/topics/passkeys.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [passwords](<https://devfeed.tech/topics/passwords.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>)

Tags: [authentication](<https://devfeed.tech/tags/authentication.md>), [passwords](<https://devfeed.tech/tags/passwords.md>), [talk](<https://devfeed.tech/tags/talk.md>)

### AI overview

A writeup of a Minnebar 20 talk explaining passkeys in the context of password history. It distinguishes authentication from authorization and examines password deficiencies, how passkeys address them, and passkeys' own problems.

### Source excerpt

This is a writeup of a talk I gave at Minnebar 20. Originally, I threw in some Matrix references to make the talk more fun & engaging. Those jokes work better in person, so I've mostly omitted the Matrix from this writeup (though some vestiges remain). It seems

## Don't Cite Unsold eBay Listing Prices

DevFeed: [Don't Cite Unsold eBay Listing Prices](<https://devfeed.tech/articles/don-t-cite-unsold-ebay-listing-prices-38396.md>)

Original publisher: [Read original article](<https://blog.danlew.net/2026/01/17/dont-cite-unsold-ebay-listing-prices/>)

Author: Dan Lew

Published: 2026-01-17T01:50:34Z

Content type: opinion

Language: en

Sources: [Dan Lew Blog](<https://devfeed.tech/sources/dan-lew-blog.md>)

Topics: [data](<https://devfeed.tech/topics/data.md>), [datasets](<https://devfeed.tech/topics/datasets.md>)

Tags: [data](<https://devfeed.tech/tags/data.md>), [research](<https://devfeed.tech/tags/research.md>)

### AI overview

The article argues that journalists should not treat unsold eBay listing prices as evidence of actual market sales. It uses NYC MetroCards and Trader Joe's tote bags to show that completed-sale data can be dramatically lower than sensational listing prices.

### Source excerpt

Journalists, I beg of you: please stop confusing unsold eBay listings for actual sales. I'm ticked off after seeing this Patch post about NYC MetroCards selling for $5,000 and this WSJ article about Trader Joe's totes going for $50,000. Yes, someone listed

## Hacking Displate (For Fun!)

DevFeed: [Hacking Displate (For Fun!)](<https://devfeed.tech/articles/hacking-displate-for-fun-38395.md>)

Original publisher: [Read original article](<https://blog.danlew.net/2025/11/18/hacking-displate-shenanigans/>)

Author: Dan Lew

Published: 2025-11-18T15:00:46Z

Content type: opinion

Language: en

Sources: [Dan Lew Blog](<https://devfeed.tech/sources/dan-lew-blog.md>)

Topics: [Hacking](<https://devfeed.tech/topics/hacking.md>), [Website](<https://devfeed.tech/topics/website.md>), [API](<https://devfeed.tech/topics/api.md>), [Browser Extension](<https://devfeed.tech/topics/browser-extension.md>), [browser](<https://devfeed.tech/topics/browser.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [browser](<https://devfeed.tech/tags/browser.md>), [extension](<https://devfeed.tech/tags/extension.md>), [hacking](<https://devfeed.tech/tags/hacking.md>), [order](<https://devfeed.tech/tags/order.md>), [scraping](<https://devfeed.tech/tags/scraping.md>), [tracking](<https://devfeed.tech/tags/tracking.md>), [website](<https://devfeed.tech/tags/website.md>)

### AI overview

A developer documents experiments with Displate's website, including tracking Limited Edition resale prices and using its API to discover early-access links. The article also describes ordering a Limited Edition before its public release and competing with another person using a browser extension to find links and monitor inventory.

### Source excerpt

During the pandemic my weird vice/obsession became Displates (metal wall art hung up by magnets): Some of my Displates (along with other tchotchkes in my office) For me, part of the hobby was poking holes in their website. I've long stopped trying to give their devs heartburn,

## Balatro's Least Erratic Decks

DevFeed: [Balatro's Least Erratic Decks](<https://devfeed.tech/articles/balatro-s-least-erratic-decks-38394.md>)

Original publisher: [Read original article](<https://blog.danlew.net/2025/11/03/balatros-least-erratic-decks/>)

Author: Dan Lew

Published: 2025-11-03T13:00:52Z

Content type: article

Language: en

Sources: [Dan Lew Blog](<https://devfeed.tech/sources/dan-lew-blog.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Lua](<https://devfeed.tech/topics/lua.md>), [optimize](<https://devfeed.tech/topics/optimize.md>), [LÖVE](<https://devfeed.tech/topics/love2d.md>), [Algorithm](<https://devfeed.tech/topics/algorithm.md>), [bug](<https://devfeed.tech/topics/bug.md>), [cpu](<https://devfeed.tech/topics/cpu.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [bug](<https://devfeed.tech/tags/bug.md>), [code](<https://devfeed.tech/tags/code.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [game](<https://devfeed.tech/tags/game.md>), [games](<https://devfeed.tech/tags/games.md>), [jit](<https://devfeed.tech/tags/jit.md>), [lua](<https://devfeed.tech/tags/lua.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [rust](<https://devfeed.tech/tags/rust.md>)

### AI overview

The author searches for the least erratic Erratic deck in Balatro by examining every possible game seed. After finding Lua too slow for the 2.3 trillion-seed search, they optimize the Lua implementation and then port it to Rust, using all CPU cores to reach about 100 million seeds per minute. The article also explains a bug that can produce decks filled with the ten of spades.

### Source excerpt

My most recent "just for fun" project was to find the least erratic of the Erratic decks in Balatro (a poker-ish roguelike deckbuilder game). Before each game, you pick a deck that has a special power. The Erratic deck completely randomizes the ranks/suits of the cards

## When Your Source of Truth is Reality

DevFeed: [When Your Source of Truth is Reality](<https://devfeed.tech/articles/when-your-source-of-truth-is-reality-38392.md>)

Original publisher: [Read original article](<https://blog.danlew.net/2025/07/01/when-your-source-of-truth-is-reality/>)

Author: Dan Lew

Published: 2025-07-01T13:00:26Z

Content type: opinion

Language: en

Sources: [Dan Lew Blog](<https://devfeed.tech/sources/dan-lew-blog.md>)

Topics: [Databases](<https://devfeed.tech/topics/databases.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [data](<https://devfeed.tech/tags/data.md>), [database-design](<https://devfeed.tech/tags/database-design.md>), [databases](<https://devfeed.tech/tags/databases.md>), [source-of-truth](<https://devfeed.tech/tags/source-of-truth.md>)

### AI overview

This opinion article argues that databases tracking real-world entities can never be perfectly authoritative because reality changes and records may be incomplete or inaccurate. It uses a community orchestra roster and other examples to explain the limits of the single source of truth concept.

### Source excerpt

Let me tell you a story about why one should be cautious with databases that track the real world. I play trombone in a local community orchestra. For the past two years, I've been the board secretary; part of my duties is keeping a roster of who is

## Coding by Magic

DevFeed: [Coding by Magic](<https://devfeed.tech/articles/coding-by-magic-38391.md>)

Original publisher: [Read original article](<https://blog.danlew.net/2025/05/13/coding-by-magic/>)

Author: Dan Lew

Published: 2025-05-13T14:00:05Z

Content type: opinion

Language: en

Sources: [Dan Lew Blog](<https://devfeed.tech/sources/dan-lew-blog.md>)

Topics: [coding](<https://devfeed.tech/topics/coding.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [code-design](<https://devfeed.tech/tags/code-design.md>), [coding](<https://devfeed.tech/tags/coding.md>), [complex](<https://devfeed.tech/tags/complex.md>), [ide](<https://devfeed.tech/tags/ide.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>)

### AI overview

The author describes "coding by magic" as obscured connections caused by techniques such as reflection, convention-based coupling, and mutable global state. These patterns make codebases harder to understand, debug, and refactor, so the author generally recommends explicit connections except where dynamic invocation is necessary, such as plugin systems.

### Source excerpt

Most of my programming ventures begin with a single line of code I'm curious about. Who is calling the code, and how does this code fit into the larger jigsaw puzzle? As a result, "find usages", "go to declaration", and "go to implementations&

## Programming Priorities

DevFeed: [Programming Priorities](<https://devfeed.tech/articles/programming-priorities-38390.md>)

Original publisher: [Read original article](<https://blog.danlew.net/2025/03/11/programming-priorities/>)

Author: Dan Lew

Published: 2025-03-11T14:00:44Z

Content type: opinion

Language: en

Sources: [Dan Lew Blog](<https://devfeed.tech/sources/dan-lew-blog.md>)

Topics: [Maintainability](<https://devfeed.tech/topics/maintainability.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Development](<https://devfeed.tech/topics/development.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>)

Tags: [automated](<https://devfeed.tech/tags/automated.md>), [code](<https://devfeed.tech/tags/code.md>), [code-design](<https://devfeed.tech/tags/code-design.md>), [coupling](<https://devfeed.tech/tags/coupling.md>), [decoupling](<https://devfeed.tech/tags/decoupling.md>), [development](<https://devfeed.tech/tags/development.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [programming](<https://devfeed.tech/tags/programming.md>), [readability](<https://devfeed.tech/tags/readability.md>), [software](<https://devfeed.tech/tags/software.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

This article presents a priority order for code design: functionality first, maintainability second, and other concerns afterward. It argues that maintainable code reduces the time and risk involved in future changes, allowing later refactoring and optimization. Suggested practices include automated tests, good architecture, decoupling, encapsulation, readable code, and useful comments.

### Source excerpt

Software development (or, you know, life in general) is all about juggling priorities. For this post, I'm thinking specifically about code design priorities. You only have a limited amount of time to implement a feature, so you have to pick and choose which aspects of it to spend