Categories
Uncategorized

Yes, I want this

[Daniel Gauthier](https://danielgauthier.me/imposter-syndrome/): _“From the moment you decided to get into iOS development, your career has been coloured by this vague idea that true success in this industry is nearly or completely single-handedly building something that grabs people’s attention. At the end of it all, you don’t just want to be “[Your Name Here]”. No, at the pinnacle of this climb, you want to be known as “[Your Name Here], creator of [Your Brilliant and Beloved App]”. Of course, rationally, you know there are loads of people who are living successful and fulfilling careers as employees at great companies, but a big part of you still feels that, as someone who can competently design and build software, you are uniquely positioned to create your own life’s work. That’s what you’ve been led to believe, anyway. And isn’t that the dream? Wouldn’t it be a shame not to try? You’re tired of deferring your dreams to your future self; it’s time to act!”_

This is how I’ve felt for a decade, at least. A couple years back a friend transferred the code for his blogging application to me. I thought “This is it!” I’m going to get to work on an application loved by many and make my way into the indie development scene. Oh, and yes, I’m going to make a living doing it. Along the way I realized how much work it was going to be. After chatting with folks on Slack and other places I decided I should do something small. Something that I could complete in a short amount of time to prove to myself I could pull it off.

Here I sit. Two years later with [Stream](https://iam.fahrni.me/2020/01/26/stream-update.html), my Twitter-like feed reader, about 80% complete. Oh, and I only have the iOS version that far along. The Mac version has a shared core but the UI is just a shell. After missing many self imposed deadlines, a change is jobs, and a move from California to Virginia, I’m finally [back to work on it](https://iam.fahrni.me/2020/03/01/stream-features-and.html) and I’ve made some good headway. But, then I kind of need to do the Mac version, right? Well, maybe not.

As much as I’d love to do the Mac version I may set that aside in favor of doing the thing I’ve always truly wanted to do: a diagramming tool. You see, I worked on a great Windows drawing and diagramming application; [Visio](https://www.microsoft.com/en-us/p/visio-standard-2019/cfq7ttc0k7cf?activetab=pivot%3aoverviewtab). I had the pleasure of working with some amazing people for 10-years, over two separate stint with the company. I still miss the people and the product to this very day. It was the best time of my working life, but I digress.

On to the what I’m trying to decide. Do I finish off the Mac version of [Stream](https://iam.fahrni.me/2020/01/26/stream-update.html) or do I move ahead with my lifes dream of building a _cross platform_ drawing and diagramming tool? Yes, you read that right, I want it to be cross platform. The idea would be to ship it on iPad first followed by Mac and Windows. My estimate, given the time I have to work on it at home, and how slowly I code, comes in at around 10-years time. Who wants to wait 10-years to complete a project? I don’t really want to but if I want to pull this off I have to put my head down and commit to it. Hell, there’s a chance desktop software will no longer exist in 10-years time. It may all be web stuff (ack!)

When I read Daniel’s piece I said “Yeah, that’s me.” It’s been me for well over a decade. I’ve sat on my butt dreaming about it but never writing a single line of code to pull it off.

I’ve discussed this with my wife over and over and over. I’d love to quit my day job and focus my efforts on my dream. That can’t happen, but I can shift my focus to begin working on the app of my dreams.

Here’s hoping I can get my act together. This is my retirement plan, writing and supporting an application until I drop dead behind the keyboard.

Categories
Uncategorized

Stream Features and Bug Reporting

I Love RSS![Open Stream for iOS issues](https://github.com/Fahrni/stream/issues), if you’re interested. I’d imagine some of these will miss the 1.0 cut.

Please add anything you’d like to see or report a bug. I will look through everything reported and will decide what release it should go into or if I’ll do it at all.

I’ve been able to pick up the pace recently, just a bit. It still feels like I have a long way to go, but I do like that I’ve made quite a bit of progress with the last two BETA builds.

I have some bug fixes coming in the next build but I need to work through some UI improvements before doing it.

Watch this space.

Categories
Uncategorized

Just wanted you two to know MB feeds look good in my upcoming feed reader: Stream. It’s been a long time in coming – and still needs work – but it’s stable and useful today. [@manton](https://micro.blog/manton) [@macgenie](https://micro.blog/macgenie)

Categories
Uncategorized

Stream Update

I’ve been working hard to improve performance of feed parsing for so long I’ve completely ignored the UI. It needs a lot of work.

Today I was finally able to spend some time on that. I’ve applied the lovely new timeline cell design from [Tim Van Damme](https://twitter.com/maxvoltar) and added support for dynamic text. It’s coming together, finally.

Categories
Uncategorized

Drafting posts for Micro.blog

Since switching to Micro.blog as the publishing system for my weblog I’ve been on the hunt for a good way to write posts in a draft form. I tried Bear and I love how it works, it’s absolutely beautiful. I was really close to purchasing the yearly subscription, then I realized I’m paying for Evernote.

I’m really torn. Both applications sync, both have text editors, but I use Evernote for clipping web pages and organizing by categories and tags. As far as I’m aware Bear doesn’t have anything comparable?

I didn’t realize sync was going to be so important to me. I guess I was spoiled by WordPress. I could start a post and revisit it. ~~Micro.blog doesn’t have such a thing but I have a need to start on my iPhone and finish on my Mac or vice-versa.~~ Update: [Micro.blog does support drafts](https://micro.blog/MitchWagner/8211013). Thanks, Mitch! If MarsEdit had an iOS version I’d definitely consider pulling the trigger on Mac and iOS versions.

If you’re using Bear or Evernote I’d love to know how you use them. If you have a different solution please share that.

Categories
iOS

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. 🤪

Categories
iOS

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](https://inessential.com/) for the most significant performance wins. His [blog posts](https://inessential.com/2013/03/18/brians_stupid_feed_tricks), tweets, and Slack messages about feed reading and general [Cocoa Framework oddities](https://inessential.com/2019/12/30/kvo_my_enemy) 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](https://developer.apple.com/documentation/foundation/urlsession) and [URLRequest](https://developer.apple.com/documentation/foundation/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.

Categories
Uncategorized

Trump Impeachment

[Teri Kanefield](https://terikanefield-blog.com/trump-responds-to-the-articles-of-impeachment/): _“It’s pure Trump: A rapid, continuous (and exhausting) stream of absurdity and lies. One lie can be managed. A few can be debunked. But stuffing several into each paragraph becomes an effective propaganda technique.”_

Bottom line: Trump is a lying, cheating, asshole of a criminal. Talk about gangster thugs. He’s all of those things. To buy all his bullshit is to show a willingness to destroy democracy and embrace all the things he stands for; greed, cruelty, misogyny.

Categories
Uncategorized

Customize that Mac Pro

Yesterday I asked a few folks I know to have Mac Pros if they’d heard of anyone having their cases anodized. I heard back from [Stephen Hackett]([Stephen Hackett on Twitter: “Noooooo… “](https://twitter.com/ismh/status/1210981590765068292)), perfectly reasonable response. Some folks don’t like to mess with perfection. Dr. Wave and John Siracusa haven’t responded or decided not to respond. That’s perfectly fine.

There is, of course, always a group of people that like to customize their stuff. [Cars]([A ridiculous Ferrari wrap we’re currently working on! This car is being entered into a rally with the theme of “used car salesman” | Weird cars, Car humor, Car wrap](https://www.pinterest.com/pin/406801778818582198/)) are a perfect example or perhaps [gaming PCs]([Digital Storm: Custom Gaming Computers & Gaming PCs](https://www.digitalstorm.com/)). Just because Apple doesn’t offer a Mac Pro in a style you like don’t let it get you down? You can always customize it after purchase.

### My Custom Mac Pro Build

How about we start with an [anodized]([What is Anodizing? The Finish of Choice | AAC](https://www.anodizing.org/page/what-is-anodizing)) case? Seems like a reasonable and fairly straight forward modification. Personally I’d go with orange but a finish close to Apple’s own gold might be better suited for a Pro device, don’t you think? Let’s go with that for now.

Another area of customization that comes to mind are the wheels. When the Mac Pro was announced I thought to myself *”wouldn’t a set of y mud tires look great on that thing?”* I don’t really believe that but the thought of it stuck in my head. Who is going to make aftermarket wheels with mud tires on them for my Mac Pro? Let’s pretend they exist for our custom Mac Pro build.

I’m sure I could go a bit more crazy if I gave it some thought but here’s my finished custom Mac Pro. I think it looks pretty good. 😀

![Custom Mac Pro](https://static.fahrni.me/customMacPro.png)

No Mac Pros were harmed in the making of this post. I promise.

Categories
Uncategorized

Dave Winer on Writers Flow

[Scripting News](http://scripting.com/2019/12/28/152557.html): *”Flow is the writer’s problem for blogging. I have been working on this since I started in 1994. I solved the problem for myself in 1997, and ever since I’ve been working on solving it for everyone else. Had WordPress designers simply looked at Radio UserLand, shipped in 2002, and copied its menu structure, they would have had a much better flowing blog platform. But since then Facebook and Twitter have matched or bettered Radio in flow. There’s a new benchmark. WordPress appears oblivious. So no I don’t think Gutenberg, which is a new text editor for WordPress, is the answer. It is the answer to other problems, how to mix text and other elements in a blog post. Certainly a good thing to do. But WordPress imho remains the klunky monolith that it always has been.”*

I can see where Dave is coming from. I recently switched from WordPress to Micro.blog for a few reasons but one that really stands out is simplicity.

When I want to create a new post I have a choice of Web, Mac, and iOS clients. They’re all very easy to use.

When you land on the Micro.blog homepage, after signing in of course, this is what you see.

![Micro.blog Timeline](https://static.fahrni.me/micro.blog.web.png)

Since Microb.blog aggregates posts of people you follow it’s also a micro social network, but that’s not where it really shines in my opinion. The ease of publishing a new post is where it really shines.

To create a new post you simply:
1. Tap the **New Post** button
2. Start typing
3. If you go over 280 characters the Title field will display
4. When you’re ready tap on the **Post** button.
5. *Done!*