• The Staircase, the new HBO series that just wrapped up, was very entertaining. I didn’t watch the original documentary, but I had read an article all about “the owl theory”, which I had found very convincing, so I was vaguely familiar with the murder of Kathleen Peterson.

    To someone unfamiliar with some of the details of the case, it was very easy to feel like the series was giving a lot of credence to the owl theory, by repeatedly showing Kathleen being spooked by owl sounds outside. Is the subplot with the bats a further allusion to Kathleen’s alleged issues with wildlife? Probably?

    The series leaves out certain facts about the crime scene that can strongly influence your opinion about Michael Peterson’s innocence, and I think it’s extremely suspicious. I can understand that the show, for the sake of suspense, may want to paint an somewhat ambiguous picture of Michael early on, so they can hit you with more damming evidence later, but by the end I don’t think the show went far enough in this regard.

    Before the last episode of the show aired, I did some googling and found a lot of people who were like me: people who felt like Michael Peterson wasn’t guilty beyond a reasonable doubt, and the show didn’t help remedy this perception much. But after finding a very eye-opening post on Reddit about the case, all doubt was gone for me, and by the end of the show I ultimately felt like it was extremely misleading.

    I felt the same way after the 2018 Waco series which portrayed David Koresh as a likable rockstar character and not the sociopathic child molestor he actually was. To the credit of The Staircase, it’s not as egregious as the Waco series in regards to making the psychopath at the center of the series seem super cool and hip, but I still call into question the compulsion to create media that feels a bit like the narcissist himself was involved in crafting their portrayal.

    Sure, you could say it’s so that the audience can sort of feel what it was like to actually be there, and to be so thoroughly suckered by the charisma of these men, but I really don’t think that is much of a defense. At the end of the day, these were men who did bad things, and leaving out details and events so that the main character of the show still remains somewhat likable is just dishonest and manipulative.


  • I recently purchased a cheap electric guitar setup so that I could take my third… fourth?… try at learning to play guitar, in the hopes that I can start writing songs. I knew from experience that I would want some sort of audio interface for the guitar (for recording) and that I wanted to use virtual pedals on the iPad (for playing around & recording) so I ordered an IK Multimedia iRig HD 2 at the same time.

    A few weeks later I got an email from Fender advertising the Fender Mustang Micro which seemed, to me, like a good idea, because I’d already noticed that it wasn’t 100% convenient to just “pick up and play” my guitar.

    At a minimum I needed to plug the guitar into the amp, turn the amp on, and then depending on my surroundings either adjust the volume to not annoy anyone, or also plug in some headphones. On top of that, I was “stuck” wherever I placed the amplifier, which made life more complicated when I moved the amp from one side of the living room to the other. The guitar set I got came with a basic amp with some basic gain options, not much in the way of effects to monkey with for fun, either, so the iRig was necessary if I wanted to experiment with different tones and gain levels.

    If I didn’t want to use the amp for practice, then I’d have to use my iPad and the iRig somehow. This meant I’d have to get the iPad out, plug the iRig into the iPad, plug my guitar into the iRig, plug my headphones into the iRig, and then load up GarageBand or ToneBridge and get going. This was a lot of cables, and there was no way for me to do this without headphones: when you plug the iRig into the iPad, your iPad is forced into piping audio out through the iRig’s headphone jack. So if I wanted to listen to my playing without headphones, I’d have to plug the iRig’s headphone jack into speakers somehow. I’d done this with a mini-plug to RCA cable to my amp, but I could also do it with a portable speaker so long as it had wired input. But… so many cables everywhere!

    The Mustang Micro seeks to solve this problem. It’s a tiny little device that plugs directly into your guitar, and has a mini-plug output for plugging in your headphones. It has 12 different virtual amps built in, with 13 effects that can be used with each, and has EQ and Modifier buttons to adjust the sound of your guitar with each amp and effect. It’s also fully self-powered with a rechargeable battery. This is a big benefit over the iRig HD 2, which sucks power from a device over USB and cannot be used on its own. In the end, the Mustang Micro takes all the “headache” out of being able to just pick up a guitar and practice with it whenever you want.

    The Mustang Micro has Bluetooth support for getting audio into the device. The main use for this is that you can connect your iPad via Bluetooth to the Micro and listen to your lesson videos, or favorite songs, while playing along. You hear both your guitar (with any amp and effects) and the iPad audio in your headset, and the ‘mix’ of the audio for each is dependent on the Bluetooth volume of the iPad. This is pretty slick and very useful.

    When I eventually discovered that you can also plug the Mustang Micro into the iPad to use it as an audio interface, I got very excited, but also annoyed: Did I waste $120 on the iRig 2 HD? The Mustang Micro seems to do all the same stuff!

    The answer, ultimately is “no”, for one very big reason: when you have the Mustang Micro connected to an iPad via USB, it does not receive any audio from the iPad, it only sends audio to the iPad. If you want to hear what is happening on the iPad, you have to connect the iPad to the Micro via Bluetooth.

    Problem solved, right? Nope! Whatever you hear over your headphones connected to the Micro is exactly what is sent back over to the iPad. In other words, with Bluetooth connected to your recording device, you’ll create a massive feedback loop, where your guitar will be playing over itself, along with whatever else you’re playing while recording.

    If you want to use the Mustang Micro for recording, you’ll want to plug your guitar into it, and then get audio out of your device some other way. Unfortunately with the iPad Pro, there is only one USB-C port, and no audio output, so there is no other way to get audio out other than the speakers on the iPad itself. You could wear some wireless headphones, but there will always be a delay associated with that.

    If you have an external audio interface for your iPad already, and a suitable USB hub so you can attach multiple devices to it at the same time, this may be a non-issue for you. I’m assuming that most people reading this are relatively new to guitar, and recording, and don’t want to buy several devices to record themselves playing at a decent quality.

    In Summary

    If you’re looking for a device that can act as an all-in-one recording solution for your iPad, the iRig HD 2 is the best option.

    If you’re looking for a device to make practicing as hassle free as possible, and want to easily add more tones and effects to your noodling sessions, the Fender Mustang Micro is the best option.

    That said, if you already have a recording environment set up that doesn’t involve an iPad, or you already have a USB hub with a separate audio interface for your iPad that you use for monitoring, the Mustang Micro might be perfectly suitable as a solution for recording your guitar.

    If you feel like you have to choose just one, I’d go with the Mustang Micro. While you can’t use it for all-in-one iPad recording, it’s still an impressively versatile device that will not go unused in your toolbox. In the event that you want to do some guitar recording, it’s still a great tool. It’s just not suitable for people who want to do all their recording on an iPad with only one gadget attached.

    I’ve seen people online who use the Micro connected via a mini-plug cable to a portable speaker so they can play out in public. Nifty! You could do that with an iRig 2, but you’re still looking at a lot of cables and devices to accomplish the same goal.

    Fender Mustang Micro

    • Great device for easy “pick up and play” practice
    • Lots of built in virtual amps and effects which makes it superior to products like the amPlug series
    • Self-powered with a 5-6 hour rechargeable battery
    • 1 cable minimum for playing: just the headphone cable
    • Not an all-in-one solution for recording music with an iPad
      • You can not monitor with headphones and record at the same time
    • Allows you to play sound out of a connected iPad’s internal speakers
      • You can noodle with virtual pedals without headphones on
      • You can record this way if you wanted, but it’s not ideal in my opinion

    IK Multimedia iRig HD 2

    • Great device for recording to iPad
    • No built in effects
    • Not powered, requires a USB device to power it
    • 3 cable minimum for playing: guitar cable, headphone cable, and USB cable
    • All-in-one solution for recording music with an iPad
      • You can monitor with headphones and record at the same time
    • Cannot play sound out of a connected iPad’s internal speakers
      • You cannot noodle with virtual pedals without headphones or an external speaker attached


  • Last week I got my Panic Playdate in the mail. I preordered it last July, and have been following it since the May 2019 EDGE announcement, so you could say it was a long time coming. It’s such a nice feeling device, and good looking, too. Sure, the non-backlit screen can be annoying, but I firmly hold the opinion that portable gaming is pretty stupid, so I’m not jumping on the bandwagon of acting like no backlight is some sort of extreme deal breaker. I was looking forward to building things for it, and the general feel and look of the thing just makes me extra excited.

    My last stint of game development aspirations were cut a little short due to PICO-8’s code volume limitations. I hadn’t actually run up against those limits yet, but getting close to them filled me with so much anxiety and dread that I just couldn’t keep going–it was clear there was never going to be enough room for me to build the game I truly wanted to make. So, it stopped being fun, and I quit.

    Playdate development promises to be less anxiety inducing. There is no limit on how much code you can write, beyond the physical limitations of the device itself, which is very generous in regards to RAM and storage space. There are new restrictions, though: unlike the 16 colors available in PICO-8, the Playdate has only two colors: black-ish and gray-ish (technically black and white, but on the device both colors are more silvery). This presents an extremely interesting challenge for someone like me, who has no confidence whatsoever in his artistic abilities.

    I decided to start with what I know, and built a spaceship flying around, similar to my PICO-8 game, but also significantly different.

    I’m using some icons from The Noun Project (disclaimer: I work there) that I quickly redrew in Aseprite (to varying degrees of success).

    Another new challenge is that because the screen is so small, high resolution, and not backlit on the physical Playdate, you have to make your sprites pretty large to make them legible. The Playdate simulator inadvertently downplays this issue by virtue of being so large on your screen (Panic should create an option to remedy this). This is a big change from PICO-8’s gigantic chunky pixels, where a single pixel can be perfectly visible to the player.

    Because of that, the way my space game worked on PICO-8, where every ship was a single pixel flying around a large star map you could freely explore, simply won’t work on the Playdate. It’s forced me to think of a different way to adapt the general gameplay loop, and I think I’ve come up with an idea I like and will pursue. I won’t talk about it yet, we’ll see if I build it.

    I wanted to spend some time contemplating the aforementioned game idea, but wanted to keep building. So I decided I’d try porting my MultiClock screensaver over to Playdate. Figured it would be a fun programming challenge, and I was right!

    The biggest difference is that SpriteKit comes with performant methods for rotating sprites in real time, part of its animation system. You can rotate sprites in code with Playdate, but it is processor intensive so they do not recommend doing so. So instead I had to draw the clock hands in Aseprite, something I’d never used before, and create each frame for the hands rotation. In the above video, we’re up to 32 frames, almost enough to make the rotation look pretty smooth. Maybe not yet as smooth as I’d like, but the next jump is from 32 to 64 frames and that’s going to be a bit tedious.

    Right now I really just have the time display working, none of the animation system or alternate patterns from the screensaver have made it in. I am pretty sure I’ll be able to build the animation system out similar to how it works in the screensaver, with a queue and callbacks and so on.

    I figure this’ll look nice when and if the Playdate Stereo Dock comes out some day.

    Oh, also, I bought Panic’s new code editor, Nova, to use for Playdate development. Figured it would be “more fun” to build Playdate stuff using all Panic software, and besides, any excuse to give Panic my money is a good one. It’s a nice feeling app. Nice enough for me to give up GitHub Copilot during my day job? Probably not. But I dunno! The urge to be a total and complete Panic fanboy is pretty strong.


  • Howdy! This is my weekly post where I talk about whatever programming stuff I’ve been up to.

    MultiClock

    This week I made two small changes to the MultiClock 1.2 Beta PR to add an option to remove the dial design. I realized a day or two ago that it was kind of weird there was no “None” option for dials, though I don’t think the screensaver looks very good without a dial. But I already think some of the options don’t look good, that’s not really for me to decide anyway… to each their own!

    I also finally remembered to enable ignoreSiblingDrawOrder, which is allegedly a good optimization strategy, because, well, this person explains it as well as I could it:

    When ignoresSiblingOrder is false, SpriteKit renders nodes in the order they exist in their parent’s children array — that is, the array order determines which one draws “on top of” the other. It also means SpriteKit has to render each node one at a time, so you’re losing efficiency to OpenGL draw call overhead. 

    When ignoresSiblingOrder is true, SpriteKit relies exclusively on the zPosition property for figuring out what order to draw in. This means it can sometimes combine everything at the same z into a single draw, which makes rendering faster. But it also means that if you want to control which nodes draw in front of which others, you need to set their zPosition appropriately.

    rickster on StackOverflow

    Version 1.2 contains the very important animation system changes that fixes multi monitor support, but I still feel like it needs something more to justify its full release. I’m not sure what though. I do kinda want to redo the animation system more so that hands can move at variable speeds, and possibly even in multiple directions, but… Not feeling that pull strongly enough yet.

    There’s also the Apple TV version, kinda forgot about that idea…

    Not Much Else

    Haven’t been up to much else. I spent a bunch of time playing Lost Ark, and now Elden Ring, so I haven’t been coding again. I am starting to feel the itch though, as evidenced by me changing this website up. Building out the products page made me look for screenshots of Textile, and it really made me miss how much fun it was to play a game that I was building out, so maybe I should pick up work on rpg-laravel again.

    We’ll see! Elden Ring is pretty soul-sucking. I think I can hear it calling to me now, gotta run!


  • I migrated this blog from Gatsby to WordPress. I’m sure to many people that sounds insane. There’s so many tutorials online on how to migrate in the other direction, and even plugins that export all your content to Markdown files to stick into Gatsby, but nothing if you want to go another way.

    I’m doing it mainly for ease of use. I’m old school, I’ve been using WordPress since 2003 at least. HTML and CSS are in my blood. You know what isn’t in my blood? JavaScript, React, dealing with NPM. Eventually I gave up trying to modify my Gatsby site because getting the dev environment to run locally became headache inducing.

    WordPress, on the other hand, is very easy to reconfigure. I just update the CSS file! I started with BlankSlate, a set of template files with no styling applied. It was perfect for me. I didn’t want to have to learn what all the new template files and methodologies were. I just wanted something I could style and hack around, and this theme was perfect.

    I also wanted to be able to easily write posts on my site, without having to load up a git client on my phone. Being able to load up the WordPress app on my phone and write this post on a whim at my kitchen table is a serious perk. It’s also much easier to add photos and videos to my posts, I can upload them right in the interface. WordPress gets a lot of flack from engineers, but you really can’t beat the ease of use.

    (Not everything is perfect, the new posting interface can be a bit glitchy and annoying at times.)

    In a similar vein, I wanted to be able to toss off small, microblog style posts without titles, kinda like media rich tweets. WordPress isn’t 100% built to be happy about posts without titles, but it works, and it was extremely easy to modify the styles so that micro posts have a Twitter-like post format, and long-form posts have a more traditional blog look.

    It boggles the mind that I have been blogging in some form for 23+ years now. What is time? It seems like it wasn’t that long ago that I was an angsty freshman in high school, using Blogger. Now I’m an angsty adult, on the precipice of my 40’s, still using WordPress. The time, it flies! Either way, you should be able to expect me to write and share a wider variety of content on here now.

    We’ll see!