At the end of last week, I attended a conference in Budapest. I had the opportunity to give a short talk on API First, and I’ll expand on that i...
Creating a writing style guide
When I switched from journalism to technical writing, the two things I missed the most were style guides and editors. When tech writing departments ar...
Writing a résumé or curriculum vitae
As the tech crunch continues, it’s entirely possible that you’re one of the many people who suddenly find themselves looking for a new job...
Using LanguageTool to improve your writing
As I’ve previously remarked, I missed two things on switching from print journalism to technical writing. I covered style guides last week, so t...
Writing American when it's not your first English dialect
When I started out as a writer I used to use Oxford English. That’s the one with the (correct) -ize spellings. Although as a journalist I was to...
Byte High, No Limit goes monthly
I’ve retroactively decided to return the Byte High, No Limit blog to a regular cadence. For the first two and a half years of its run, I publish...
It’s been two years since I relaunched my website as a personal portfolio and developer relations blog. Having been a journalist, a marlinspike ...
Docs as code doesn’t have to mean Markdown and Git
After almost 15 years as a technical writer for software companies, I’m a convert to the docs as code philosophy. But while I like Markdown and Git (I...
Creating a hybrid document management system
This week, I listened to a podcast where the host opened with a sincere apology and the guest made some interesting points about the current social me...
When I started writing this blog in 2022, I didn’t even have a name for it. It was just called Dev Blog. But it occurred to me that the magazine...
Back in 2019, I had to create a developer portal with no budget. I wrote up the experience and last year I published it here as a three part series. M...
I was recently asked for my favorite resources and best practices for writing clear and structured API docs. I’ve developed my own style for wri...
The hashtag has become ubiquitous. Chris Messina was inspired by the way chat rooms were identified on Internet Relay Chat (IRC) servers, when he firs...
The American Computer Magazine: 1957 to 2023
Print is evolving but, after 66 years, the era of the mass-market printed computer magazine is over. The last two holdouts were MacLife (formerly MacA...
Stop press: Updates to March 2023
Back in my days as a newspaper reporter, the last paper I worked on was one of the last in the country to run a stop press. This was a physical mechan...
2023: Predictions for the Year Ahead
I like to think that I have a fairly good track record of predicting the future, although usually in fairly vague terms. I’d been waiting for an...
Creating documentation in an agile environment
Google for images of agility, and you’ll get dog trials. So let’s go with that analogy. If you create written content for software, going ...
Getting started in developer relations
It may surprise you that the field of developer relations has been around for nearly 40 years at the time of writing. It started at Apple with Mike Bo...
Today is the two and a half year anniversary of this blog. That’s one article a week over the last 130 weeks. I always intended to scale back th...
It’s been nearly two years since I began publishing a weekly article on this blog. The aim was to serve the DevRel community, and for the most p...
The importance of time management
When I became a developer advocate, one of the first and best pieces of advice I was given was to protect my development time. Essentially, don’...
Creating API docs for assembly language projects
This week, I’m releasing what I hope will be the penultimate beta of SE Basic IV (an open source classic BASIC interpreter). The last beta shoul...
I did my journalism training at the London College of Printing back in the last century when newspapers were still a thing. It was essentially a 13 we...
Bulk updating documents with XSLT
XSLT (Extensible Stylesheet Language Transformations) is a language for transforming XML documents into other documents. I’ve mentioned it befor...
My curated list of children's authors
This week I presented a talk on CMS, CCMS and related solutions at the TCUK23 technical communications conference in England. I had intended to write ...
Retro spotlight: Rebecca G. Bettencourt and bitmap fonts
Rebecca Bettencourt was drawn to computer programming from the age of 10, when she built her first website and started creating Macintosh bitmap fonts...
At the beginning of the year, I committed to publishing a weekly article on my DevRel blog. I always aim to publish by Thursday morning on the US east...
In my day job as a developer advocate, and in my volunteer role as community manager for the Chloe 280SE project, I’m sometimes called upon to s...
Migrating from Markdown to structured authoring
I’m a huge fan of Markdown. It’s great for wikis and writing content for static sites (most of the content on this site is written using i...
My curated list of television shows
To date, one of the most widely-read articles I’ve written for this blog was a curated list of podcasts. So here I am again with some off-topic ...
Managing social media content with Buffer
One of the challenges of writing a weekly DevRel blog is trying to make sure as many people as possible who might be interested in it actually get to ...
At the end of last year, among my predictions for 2023 was that Twitter would still be around at the end of this year. I may have only been half right...
How to offend most of your international users all at once
We love icons. They’re a great way to convey information simply, even if many of them are skeuomorphs from a bygone age. You know, like using a ...
Creating an information architecture with Chat-GPT 5
Earlier this month, OpenAI launched GPT-5, its latest and most advanced AI model, for all ChatGPT users (including free users). The company claims the...
Getting the most out of MasterClass as a developer advocate
First off, the obligatory disclaimer. I was gifted an annual subscription to MasterClass by my employer, and I’m not getting paid to write this....
2024: Predictions for the Year Ahead
This is my second go at making predictions for the year ahead. As with last year, I’m not going to make any predictions on geopolitics or the cl...
Why you should build your data center in Ireland
There has been a lot of talk in the Irish press this month about the fact that the government doesn’t seem to know how many data centers are pre...
Disambiguating Jamstack and MACH
Earlier this year, I gave a lightning talk on API-first. I’ve been planning write an article on it ever since, but first I wanted to lay the gro...
If you’re reading this then, at the time of writing, thus far, through a combination of luck and guile, you have survived the pandemic. Well don...
Creating a developer portal with no budget (part 3/3)
In this three part series, I’ll outline how to create a fully featured dev portal for your Swagger or OpenAPI 3.0 content without spending a dim...
My curated list of animated shows (part 2/2)
In the first part of this article, I got as far as “Invader Zim”, which laid the foundations for what came next. The 2010s is considered b...
As humans, the two main ways we learn are through play and story. When you’re trying to learn a new task, it’s often easier to learn by tr...
My curated list of animated shows (part 1/2)
I thought a list of animated shows would be a relatively quick article to write. I was wrong. There’s no way to do it justice without taking at ...
Fully autonomous cars are only a decade away
This week I read an article in the national newspaper I subscribe to with the subhead: “carmakers appear to be abandoning the idea of fully self-drivi...
This week’s article is the long-promised expansion of the lightning talk I gave at SUGCON 2022 in Budapest. If you’re coming fresh to the ...
Hiring and retaining Generation Z
Economist and former Greece finance minister Yanis Varoufakis has a new book out called “Technofeudalism: What Killed Capitalism”. I’m waiting f...
Getting started with REST APIs
REST (representational state transfer) APIs (application programming interfaces) have been around since the turn of the century, when they were define...
The Darwin Information Typing Architecture (DITA) and DocBook are two XML-based authoring frameworks. I strongly prefer DocBook. Today’s article...
Running non-Apple Intel binaries on an M1 Mac
Since late 2018, I’ve been developing on Apple Silicon. You can read about it in an earlier article. But that’s using an iPad, and the onl...
I’ve written previously about the importance of a style guide for written content. The same is true for code. Arguably, it’s more importan...
Setting up a home office for video production
In August 2021, TikTok increased the maximum length of videos on its platform to three minutes. By December 2021 it had overtaken Google, Amazon, Appl...
Using Freeform for whiteboarding on video calls
As a solutions engineer, I’ve spent a lot of time on video calls with customers brainstorming solutions to unique problems. Ideally, I’d l...
Last week, I wrote about how I added localization to my website. While I’ve translated all the core content, I still have a backlog of more than...
Managing packages on Windows with Scoop
If you have even a passing familiarity with Linux, you’re probably aware of the concept of package management. The goal is to simplify the insta...
Doing secure offline machine translation with macOS
Machine translation has come a long way since researchers figured out that it was better to translate phrases than individual words. It works best whe...
Using GitHub Actions to automatically unpack a zip archive
I was recently working with some software that could push a zip archive of content to a Git repository. However, what I really wanted was for the cont...
Using letter frequency to solve Wordle
As a writer, Wordle (the latest internet gaming sensation) piqued my curiosity. It’s essentially a word-based variation on Mastermind. The key d...
Migrating a Hugo site from Forestry to Tina
I launched the current version of my website a year ago. Having become a developer advocate in 2021, I didn’t think a WordPress site that hadn&r...
If your documentation has reached the limits of what’s possible in Markdown, and you’d prefer not to fall back to HTML, it’s time to...
My curated list of French films from the end of the twentieth century
My blog articles on the lists seem to be very popular, so I decided to write another one. However, given the subject matter, it seemed more appropriat...
Using Lighthouse to validate web accessibility
I’ve long been an advocate of localization, which is why it was important for me to make this site multi-lingual. But I’ve been an advocat...
Running ARM Linux on an M1 Mac
Next week, I’m going to look at running non-Apple Intel binaries on M1 Macs. But today, I’ll go over some options for running ARM Linux on...
Setting up a free personal website with GitHub, Hugo, Netlify and TinaCMS
My first article of 2022 was on setting up a free personal website with GitHub, Hugo, Netlify and Forestry. But Forestry is due to be discontinued at ...
Migrating documentation from one software platform to another can be painful. I remember the days when moving a Word document back and forth between M...
You’re a developer. Have you ever wondered how the software you write gets into the hands of users? No, me either. In over 15 years in IT, I nev...
Surviving an uncivilized workplace
I’ve been fortunate in life to work for some companies that were genuinely great places to work. But I have also had the opposite experience. If...
Explaining event-driven architectures
Modern software development is all about automation, continuous integration, continuous delivery and software-defined life cycles. The idea is to main...
Retro spotlight: Hedy Lamarr and wireless networks
I first heard the name Hedy Lamarr in Mel Brooks’ film “Blazing Saddles”. The next time was when as a student journalist in the earl...
Converting JSON string collections to binary assets for non-UTF-8 compliant devices
Last time I wrote about localization with Weblate. This week, I’ll show how the SE Basic IV project takes JSON output from Weblate and converts ...
Running Intel binaries in Debian ARM with Rosetta
I’ve mentioned UTM before. It’s a nice wrapper for QEMU that enables you to create ARM virtual machines and emulate non-ARM machines on ma...
Running Xilinx ISE on an M1 Mac
Back in March 2022, I did a write-up of how to run Xilinx Vivado on an M1 Mac to generate cores for the Artix-7 series of FPGAs (as used on the Mega 6...
Using an iPad Pro for development
This is my 2018 iPad Pro. It has replaced the Hackintosh workstation I built that I ended up installing Windows 10 on (story for another day) as my ma...
In a monologue preceding one of his songs, Tom Lehrer once said: “I wonder how many people here tonight remember Hubert Humphry, he used to be a senat...
Creating a developer portal with no budget (part 2/3)
In this three part series, I’ll outline how to create a fully featured dev portal for your Swagger or OpenAPI 3.0 content without spending a dim...
Creating diagrams with Mermaid
I’m a convert to writing docs in Markdown. Most of this website is written using it (displayed with Hugo). But sometimes you need to include a c...
Reusing code, reverse engineering and collaboration
In this article I’m going to talk about code reuse, reverse engineering and the importance of collaboration. The example I’m going to use ...
Next year is the third anniversary of this blog. But this year, after two and a half years of publishing weekly articles, I had to take a break. After...
Getting the most out of analytics
Last week, I wrote about the social media platform formerly known as Twitter (TSMPFKAT). If the T and P are silent, like in tsar and pfennig, it can b...
Converting images with ImageMagick
Photoshop is old. Really old. Well, in computer terms anyway. As of writing, it’s currently on version 24.0. It was originally developed for the...
I can confidently predict that I will not still be writing this blog the next time February 29 falls on a Thursday. So today’s article is a litt...
My curated list of obscure macOS apps
This fall, I will have been using Macs for 30 years. I bought my first in my freshman year at university and nicknamed it Fleetwood. Since then, I&rsq...
Using GitHub Actions and Hosted Runners
You’ve probably heard of DevOps. You’re probably aware of the term CI/CD (continuous integration and delivery). But if not, the TL:DR is: ...
Adobe at 40: impact and alternatives
Adobe is 40 years old this month. Founders John Warnock and Charles Geschke both previously worked at Xerox PARC, where desktop publishing (DTP) was f...
If you read my recent article on implementing DLLs for the Z80 CPU, you’ll be aware that I’m designing an operating system called SE/OS. I...
Retro spotlight: John Grant and Sinclair BASIC
Earlier this month, Zilog announced that it would be discontinuing the Z80 microprocessor after 48 years of production. Coincidentally, 48 is the numb...
Setting up a free personal website with Forestry, GitHub, Hugo and Netlify
Back in May 2021 I started a new career as a developer advocate. I first registered my domain back in the 1990s, but it’s really just been a pla...
Emulation and virtualization on iPad in 2025
On a personal level, the last 12 months have been a lot. I stopped posting weekly updates back in June 2024 and I’ve been posting on an ad hoc b...
Retro spotlight: Andy Remic and the 8-bits
Andrey John “Andy” Remic was a writer, filmmaker and retro computer enthusiast. In Februart 2022 he died from cancer at the age of 50, lea...
Running Xilinx Vivado on an M1 Mac
I’ve written before about running non-Apple Intel binaries on an M1 Mac. The solutions I discussed work for most general purpose apps, but there...
Creating release notes from a Jira query
In this article, I’ll describe a solution to simplify the process of creating release notes in MadCap Flare from a Jira query. Jira is a popular issue...
Managing a ReadMe.io site from a Git repository
ReadMe.io is a popular user docs site. It has a Markdown editor, theme builder and Swagger / OpenAPI file import. It’s fast and responsive, and ...
Year one of the calendar in Aldous Huxley’s “Brave New World” is 1908, the year Henry Ford introduced the Model-T. As expected, the ...
Creating a developer portal with no budget (part 1/3)
In this three part series, I’ll outline how to create a fully featured dev portal for your Swagger or OpenAPI 3.0 content without spending a dim...
Art and Artificial Intelligence
It is a truth universally acknowledged, that a single technology in possession of sustained media attention, must be in want of government legislation...
Today’s article is based on a presentation I gave at a security conference in the 2010s. It’s a bit longer than what I’d normally sh...
Essay: Assessing machine sentience
I’ve long been interested in the field known as artificial intelligence (AI). Today, I prefer the term machine learning (because we understand s...