Entries in category

When you upload a new app to the App Store, Apple requires you to have a version and build id. Additionally, you are required to format them correctly, and also increment them properly. Xcode doesn’t do this for you automatically, so lots of people have tried to come up with automated version schemes. This is my approach.

Restyling with Tailwind CSS

13 Nov 2023
4 minute read

I’ve revamped the styling on the blog, completely replacing the old (and rather dated) theme with Tailwind CSS. That also meant changing the build process to accomodate Tailwind.

Version 1.6.0 of Reiterate has been released and is now available.

I’ve updated the Reiterate server to the latest Debian release (bookworm). Here’s a report of everything I had to do.

Reiterate version 1.5.1 is now available on the App Store!

I’ve turned my manual server setup playbook into an Ansible playbook.

I’ve added Mastodon links to the blog. In the process I created a Jekyll plugin that does all the work.

Custom MacOS Notifications

04 Nov 2022
7 minute read

I wanted Jekyll to notify me when it had completed building my site. Getting it to work the way I wanted involved patching together a bunch of almost-solutions from different places.

How To Filter Journalctl By Unit

22 Oct 2022, revised 28 Oct 2022
6 minute read

Journalctl is the standard way of viewing system logs on Linux. But since the logs from all processes get consolidated in one place, it can get quit spammy if one process dumps a lot of output. Here is how I filter out those bad processes.

Reiterate uses a backend server to coordinate its in-app purchases. The app and server communicate via a REST API. Here’s how I implemented that in Swift.

For the new in-app purchase flow, with on-demand resouorces, I needed to organize Reiterate’s products into separate bundles.

Reiterate 1.4.3

13 Jul 2022
2 minute read

Reiterate has been updated to version 1.4.3 and is now available on the App Store.

Apple released the new StoreKit 2 API, and I’ve been working on updating Reiterate to use it.

This bothersome bit of intrusion bot spam has been vexing me for some time, and I’ve finally figured out how to fix it.

Reiterate Website Updated

22 May 2022
3 minute read

The Reiterate website has a fresh new look!

Keeping email addresses away from harvester bots is an old problem. I decided to apply some new technology to it.

As part of the Acknowldgement update to Reiterate, I also took advantage of the rewrite to move the app’s core audio code to the new Swift async/await concurrency model.

Reiterate 1.4.0, with the new Acknowledgement feature, is now available on the App Store!

Google Site Issues

14 Mar 2022
3 minute read

I recently discovered that this site has more problems than I knew about.

Integrating the AVAudioEngine API into the rest of my app meant retooling some basic functionality, like saving .wav files.

Backup is one of those administrative tasks that you have to take care of if you run your own server. There’s a lot of options, ranging from just copying all your files to another server yourself, to setting up a backup package, to installing a backup service from your hosting provider.

Speakerphone mode is now working for the Acknowledgement feature!

Comments Enabled

06 Feb 2022
4 minute read

I’ve enabled comments on the blog.

Acknowledgement is taking a lot longer than I initially had hoped, but I continue to make progress.

I’m currently making adjustments to the acknowledgement feature based on beta feedback.

Here is a progress report on the Acknowledgement feature, which is coming along nicely.

Reiterate is meant to be a tool to reduce autopiloting. One of my greatest frustrations as I’ve used Reiterate is when I’ve finished a game session only to realize that I never heard Reiterate play a single clip. The lack of awareness can be so strong that it masks out the audio prompts Reiterate plays. That pretty much negates the entire point of the app.

One thing you learn when running your own webserver is just how unfriendly the internet can be. Within moments of enabling your HTTP ports, malicious bots will immediately start scanning you, looking for vulnerabilities. It’s not too hard to lock things down; you have to be careful and meticulous and always keep up to date with the current best security practices. But that still leaves one problem: the bots make a mess of your log files.

What exactly is a username? I came across a very interesting article which goes into detail on what makes a good username.

I’ve spent this week upgrading my server to the latest Debian release (bullseye).

Authorio 0.8.5 fixes bugs that were found through field testing.

Authl 0.5.2 was just released, bringing support for PKCE. And that surfaced another bug in Authorio.

Thanks to @fluffy, Authorio’s profile exchange is not completely useless.

For Authorio 0.8.3, I made a change to the way it handles user profile URLs, and that forced me to think a little more on exactly what a profile URL is.

Authorio 0.8.4 has been released.

There’s no new features in this release, but some under-the-hood changes have been made to the way user profile URLs are handled.

Authorio 0.8.3 has been released.

This release adds user profiles. In the latest spec clients can request and receive user profile data. Authorio lets you specify that data and optionally send it upon request.

Authorio 0.8.2 has been released.

The main new feature in this release is Local Sessions. You can enable this in the config file, and if it’s enabled you get a “Remember Me” box you can check on the authentication form. This works like any other website you can log into. Checking the box means you don’t have to type in your password for 30 days (or however long you set the session lifetime in the config).

Publishing via Bridgy

21 Jul 2021
3 minute read

Getting Bridgy and Jekyll to work together took a little more effort than I expected.

Twitter Issues

19 Jul 2021
3 minute read

Now that I have my IndieAuth solution working, and I can log in to various IndieWeb sites with this blog, the next step is to set up WebMention.io and Bridgy.

I’ve released Authorio 0.8.0 on RubyGems. This is the initial release for the package.

Authorio is the first open source project I’ve contributed to. It’s a part of the IndieWeb community which bills itself as a “people-focused alternative” to the corporate web.