Posts

Why I Mothballed my Newsletter

Image
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

Image
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

How to Add Code Syntax Highlighting to Blogger

Image
On my blog I always wanted to format source code in Python and a couple more languages, but couldn’t find a convenient way. Until I read a tutorial on adding syntax highlighting to Blogger blogs like mine. The Blogger post composer actually provides the monospace Courier font that may be used for source code, but it works well only for inline text . If I apply the Courier font to a block of code, the composer renders each line as a separate paragraph. This leaves too much vertical space that makes the code look ugly. A workaround is to switch to the HTML view in the composer and wrap the block within <pre> ... </pre> tags, which insert the correct line spacing. However, the code doesn’t stand out on the page and there’s room for improving its scannability and visual impact. Fortunately, Blogger is an old dog I can teach new tricks to, like the setup the tutorial I found presents. A Python code snippet with syntax highlighting rendered by highlights.js in a post of the Moo

How to Jump to the Top of the Google Photos Library

Image
Despite the impressive machine learning features, in the Google Photos app, good old browsing is still a common way of finding what you want in your library. You scroll down the timeline until you run across what you were looking for, or other interesting shots serendipity brought your way. Tap the Photos button to jump back to the top of the photo library in the Google Photos app. Here the Android app on a Pixel 4 XL. Now that you are way down the timeline, how do you get back to the top? You can scroll up all your way until you hit the latest photos. Or just tap the Photos button in the bottom bar, which instantly jumps to the top. This handy trick works also when the Android app is running on Chrome OS.

4 Things Tutorials Don't Tell You About PyPI

Image
Time to celebrate! I published my first Python package to PyPI, Suite8080 . It’s a suite of Intel 8080 Assembly cross-development tools. It’s in early development, misses some tools, and is rough around the edges. But it works, does something useful (if you’re into retrocomputing), and I’m having ridiculous amounts of fun with this hobby project. The Python Package Index (PyPI) website. The celebration is wearing out and I’m about to resume the work to complete and improve Suite8080, yet something still bugs me. Although it’s well known PyPI is unforgiving for good reasons, the package publishing process is not as straightforward as the tutorials make it seem . I run into a few unexpected minor bumps none of the guides mention. It’s not that the tutorials aren’t good, they are. I recommend the Real Python article on publishing a package to PyPI . But the authors of these guides are so experienced, and probably so detached from the challenges beginners face, they may not be aware some i

Silence Astronomy and Space Android Apps

Image
 What's the first thing to do after installing an astronomy or space app on Android? Turn off any alarms and notifications in the app's settings. Although these apps try to be helpful, they are noisy and alert you of interesting celestial phenomena or space events, such as the phases of the Moon, planetary conjunctions, satellite passes, and rocket launches. The option to turn off alarms in the ISS passes screen of the ISS onLive Android app. I learnt it the hard way when alarms in the wee hours of the night showed up on my Pixel 4 XL phone. It turned out an update of the ISS onLive app had set up alarms for International Space Station passes.

The Best Chrome OS Screen Capture Features

Image
Although the Nimbus Chrome extension is my primary screenshot and screencasting tool, I’m re-discovering the native Chrome OS screen capture functionality . Two features of the latter improve my workflow, the ability to precisely frame the capture area and to save screen recordings in the WebM video format. The Crostini Linux Terminal on my ASUS Chromebox 3. I took this screenshot with the area framing controls of the Chrome OS screen capture tool. When I activate the tool by pressing Shift+Ctrl+ShowWindows and draw the selection rectangle to delimit an area of the screen, clicking and dragging a corner brings up a magnified inset of the area around the mouse pointer that allows the precise adjustment of the selection rectangle . To make the inset show up, I have to release the mouse button after drawing the rectangle, then click a corner. My ASUS Chromebox 3 has a mouse, which allows for fine tuning the rectangle’s size and position. The trackpad or touch screen of my Chromebook req