App Publishing Tool: AltStore

This has come across my awareness a couple of times in the past several weeks, and it sort of entangles with some app development ideas I’ve been wrestling with. But anyway: AltStore. It’s a way to distribute apps to iOS platforms without (sort of) going through the Apple App Store. The easy way is only available to the EU; the sucky way is for everyone else (as of October, 2025).

The basic idea is, you write your application, you send it to Apple and get it “notarized” which involves some digital signatures that basically assert that you’ve paid your Apple developer tax, and then you put your notarized package on a web server somewhere and tell AltStore about it. And then you do some marketing and convince people to use AltStore’s tools to download and install your software. *Poof*! It has been side-loaded onto the customer’s iOS device without the customer hitting the Apple App Store, and you, the developer, don’t have to do all the stuff that is required to get something live on the App Store (e.g., screen shots, app review).

So, if you’re trying to make money by selling your applications, this might be good for you. I mean, there are some pretty obvious risks involved, here, and let me just say that as a guy who might install software on his phone or iPad, I do not feel super confident or trusting of this new, alternate marketplace. Still, it could be good.

But if you’re me, and you don’t actually expect that anyone will pay money for your software, then this is probably not that interesting.

My Creepy AI Tool

I recently spent some time with an LLM doing some brainstorming. Some people have observed that our current crop of AI models don’t so much create as they copy and remix. Let me just start out by saying that I’m not great at everything, and if there’s a way for me to ask the, I dunno, few hundred million humans who are better than I am for some advice, then that’s good, right? Well, maybe.

Continue reading “My Creepy AI Tool”

Bronze Age Brain Cloud

Discussions about the use of AI (specifically LLMs) in business are all around right now. Here’s some link soup, with fresh ingredients sourced over just the past few days:

…and today, this post pops up on my radar. It’s in a thread that starts by talking about the adoption of AI tools, someone attempts a redirect to focus on human problems, and then we get this, “Well, actually, war is way down today compared to the past.”

And now, suddenly, my brain is sparking and thinking about the globalized interconnectedness of the eastern Mediterranean during the late bronze age and how that totally prevented any kind of widespread conflict or collapse. So now I’m wondering what timeline I’m actually in, you know?

Static Site or Not?

Recently I’ve been interacting with Apple Help Books and, as a result, static site tools. I’m starting to wonder if maybe I should migrate my blog over to a static site kind of thing. The current site is a WordPress blog, but I’m in no way using all the whiz-bang options available there.

What’s the site for, in the first place? I use it for two things, really. First, I have individual (static!) pages for things like privacy policies for software. Whenever I put something on an app store, the store wants a link to a support page and a link to a privacy policy, so that’s where I stick ‘em. Second, there’s the blog, which is where I do long-form thinking and complaining. It’s rubber duck debugging, but for life. As a bonus, because it’s a blog, my friends who don’t see me all that often can subscribe and get notified that I’m still alive and still thinking about stuff. Every once in a while, someone will comment on a post and that feels pretty good. I’ve received several good suggestions that way.

Hm. If I made it a static site, the notification and the reply capabilities might be tricky to implement smoothly.

If I made it a static site, I could stop paying WordPress. I’d still have to have hosting, though. The site resources would be a lot smaller, although since I’m not self-hosting the WP suite, I’m already insulated from having to keep MySQL patched and backed up, PHP patched, all the plugins patched, etc. Even so, simple is good.

Making it a static site, though, also means coming up with my own suite of templates and CSS and whatever assets. That’s work that I don’t especially enjoy and am not especially great at (life hint: those two things are related).

Unlike a corporate wiki, my website is not write-only memory, though. I do find myself going back through old posts and pages to remind myself of tools or activities and the like. So it’s probably also a good idea if I have the whole thing available offline, because it’s not like the electricity grid or the Internet are getting more reliable.

Still going to have to think about this, but I do think there’s some value in the static site approach. I’m just not quite sure if it outweighs the cost of migration.

MTBP: Take Two, This Time, With Guidance

Let’s try this again. This time around, I’ll start with a clear and simple statement of what I want to achieve with the program, and how I want the user experience to feel. There’s a clear use case, and it will probably exclude a lot of people, and I don’t care. I’m not trying to built the One Great Tool; I’m trying to solve the problem I have. If other people want to use my solution, that’s cool, but I’m not going to worry about it.

MTBP: User Story

I’m sitting there, minding my own business, and I hear a cough. Then I hear another. Then another. People are hacking and wheezing and coughing all around me. I feel like I’m in a freakin’ plague ward. Am I being neurotic? Probably. How can I tell? Write down the coughs as I hear them, look at the time window of the event — is it a lecture, a performance, a doctor’s waiting room, an airport terminal, or what? — and do some simple arithmetic. Am I really hearing a lot of coughs, or am I just freaking out because I hate being in public? Math will tell me.

MTBP: Input

My phone goes to sleep almost instantly. I don’t always have my laptop with me. The bigger and glowier the rectangle, the more of an obnoxious distraction it is to interact with it in public, especially when it’s not my primary focus and I have to switch contexts to record some data. Okay, so smart watch. There should be a complication I can stick on my Apple Watch. Tap the complication and that will bring an application to the foreground (complications will display state as it changes, but to receive interactions you have to be in an app context). I want to minimize fiddliness, so the application just allows you to tap the button to record an event. Not going to get all complicated with different event types or durations or anything else; tap the button and the event counter should increment.

MTBP: Analysis

This is where data visualization people really geek out. I am not that person, although I have deep and abiding respect for that person. Define the start and end of a time window. Query for events that happened within that window. Get back a set of events. Do something.

The shape of this feels a lot like server log analysis. Servers spew out tons of log messages all the time, for lots of different reasons. Logging systems aggregate these messages, transform them, and persist them. Analytics packages grab these logs and find things. All of this already existing stuff shows patterns that work, and work at scale. Just because it’s right for Google or Netflix doesn’t mean it’s necessarily the right choice for your one little not-so-chatty single user application. But there are architectural lines that are worth considering.

Finally, go ahead and offer it for sale. Because why not? I mean, I’m solving my problem; if it solves someone else’s problem, that’s awesome, and I hope it does, but I don’t think my work is worthless. Pay the worker, even if that worker is me.

I Made an Offline Thing!

I’ve built a bridge between my RSS readers (Vienna and Tapestry) and my web browser so that I can connect my laptop to the Internet, fetch updated news stories, then disconnect. Later, while looking through the feed, I can queue up individual articles to be downloaded fully. Even later, I can connect the laptop to the Internet and run a script which will fetch all the queued articles to a folder on my laptop, open the local files in a browser, and clear out the queue. This allows me to do the actual reading of the full articles while being offline.

Continue reading “I Made an Offline Thing!”

Social, But Offline

I just saw a software update that mentioned GoToSocial so I looked it up to see what it is. And honestly, it’s kind of a thing I want, but barely.

So, think about posting, reading other people’s posts, you know, that whole online conversation thing. What do I really want? I want to hear from people I know and like. I want to hear about stuff they think is important. I want to be able to share what I’m up to with my friends, whom I may not see particularly often.

Do I especially care what my geographical neighbors think is important or interesting? Nope. If I did, I’d probably be more involved in the local ham radio scene, or even be walking up the driveway just to visit. But I’ve got very little (other than a ZIP code) in common with them.

So a single user Fediverse instance seems kind of attractive. But that brings in the problems of deliverability and discoverability. If I want people’s updates, either I need to poll their servers to get them or I need to spin up and keep my own server running and available. This is a problem. Because I feel like having a server that’s always on, whether I’m using it or not, is…kind of wasteful. Like, all that electricity and heat? Could we just…not?

What if, like, I don’t know…FidoNet or something? Like, have a server that spins up when the phone rings and then you use your momentary connection to upload your stuff and download everyone else’s stuff, and then you hang up and the server goes back to sleep? This is possible. We sort of did it once. External drives are cheap. Cell phones are a thing. Low power computers are a thing. “Instant” sleep/on is a thing. This could be made to work. Sure, it’d be slower, and a narrower pipe, and maybe inconvenient. But we could go outside and walk on the Earth, and we wouldn’t even need environment suits to do it.

Frameworks: Ensemble, Forked, Swift Data

I just learned about the existence of a framework called, “Forked.” The blurbs about it talk about “local first” application design and automated merging of concurrent offline editing. This seems very interesting to me. So I started looking at the source code and the example applications, and then reading about other stuff in the “local first” ecosystem, which is totally a thing I didn’t know about but which I wish I’d learned about in, let’s say 2010, when I started having some time to think about this kind of thing.

Continue reading “Frameworks: Ensemble, Forked, Swift Data”

Software Architecture Matters

I’m starting to take a look at Swift Data, and the experience is really, really uncomfortable for me. The tutorials and explanations of how this framework works and how it integrates with SwiftUI really serve to remind me that the way I think about structuring my programs is just plain not how most other folks who write tutorials or frameworks think about structuring programs.

Continue reading “Software Architecture Matters”