Development Indie iOS RSS Stream

Stream 1.0

Hayseed: “Stream is a different take on feed readers. It displays your feeds in a timeline, similar to Twitter.”

Yes, I finally shipped Stream 1.0!

The response has been so overwhelming, not in a OMG 100,000 people downloaded it, more of OMG the Mac and iOS community are so supportive. When I started on Stream I was really excited to share it with everyone. Over time that enthusiasm waned because it was taking so long to finish. I worked on it an hour here an hour there over the course of two years. Yes, two years.

I’ve received some really excellent feedback via Twitter and email. I hope that continues and I hope to incorporate some, if not all, of that feedback into Stream, but it could take quite a long time before I’m able to do it. I just want to get that out there. Stream is a labor of love. If I could make a living from it I would definitely pump out features at a much quicker pace. Please bear with me.

Thanks again for your support and encouragement. It means loads to me.

Apple Indie iOS

I didn’t withdraw from the program. They withdrew me. 😂

iOS JavaScript Mobile

The New Mobile Developer

Welcome to the modern definition of a “mobile developer.”

If you know JavaScript you’re golden. It’s no longer about native apps, it’s about leveraging web tech, and getting the most bang for your buck.

Learn the JavaScript if you want to have a job moving forward. Personally, if I were to use a cross platform development platform I’d probably choose Flutter.

Development Indie iOS RSS Stream

Stream Update

I feel like I’ve been working on this app forever. 😀

But, I haven’t. It’s been a couple years of fits-and-starts. The last TestFlight build I sent out was, I believe, back in late February.

I only have a few new items to add then it’s all about bug fixes.

## What’s left?

### Import and Export OPML

I have the core of importing and exporting working fine. It’s what I worked on today.

The one stumbling block I have is where it fits in the UI, like it’s a little thing. I have some ideas, of course, but I’m not thrilled about any of them. I’ll probably pick the least icky idea and do that.

Once that’s done I’d imagine the Export feature will live next to it.

### Sharing

This goes two ways. I’d like to add an extension that will allow someone to _Add to Stream_ from a web browser and I’d like to allow folks to share out of the article view. This should allow folks to start a blog post of their own or post to their favorite social media site.

## Nice to haves

### Extra Icons

I have some beautiful icons to share with everyone and I really hope you all enjoy them as much as I do.

### Tip Jar

I’ve struggled with this one a bit. Stream is going to be free. It’s not going to be something folks just gotta have. I did this for me. I wanted an app that was simple and felt more like a Twitter feed. I think it hits both marks.

The reason I’ve struggled with the idea of having a tip jar is I don’t want folks to feel like they have to pay anything for it. I would appreciate it but it’s not necessary.

### Wrapping up

I have a few bugs I’m aware of, mostly around stripping of HTML tags.

Thanks for following along.

Apple iOS Mac

My WWDC 2020 Wishlist

Time to [get in]( on the action.

Here goes: Custom Watch Faces, iOS stability and performance improvements, and macOS stability and performance improvements

That’s it.

I’d really love to have a Dumbledore watch face.


Monetizing Apps

I’ve been thinking about models for making a little money from my iOS apps. I only have two at the moment and they’re both free on the App Store. Neither app has been downloaded in large quantities. [RxCalc]( – a pharmacokinetics calculator – has around 10,000 users and [Arrgly]( has a super tiny user base – I built it for myself and decided to share it. And, yes, I know the name and UI are completely goofy.

I’ve been working on a new application called _Stream_ and I’ve gone round and round in my head about monetizing it; should it be FREE, free with in app purchase, free with tip jar, or up pay once up front?

So many choices.

My initial thought was FREE with an In-App Purchase Tip Jar. This would allow me to, hopefully, make a few bucks from it and I could reward users with additional icon sets and color schemes.

Then I happened across [Ko-fi]( It looks like a nice way to make a few bucks off of my hard work and not give Apple 30%. On the flip side I wonder how much I’ll lose because folks have to visit my site to tap on the Ko-fi button to support my apps.

If anyone reads this, and knows a little about Ko-fi, could you let me know if it’s something I could, or should, use to support my apps?

Just send email to

Apple iOS iPad iPhone

Xcode for iPad?

[MacRumors]( _‘because it “opens the door for ‘Pro’ applications to come to ‌iPad‌.”’_

Red sock.I picked that bit of a sentence from the article because it’s complete B.S. If folks want to bring Pro apps to the iPad they have the means to do it today on their Mac. Having Xcode on an iPad won’t magically make that any better. The Mac is the perfect tool for building Professional Mac and iOS apps.

Xcode on iPad would be fine. I can’t personally see using an iPad as my primary development machine. Mainly because I like using a bigger display for development. My 15in MacBook Pro display is about as small as I’d like to use.

If I could set the iPad on a stand of some sort, hook it up to my full size keyboard, mouse, and 24in display? That is something that may work.

We’re getting closer to that day, we’re just not quite there.

Apple iOS iPhone

Not all nerds carry the latest iPhone

Do all Apple related podcasters believe every nerd carries around the latest greatest iPhone?

I’m a professional iOS software developer. Have been since 2009. Prior to that I made my living writing Windows and Linux based video viewing workstations. Prior to that I worked on a an extremely popular Windows desktop drawing and diagramming software. I’m approaching 30-years as a pro.

I carry an iPhone 7.


Developer Confessions

I’ve been an iOS Developer for just over 10 years now – 30 years of professional experience overall – and I still suck at Interface Builder and Auto Layout. 🤪


Stream Update

I’ve been able to work a little bit on my beloved side project, Stream. For those not following along, or those that have forgotten, Stream is my Twitter-like News Reader.

Life changed pretty dramatically for is over the past nine months or so. Our daughter, grand daughter, and son-in-law moved to the east coast. Kim and I had a two year plan in place to move back east so we could be near them, living in California doesn’t make for easy day trips to visit when we want. That is another story all together. Suffice it to say serendipity struck and we moved the timeline up, way up.

We arrived in Virginia November, 1 and moved into our new home. Yes, it was extremely fast. All the work surrounding the move meant I really needed to focus on all things related to the move and let the side project sit. Now that we’re settled in our home and I’m settled in at work I finally got Stream out of moth balls and worked on it a bit.

### Crashing Sucks

I had sent out a few TestFlight builds to folks but I knew where the ugly parts of the code were. I pushed it out way too soon, I realized that after a couple builds. I should have finished all features before user testing became a thing. Live and learn.

I found two things that bugged me more than anything else; the app would crash on occasion and syncing feeds was way too slow.

A couple weekends back I was able to plant myself on the couch and work through the performance issue and the crasher. I can thank [Brent Simmons]( for the most significant performance wins. His [blog posts](, tweets, and Slack messages about feed reading and general [Cocoa Framework oddities]( have proven invaluable. I only hope I can pay his kindness forward at some point. Thanks, Brent.

Ok, on with the wins. The first two tips I picked up.

### Handle 304 HTTP responses
This one was an instant performance boost if servers hosting feeds actually return it. If you’re making 100 network requests to update your 100 feeds it can be kind of slow to parse all the resulting data. But what it you don’t need to parse the results? Right! The data you don’t have to parse makes your code faster. Imagine that!

### Create a hash of the response data
So, what if you ask for feed data and it hasn’t changed but the server doesn’t return a 304 indicating it hasn’t changed? Well, you create a hash of the response data and keep it for later. Next time you grab the feed, hash it and compare it to the hash you created last time.

### One more thing
After reading Brent’s piece about KVO crashes I decided to stop using NSOperation and NSOperationQueue. I was only using it so I could create dependencies that would allow me to have a final operation that updated the UI’s data source. Now I don’t do that. I just rely on [URLSession]( and [URLRequest]( to do the job.

### Not done
I feel a lot better about the performance but I know there will be more changes down the road. Moving forward I need to focus my effort on finishing the UI and adding some niceties like a share extension to add a feed and things like dark mode support. There are other things I’d like to do as well. Least of which is building a Stream Mac App. 😀

I’ve adjusted my personal expectations to ship before WWDC this year. Let’s see if I can make it.