Author Archives: smittytone

Unknown's avatar

About smittytone

Tech Author and Writer

PreviewCode 2 brings a new UI and source code line numbers

PreviewCode provides at-a-glance highlighted source code previews of more than 60 programming and scripting languages, and development configuration file formats. It makes use of macOS’ QuickLook mechanism: select a file and hit the spacebar to get an immediate preview of the file’s contents. It’s a handy way to view a file without opening it in an application.

PreviewCode 2 main window

PreviewCode also generates Finder thumbnail icons for all of those file types if you prefer something other than generic icons.

Continue reading →

CV as code: scripting to satisfy AI and (with any luck) human hirers

It was time to update my CV (resumé to North American readers) anyway, and I figured, why not just script the process? Over the many years of my professional life, my CV has existed as finely laid-out LocoScript, Microsoft Word, QuarkXPress, Adobe InDesign and ultimately Apple Pages documents all used as to create printed and, more recently, PDF copies of my Curriculum Vitae for distribution.

cv for bots

But the world has changed — boy has it changed — and now CVs need to appeal to AI scanners, not people. Register journalist Dominic Connor put me onto the case, noting that the old rules of one to two sides of A4 at most, and all the content summarised as tightly as possible to make it easy for tired hiring managers to glean what they need, have gone the way of the dinosaurs in these LLM-mediated times. So out goes a stylish CV typeset in a tasteful multi-column layout arranged to appeal to humans, and in comes one that’s plain but way better suited to online PDF parsers and bots.

Continue reading →

Psion of the times: using a 90s palmtop in the 21st Century

OK, so it was one of those purchases you can’t help yourself from making. A random, unprompted visit to eBay and suddenly I was £170 down but up one Psion Series 5mx palmtop with all the trimmings. And in very good condition it all is too.

Psion Series 5mx. Image copyright 2025 Tony Smith (@smittytone) All rights reserved

The Series 5 debuted in 1998 as the follow-up to the Series 3 family. I already have a 3a, the same model that I used for time a time back in the day. The 5 was a major upgrade: an ARM processor in place of an x86, more RAM of course, but crucially a backlit, touch-sensitive screen (plus device-dockable stylus) and a deck of larger, less calculator-like keys. In addition, out went the Series 3’s proprietary memory card format and in came a CompactFlash slot (though only one, not two as before). Psion also adopted a new serial comms port that negated the need for the Series 3’s 3Link ‘soap on a rope’ cable, which converted the 3’s proprietary bus to RS232.

Continue reading →

Primal Scheme: when Xcode settings vie with each other for supremacy

In interesting follow-up to last week’s post about the Xcode build system. This week, while updating another of my macOS CLI utilities, I found my new build script was breaking. Why? It was attempting to create a macOS universal binary out of what I thought were two separate ARM64 and x86_64 builds but were in fact both… er… universal binaries.

About xcode

This occurred with pdfmaker. The script was changed based on my experience building utitool and dlist. What might account for the difference? Comparing the architecture-related entries in the Xcode Build Settings for pdfmaker and dlist showed no differences at all. Both utilities’ project files are to Xcode 16.0 specification too.

Continue reading →

Swift Fighting Man: How to duke it out with the Xcode build process and Win!

Today was going to be about so much else, but instead I found myself mêléeing with Apple’s build system.

I have a script I’ve been using very successfully for some years that automates the build process for my CLI apps. It builds a universal binary containing both ARM64 and x86-64 code, wraps it into a macOS installer package and submits the result to Apple’s notarisation service. One command in Terminal and it’s all done, or occasionally you get an error message.

Continue reading →

Ancient Palmtops as serial terminals, Part 2: the Psion 5mx and the homelab

Last year, I performed some jiggery-pokery on my headless Raspberry Pi-based HomeLab to allow my veteran Psion 3a palmtop to be used as a serial terminal for those times when SSH-ing in was not an option. The age of the 3a meant it was a sub-optimal experience, but it was usable. I recently acquired a Psion 5mx, released half a decade after the 3, and put it to the same task.

A Psion 5mx running Hermes to show a Raspberry Pi serial terminal. Image © Tony Smith (@smittytone)

The experience is much better, but I needed to tweak the PI-side settings to get results.

Continue reading →

Unearthing macOS’ Uniform Type Identifiers

The Uniform Type Identifier — UTI for short — is an interesting means to map files to the type of data they contain. macOS uses UTIs to work out what kinds of file an application can open to view or edit. My Preview… apps rely on UTIs to indicate their interest in certain file types. The system uses that information to pass files to my application extensions when a user previews a file using QuickLook. Generally, they’re hidden from users.

utitool 1.2.0 in action

There’s a flaw in the system, however. A UTI might indicate the content a file might be expected to contain, but how does the system connect a file to a UTI? By using its file extension. But while UTIs are unique, file extensions are not, and this is where the trouble begins.

Continue reading →

Hoard of the rings: extracting data from Colmi BLE annular activity trackers

I’m not especially a fan of the ‘quantified self’, the notion that I should continuously record massive amounts of data about my daily life and physiological state. But I am keen on Bluetooth LE communications, and this reason, not the former, is why I acquired a Colmi R02 “smart ring” from the PRC.

Colmi R02 smart ring. Image © 2025 Tony Smith

And all for a mere £6.24 including postage and packing. Barg!

The ring contains a tiny microcontroller and BLE radio, plus an accelerometer for step counting, a blood oxygen reader and a heartbeat sensor. It’s powered by a battery recharged using a tiny magnetic jack that you plug into any USB adaptor. Wee it may be, but the 17mAh battery will give you around five days’ usage on a full charge. From its size, the MCU looks like it’s the BlueMicro RF03, but the precise type is not stated in the ring’s specs.

Continue reading →

How I went kicking and screaming from AppKit to SwiftUI… and why I plan to stay there

With time on my hands and having noted that rather a lot of iOS and macOS engineering jobs now emphasise SwiftUI skills, I thought it was high time that this old AppKit hand spent some time learning how to implement Swift’s ‘new’ declarative UI construction framework.

You might very well wonder why it has taken me so long. SwiftUI has been around for five and a half years – it debuted at Apple’s Worldwide Developers’ Conference in 2019. Why have I not tackled it before?

Continue reading →

Retro text encodings and cross-platform compilings

Working with old tech can take you to unexpected places and expose the quirks of modern coding systems. Case in point: old computers’ supported character sets and their impact on getting workable text when you transfer data across to a recent OS.

I came across this with my Psion Series 3a. I’ve been using it as a note-taking device while researching archive texts on the history of semiconductors. When I was done, I transferred the notes (a single Psion Word file) to a Mac and converted it using my Word2Text utility.

But the computer said, “No”.

Continue reading →