I Now Have a Now Page

I added a now page to my site after seeing a few bloggers talking about it. I requested to be added to Derek Sivers’ nownownow.com and we had a nice exchange over email.

It’s a great way to highlight the media I’m enjoying and projects I’m working on outside of my quarterly updates. It’s fun. If you have a site, I recommend trying it yourself.

Best part? Now I can link people to my now page and avoid entire classes of human conversations. Efficient! ;-)


Yeah GameBaby Yeah

I bought the GameBaby immediately. I’ve been wanting something like this for a while: I knew USB-C + Delta on iPhone would lead to this inevitability.

I usually go case-less but it’s sacrifice I’m willing to make to turn my phone into a Pokémon machine.

(I wish it had 4 face buttons for SNES but hey, it’s $20.)

Via Brendon Bigley.


Regretting SwiftData

While the majority of complaints in Michael Tsai’s post go way over my head, I kinda regret adopting SwiftData in MapKeep. I felt adopting the latest technology was best for the longterm health of the app and I’d kick myself in 5 years when I feel burdened by a “legacy” technology like CoreData.

There have been upsides:

  • I enjoy that the data model is expressed in Swift (as opposed to the strange PLIST-esque CoreData thing).
  • It gave me iCloud Sync with almost no work.

Here’s my pain points:

  • Adding dynamic filtering to MapKeep in 1.3 was a huge pain and added a lot of complexity. Without Apple’s DataCache sample project, there is zero chance I would have figured this out. iOS 18 appears to improve predicates, but I’ve yet to jump on the latest here to see if it would have made things smoother.
  • iCloud Sharing is not supported. I was disappointed to learn this last summer but I figured: hey SwiftData is brand-new, I’m sure they’ll get to it next year. Well here we are a year later and they did not add iCloud Sharing in iOS 18. Now we wait for WWDC 2025?

By contrast, going all-in with SwiftUI last year worked out great. There were a few headaches and a couple things that were impossible to customize, but altogether I feel like it’s a mature UI system (at least on iOS and watchOS).

I’m sitting here feeling I might have been better off sticking with tried-and-true CoreData and eventually migrating to SwiftData when it felt more fully-baked.


MapKeep 1.3

I launched an update to MapKeep this weekend which brings an all-new design. It has a list and map that stay in sync: selecting something on the map shows it in the list. Date filters are also improved.

The previous design was all-map which made it nice to view your collection but difficult to explore your locations chronologically. The app has been out for almost a year now so I wanted to make sure it could handle large collections.

I debated calling this “Version 2.0” because it was effectively a full rewrite of the iPhone app and brought a substantially new experience. However, from a user’s standpoint: this basically just adds a list! So I’ll hold onto that for a bit longer.


I’m sure there’s something in your life that you’d like to track easily. So check out MapKeep. (It’s free!)

For inspiration: here’s a couple real world examples of how it’s used:

  • A friend of mine moved to a new city and they capture spots in town (parks, neighborhoods, restaurants) to come back to later.
  • A family member wants to use it anytime they get a birdie on the golf course to mark the occasion.
  • Tracking where your dog does a number 2 on walks ;-)

Suing Suno and The Obvious Difference

I don’t have a fully formed opinion on how much of what Suno’s tools are just traditional “remixing” or sampling but this sentiment expressed in their blog post as a response to their RIAA lawsuit is ridiculous:

… like the kid writing their own rock songs after listening to the genre … learning is not infringing. It never has been, and it is not now.

It’s obvious what the difference is, right? One is a computer absorbing millions of songs and one is a human. Computers don’t have rights.

They also justify their actions by saying:

We train our models on … music we can find on the open internet – just as Google’s Gemini, Microsoft’s Copilot, Anthropic’s Claude, OpenAI’s ChatGPT, and even Apple’s new Apple Intelligence train their models on the open internet.

Which is akin to a toddler saying, “the other kids are doing it, why am I in trouble?”

I am not pro- Big Record Label. I want people to make music and I bet Suno’s tools are neat but these are kid-level logical arguments that don’t hold water. I look forward to seeing what happens next.

Via The Verge.


AI Creation vs AI Editing

I learned about Wix’s new blog-writing tools thanks to a post by Jess Weatherbed at The Verge.1 This will enable slop at massive scale. Heaps of garbage written by a machine to hopefully appease Google’s algorithms and trick people into thinking this site is written by another human. Wix’s large presence in the webhosting world means this has the potential to be an all-out assault on a human-led internet. I hope they reconsider this endeavor.

On a similar note:

My wife, who’s far less tuned-in to the AI-hype world than me, was equally grossed-out by Google’s ad during the Olympics2 where a father encourages his child to use Gemini to write a letter to their hero.

How would you feel if you found out a disingenuous robot wrote a “heartfelt” letter to you?

Luckily we weren’t the only people who picked up on this detail and it went viral (in a bad way). Similar to the Apple’s Crush ad, I struggle to understand how this ad made it into the world. Did no one at these companies raise their hand to say, “Isn’t this gross?”

Upon seeing Apple’s Image Playgrounds at WWDC the same word came to mind: gross.

  • Oh it looks like you made a lovely hand drawn sketch of a building? Let’s turn it to a super-fake, oversaturated, clearly-made-by-a-computer-abomination with one easy tap!
  • Want a hyper-ugly-Pixar knockoff of your mom? Bon appétit.

I worry, as others do, that if we let machines create for us we’ll never learn how to create for ourselves. I write to become a better writer and to share my thoughts.

To clarify: I’m not against AI in its entirety. I’m not happy that every LLM-maker decided they could violate copyright and scrape the whole web. I’m concerned that more companies like Reddit will withdraw from searched indexes unless paid.

But I do think AI can be uniquely talented at editing. Someone who’s over my shoulder and can suggest ways to elevate my work, connect it to other things, and make me more efficient. Apple’s Writing Tools (if they work) skate the razor-thin line between creating and editing. The litmus test, I feel, is that they only ever make your text shorter, never longer.

To all the companies out there working on half-assed AI integrations: please redirect your focus to editing. Empower humans to be creative. Don’t fill the world with slop. I’m open to applauding and adopting AI but they have to help me. Not try to be me.


  1. Via Manton Reece ↩︎

  2. I noticed Google disabled comments for the ad. All other Google videos have them enabled. It’s possible Google is aware that YouTube comments can be toxic at times. ↩︎


Thankful for 5× Zoom

I’m a longtime “small phone proponent” and always chose the smallest iPhone available. I went from the iPhone 12 mini then to 13 mini1 and swore I’d hold onto it as long as possible. Of course, capitalist consumerism had plans of its own.

When the iPhone 15 Max Pro was announced with a 5× telephoto lens I knew I had to upgrade2. Going from mini to Max was an adjustment but every time I punch-in and get the shot I’m reminded that I made the right choice. Today I got a picture of the baby with grandma, and I simply could not have captured it with my previous phone.

Here’s to you, iPhone 15 Pro Max. Here’s to you.


  1. I don’t usually get a new phone every year but after hearing rumors that the mini would be discontinued, I decided to go for the upgrade. The bigger battery, better camera, and (believe it or not) smaller notch were all selling points. Plus it came in red↩︎

  2. What put me over the edge: last fall we knew we were expecting so I needed the best camera possible to capture the little one. Like I said: capitalism. ↩︎


Passwords app for Mac and iPhone

I’m looking forward to Apple’s dedicated Passwords app. I rely on the current system extensively but having it trapped in System Settings was never a great experience (especially its modal design for editing, which blocks you from accessing other areas of the app).

They still need to add a “secure documents” area for scans of legal things like driver’s licenses and passports. I could throw these into a secure note but it’s much nicer having a single place for all “secrets”.

Hopefully this is the year I’ll finally say goodbye to 1Password 7. (You heard right. I have not and will not touch 1Password 8, which dropped support for free iCloud-based vaults.) You may surprised to hear but it’s no fun juggling two password managers.

Shoutout to Michael Tsai’s link collection. He’s a great follow.


Blue Screen of Death

It’s days like these that remind you how fortunate you are to use a Mac at a Fortune 500 company. ⌘

Godspeed. Be safe out there. 🪟


Overcast at 10

As a listener (and supporting member) of Accidental Tech Podcast I’ve been hearing about Overcast’s big rewrite for a while now.

On its 10th Anniversary the big update for Overcast is finally here! Marco did an amazing job modernizing the app’s design while setting the foundation for faster feature updates in the future. I’m excited to see where it goes from here.

My favorite new feature is one I’ve requested: Sleep Timer can be set to End of Chapter. I can now drift off to sleep and not miss the beginning of the next topic.

If you’re interested in app development I encourage you to listen to Under the Radar 297 or ATP 596. There were a few tidbits that stood out to me:

  • In Radar 293 Marco shared that a project manager helped him plan, prioritize, sequence, and define the scope for this project. It reminds me that even a team of one can benefit from a good project manager.
  • I don’t know Marco personally but it was gut-wrenching to hear that the burden of this rewrite (and his mountain of technical debt) made Marco consider quitting programming altogether. It was equally inspiring to hear he’s now feeling better than ever and ready for what’s next.
  • He migrated user data to an all-new backend in parallel (APFS style) with the previous version of the app to make the transition seamless for customers day one (and to lighten the server load).
  • He removed streaming (used by about 8% of users) due to increased complexity in how podcast files are hosted (namely: dynamic ad insertion). The downside isn’t huge: just a few extra seconds to wait after hitting play (if you don’t use automatic downloads). Upside: Marco won’t be burdened with bugs and can spend more time improving the app.

If you use the app I encourage you to leave a nice review (or a quick 5 star rating) for Overcast in the App Store. A nice review goes a long way and it pays dividends to send good vibes.


Working on MapKeep

I took advantage of the long Fourth of July weekend to work on MapKeep. Don’t worry: I was able to enjoy the beautiful weather from our back porch. I shipped version 1.2 right before our daughter was born but since then we haven’t had the time brain power to do side projects. I’m testing an all-new design inspired by Apple’s Find My which should unlock some new interactions (and expand to iPadOS/macOS).

Sadly I’ve taken this as an opportunity to completely rewrite the app. I’ve learned a lot since last summer. For example, I couldn’t figure how to get SwiftUI Previews working in my main view because it needed a fake array of SwiftData objects. Well I took the time to figure that out (thanks to Paul Hudson) and now I can iterate way faster. There’s a ton of optimizations like this that add up.

I’m not sure this new design is a slam dunk: I’m trying to get a feel for it by using it daily. Even if I revert to the old design the code will be in a much better place.

Tinkering with a new design is a fun distraction :-) but I probably should be thinking about iOS 18 features like Dark Mode app icons and App Intents1 ahead of Apple Intelligence.

As a newbie app developer I hit a lot of brick walls. It can be truly frustrating. But when I figure it out, it feels like flying.


  1. We use Mango Baby which has extensive App Intent support. Between widgets, live activities, and Siri integration. This app has it all and inspires me to deeply integrate MapKeep with iOS. ↩︎


The Audacity of Garbage People, Now Powered by AI

Can you believe this shit? As reported by 404 Media the scumbags used a byline of a previous and well-known writer, Christina Warren, for AI generated content.

The real Christina Warren hasn’t been writing these new posts on the zombie TUAW, however. The site’s new owners have stolen her identity, replaced her photo with an AI-generated one, and have been publishing what appear to be AI-generated articles under her byline.

The shitheads who bought TUAW have apparently already taken this down1 but oh my lord. The audacity of these people. Outrageous.

(This is shocking and appalling but it made me wonder if AI could resurrect John Siracusa of yore to write a review for macOS Sequoia this fall. Obviously I would not want it to happen like this.)


  1. The link 404 provided has already 404’d. ↩︎


Q2 Update

I became a dad in May. You could say it’s been a pretty big couple months. I’ll never forget that feeling of the first time I held her.

April was a nesting and prepping month, May was a monumental adjustment: waking up every two hours to help feed and change the baby was a bit taxing on the old noggin. As June rolled in the nights started getting easier and easier. I had a month off from work and will take more time in the Fall when my partner’s leave concludes. (I’m bitterly jealous of my German colleagues with 1 or 2 year parental leave options. I’m also grateful we get anything at all.)

Here’s a few bits of media I squeezed in. As you can see it’s quite a bit less than Q1!

Games

My relationship with gaming is probably going to look a lot different going forward now that I have a kid: you rarely have two hands free for a controller with a newborn (let alone the time). I’m so glad my phone can be a Pokémon machine now and being able to steal a few minutes away or play one-handed while I hold my sleeping kid is such a joy.

  • I’m almost done playing through Pokémon Crystal (well, technically Polished Crystal) in Delta and have published a couple custom controller skins. Having a go-to game on your phone is a sure-fire way to stay off social media.
  • Played a little of Hades 2 in early access (it’s phenomenal) on my Steam Deck and am looking forward to diving in again.
  • I picked up Paper Mario: Thousand Year Door remake for the Switch and have been slowly working my way through it. (For context I just stared Chapter 1.) I played the original a long time ago and have fond memories.

I also modded my Gamesir G8 controller to work with my new iPad. It’s a glorious combination.

Music

Been enjoying new music from Vampire Weekend, Iron & Wine, Hovvdy, Decemberists, Billie Eilish, and of course Taylor Swift.

Looking forward to new Bright Eyes and Coldplay in Q3. Speaking of Coldplay: I think they played their best concert ever at Glastonbury. It was an incredibly special performance with a lot of heart. Knowing 100k people were there in-person seeing what I was seeing at the exact save time was awe-inspiring.

Movies & TV

  • Bad Batch (season 3) went out with a bang. Love a good star war.
  • 30 Rock (seasons 1–3) is sublime. To me it’s like a live-action cartoon and I am always here for the zaniness. Blink and you might miss three jokes. I just love Tracy Morgan, Jack McBrayer, and everyone in the cast. (Some jokes haven’t aged well but that’s kind of how comedy works.) ★
  • My wife is rewatching Modern Family and I’ll catch a few episodes here and there. Holy hell. That show deserve all its Emmys, it’s such a treat.
  • Fargo (season 3) was good but nothing like seasons 1 and 2 (which were outstanding). We watched an episode of season 4 and kinda bailed on it. I like Fargo for the relatable characters — not the organized crime.
  • The last season of Curb Your Enthusiasm (season 12) was fantastic. They nailed the finale. Pretty, pretty good.
  • Chernobyl (2019) was a rewatch for me. My wife never saw it and I was itching to rewatch it. It’s an amazing feat of film and one of the all-time greats.
  • Demetri Martin: Demetri Deconstructed was humorous and surreal. Interesting editing and pacing of a live standup session.
  • BlackBerry was excellent and such a funny and amazing “true story” movie. It makes you realize how far our current technology has come (and how amazing the iPhone is). I’d love to see Glenn Howerton in more serious roles going forward. ★
  • Dream Scenario was a classic A24 film and Nic Cage was great. While I liked it I couldn’t help but think that I was just watching an extended version of the trailer. It’s all in there, weirdly enough.
  • Conan O’Brien Must Go was a great laugh. Always been a fan of him and it’s fun seeing him have fun. ★
  • Little Women (2019) was great. I’m not sure why we watched this now — it might have been suggested in Hulu or something — but it’s a delightful movie. I was in a stage adaptation of this in high school (I can’t remember who I played) so I’ll always have a soft spot for this tale. (It was also interesting watching this after seeing Barbie since it was Gerwig’s previous project.)
  • Castle in the Sky is a masterpiece. Watching this made me realize how much Zelda borrows from Ghibli’s humor and style — everything from the nature, creatures, music, and floating cities were all just sitting there.
  • Unfrosted felt like an odd halfway between a kid’s movie and something for older audience. Not sure who this movie was for…? Just a big sugar-high mess of cameos. (Jack McBrayer and the Mad Men scene make it worthwhile in my book.) If this didn’t have Seinfeld attached there’s no way I would have watched it.
  • Clueless (1995) I think I had seen this once before but not sure. It was a fine romcom. Not sure how Paul Rudd still looks the same.

As always I want to thank Shawn Hickman for making Sofa. I use it to queue up media and log when I’ve watched/played it.


Anticipating Intelligence

MacRumors has a roundup of AI features expected to be announced by Apple on Monday during the WWDC 2024 keynote. There’s a lot of buzz around AI (especially in the stock market where Nvidia is suddenly valued around $3 trillion which is in within spitting distance of Apple and Microsoft, two companies which make way more money).

There’s an over-abundance of hype and I expect there to be quite the comedown when this bubble bursts. Recent mainstream events like Scarlett Johansson’s kerfuffle with OpenAI and Google telling people to eat rocks and glue put a spotlight on the ethical and technical issues with AI technology and the companies hawking these new-fangled products.

Putting that aside for a moment, I am extremely optimistic for what Apple can bring to this space. I enjoy talking with ChatGPT via voice (and subsequent fact checking it) and using it to help me code but I think AI will remain a party trick until it’s fully embedded in our phones and computers.

Things like the Apple Photos widget and iOS 17’s autocorrect are already AI and I think there’s hundreds of ways that AI could help us get things done on our computers in new and faster ways. So count me in as someone who is very excited to see what we’ll get on Monday.

But don’t get too excited. I think iOS 18 will just be the start of a long journey to incorporate these new technologies into our operating systems. I think we’re going to be surprised and impressed come Monday but also let down. Both things can be true. There’s too much hype and anticipation for Apple to solve everything in one year.


Contending with Lingering Lightning

Our new car has wired CarPlay. That may sound like a crime against humanity in 2024 but I actually prefer it over wireless (mostly). A cable means it is absolutely rock solid and straightforward to switch between devices.

However I have a USB-C iPhone and my wife has a absolute garbage antiquated Lighting iPhone (jk it’s a one-year-old iPhone 14). This posed an issue where we’d need to swap cables when we switched drivers in the car. I also didn’t like the idea of wearing out the car’s built in USB plug switching cables frequently. Is that an irrational thing to worry about? Yes.

So the solution we landed on is keeping a USB-C cable always plugged into the car for my phone. (I drive most often, especially now that we have a baby my wife likes to sit in the back now) and when she needs to plug in we attach this tiny female USB-C to male Lightning dingus to the end of the USB-C cable and voilà her phone is charging and connected to CarPlay. I was worried this cable would only handle charging bht it definitely works for tranferring the data required for CarPlay. This solution also keeps the console less cluttered — we don’t need two 3 foot cables strewn about getting tangled and driving me nuts.

I’m probably going to buy another to charge my keyboard at my desk. I like having an open USB-C cable at all times for charging things and I still have a few Lightning accessories. Slowly yet surely we are eradicating Lightning from our home. It’s a battle I’m ready to endure for as long as it shall take.


Becoming a Dad

A few weeks ago I became a father.

I can’t begin to explain how wonderful it was hearing our baby’s cry for the first time. Compared to the work my wife put in, I was just a lowly bystander but I can confidently say bringing a kid into this world is a stressful proposition — the 9 months of pregnancy, the hospital stay, labor, all of it — but it all just melts away when you hear that baby cry and it’s you and your partner and this beautiful tiny thing.

In a flash everything changes and you’re filled to the absolute brim with overwhelming joy.

My wife’s parents and my parents and brother came to the hospital the day after to meet our baby. We couldn’t be more lucky to have their love and support. I’m on cusp of returning to work but in the past few weeks we’ve established a decent rhythm and am starting to get more sleep.

It’s absolutely true what they say about the first couple weeks. It was hard running on scraps of sleep and having the day sliced into two-hour increments. Even now that feels like a hazy memory. You just stay calm, sleep when they sleep, and soak it all in.

The three of us are doing great and we’ve been bombarded with visitors, FaceTime calls, and gifts from close friends and family. Most crucially our neighbor graciously bought us a two weeks of meal subscription food to make our feedings as smooth as possible.

I’m the absolute luckiest and I can’t wait to see who our kid becomes.

To close things out, here’s a quote my wife printed (and framed in the kid’s nursery) from our favorite author, Kurt Vonnegut:

Hello babies. Welcome to Earth. It’s hot in the summer and cold in the winter. It’s round and wet and crowded. On the outside, babies, you’ve got a hundred years here. There’s only one rule that I know of, babies — “God damn it, you’ve got to be kind.”


The Trials and Tribulations of Creating Delta Skins on iPadOS

I decided to work on Absorb, my custom Gameboy skin for the Delta emulator, from my shiny new 11-inch iPad Pro. There’s been a lot of conversation around what the iPad can and cannot do so I thought I’d give this a try. This is fairly complex work involving designing in Figma, editing JSON files, managing files, and committing code to GitHub. Let’s see how the experiment went.

Figma

Designing in Figma on iPadOS is a bit of a cluster. Their marketing claims it works great in “any browser” but apparently that generous definition does not extend to Safari for iPad. If you use it directly in the browser you get weird behavior. For example, pinching with your fingers will zoom the canvas where pinching on a trackpad will zoom the entire web page. There is Figurative but this has its own tradeoffs: if I left and came back it would force reload the file because it was “out of memory” and irritatingly ⌘c and ⌘v don’t work. Generally it felt like wearing mittens — the iPadOS cursor is great but it still feels like a small meaty pointer and not the precise pointer you find on macOS.

Critically dealing with custom fonts is a mess on iPadOS. Fontcase by the Iconfactory folks is great but it lives within Apple’s barbaric iPadOS font system. I used SF Pro Rounded for my button labels and I completely bailed on trying to get this onto iPad. Apple provides these fonts in a macOS Installer within a .dmg file, which is to decidedly not iPadOS-friendly. How does Figma handle missing fonts? Well by making text uneditable. Fun.

Exporting PDFs out of Figma into the Files app worked great and I was able to get a lot of design work done from my iPad. It was slow-going and the font issue ultimately drove me back to the Mac.

I have an itch to try making a Figma plugin to make it super easy to create Delta skins. That’s for another day though.

Editing JSON

Delta’s skin system is pretty straightforward. You provide PDFs of the UI your users will see and then give the coordinates of all the buttons in a JSON file. This mapping can get unwieldy though as each device and orientation is all within a single JSON file. (It would be kind of nice if each PDF had its own JSON to make these files way more manageable.)

On the Mac and other desktop platforms there’s VS Code for code editing and committing code to GitHub. It’s fantastic. It has a great sticky scrolling feature which means you don’t lose your context. Even still it can be a pain doing all this text entry and all too often I’d forget a , or a : and everything would break!

VS Code is nowhere to be found on iPadOS and I could not find a text editor for iPad that had this sticky scrolling feature… but I ran into Simon Støvring’s Jayson (ha) app for editing JSON files with a GUI. This is far more approachable as you no longer need to think of the syntax for JSON and making a mistake. But it also involved a lot of navigating in-and-out due to the hierarchy of Delta’s skin system (where you have to drill into dictionary 0 to see it’s the “A” button then back out to adjust its coordinates). Using this was better than typing manually, for sure, but I think there’s a lot of opportunity for Simon to optimize this app for fewer clicks and faster navigating up-and-down the hierarchy.

This app is also available on macOS but it’s a bare-minimum Catalyst version of the iPad app. (Sorry if I sound negative! I’m glad it exists on macOS but this was a rare case where the superior experience was definitely on iPad.)

This part of the process is a huge fun suck but that’s not the iPad’s fault.

Managing Files

Technically a Delta skin is just a renamed ZIP file of a JSON file and some PDFs. I downloaded a template to get started, exported my designs as PDFs from Figma to the Files app, edited the JSON file in Jayson, and was able to select the files, compress, and change the extension from .zip to .deltaSkin. Pretty easy. I didn’t have any issues with the Files app other than some slow exports from Figurative.

Committing Code to GitHub

I chose to host my files as an open source project on GitHub. The big asterisk here is that my Figma files are not yet public. While I’ll host these themes on Gumroad and DeltaStyles for discoverability I thought it was in the spirt of Delta emulator itself being open source that my files are “out there” for anyone.

Doing all the file management of creating the skins (zipping, renaming, editing JSON, exporting PDFs) meant that I wanted a good git client. Turns out there is Working Copy by Anders Borum! I happily paid $25. It stings a little knowing VS Code is free on macOS and it handles everything I need, but this Working Copy is a powerhouse. (I’ll be able to use this app for posting to my blog so it’s not just a one-time cost.)

After committing changes on my iPad I was able to iteratively test and debug my new GBA skin on my iPhone by sending it over AirDrop, make changes on iPad, send over, commit my work, and so on until I got everything working just right.

Conclusion

While I had to fallback to the Mac for the design part — partly due to wanting a bigger screen and iPadOS font limitations — I was able to do most of this work from my iPad.

This is an exciting prospect as I tend to keep my MacBook Pro docked at my desk as a “desktop laptop.” This makes my iPad Pro with Magic Keyboard a perfect “around the house” machine. If I’m doing some online shopping I can leave the keyboard and just use this lovely big screen. If I want to get some serious work done or write a blog post from the back porch, I snap on the keyboard. If I want to plan some electrical upgrades and need to doodle a bit — I grab the Apple Pencil.

It’s kind of an amazing device and it echoes the modular computing idea Federico is always going on about. (Next up is getting it to work with my Gamesir G8 controller. Currently I’m using this 90-degree female-to-male USB-C cable.)

I think my future experimentations might lie in building an app or something to automate the tedious JSON creation for Delta skins. Designing these is a lot of fun. Editing JSON is not.

In summary here are my main complaints with iPadOS for this workflow:

  • Figma is not good on iPadOS. I’m not sure if this is a Safari problem or Figma but it’s kind of a huge let down that it doesn’t work well — even with a mouse and keyboard.
  • Apple’s own SF fonts are impossible to install from an iPad.
  • It would be remarkable if VS Code came to iPad. It’s an amazing IDE. I’m glad Working Copy exists but this would be a big game changer.

Lastly: If you’re playing retro games on your iPhone as much as I am, take a look at my custom skin, Absorb, for Gameboy Color and Gameboy Advance. They’re great for nighttime playing! Just download the .deltaSkin files and go into Delta’s settings to install.


MapKeep 1.2

Yesterday I launched version 1.2 of MapKeep — an iPhone and Apple Watch app that lets you capture your current location in one tap — with a few useful features.

New Features

Since adding the “long press to add” feature in version 1.1 I’ve wanted a satellite view of the map to give a better sense of where to place the pin. In 1.2 you can now switch to satellite view using the map style button.

After using the app for 6 months, my map was super cluttered with all the pins I’ve saved. (Especially on Apple Watch!) This update adds date filters. Just look for the calendar button on the map.

Neither feature are fully baked — the date options aren’t ideal and your options don’t persist between sessions — but I had a specific timeline1 in mind to get this update out the door.

Other Enhancements

I wanted to improve how the app works when the user hasn’t granted location access. Previously the map was completely blocked if location access was denied. This didn’t sit right with me for a few reasons:

  • With 1.1’s “long press to add” you don’t technically need location permission to use the app.
  • If you created pins then denied location access, it was impossible to view (or export) your collection.

Now the app feels more seamless than before; the splashy request location view gets replaced with the “add” button after location is permitted. Simple. Even though the app is completely private, I wanted to go above and beyond here.

Bugs

Lastly it seems like a SwiftUI bug was introduced in iOS 17.3 or 17.4 having to do with using @Environment with modelContainer. If you created a pin on Apple Watch it would wake up the iPhone app in the background to sync with iCloud then crash silently in the background. I have a workaround to fix this but it’s not ideal.

Wrap Up

The theme here is that I’m glad I shipped this update but I feel like there’s a lot of room for improvement. I hope to chip away at this before WWDC hits early June. Time will tell.

If you find a use for the app or want to share feedback please reach out!


  1. Moments after hitting the “submit for review” button my wife and I left for the hospital to give birth to our first-born. I’ll be a dad soon! I’m told most partners do dumb and unrelated tasks right before going to the hospital. Some mow the yard or build a shed. I updated an app! ↩︎


Clown Car

What a clown. Elon Musk lays off most of the Supercharger team. To think firing people will improve their supercharger uptime is ludicrous.

One of Tesla’s key differentiators from traditional car companies is its charging network. If EVs are the future then we need way more chargers in the U.S. and sources tell me you usually need people to get stuff done.

Somebody needs to eject this guy from the driver‘s seat. Unfortunately Wall Street ks filled with sycophants who love a good layoff.


Coding Motivation

I haven’t updated MapKeep in a while but I’ve been plugging away at a nice update. I’m almost done and I’m feeling motivated to keep pressing on.1

Two things urged me to get back into the swing of things:

  1. After making a couple tweaks and sending to TestFlight, my iPhone app would crash every single time I created a location in the Apple Watch version. Annoying!
  2. My wife is having our first kid in roughly… 10 days! I’ve heard a tiny rumor that kids can be time-consuming? It’d be great to get the update out the door before it goes back on the shelf.

One could call this motivation. Another less healthy term would be anxiety or obsession. I get this reeling feeling of:

I have to do this, I have to do this, I have to do this…

I put a lot of false urgency on myself — it’s something I need to work on. I love the challenge of making an iOS app but everything in moderation. I need to have balance and headspace for other more important things in my life.


  1. I’ll share more on what’s next for MapKeep soon! I don’t want to promise anything prematurely. ↩︎