The next storm has arrived, early. I really didn’t expect to see it snowing at 10:30AM. When I went to bed last night it wasn’t supposed to begin until 2PM.

If it’s like this all day, I’m cool with it. It’s nice, light, fluffy, snow. Not that heavy, wet, stuff we got last week.

Next Snowstorm

The snow is pretty much gone from the storm on January 3.

Today I’m going to cleanup some of the damage caused by it. Dragging busted branches and parts of trees into the backyard for cutting up later.

I also need to shovel off a big pile of snow at the top of our driveway and haul wood up from the lower part of our backyard, stack it under the deck stairs, and put some on our front porch for easy access.

The forecast was fairly grim earlier in the week. They were calling for over a foot of snow. Recent forecasts are showing between six and nine inches.

The thing that concerns me is the call for a mix of sleet and freezing rain that is supposed to follow the snow.

When all is said and done I hope we still have power, then the cleanup begins. 🤞🏼

snow forecast

Snow Days

I enjoy snow, I really do. It’s peaceful, fun to watch while is falling, and the ground covered in white fluff is really beautiful.

On Monday, January 3, we got somewhere between ten inches and a foot of snow. It caught everyone off guard to get that much, about half that was forecast. The amount of snow was fine. The wetness of the snow was a problem.

When we expect snow you’ll find Dominion Energy trucks staged at various places throughout the region. Power goes down and they bust their butts to get it back up. They really do, no sarcasm in that statement at all.

Monday morning I got out of bed and the snow was really coming down and had been for a few hours by that point. No sooner had Kim started making a mocha and I making a pot of coffee the power went out and was out until early afternoon, Friday, January 7.

By around 10AM we started hearing trees break and fall. Our own beautiful magnolia lost a couple fairly big branches and the top broke off. That’s a real heartbreaker. I have no idea what it means for the future of it? Fingers crossed it doesn’t have to come down.

Around 11AM I could hear chainsaws firing up all around us. Our neighbor across the street and one house down lost half of a tree. It fell into the road and had to be cut into chunks to clear the road. Not long after our neighbor directly across from us lost a fairly large tree, I’d say 30-foot. It fell across the roadway and was blocking our driveway. We fired up the chainsaw and got to work on it.

Our neighborhood is amazing. Folks from all sides descended on this monster and we were able to chop it up and clear the roadway in no time. I’m grateful for our neighbors.

It was pretty frigid that day with temperatures in the high 20’s during the day and teens overnight. Of course that meant that wet snow iced up.

Tuesday we started working on the driveway. My gut told me Monday afternoon I should go out and start clearing the driveway. I was cold and decided I didn’t want to do it. That was a huge mistake. Wet snow and low temps cause ice. Duh. It took forever to clear it up. Our daughter, Taylor, slipped on the ice and landed hard on her hand and hip. She was done for the day. Kim helped her in and took care of her. They’d done amazing work clearing the snow and ice. I was able to work on a particularly stubborn bit of ice with help from the sun and cleared off a bunch of it. Kim joined me after a while and we got it cleaned up. Kim was able to back the car up the hill at that point. I’m thankful for my family.

By late Tuesday roads started to improve from Palmyra down the hill into Charlottesville. Kim took me for a ride so I could check Slack and let work know I was ok. Oh, yeah, I forgot to mention our cell service stopped working Monday afternoon. No communication in or out.

We decided to take a trip to check out the roads. They were mostly in good shape. Trees down all over the place. There are some steep S curves not far from home that looked like a war zone. That mess was cleared up by regular folk. They spent hours down there clearing the way. I’m thankful for kind, thoughtful, caring people that think of others.

We decided we really wanted a hot meal Tuesday night, our house was a freezer with the exception of the room around the fireplace. We found that our favorite Japanese place was open. We had great hibachi chicken and steak that night. So delicious! I’m grateful for folks that brave the elements so we could have a hot meal.

I’m thankful we have a fireplace and wood to burn. We had bread, cheese, and some frozen ham leftover from Christmas dinner. We pulled that out and thawed it and we’re able to get along with sandwiches, mostly. I’m thankful for leftovers.

This week has been great. The snow is still hanging around, but it is melting. Our driveway is clear and the roads are dry. There is danger around the corner. We’re expected to get up to a foot of snow between Sunday night and Monday morning.

Here’s hoping the power doesn’t go out.

Flynn is perfectly happy by the fireplace.

I doubt the birds and squirrels will be visiting Kim’s bird feeder today.

This is more like it! Love me some snow! ☃️

I decided to make a change to the Home Screen for the new year.

Smaller widgets in a different arrangement.

Still the same number of icons.

My granddaughter did my makeup today. She said I’m Hades, from Hercules.

I think she nailed it.

Free and Opinionated

NetNewsWire Blog: “Our mission is to make the best RSS reader that we like making. We value stability, high performance, clarity, and lots of figurative air and space rather than a mélange of features.”

I love how Brent and the NNW team hold true to what they believe – and what they want – a feed reader to be.

If you haven’t checked out NNW you really should, it’s a great product.

COVID and Coffee

Watch out! It's a blog fly!I decided I’d go to my favorite coffee shop to work on Stream.

I’m sipping my cofffee, coding away, distanced from folks, of course.

A lady walks in and starts loudly discussing how, on Christmas Day, while the family was together her sister finds out she was exposed to someone with COVID. Swell.

Turns out she’s an employee coming in for her shift.

I just packed up and left. Will this mess ever end?

Stream Development Notes

It feels really good to be spending a little time on Stream today.

My last commit to the repository was June 24, 2021. That’s way longer than I thought. 😳

With any luck I’ll get cache sizing and clearing in today and, fingers crossed, I’ll be able to ship it soon.

Being able to clear the cache and control its size was the first request I received after shipping 1.0.

There are so many things to do and so little time to do them. It’s like eating an elephant. You have to do it one bite at a time.

Stream for Mac Dev Note

RibbitIn iOS development land we have UITableViewController and UITableViewCell for building lists.

On the Mac – AppKit – we have, with my limited knowledge, NSTableView, NSTableCellView, and NSCell. Apple’s developer docs say:

Beginning with macOS v10.7, you can use NSView objects (most commonly customized NSTableCellView objects) instead of cells for specifying rows and columns. You can still use NSCell objects for each row and column item if you prefer.

For some reason my brain finds that paragraph confusing. I need to dig a bit deeper into the docs but my initial read leaves me believing NSCell is not NSView based?

No matter, it’s not a big deal. I already have Stream for Mac populating the table and selecting a row displays the article for it. I have a very long way to go, mind.

Something I have considered doing is wrapping up the AppKit classes with classes that implement UITableViewController and UITableViewCell so I could at least have a familiar interface to work with, but that might be a bit of work for very little gain.

Oh, if you’re wondering why I’m doing the Mac version in AppKit instead of SwiftUI? It’s simple: I’d like to learn a bit about AppKit. It’s apparent we’re headed for a SwiftUI only world. That’s fine. I’ll be on board at some point – I’ve already done a bit.

Oh, FYI, it’s not that difficult to move from UIKit to AppKit. Minor things, like the paragraph I mention above, but AppKit existed long before UIKit.

Here’s a very simple example.

#if os(iOS) import UIKit typealias HSColor = UIColor typealias HSFont = UIFont typealias HSImage = UIImage typealias HSView = UIView #elseif os(macOS) import AppKit typealias HSColor = NSColor typealias HSFont = NSFont typealias HSImage = NSImage typealias HSView = NSView #endif

In my code I’ve been using HS versions of these class types and they work as expected. If I find a missing method on the Mac, I extend the class to include the missing method. Easy!

Here’s one example of that. extension NSColor { static var darkText: HSColor { return HSColor.black } static var lightText: HSColor { return HSColor.white } static var label: HSColor { return HSColor.labelColor } }

Still plugging away.

Podcast Directory Thoughts

There is a part of me that would love to put together an alternate podcast directory to Apple’s.

I Love RSS!Apple has given so much to the podcasting community, but you never know how long they’ll continue to make it freely available. Remember, they’re a services company now.

The service I’m thinking of would provide a shared web crawler, Administrative UI, and a nice Dashboard for supporters and advertisers. It would also have its own API and provide one compatible with Apple’s offering.

I don’t think it should be run by an individual, or a small company. It should be a cooperative, supported by the podcasting applications and podcasters using it.

Another thing that could fall out of it is an ads business that small podcasters and podcast app creators could take advantage of.

Maybe that’s just too much to expect from a small collective of podcasters and podcast app makers?

Just a thought I needed to get out of my brain.

Here’s the Visio for Mac splash screen, thanks to Chris Roth, a long time Visio Developer.

Visio for Mac Splash Screen

Axon Offer Letter

More olden times. This is my offer letter from Ted Johnson, Vice President of Engineering, Axon Corporation.

Axon eventually became Visio Corporation and the rest, as they say, is history.

Oh, and the $28k per year was a huge improvement from my first gig at Microsoft.

At the time it made me feel really great. I had no idea how stock options worked. I really wish I had. I’d have asked for more. 😀

Back in the olden days, after Visio was acquired by Microsoft.

Making Stream Profitable

I’ve been thinking a lot about how I can make Stream a more profitable application.

I need to go beyond Stream’s Tip Jar and my Ko-fi page.

Ads 💵

As much as I don’t like ads, they may be one way to add a little profit. I think I’d do this with the Mac version since it would be a brand new product. Ads would be woven into the timeline, marked in some obvious way, and would not show too frequently.

I have no idea what ad service I’d use but I wouldn’t want a crummy one that does all kinds of tracking. That makes for garbage apps and I don’t want anything to do with them. That makes it really difficult to include them because I’d bet most, if not all, do some sort of tracking.

Roll Your Own 🌯

I’d I had a popular app I could roll my own ads, like my favorite podcast player, Castro, does.

This would be my preference but I don’t have a big enough user base to pull off something like that. I’d need to do my own ad service to sell and serve up ads.

I do love this idea.

Ads with Upgrade 💵

If I go with the ads route I should offer a one time payment to turn them off.

I don’t know what that payment would be, but it would apply to the current major version. So, you’d pay $X for version 1.0, then you’d pay $X when 2.0 shipped. Everything between 1.0 and 2.0 would be included as part of the price.

Subscription 🔥

This is a fairly popular option with many of the apps I use. The first that comes to mind is, you guessed it, Castro. They charge a very reasonable price of $18.99 per year to upgrade to Castro Plus.

Now, I would not charge anywhere near that for Stream. I’m currently thinking $4.99 per year.

This model is kind of my favorite but it means I absolutely need to provide a constant stream of updates. It makes the idea of version numbers moot, which I really like.

A Better Stream 🏞

I really think I have a chicken and egg problem. When I shipped Stream 1.0 I deemed it good enough. Since then I’ve managed a few small updates, including adding support for iPad. But, my new feature production has been almost non-existent. That would absolutely have to change in the subscription model.

I feel like a better Stream might get me more downloads, maybe some press, which would allow me to make some of these choices.

As it is I know Stream is lacking features. I have a nice list of stuff to do, including completion of a Mac version.

Adding new service support, adding additional view options like a traditional Feed Readers, and adding a more Newspaper like view.

Closing Thoughts 🧠

I have a very small user base so my number one job needs to be bringing in additional users. This is a really tough challenge for a fella that wouldn’t know marketing from a hole in the ground.

While I know I haven’t been updating Stream as often as folks might like, I do think about it daily. It is definitely a labor of love.

More to come. 🧡

I believe I’ll start the day watching CFL Division Semi Finals.

Montreal Alouettes vs. Hamilton Tiger-Cats.

I have no idea who to take. Should be fun to watch.

Today is one of those days I want to sit on the couch, under a blanket, and watch football games.

I’m guessing that won’t happen. 😁

Happy Thanksgiving!

Just a couple turkeys!

First fire of the season.

Polio vs. COVID vaccines

I had to capture this for future reference. This is astoundingly sad.

Redesigning Overcast

A wonderful bouquet of flowers.Tackling the Redesign: ”Finally starting the Overcast redesign, and pragmatic considerations when tackling modernization of older codebases.”

I just finished listening to this episode of Under the Radar from David Smith and Marco Arment.

Marco was sharing the stress he was feeling over the thought of a complete redesign of Overcast, all in one big hunk. The whole time I was thinking DON’T DO IT MARCO! Why? Something this large – even for a small app like Overcast – is very expensive. Marco is a one man shop, so locking himself away for months and months could be very detrimental to the continued success of Overcast. No way should he do it.

Thankfully that was just his mind going through all the steps necessary to come to the conclusion it’s in his best interest to do it bit by bit. Much better idea.

While he’s at it I’d actually encourage him to leave all that underlying Objective-C alone and jump into a little SwiftUI and Combine. He could start with some of his existing table views – SwiftUI Lists – and slowly introduce SwiftUI into his product, if that’s ultimately where his app needs to be.

Another thing he should consider is using Combine before anything introducing SwiftUI. It can absolutely stand alone.

I say these things because I’ve been working on these very dilemmas for a client at the day job. Introducing SwiftUI for simple UI has been quite easy to do and it’s been really easy to slip it into an existing UIKit app.

Picture from Christmas 2008, when I was a gym rat. Loved Muscle Milk Peanut Butter Chocolate, but their Chocolate was also quite good. I’d use it as a snack.

Fairly recent shots. 😄