RSSAmplifier

Blog

Justin McGuire's Programming Blog

Recent content on Justin McGuire's Programming Blog

landedstar.comRSS feed ↗74 posts

Latest posts

10 goto 10

Hulu auth in an endless loop.

Apple Broke Moving a File

I moved some files between folders, and this happened. It happens a lot with iCloud. The problem, I’ve read, is that macOS is trying to download the file from iCloud, and then move it, and it gets a teeny bit confused. It’s been going on a while. I can’t believe Apple broke moving a file. Update Two restarts and two hours later and it’s still not moving. I could move them…

Ban the Box

Saw this on a job application. It doesn’t seem right.

Rejection Emails Should Be Written Like Error Messages

Be direct. Tell me I'm not going to be interviewed in the first sentence. Don't hide it in the second paragraph.

I built an eBook dictionary generator using only agentic programming

I used Codex to build out a real project, a dictionary generator for Dungeon Crawler Carl.

Still Don't Like Python's Join vs. Split Syntax

Still don’t like Python’s "separator".join(my_variable) v my_variable.split("separator") . Every time I walk away from Python for a year and come back, I reforget this. I know why it’s like this, but I still don’t like it.

Rust Recommended Links

Found this in a 2023 image folder, back when I was programming in Rust. I think it's from the Safari Browser start page.

How my application programmer instincts failed when debugging assembler

I've had a smidge of extra time with my recent unemployment, so to stay sharp and learn a few new things I followed Seiya Nuta's guide to building an Operating System in 1,000 Lines.

Debugging Below the Abstraction Line (written by ChatGPT)

I followed the Operating System in 1000 Lines tutorial to understand what it means to work without the safety rails. I expected difficulty. I did not expect how disorienting it would feel to debug code that refuses to pretend it is anything other than memory, registers, and control flow.

Do I Need JWTs?

Whenever people ask me about JWTs and stateless auth, which has happened twice, I answer: No, No, Maybe.

Golden Age TV and Program Era Fiction

In 2010 Elif Batuman wrote Get A Real Degree . Ostensibly a book review, it gave her space to unload on an era that produced a writing glut. This quote stuck out to me. That’s the torture of walking into a bookshop these days: it’s not that you think the books will all be terrible; it’s that you know they’ll all have a certain degree of competent workmanship, that most will have about three…

Profession by Isaac Asimov and ChatGPT

Sometimes science fiction gives a peek into a possible future. Not enough people are talking about this old classic short story Profession by Isaac Asimov, and what it can teach us about our AI-and-prompt-engineering-powered future.

Stack Overflow is documentation, not Q&A, and that's bad

Stack Overflow should not discourage repetitive answers. It's a sign of a healthy community.

Hire me, damnit

My name is Justin, and I have 20 years of full stack experience with a speciality in backend and application development. I’ve done a lot of work in areas like massively parallel ETL processes, auth, imports, customizable dashboards, all using a lot of Python, Rust, Typescript, too much Perl, and not enough Go. I’ve also done a loooooot of work debugging, updating, and migrating…

A Diverse Engineering Team Means You Stop Losing Money

Let’s pretend this is all fictional and not at all based on a real story I can't talk about.

Scrum Answers the Question of How Many Meetings Should I Have

Scrum does a lot of things wrong, and a lot of the things it does right are mystifying. But one thing that it does very right is it answers the question of how many meetings to have. The answer is about 3 hours a week.

SCIM Gotchas

I partially implemented SCIM. SCIM is used so rarely there's no online discussion or help about any of it. Here's what I learned.

About

Site assembled with Hugo, vi, Visual Studio Code, and zsh scripting. The blogging platform is Hugo , hosted on Dreamhost , with the Terminal theme from panr . The argyle background is from Transparent Textures . I love it because I can change the background color to suit my mood, but still keep the blog classy. A few images are from DALL·E , back when it wasn’t very good. I stopped using it.…

New Rules of Web Design for The Worst Age of Web Design

These rules didn't used to exist, because they didn't need to exist, because web design used to not go out of its way to kneecap the basic functionality of a person using a website. But here we are. So here are the new rules of web design for the hell that exists.

This blog is temporarily broken.

Will be fixed later.

The best 10 programming articles of the last 10 years

These are articles that I've kept around and reread over the years. I love me a readable deep dive, and this list is full of them.

How to save the password file as the Message Of The Day

When Fernando Corbató accepted the Turing Award for, among other things, inventing the computer password, he described my new favorite bug.

Abbreviated variable names are fine

Should you use full variable names, or abbreviated? The answer: doesn't matter.

Who uses UML?

Who uses UML? The answer may surprise you! Unless you've spent any time working as a programmer, then the answer will not surprise you. Not at all.

C.A.R. Hoare on programming language design

C.A.R. Hoare thinks programming languages should primarily support design and documentation, with programming being a distant third.

We Are Storming

It took me too long to realize that the paper I just read was directly relevant to me. It was about teams. I was on a team. Why didn't I get that?

Why Google Source has high uptime

Google Source has tremendous uptime. They manage it by having a super-flexible schema, and code that takes advantage of it.

Reading "The Power of Two Choices," by Michael David Mitzenmacher

Use two choices. It's easy to get hugely better performance by moving from one choice to two choices. It's very hard to do better.

Notes on Development Sequence in Small Groups by Bruce W. Tuckman

Forming. Storming. Norming. Performing. Every writer who writes about teams references this one (and only this one) article, and those four stages. It's foundational, and it rhymes.

Microsoft WinWord Post-Mortem

In 1984 Microsoft decided to port MacWord to Windows. They expected it would take about one year. It did not. It took five. In one of the many, many great documents unearthed by the Comes v. Microsoft antitrust lawsuit is this great postmortem of what went wrong.

Starting a Project with Top-down Agreement

I'm doing this project from the top-down. It's totally unlike how I normally work. But it's also my first time leading a team, which is also unlike how I normally work, and has different needs.

This blog now has diagrams!

I've always wanted to be able to put simple diagrams in this blog without going through the trouble of graphically creating them in LucidChart or Balsamiq. I just want to type in text, and have it convert to a chart.

My new project: Satellite

Three months ago I started a new job with a huge jump in responsibilities. I went from a comfortable Programmer and Occasional Scrum Master , to a panic-inducing Architect, Team Lead, and Manager . These are roles I’ve wanted for a while, so I’m happy to be here, but it’s a weird new world for me. I have a few things going for me: My boss believes in me, I’m working with a…

Things I was definitely wrong about

Here's the inevitable followup to my last post about things I was right about. This is a list of things that I was convinced about when I was younger, but now I realize I was quite wrong.

Things I was always right about

Some bloggers have strong opinions and are just right all the damn time. Like Joel Spolsky, and Jason Fried. I admire them, but I've never been that guy, or been that confident in my opinions. But damnit, some of my oldest opinions hold up. After nearly two decades of professional programming, I've looked back and thought about the opinions I originally had. Here are the ones that I'm convinced I…

Heisenbugs – TL;DR: just run it again

The TLDR is simple: if you have a disappearing/reappearing bug, just run it again.

"Programming languages can be categorized in a number of ways..."

Programming languages can be categorized in a number of ways: imperative, applicative, logic-based, problem-oriented, etc. But they all seem to be either an “agglutination of features” or a “crystallization of style.” COBOL, PL/1, Ada, etc., belong to the first kind; LISP, APL– and Smalltalk–are the second kind. It is probably not an accident that the…

Can we measure how much more complicated computing is?

25 years ago, a simple question was asked about storage, access times, and economics, and the result was a simple paper. Every ten-ish years since then, an updated paper was written to answer the same question. It's not a terribly good measure of complexity, but it is enlightening.

Niklaus Wirth proves that better software is possible, in "A Plea for Lean Software"

This paper reads like an old man yelling at clouds, but then, halfway through, he simply writes a better cloud. (This metaphor is pretty awkward given cloud computing.)

History and lessons of Algol 68

Algol 68 is the Cronus of programming languages. Cronus is the titan who fathered Zeus, an important character in the myth, but vastly overshadowed by his own progeny. Algol 68 was an important language, and had a fascinating history. This post is a combination history, lesson, and filled with quotes from people who were there.

The Biggest Post-Mortem

When there are failures at a small level, like a deployment goes wrong, there's a meeting, and a blameless post-mortem written is shared publicly. Normally this happens quickly, while everyone's memories are still fresh. When entire projects and movements fail, the opposite happens. There are no public post-mortems, and no meetings. A couple people leave the company, some blame is privately…

Inside the (1984) Japanese Software Industry

I went to dig into some of the sources cited in Peopleware (see my previous two blog posts), and I fell in love with this 1984 article on Japan's software industry and Hitachi Software Engineering. It's a look into a company that feels like peak-era IBM: much bureaucracy and even more success.

Peopleware Bibliography

Timothy Lister and Tom DeMarco didn't include a bibliography in Peopleware, so I swept through the book and produced one for curious readers.

Scattered notes on Peopleware by Tim Lister and Tom DeMarco

I just finished reading that old software classic, Peopleware. The first chapter is 'Somewhere Today, a Project Is Failing,' and hooked me immediately.

Soft Skills for Software Architects, a video series by Mark Richards

Mark Richards runs the Developer to Architect website, and puts out a video every Monday. He has helpfully categorized them. I watched all the videos in the 'Soft Skills' category and took notes.

Learning about Faults, Errors, and Failures.

I've been reading about failures in distributed computing. A lot of it is thanks to Vaidehi Joshi's Year of Distributed Computing at https://medium.com/@vaidehijoshi . Here's a small summary of what I've learned.

Product Management - Week 2 - Goals and Metrics

Here are my notes for week 2 of my product management education. This week is all about metrics, goals, and strategy, with a dive into Pirate and HEART metrics.

Product Management - Week 1 - What is it?

I've started an online Product Management class because, I dunno, I like learning new, non-coding things related to my job. I'll be posting all my notes here.

Bad communication can be a win-win scenario

In the aftermath of GE's price fixing scandal, we learned that GE executives had a culture of winking while they told subordinates not to break the law. Sometimes. Each salesperson had to interpret the word and the wink, and the occasional lack thereof, according to their own internal rules. Effective communication was, effectively, absent.

North East Database Day

NEDD is a one day conference in Cambridge. It's an inexpensive way to learn about the cutting edge of database research. These are my notes on each speaker.