Devlog: August 23, 2023

I submitted version 1.1 of ScreenCred for review this morning. It’s got a couple small updates:

  • Shared with You! See ScreenCred links shared with you in Messages right in the app.
  • Images are now cached better, so you shouldn’t see them load every time you open the app.
  • Fixed a layout issue when ScreenCred opens from a link.

Yesterday, I woke up early and got all geared up to do battle with that layout issue. Took me 5 minutes. The issue turned out to be quite simple. I use an invisible view to essentially measure and determine if the app should be in a more vertical layout for when text is very large. The problem was that when you opened the app from a link, the Views that were used to determine this, were not there, so it always opened in the vertical layout. How did I find this out? Just made the view not invisible for a bit. Surprisingly simple to both debug and fix.

So look out for v1.1 coming soon!

Projects ScreenCred devlog

Working Slowly

I was watching a video from Shawn Hickman about his first week of being full-time indie. He said that he likes to take his time and work slowly, and now that he’s full-time, he can do that without feeling rushed. That really stuck out to me.

I also like to move slowly, explore, and take my time. But, with only getting an hour or so a couple days a week to work on my side projects, I have been feeling rushed or crunched. It’s not that I feel like people are waiting for features or anything, but it’s more of a rush to figure things out and code it up in the short amount of time I have. If I leave something in the middle, it’s really tough for me to let it go and think about anything else.

It’s hard to keep momentum working like that. The scope of problems I tackle is quite limited because of it.

Like right now, I want to make some architectural changes to the ScreenCred website to help reduce my costs. But, it’s going to take me considerable effort to explore my options and pick the best one. I haven’t really touched it because I know it’s the kind of thing I need more than an hour to do, and is exactly the sort of thing that will keep me up at night if I get too deep into it.

How I can work slowly and relax with such limited time? How do I tackle larger exploration” projects without spinning out of control? Those are questions currently on my mind.

Devlog: August 17, 2023

I guess I’m working on ScreenCred.

2 things today. First I got Shared with You in a pretty good place.

A screenshot of the ScreenCred iPhone app showing a Shared with You shelfHow fancy!

I was able to reuse my logic for parsing URLs that I used for opening Universal Links and reuse views I made for suggestions. Worked out pretty well! Still got a couple things I want to try and polish up. They load asynchronously, so they kinda just pop in. I’m going to see if I can get those to animate in nicely instead.

The second thing I worked on was image caching. Right now, when you open the app, pretty much all the images need to load again. Not great. Being lazy, I looked for a package I could add that would do this for me. I looked at Nuke first. It seems to be quite popular and have some good options. I added it and everything looked good. Then I noticed it added 1.1MB to my app size. Not huge, but considering my app is about 3.6MB, that’s an increase of about 30%. I wasn’t in love with that. Luckily, I came across CachedAsyncImage. It has the same API as SwiftUI’s AsyncImage, which is super nice. I really just had to add Cached before them. Still testing it, but so far seems to be working great, and it only adds 0.1MB to the app size. I can live with that.

Projects ScreenCred devlog

Devlog: August 16, 2023

I spent the last couple of days trying to add Shared with You support. I followed a couple pretty straight forward guides:

It seemed easy enough. But for some reason, I couldn’t get anything to show up. I even tried with a couple vanilla apps, both SwiftUI and UIKit, and nothing.

  • My universal links work.
  • I’ve added the Shared with You capability.
  • I’m testing on an actual device (both from Xcode and TestFlight).
  • I’ve made sure the Shared with You is enabled for my app in Settings.
  • I’ve tried on iOS 16 and iOS 17.
  • I’ve pinned items in Messages.
  • I’ve made sure it works in other apps.

I had no idea what to do.

This morning, I decided to start fresh. Made a new app from scratch, copied an apple-app-site-association file from an app I knew worked, made the necessary changes for my app, and put up a simple site on Netlify. I sent a test link to myself, and…it worked! I was elated, surprised, shocked, and confused.

I looked at the difference between the allegedly good apple-app-site-association and my own. Only one difference, one of my paths had a question mark—search/?*. I changed it to search/*, deployed my site, loaded up the app on my phone, and guess what. Like 20 links that I had been sending myself like a crazy person all flooded in. I could cry.

I can’t even remember why I had that ?. Maybe I thought it would be an extra check to make sure there was at least one character? IDK. Maybe something else will break down the line, but that’s a problem for future Sam. Not me.

Projects ScreenCred devlog

Why I Like iOS Development

I realized the other day why I think I like iOS development so much. It cuts down on the number of decisions I have to make. For me, that’s huge.

The happy path just makes my life easier. It’s pretty easy to land on Swift, Xcode, and SwiftUI. It’s also made easier because I actually like writing Swift code.

Compare that to web development. The options and decisions can be overwhelming. You’re probably going to need to use JavaScript. But, Angular, React, Vue, Svelte, Qwik, Solid, or the next thing? Keep it simple and use plain HTML and AlpineJS or Petite Vue? Do you use a meta-framework like Next, Nuxt, SvelteKit, or Astro? Which editor? VSCode, Webstorm, Nova, Vim, Neovim, Zed, Helix? Which acronym are you going to choose? SPA, SSG, SSR, PWA, MPA? Gonna dive in and use TypeScript? And what about this HTMX I’ve been hearing about?

A similar number of questions come to mind when I think of writing a server. There’s an endless list of languages that you could use. Do I use Swift, Go, Java, Ruby, Python, JavaScript with Node, TypeScript with Deno? GraphQL, REST, RPC? SQL or NoSQL? Use Docker? Where do you even host it?? Skip it and try to use Firebase or Supabase or PocketBase?

It may be silly, but these are literally the questions that keep me up at night. As you might be able to guess, I struggle to make decisions. If I’m going to invest in something, I want it to make the best decision I can. But with limited time to explore and experiment, I don’t want to waste time going down a wrong path.

So that’s one of the main reasons I like iOS development. A huge number of questions are just immediately answered for me. I just open Xcode and go. I haven’t reached that point in web development—which is a bit funny because that’s my job. But, a lot of my next ideas are going to require more than just an iOS app. They are going to need backend components too. So I feel ticking clock or an impending doom on figuring some of this stuff out.

Devlog: August 8, 2023

I’m spiraling out of control! In the past like 5 days I’ve started like 10 projects. To name a few:

  • giving Neovim another shot, including starting my config from scratch,
  • started a SvelteKit project to help manage my savings,
  • started rewriting my ScreenCred image generation code in Go,
  • started rewriting my ScreenCred image generation code in JS to not use puppeteer.

I need to take some deep breaths. I’m distracted. Even as I’m trying to write this I’m getting caught up writing some code. Getting ScreenCred released has obviously left a void in me that I’m not totally sure how to fill. I was singularly focused on ScreenCred for quite a while, but now I’m not, but maybe I still should be?

I think I need to make a list and prioritize.

devlog

Picture of Sam Warnick

As my daughter says, I'm just a tired dad, with a tired name, Sam Warnick. I'm a software developer in Beaufort, SC.

Some things I do