• I determined long ago that shame is a feeling I don’t handle particularly well. This can be problematic on the internet, because people will, from time to time, declare that some behavior people regularly engage in is actually quite shameful. This takes all sorts of forms, the “behavior” can vary so widely it feels useless to make examples, it can be literally anything, and the reason it is shameful is usually because it implies some sort of moral failing, of infinitely varying degrees.

    The problem is that, sometimes, the behavior being declared shameful is something that doesn’t really seem all that shameful to me. Even worse, sometimes, the behavior is something that I’m guilty of doing myself. And that phrasing, right there, is the core of the problem snowball that starts to roll down the hill: Why am I saying I am guilty of doing something, that, moments ago, I thought was completely innocuous? That makes me feel bad. Like, really bad! I’m good person, I don’t deserve to feel bad… right?

    Sometimes this is good. Sometimes feeling bad about your actions is an opportunity for self-reflection, and to grow. Sometimes I can do that. Wish I could do it all the time, but I almost always feel this itch to speak up. Sometimes, I’ll try to stay silent, but in situations in which the behavior is clearly not worthy of the shame, instead of moving on with my life, I will take the complete silence of any opposition as a sign that there are other people who would speak up, but they can’t because they’re afraid of the same thing I am afraid of: outing themselves as being a person who is guilty of the shameful behavior. Then, because my Quaker heritage (or my white privilege) instilled “speak truth to power” into my bones, and that makes for one hell of a feeling of self-righteousness, I start to speak up to the “powerful” on behalf of the “silent contingent”, both groups now basically existing only inside my own head.

    At this point the shame has spiraled completely out of control. Not only am I experiencing that initial bout of shame from having been guilty of the behavior, but now I’m publicly outing myself as a defender of that behavior, which probably outs me as person who engages in that behavior, and pits me (in my mind) against basically everyone, which destabilizes my feelings of security and belonging in whatever community I am now openly disagreeing with. I end up oscillating rapidly between feeling like I shouldn’t have said anything and that I am damaging my reputation / relationships / life / career, and that it’s so ridiculous that those things could be damaged by my (clearly more correct) opinion that it only reinforces how strongly I have to convey it. I start to get both angry and depressed, at myself and the world, at the same time, until the anger fades and I am just left with the depression.

    The depression lingers for a while, because the external feelings of shame that fueled my indignation are replaced by an internally generated shame, the shame of embarrassing myself, that even if my point was correct and justified, the end result was mostly that I just got myself very upset, destabilized my mood for well over a day, and possibly damaged other people’s opinions of me depending on how committed they were to the disagreement.

    Thankfully, after many years of being this person and doing this sort of thing over and over again, and sometimes when it wasn’t justified and I was not in the right, I’ve found that people are far more forgiving of me than I am of myself, that the feelings of shame that I experience over these situations is entirely undeserved, and that most people forget about them long before I do. What I haven’t found is a way to handle the shame better, but maybe next time I can feel the shame spiral beginning, I can read this post and avoid it.

    Did it work?


  • I posted this over on the La Colombe Cold Brew Fridge Pack page, and, as is my want as of late, I am posting it here for posterity.

    Happy wife, happy life

    My wife decided to start drinking cold brew instead of using K-cups, and as I am diehard La Colombe Nizza drinker, I made her some cold brew out of those beans. She liked it, but it seemed like a hassle to make the cold brew myself when I could just buy one of these for her instead. So… that’s what I did. The good: very rich, bold, chocolatey flavor that lays a great foundation for whatever other junk you want to pile into it (water + cold cream for the TikTok trend); It’s not insanely concentrated with caffeine, I felt like it ends up being less caffeine per ounce compared to Nizza beans brewed with the AeroPress stumptown method (if that means anything to you, you must be me), and I think this is a good thing for my wife. Lots of flavor, not a huge amount of caffeine. For me, I’ll stick with my Nizza beans, but having a jug of this in the fridge at all times will be good when I’m in a pinch.


  • Back in May (2023) I stumbled my way into a a full blown interest in what people are erroneously calling “artificial intelligence”. I’d played with Midjourney back when it first gained traction, and even paid for a month of access, but my interest in it quickly faded. It wasn’t until I learned there was a growing community of people dedicating themselves to providing free access to open source text-to-image models via a system called the AI Horde.

    After joining their Discord server, I saw that there were two existing apps for iOS: AiPainter, from a Chinese developer and built in Unity so it could be cross platform; and Stable Horde, which no longer works and has been abandoned by its developer, built in Flutter. Aside from that one working app option, the main way people on iOS would use the Horde would be through ArtBot, the most popular web client for the horde; or they could use it through Discord bots similar to Midjourney, which works for some people.

    You can easily see that there was a big glaring hole that I could fill with a nicely designed, native app for Apple platforms. Similar to PiBar, the open source and anarchist-adjacent, ‘everything should be free’ leanings of the Horde community also deeply appealed to me. The icing on the cake was just that the Horde community itself seems pretty cool, and managed to get me more interested in generative art.

    So, here we are, around two months later: Aislingeach is out on the App Store, in a relatively rough version 1.0. For free you can use the latest and greatest on TestFlight. Or, you know, just fork the repo and build it yourself!

    This was a fun project for me because it forced me to finally use Collection Views in UIKit, which I’d manage to never find a need for before now. In this case, I needed essentially a Photos.app-like gallery experience, with a thumbnail view that, when tapped, leads into a detail view with side-to-side swiping. There are still some things that I am clearly doing wrong around cell reuse that I need to address, the symptom of which is that some images will flash in detail view when you favorite them.

    I’d used CoreData in projects before, but this was the first project where I relied entirely on the compile time generated classes and did not create my own classes at all. It worked really well and I have no complaints about it, because I do not really need to build a bunch of logic directly into classes (seems like a bad paradigm anyway). I also had to use “Use external storage” for the image storage, and this works really well as well.

    The most challenging thing about this project was just coming up with a way to manage the request queue and ensure that nothing was lost. When an app is suddenly backgrounded, it will just cut off any requests that are happening, so an image that was loading in the UI will error out and not appear, or an image downloading in the background won’t complete downloading.

    So for the last example I ended up building a table in CoreData (why not, already using it) that I feed all the pending download URLs into, then once the file has been downloaded and the image is saved to the database, the pending download is removed from the table. Works great so far, but you can still end up in a scenario where a request ends up saying it’s downloading images but no downloads made it into the download table–so it’s not fully dialed in just yet.

    This is really just the very beginning for this project. I intend to do my best to support all the AI Horde features, dial in a proper iPad interface, and get some sort of cloud syncing working (CloudKit maybe). We’re in the very early days of generative art still in the open source communities, so there’s no guarantees the way something works now will be the way it works a year from now, so I’m trying to keep an open mind and stay light on my toes in regard to what I support and how I support it. We’ll see how it goes!


  • I posted this on the official product page for the AeroPress Clear but you never know if they’re actually going to publish negative reviews or not, so here it is for posterity.

    It is what it says it is, but is also kinda stinks – ★★★★☆

    I almost want to give this product five stars, but I cannot. I bought it because I wanted a clear AeroPress, so I could see what is going on better while I make my coffee. Also, clear things are cool, I grew up in that era. Inarguably, this is exactly that, and it lived up to my expectations in that way. This is a clear AeroPress. Kudos to the engineering that went into it, I heard a little bit about how it may have been tricky to mold an AeroPress out of this material. In that way, the actual object itself is 5-stars.

    However, I have to subtract a star because for an extra $10, you are getting less product than you would have gotten if this were literally the clear version of the same product I bought in 2021. You do not get: 250 replacement filters (only 100), no filter holder, and no funnel, which to me is a very egregious omission as it make a big difference with how easy it is to get grounds into the AeroPress. It’s actually sort of shameful how blatantly obvious it is that the company that bought AeroPress is now trying to squeeze the product for as much money as they can, by raising prices and reducing the quality of the overall product.

    Luckily my two AeroPresses will hopefully last me the rest of my life and it won’t work on me! Well, you did trick me into buying a Clear Aeropress and the flow control filter cap to some extent, so… well… I guess it did work on me! Good on you, capitalism.


  • I posted this on the official product page for the AeroPress Flow Control Filter Cap but you never know if they’re actually going to publish negative reviews or not, so here it is for posterity.

    Not a great version 1.0 – ★★★☆☆

    I’ve been using the cap for well over a month (or two?) now, every day, since I got it, and it’s time to weigh in. Unfortunately, this cap does not live up to my expectations from AeroPress. I’d passed on third party caps like this because I’m a purist, I guess, so I jumped at the chance to grab one of these. Unfortunately, I don’t feel like it was designed with proper care and it feels like a third party accessory to me.

    The main reason? It leaks. I’m not a weak person, I think, and I’ve never had any issue screwing the default cap onto my AeroPress all the way, and I’ve never had any issues with leaks that run down the outside of my cup before. With this cap, leaks are a fact of life, and no matter what I do I cannot screw the cap on “all the way” the same way I can with the default cap. I’ve noticed that the paper filters don’t fit quite right into this cap, and maybe that can explain why the cap leaks?

    In addition to the leaky cap, which leaves coffee around the rim of my cup and often on the outside, the cleanup process is not as nice. With the original cap, I can usually pull the cap off and the coffee and filter are stuck in the chamber still, and I can plunge both right into a container. Easy, clean process that usually doesn’t even get my fingers dirty.

    With this filter cap, what usually happens is this: I grab the cap and twist, getting hot coffee all over my fingers. When I pull the cap off, a bunch of grounds fall off the cap and into the container, the other half stay in the plunger, and the paper always stays stuck to the cap. So then I have to plunge out the coffee grounds with one hand (because I am holding the hot cap in my other hand), and then grab a utensil (like AeroPress recommends in review comments!) so that I can gently ‘lift’ the filter off the cap to let excess coffee drain out from under it, then scrape the filter off the cap into the container with the utensil. Then I’ll grab a paper towel and wipe off any coffee that leaked over the rim and sides of my coffee cup. It’s a first world problem, for sure, but this inconvenience adds up over time and adds a little hassle to every morning.

    I don’t believe for a moment there isn’t a design for this sort of cap that can replicate the ease and solid seal of the original AeroPress cap, and because of that, I’m inclined to believe this product can improve and doesn’t deserve 5 stars like many here are giving it. It’s unfortunate, because there are perks to this cap: 1) I do believe my coffee tastes just a bit better when using this cap. 2.) When doing the Stumptown method, you no longer have to be in a bit of a rush to create negative suction. But ultimately the fussiness of the cleanup operation really defeats half the joy of using the AeroPress for me and I do not recommend this flow control cap.