Showing posts from October 31, 2021

Why I Mothballed my Newsletter

I include below the text of the last issue of my Practicing Google newsletter, in which I announced I discontinued the publication and explained why. It feels at the same time sad because it's a failure, and energizing as the it frees up resources for new projects. This is the last issue of Practicing Google. I’m ceasing publication of the newsletter, or at least suspending it indefinitely. I might resume at some point, but not in the short term. If so, I’ll notify the readers still subscribed or announce related projects. I discontinued my Practicing Google Newsletter. I’m sorry this comes out of the blue, but it was inevitable. I’ll explain below why I took this decision I had been considering for a long time. Thank you very much for your attention and support. There's no interest With billions of Google users, without research or validation I assumed at least a few hundred would subscribe to Practicing Google. Almost two years and 87 issues later, the subscriber count has b

An Intel 8080 Assembly Suite in Python

A blog post I stumbled upon made me start a new project, crank out lots of Python code, slip down a rabbit hole of arcane and fascinating corners of retrocomputing, and overflow with fun. The project is Suite8080 , a suite of Intel 8080 Assembly cross-development tools comprising an assembler and a disassembler. I developed it in Python entirely with Replit . At over 1,500 lines of code , it’s my second and largest Python project after Spacestills , a NASA TV still image viewer of about 340 lines of code. A hello world Intel 8080 program running in the z80pack CP/M emulator on Crostini Linux. I assembled the program with asm80, the Suite8080 assembler. Why did I write software for a half-century old CPU? This is the story of how I got started with Suite8080, how I developed it, the challenges I faced, and what I learned. Let’s start before the beginning. Background I’m a hobby programmer and a Python beginner, not a professional developer. To practice with the language, I finally set o