Tag: Open Source
Custom Bluesky Handles with Hono and Cloudflare Workers
I recently changed my Bluesky handle from @simmervigor.bsky.social to
@simmervig.org. I did this using the HTTP validation method, which relies on
providing custom responses to /.well-known/atproto-did. The blog explains how
I used Hono to set up a simple request router and run it in
Cloudflare Workers. You too can use this method to easily and quickly set up a
bunch of handles under a unified organisation e.g., @alice.example.org and
@bob.example.org.
De-Press-ed: Migrating from WordPress to Cloudflare Pages
This website was previously powered by a self-hosted WordPress, running on a VPS. In front of that, sat Cloudflare and its APO product that helped to speed it up and reduce burden on the origin.
The origin server was an old-school, janky, LAMP stack. In spite of the rest of the world seeming having ditched LAMP (or its ilk) and performing a chain of moves from the hottest static site framework year-to-year, I took a certain joy in the legacy. I liked the fact I was dogfooding the experience of taking a weak origin and magically turning it into something that can operate at Internet scale with a few button clicks.
Lately though, there’s been a bit of bluster in the world of WordPress. I have little skin in that game, other than as an end-user of a software product that I have to run and maintain. That meant having posts on the matter thrust into my WordPress dashboard under the “Wordpress News and Events” panel. Sure, I can remove that panel, but it used to have some value. Abusing the panel to inundanate me with WordPress politics is not cool. And the more I’ve read, the more it seems like there are some very blurry lines between the WordPress open-source project, WordPress foundation, wordpress.org, wordpress.com, WPTavern.
This site is simple and has infrequent content updates. WordPress was really overkill for my needs. However, maintaining it did have some toil. wordpress.org decided to tell me in my dashboard that they had blocked some sites from their update servers. Am I next? Probably not. Yet, the fussing about I’ve seen on the Internet the past couple of weeks has given me the kick up the arse to finally ditch WordPress. I started the migration away from WordPress a few days ago, and in the meantime the situation has continued to escalate in absurdity. In the words of Blumhouse, its time to say NOPE, GET OUT.
Tag: Competition
Degox - Taking (Back?) my Internet Privacy and Presence
For as long as I’ve used email, someone else has provided it to me for “free”. Detoxing in January is a staple, so why not extend that to weening off Google and call it a degox.
This was supposed to be a short post about my experience migrating to Fastmail. However, it went sideways and turned into an essay. I’ve knitted together various experiences and topics from over the decades. I’ve come to the slow realization that this choice, to take back my Internet Privacy and Presence, isn’t a new year fad to be dropped unceremoneously by February.
Tag: Privacy
Degox - Taking (Back?) my Internet Privacy and Presence
For as long as I’ve used email, someone else has provided it to me for “free”. Detoxing in January is a staple, so why not extend that to weening off Google and call it a degox.
This was supposed to be a short post about my experience migrating to Fastmail. However, it went sideways and turned into an essay. I’ve knitted together various experiences and topics from over the decades. I’ve come to the slow realization that this choice, to take back my Internet Privacy and Presence, isn’t a new year fad to be dropped unceremoneously by February.
Tag: Standards
Degox - Taking (Back?) my Internet Privacy and Presence
For as long as I’ve used email, someone else has provided it to me for “free”. Detoxing in January is a staple, so why not extend that to weening off Google and call it a degox.
This was supposed to be a short post about my experience migrating to Fastmail. However, it went sideways and turned into an essay. I’ve knitted together various experiences and topics from over the decades. I’ve come to the slow realization that this choice, to take back my Internet Privacy and Presence, isn’t a new year fad to be dropped unceremoneously by February.
Tag: Craftmanship
Software Metrics and Craftsmanship

Software Development Metrics are a notoriously difficult area, there exists a large allure of quantitative measurements that can be condensed into a top-level dashboard showing progress, plan alignment, effort , costs and so on. However, the unfortunate reality is that the collection and analysis of Software Development Metrics is difficult for a number of factors such as complexity, variance, meaning and gaming of the system. Often it is a difficult case of understanding if we are more interested in the performance of the project (Health) or the performance of the developer (Efficacy).
Tag: Development
Software Metrics and Craftsmanship

Software Development Metrics are a notoriously difficult area, there exists a large allure of quantitative measurements that can be condensed into a top-level dashboard showing progress, plan alignment, effort , costs and so on. However, the unfortunate reality is that the collection and analysis of Software Development Metrics is difficult for a number of factors such as complexity, variance, meaning and gaming of the system. Often it is a difficult case of understanding if we are more interested in the performance of the project (Health) or the performance of the developer (Efficacy).
Tag: Metrics
Software Metrics and Craftsmanship

Software Development Metrics are a notoriously difficult area, there exists a large allure of quantitative measurements that can be condensed into a top-level dashboard showing progress, plan alignment, effort , costs and so on. However, the unfortunate reality is that the collection and analysis of Software Development Metrics is difficult for a number of factors such as complexity, variance, meaning and gaming of the system. Often it is a difficult case of understanding if we are more interested in the performance of the project (Health) or the performance of the developer (Efficacy).
Tag: Andriod
UI Navigation - Android

Up vs. Back or in other terms hierarchy vs. chronology is one of the User Experience aspects touched upon in my post UML: Modelling User Interfaces Part 1 – Hierarchy and Navigation. The Android methodology for UI navigation has received some attention over the years and the largest change to date was brought in with the introduction of the Action Bar as part of Android 3.0+.
Tag: Ui
UI Navigation - Android

Up vs. Back or in other terms hierarchy vs. chronology is one of the User Experience aspects touched upon in my post UML: Modelling User Interfaces Part 1 – Hierarchy and Navigation. The Android methodology for UI navigation has received some attention over the years and the largest change to date was brought in with the introduction of the Action Bar as part of Android 3.0+.
UML: Modelling User Interfaces Part 1 - Hierarchy and Navigation
This is the first post in a series that looks at the modelling of User Interface (UI) related software using UML.
The main purpose of the post is to explore how we effectively model the navigation of a tree-like hierarchy, especially when considering the premise “In a tree structure there is one and only one path from any point to any other point”.
The tl;dr is that UML does not necessarily have the ability to represent UI concepts of hierarchy and navigation effectively.
Tag: Ux
UI Navigation - Android

Up vs. Back or in other terms hierarchy vs. chronology is one of the User Experience aspects touched upon in my post UML: Modelling User Interfaces Part 1 – Hierarchy and Navigation. The Android methodology for UI navigation has received some attention over the years and the largest change to date was brought in with the introduction of the Action Bar as part of Android 3.0+.
UML: Modelling User Interfaces Part 1 - Hierarchy and Navigation
This is the first post in a series that looks at the modelling of User Interface (UI) related software using UML.
The main purpose of the post is to explore how we effectively model the navigation of a tree-like hierarchy, especially when considering the premise “In a tree structure there is one and only one path from any point to any other point”.
The tl;dr is that UML does not necessarily have the ability to represent UI concepts of hierarchy and navigation effectively.
Tag: Isdesigndead
UML: Aside - Completeness vs Clarity and other CvCs

One of the recurring issues I have experienced with UML, or more generally Model Driven Design is the continual struggle between definition and interpretation. One of the tenants of UML is to abstract upwards towards a level that avoids implementation specifics. However, this introduces the potential for a need of a “Leap of Faith”, something that was discussed my post UML: Modelling User Interfaces Part 1.
Tag: Model-Driven
UML: Aside - Completeness vs Clarity and other CvCs

One of the recurring issues I have experienced with UML, or more generally Model Driven Design is the continual struggle between definition and interpretation. One of the tenants of UML is to abstract upwards towards a level that avoids implementation specifics. However, this introduces the potential for a need of a “Leap of Faith”, something that was discussed my post UML: Modelling User Interfaces Part 1.
Tag: Uml
UML: Aside - Completeness vs Clarity and other CvCs

One of the recurring issues I have experienced with UML, or more generally Model Driven Design is the continual struggle between definition and interpretation. One of the tenants of UML is to abstract upwards towards a level that avoids implementation specifics. However, this introduces the potential for a need of a “Leap of Faith”, something that was discussed my post UML: Modelling User Interfaces Part 1.
UML: Modelling User Interfaces Part 1 - Hierarchy and Navigation
This is the first post in a series that looks at the modelling of User Interface (UI) related software using UML.
The main purpose of the post is to explore how we effectively model the navigation of a tree-like hierarchy, especially when considering the premise “In a tree structure there is one and only one path from any point to any other point”.
The tl;dr is that UML does not necessarily have the ability to represent UI concepts of hierarchy and navigation effectively.
Tag: Android
Android Resource and the Eclipse switch Quick Fix
In the process of updating and refactoring an old Android project I unwittingly changed a Project configuration option (the “Is Library” option) that lead to my resource file being generated differently. E.g
Before
[java] public final class R { public static final class id { public static final int button1=0x7f090001; public static final int button2=0x7f090002; public static final int button3=0x7f090003; } } [/java]
After
[java] public final class R { public static final class id { public static int button1=0x7f090001; public static int button2=0x7f090002; public static int button3=0x7f090003; } } [/java]
A subtle change indeed but one that caused the following compiler error for each line
case expressions must be constant expressions
Tag: Eclipse
Android Resource and the Eclipse switch Quick Fix
In the process of updating and refactoring an old Android project I unwittingly changed a Project configuration option (the “Is Library” option) that lead to my resource file being generated differently. E.g
Before
[java] public final class R { public static final class id { public static final int button1=0x7f090001; public static final int button2=0x7f090002; public static final int button3=0x7f090003; } } [/java]
After
[java] public final class R { public static final class id { public static int button1=0x7f090001; public static int button2=0x7f090002; public static int button3=0x7f090003; } } [/java]
A subtle change indeed but one that caused the following compiler error for each line
case expressions must be constant expressions
Tag: C
C and C++ Preprocessor: warp, Clang and GCC
I belatedly came across the news regarding warp, a C and C++ preprocessor written by Walter Bright in a joint project with Facebook. This has been released under the Boost license and is available at https://github.com/facebook/warp.
The Facebook blog makes the following statement with regards to improved efficiency over the GCC preprocessor
Replacing gcc’s preprocessor with
warphas led to significant improvements of our end-to-end build times (including linking). Depending on a variety of circumstances, we measured debug build speed improvements ranging from 10% all the way to 40%, all in complex projects with massive codebases and many dependencies
Tag: Gcc
C and C++ Preprocessor: warp, Clang and GCC
I belatedly came across the news regarding warp, a C and C++ preprocessor written by Walter Bright in a joint project with Facebook. This has been released under the Boost license and is available at https://github.com/facebook/warp.
The Facebook blog makes the following statement with regards to improved efficiency over the GCC preprocessor
Replacing gcc’s preprocessor with
warphas led to significant improvements of our end-to-end build times (including linking). Depending on a variety of circumstances, we measured debug build speed improvements ranging from 10% all the way to 40%, all in complex projects with massive codebases and many dependencies
Tag: Preprocessor
C and C++ Preprocessor: warp, Clang and GCC
I belatedly came across the news regarding warp, a C and C++ preprocessor written by Walter Bright in a joint project with Facebook. This has been released under the Boost license and is available at https://github.com/facebook/warp.
The Facebook blog makes the following statement with regards to improved efficiency over the GCC preprocessor
Replacing gcc’s preprocessor with
warphas led to significant improvements of our end-to-end build times (including linking). Depending on a variety of circumstances, we measured debug build speed improvements ranging from 10% all the way to 40%, all in complex projects with massive codebases and many dependencies
Tag: Warp
C and C++ Preprocessor: warp, Clang and GCC
I belatedly came across the news regarding warp, a C and C++ preprocessor written by Walter Bright in a joint project with Facebook. This has been released under the Boost license and is available at https://github.com/facebook/warp.
The Facebook blog makes the following statement with regards to improved efficiency over the GCC preprocessor
Replacing gcc’s preprocessor with
warphas led to significant improvements of our end-to-end build times (including linking). Depending on a variety of circumstances, we measured debug build speed improvements ranging from 10% all the way to 40%, all in complex projects with massive codebases and many dependencies