Work Note: Stream for Mac

I decided to go with working on Stream for Mac today.

The feed item cell has been a complete mess for years, yes, you read that right. It’s been a complete wreck for years now. I kept on insisting I do all the work using AppKit.

Today that changed. I needed to make progress and even though my SwiftUI experience is very limited I was able to get the general layout working the way I’d like it. It’s not complete by any means but each UI element is displaying in the place I want it to (mostly) and the cell resizes properly, oh, and the date label/text remains pinned to the right side of the cell. That was a big issue with my AppKit NIB attempt.

Polish, polish, polish is the next course of business with the new cell. It needs spacing updates, text size fixes, color changes, highlighting support, keyboard support, so many things. But, now that it lays out the way I want I can move forward.

This is the first SwiftUI code introduced to the Stream codebase, which began life in 2018.

Stream Work Note: Post Stream 1.6 Work

I was so focused on getting a single feature done for Stream 1.6, and add a little Liquid Glass support that I don’t know what I want to work on today. 🤣

Brain in a jarI want to get back to the Mac version but it feels like so much work. I need to get my table view cells to behave properly. Perhaps I’ll punt on having the date attached to the right side of the cell and put it somewhere on the left just to make some progress today. 🤔

Would different cell layouts between iOS and Mac versions put folks off?

Something else I’ve been considering is adding a third column to Stream for Mac! Yes, it would make it behave just like every other feed reader on the market. Going 100% against what Stream was built to be. My reasoning? It’s strange, at best. On iPhone it has a single column, on iPad it has two, so it makes sense that the Mac — being the big dog — would have three, right? RIGHT!?

Should I add keyboard shortcuts to better support iPad? That would also make the iPad app a better citizen on the Mac!

Do I being my journey into SwiftUI by replacing some of the lazy UI I threw together just to get 1.0 out the door?

Oh, how about that new subscribing UI I wanted to do? I got some lovely feedback from a friend about onboarding! I’ve been thinking about that a lot myself. It’s a great idea and I need it! Perhaps that’s my first SwiftUI code? I think y’all would like it, at least I hope you will.

Anywho. Lots of thoughts spinnging around in my brain. 🧠

I have such a huge list of things I want to add to Stream. Like full page parsing and stripping of formatting, fix some things that annoy me, syncing, connection to feed services like feedbin, recommendations (curated and LLM recommended), a Mac version, and the list goes on and on and on. 😃

Stream Work Note

I’ve managed to kick nine builds of Stream out to beta testers. That’s the most I’ve ever done! I owe this all to the four hours of time I’ve reserved on Sunday morning for working on Stream. It’s been seven weeks of work. Like I said in my last Stream Work Note I’m overjoyed at having this time to focus work on Stream and, of course, have a really great Mocha while I do it. 😄

During my testing I noticed that the one new feature I’ve been adding to the app would fail when Stream was tiled with another app. That really stunk because otherwise it looked great to me! Today I managed to fix that outstanding critter and it feels really great!

I’ve had two other bug reports come in specifically for my iPad support — thanks Lucian and Sean!

Red sock.The first bug was occuring when you’d pick a feed to subscribe to. That porting of the code has been synchronous since day one. I figured why do it asynchronously when the UI was going to be blocked while I added the feed to your list and parsed it. Well, newer versions of iPadOS didn’t like that and the app would crash hard. Yikes! Can’t have that. I fixed that bug earlier in the week or maybe last week, I don’t remember, but it’s out of the way and now asynchronously updates the app, be it iOS or iPadOS.

The second bug was a bit more difficult to fix only because I couldn’t reproduce it. It turns out it was happening consistently on iPadOS 16.8.2. So, I added that simulator setup and kerpow! 💣 It happened right away. YAY! 🥳 It turns out I’ve been stacking two navigation controllers on top of each other since I added iPad support a few years back. DOH! The OS was just tolerating it so I didn’t know. Well, it looks like Apple decided it wouldn’t allow that any longer, and rightfully so! I fixed that issue yesterday.

This morning was spent fixing the tiling bug and it’s now done and a new TestFlight build it up. If everything goes well with that build it could be my final build before Tuesday’s Apple Awe Dropping event. 🤞🏼

Have I ever mentioned I’d love to work on Stream full time? I didn’t think so. 😄

Stream Work Note

I’ve been going to Grit, my favorite coffee shop, for the last six Sunday’s to work on Stream. It’s been really rewarding to spend the morning working on it. I typically work from around 8AM to noon, then grab Chipotle for my daughter and I and head back home.

That four hours of time has given me so much joy and recharges me for the week ahead. I cannot imagine how much better Stream could be if I were able to do this five days a week for five to eight hours a day! I might actually be able to make some real progress on the Mac version! 😱

Today I’ve managed to kick a beta build out the door. What I expect to release is version 1.6.0 as soon as Apple opens the door for glassified releases. Now, don’t expect much. Even with my four hours at a time to work on it I’m still very slow and the feature I’ve added isn’t glassy, at all. It’s something I’ve wanted to add for a very long time. It’s a feature meant to make things easier to subscribe to feeds. That’s all I’ll say about it for now.

What’s next?

Well, I had wanted to create an entire new view for adding and managing your subscriptions. I really need a nice way to populate the app your first time launching it and give you some great options when you pop open the Subscribe view controller. My plan is to create a nice set of hand picked feeds for users and, perhaps, add a set of recommended feeds using Apple’s built in LLM models. We’ll see at some point I hope! As long as I’m able to continue spending my Sunday mornings coding I think I’ll be able to achieve a lot on the app. I have a lot of features to add and bugs to fix! There are a lot of usability things I could do to improve the app and a few bugs I need to take care of.

Where’s the Mac version?

Brain in a jarThis is a tough one. And it’s only tough because I don’t know AppKit as well as I do UIKit. Yes, Stream is still 100% UIKit and the Mac parts I’ve done are all AppKit. I’m thinking I may do some new features in SwiftUI because I need the practice. I’ve never built anything with SwiftUI.

I’ve struggled to get layout on the Mac working the way I’d like. My table view cells look like crap and even with help from a dear friend — hi, Josh — I haven’t been able to get it right. It’s terribly frustrating and makes me want to jump out a window.🤣 Maybe SwiftUI will let me make those cells work on Mac?🤞🏼

Stream Work Note

I haven’t done a development work note in a long time.

I’ve started working on a new feature for Stream that required creating an App Group so I can share data.

I’ve added everything to my new Action Target and I have the code put together using existing classes, it was honestly pretty easy to do.

Brain in a jarNow comes the interesting bit. If I understand how an App Group works I am going to have to move my existing database to the group container so the extension will be able to access it?

If that’s not the case I’m sure someone will let me know. 😂

The thing I’ve never tried to do is open a SQLite database from two processes. Does that even work?

If it doesn’t work, things are gonna get very interesting.

I can always create a separate database just for the Action Extension that matches the structure of the main database and have the main app import it at a later time.

I’m hoping I’ll be able to open it from the main app and the extension and have it work as expected, but I’m not holding my breath.

I just looked at my Cotton Bureau store earnings. I’ve sold one t-shirt and one phone case, if I’m reading it correctly. 🤣

Thank you to whoever bought the t-shirt. I do appreciate the business! 🙏🏼

I bought the case. Guess I should go grab a t-shirt while supplies last!

Holy cow, when did this happen? 😃

I just decided to browse around the App Store to see if Stream was anywhere in the Apps tab, and it was! 😍

It’s under Apps You Might’ve Missed. Thank you! 🙏🏼

P.S. The reason it doesn’t look like I’ve installed it is because I’m running a Beta build.

Daniel Jalkut

Did you know that Paolo Pasco, the winner of both the 2024 and 2025 American Crossword Puzzle Tournament, uses MY APP, Black Ink?

That is so cool! I’d be thrilled to hear from dedicated Stream or RxCalc users!

Cotton Bureau Sales! 🥳

Got my first sales report from Cotton Bureau and was super excited to see how many t-shirts and cases I’d sold! 😃

One. I sold one phone case and zero t-shirts. Oh, and that one case was sold to me, so it doesn’t count. 😳🤣

If you like the Stream icon head over to Cotton Bureau and buy a t-shirt or phone case!

Apple Newsroom

Apple honors 2024 App Store Award winners

Congratulations to all the winners!

Not gonna lie, I’d love to have one of those blue beauties on my shelf. 😍

My apps need to be so much more polished and feature rich before I could even dream of such an honor. I have the likes of Unread, Reeder, and NetNewsWire to compete with. All beautifully designed and developed.

Having said that, you should go download Stream and leave me a tip! 😃

Thinking of Stream for Mac

The old Voodoo Pad iconI’ve neglected Stream for far too long and I don’t know when I’ll have the gumption to get back on it. Learning AppKit has been a slow and arduous process. I really hate when I suck at something. I know, I know, doing the work will make me better but I just don’t have the energy that 20 something me had to stay up all night learning and doing.

Once of these days I’ll get it finished. It may take years to get there but I’ll get there, I hope. 🤞🏼

Of course finishing off the 1.0 of Stream for Mac would allow me to work on Rooster, which is a new codebase and 100% SwiftUI. 😄

C++? Are you crazy, Rob?

Brain in a jarThere is this weird part of me that wants to go back to writing cross platform C++. All of my cross platform work was for Windows and Linux. The itch has been there since I moved to iOS code — and I spent [two years in between iOS dev jobs working on a cross platform SDK for Pelco’s video encoding, decoding, and recording devices, all in C++. It never made it to Linux but I spent a whole lotta time working on Pelco’s X SDK. That was our version of a cross platform SDK we used internally to build a cool pipeline framework called MPF, or Media Processing Framework.

Why the draw. I’m not sure, but I think it’s probably because it’s the language I know best and I did a lot of work with the Windows API, which was also a strong suit.

I still haven’t, and don’t think I ever will, embrace the Mac like I did Windows. At the time I was a Windows dev the platform was simple, before COM and OLE 2.0. The Windows API was so straightforward.

None of that is true any longer. Not for Windows or C++. I bet I wouldn’t even recognize modern C++. C++ 11 changed A LOT in the language and it’s only advanced since. As for the Windows API, folks still use it but you should be doing something different, like using WinUI 3.

The thing is, I REALLY want to complete Stream for Mac and my new super top secret project: Rooster. Yeah, it’s not so top secret, and I finally gave it a code name, but if you know me you can probably suss out what it would be given my love of blogging.

StreamKit?

I’ve been thinking about breaking Stream’s inner workings into a separate package.

It would include; networking, parsing(RSS, JSON Feed, Atom, and HTML), data models, database(?), and any utilities around those items. The database bit is a stretch and should really remain outside of the package. It wouldn’t force a storage mechanism on anyone.

I’d like to do this to keep me honest about my separation of concerns and I just like the modularity of it.

It would, of course, use Swift Package Manager to create the package.

The big question rolling around my brain is this: Do I open source it?

Why not you ask? Well, it’s simple. I’m afraid my code will be dragged through the mud and that would destroy me. I love and appreciate constructive feedback and would absolutely take PR’s.

To get where I’d love to have it means creating the SPM and using it internally for Stream for iOS and Stream for Mac. I’d also like to make sure I’m using all the new async/await strictness put in place with Swift 6.

If I can get that far I’d consider open sourcing it. Maybe. 🤣

The other question is, would anyone use it?

Stream for Mac Update

You’d think since Stream for Mac looks this bad I’d get to work on it, you’d be wrong! 🤣

I really do need to get back to it. I started working on the add feeds modal and realized I needed to fix up some of the code that does that to work better on the Mac. It’s also forcing me to look at adding async/await to the app, which is something I really need to do.

Stream for Mac: Work Note

Brain in a jarI managed to work on Stream for Mac for a little while yesterday. I got a bit confused about how menus operate on the Mac — from a developer standpoint. I’m an old Windows developer of 20 years turned iOS developer in 2009 and now exploring the Mac and AppKit (yeah, I know, it’s old and busted now.) I got hung up on who “owns” the menu in a Mac App. I’d never had to think about it before, now I have a better understanding of how the Mac and first responder work.

I was kind of beating my head against the concept until our internet connection decided to stop working and I was kind of forced to walk away for a bit. That was intimately the key to figuring it out. I asked some questions on the Core Intuition Slack, using my phone, got some great answers to my noob questions, and read about menus and first responder in a book I have available in Kindle. The book I used was Programming Swift! Mac Apps 1 Swift 3 Edition by Nick Smith. I jumped to Chapter 8 Menus, Toolbars, and First Responder and that did the trick. I’m hoping I’ll be able to carve out some time today to put my newfound knowledge to use. 🤞🏼

I have other chores to take care of first. Hopefully they don’t take too long. Heh, they always take too long. 😂

How cool is this! To be included with the likes of NetNewsWire, Unread, and Reeder is quite an honor! ❤️

I’d like to be an Indie Dev

Steven Beschloss

I love architecture. A beautiful structure—like the iconic Flatiron Building in New York (seen here)— inspires me. It’s not just the aesthetic pleasure of the shape, the materials, the details and its placement, but recognizing how much thinking, planning and executing it took for the original idea to become reality. Unlike other art forms, architecture can’t just be beautiful; it also has to be functional.

The title of Mr. Beschloss’ piece is What Job Do You Wish You Had?.

This is an easy answer for me. I love building software, just like I’m doing now, but I’d like to be doing it independently.

Brain in a jarI would love to wake up every morning and work on Hayseed projects like Stream and unnamed project.

The reality is I don’t have the means to do that. I am bound to my salary and I no longer have my 20 something boulders energy to stay up most of the night working on my dream.

Until retirement I’ll keep hacking away an hour here an hour there on my projects in hope I will be able to break out some day.

Even if someday doesn’t arrive for me I am finding the most joy programming my own apps. No overhead, no meetings, just writing code. That’s just the way I like it. 😃

It was a record sales week for my little apps!

Yes, I’m genuinely happy about this.

Saturday Morning Coffee

Good morning from Charlottesville, Virginia! ☕️

It’s been an interesting week, it’s just felt off for some reason. I think part of it is having our new pup — Cocoa — in the house and part of it is work.

Ever since our layoff things haven’t felt the same, because frankly, they’re not. Our company structure has changed and we’re still adapting and moving thing around. It feels way more corporate than ever but I suppose that happens when you get beyond a couple hundred people. We’re near one thousand, even after the layoff.

After the project I’m working on comes to a close at the end of July I’m hoping to get a little bench time to work on my SwiftUI (worst technology name ever) skills and shake the cobwebs out of the old programmer brain. 🧠

Ashur Cabrera

We’re giving ourselves the weekend to rest, then Phase 2 kicks off Monday when we start working on paperwork and logistics to pack a few bags, our pup, and try our luck at spending the next few years abroad. (More on this later in the summer ☺️)

Ashur is a friend, all around great fella, and very talented web developer. He’s even contributed his amazing web talent to Stream and I’m forever grateful for it.

Anywho, I’m so excited for him and this new adventure. Doing it while you’re young is the right call. Do it while your body can take it. Get out, explore!

I still hope to convince Kim we need to go all in on the RV lifestyle. Still not there yet. Maybe someday.

Enjoy this new adventure Ashur! 🧳

Joel Clay • blog.meldstudio.co

It is also what backs a number of the Swift concurrency primitives – with a cross platform, open source implementation of CoreFoundation released as the backing implementation. That source code is invaluable in gaining a better understanding of how CFRunLoop works. At just under 5k lines of quite readable C code, one could grok it at a high level in a few hours.

If you know me you know I love browsing C and C++ code. The thing I find extremely interesting about this code is how many OS’es it is targeted to run on; macOS, Windows, and Linux.

Makes me wonder who’s writing code against those platforms and how the new all Swift based frameworks work on those platforms.

This article takes a deep dive into CFRunLoop and it’s a good read if you’re into C code. 😃

NBC News

The Supreme Court issued a divided ruling on a pair of challenges to affirmative action policies at Harvard and the University of North Carolina, with potential implications across higher education and beyond.

The Republican built court is doing its job dismantling years and years of progress. They’ve already set Women’s rights, LGBTQ+ rights, and now affirmative action back. What’s next?

Here’s hoping most institutions of higher education don’t change their policies. Just leave that to the rich white racist institutions that take in dumbass rich white kids whose parents buy their way in.

Speaking of dumbass rich white kids…

Daniel Golden • ProPublica

My book exposed a grubby secret of American higher education: that the rich buy their under-achieving children’s way into elite universities with massive, tax-deductible donations.

Screw Harvard and the entire Ivy League. As a nation we need to get our belief that going to one of those schools magically makes you smarter or better than everyone else. They cater to the rich and powerful who can afford to buy their way in, like Jared Kishner’s dad did for him. It’s all about keeping the rich and powerful in power.

Sure, turn away the dark skinned people with great grades and SAT scores and let the idiots in.

I’m sure there are many other schools doing the same thing and they should all be shamed.

The question is how to stop it?

Doc Searles

For almost the whole time I wrote at the old blog, the URL doc.searls.com took you there as a redirect. Now that URL goes here, directly. Put another way, this was a Harvard blog until yesterday (and again, everything until that day remains so: that’s its legacy). From now on, it’s mine alone. It has crossed from one state to another. I’m not sure yet how it will change, if at all. But I feel energized about what new things I might do with it.

Speaking of Harvard, it sounds like they’ve shut down and archived a bunch of blogs and their associated blogging tools. I’d venture to guess the tools they were using were long in the tooth, not well maintained, and a security risk, but I could be completely wrong about that! 😆

It’s nice to see Doc in his new home. I just need to remember to subscribe to the new site.

Keaton Brandt

Instead, I think it’s safe to say it’s largely Apple’s fault. Or, maybe “fault” is the wrong word. We’ve moved on from the era of beautiful Mac software to the era of web-based apps, for better and for worse. There’s no one simple reason for this evolution, but it’s interesting to think through some of the factors.

This piece goes to all kinds of interesting places. I think the bottom line is Apple is running Microsoft’s playbook from the late 90’s when the web was taking off and they were desperately trying to keep folks tied into their OS and tools.

Eventually Microsoft got their act together and found their way into web technologies. Heck, they even went as far as scrapping their own home built browser for Chromium, but that’s another story I’m very opinionated about.

Jay Barmann • sfist.com

This is very sad. HRD Coffee Shop (521A Third Street), which has seen two generations of owners in SoMa/South Beach and became so well known for its fusion-style burritos and Mongolian beef cheesesteak a decade ago that they were paid a visit by Guy Fieri’s Diners, Drive-Ins & Dives in 2010, closed for good on Friday, June 23. The restaurant had just celebrated its 70th birthday this year.

This was one of the places on my “need to eat there someday” list and it’s a real shame to see it close down. I really wanted to try their spicy pork and kimchi burrito. Guess that ain’t gonna happen now. 😔

Pieter Hintjens

It’s one of my interview questions: “what is Good Code?” Surprisingly, almost no-one gets it right. It’s not about speed, elegance, language, or style. Good Code is code that solves real problems for real people, in an effective way. Let me list the top 10 rules for writing good code.

I enjoy reading how others approach coding. I’m constantly hearing the term “best practices” and makes me cringe a little.

I don’t agree with Pieter’s number zero rule: Use Git and Github. I know git is super popular and I use it and GitHub every day, but it’s not the only version control system on the planet and there are others that work just fine. The advice I’ve always given folks is pick a version control system and use it.

GitHub is, of course, a very good choice. 😃

[David Pierce • The Verge](<https://www.theverge.com/23778253/google-reader-death-2013-rss-social)

To executives, Google Reader may have seemed like a humble feed aggregator built on boring technology. But for users, it was a way of organizing the internet, for making sense of the web, for collecting all the things you care about no matter its location or type, and helping you make the most of it.

I remember how down my brother was when Google shut down Reader. He had a really nice workflow and could navigate Reader with his keyboard. It also had some very unique to Reader features he made good use of. I don’t remember what they were but I should ask him. If they’re unique perhaps Stream could benefit from implementing some? 🤔

Jason Kottke

When you write some code and put it on a spacecraft headed into the far reaches of space, you need to it work, no matter what. Mistakes can mean loss of mission or even loss of life. In 2006, Gerard Holzmann of the NASA/JPL Laboratory for Reliable Software wrote a paper called The Power of 10: Rules for Developing Safety-Critical Code. The rules focus on testability, readability, and predictability:

I’ve heard about these rules before and they’re no bad at all, especially for smaller, self contained programs. Anything mission critical should be extra safe in its implementation.

Remember when the Mars Lander crashed because the teams used different measurement systems? It only cost $125 million to build. Good times. 💥

Jack Gutzler • beyondtheflag.com

As NASCAR descends upon the streets of Chicago for the inaugural race at the new Chicago Street Course, a new chapter in the sport’s 75-year history will be written.

Since getting into NASCAR I’ve had this one marked on my calendar and wish I could’ve attended it. I’ve never been to Chicago or a NASCAR race, why not get a twofer?

I’ll be watching it from the safety of my own living room this time around. 🛋️

Manton Reece

Meta adopting ActivityPub has the potential to fast-forward the progress of the social web by years. Ever since I grew disillusioned with Twitter a decade ago and started pushing for indie microblogs, then writing a book about social networks and founding Micro.blog, I could only dream of a moment where a massive tech company embraced such a fundamental open API.

I’ve been trying to keep my nose out of the discussions around this on Mastodon. Opinions vary, of course, and some folks are very angry about the whole thing. It mostly boils down to folks in marginalized and discriminated against groups who made their homes on Mastodon being afraid. They don’t want to have to deal with the hate that will come along with an extremely popular, large, instance. I can’t say that I blame them.

I’m hopeful this will all work out and won’t divide the community.🕊️

Tiny Apple Core

Saturday Morning Coffee

Cold EspressoGood morning y’all. It’s raining this morning, a repeat performance of last weekend. I did manage to get the steps completed in the garden now we let the rain test my work.

This week I had to get a tooth and removed and a bone graft due to a 20 plus year old root canal failing. I don’t recommend it. 🦷

Time to go lay down in a field and have Kim throw some dirt on me. 😂

CNN

On Monday, it was Nashville’s turn to join the roster of cities made notorious by a mass shooting epidemic much of the country seems prepared to tacitly accept as the price of the right to own high-powered firearms. 

No words. 😔

Microsoft Design

Today marks the debut of the new Microsoft Teams app, released in public preview for Windows customers.

This redesign of Teams looks extremely thoughtful, well planned, and well executed. I’d like to get my hands on it and run it through dumpbin and other tools to see just how it’s put together.

It’s my understanding it’s a native app — no more Electron — with an HTML/CSS/JavaScript filling using the new, Chromium based, WebView2 control

It also means no Mac or Linux client until they can get those items ported to Mac and Linux. You can write C#/.Net code on Linux and Mac today, but as far as I know WebView2 hasn’t been ported. Heck, who knows, the shell around the app could be written in C++? I’m not really clear on that bit, it’s why I want to get my hands on it. 😁

Wired

The US Republican Party has become increasingly authoritarian and extreme in recent years, and it doesn’t seem likely to moderate that in the foreseeable future.

Red States are becoming more and more radical. The entire anti-LGBQT, anti-woman, anti-education, movement is in full swing.

Next thing you know women will have to walk 10 paces behind their husbands in their modest to the ground dress with their eyes on the ground. Disgusting.🤬

Offred: The Future is a Nightmare

Dave Winer

In September 2004, the activity we called audioblogging was starting to gain traction.

Neat little story about how podcasting got its name. 👍🏼

The Guardian

A dispute between the Florida governor, Ron DeSantis, and Disney over control of the company’s Florida theme park district hinges on a clause referencing King Charles III and his descendants.

The authoritarian was outwitted in this story. If you haven’t heard about this yet go read it. 🤭

John Nunley

This year is supposed to be the year of the Rust GUI. So why is it still so unsafe?

This discussion focused around handles in Windows is quite interesting.

Having written a lot of Windows code that uses handles everywhere — HWND, HINSTANCE, HANDLE, anyone(?) — because that’s the way the Windows API works I don’t see it as an issue.

A HANDLE is a persisted thing that allows Windows to shuffle the underlying object around if needed. It’s a remnant of 16-bit Windows days, because 640k of memory was a precious commodity. It’s a safe thing to the developer as I see it but I do not fault anyone wanting to make things even safer for developers. 👍🏼

John Scalzi

Trump is and has always been the sort of person who believes that laws are for the little people, and has acted accordingly.

I love John Scalzi’s books and prior to Twitter becoming a worthless piece of poo I really enjoyed reading his tweets. In case you don’t know he’s had a blog for many years and it doesn’t disappoint.

TFG

Judo Blog

We believe that designer-developer handoff is broken and to solve this problem well requires software that is familiar to designers and developers alike—software that makes building an app’s user interface a collaborative process instead of handing off files back and forth.

I’d really like to take a look at Judo to see how it could improve my own coding efforts. Stream for Mac could use some help. It’s been a slog for me and I keep switching between AppKit and SwiftUI. I really need to focus on SwiftUI going forward.

Los Angeles Times

Only two centuries ago, a shallow inland sea dominated California’s Central Valley.

Tulare Lake is fascinating. California Highway 41 runs right through the lake between Lemoore and Kettleman City. I’ve heard tale in the olden days one had to catch a barge or take a boat from Lemoore to Kettle City.

We drove that route all the time when we lived there. It’s one way to get from the San Joaquin Valley to the Central Coast and all the lovely towns and beaches we fell in love with. Places like San Luis Obispo, Avila Beach, Cambria, Morro Bay, and Pismo Beach.

As it is today you’d have to go out to I-5 and loop back to get to Kettleman City.

Tiny Apple Core

A Blogging App?

Red sock.What would be a good name for a blog editing tool? Just for writing, editing, and publishing. Native iOS and Mac. A companion to Stream, as it were.

Would a combined blogging and feed reader app be appealing?

Before doing Stream I was originally doing a blogging tool. I did Stream because a feed reader was easier than doing a blog editor. 🤣

It’s unfortunate I waste so much time thinking about these things but I want them for myself. I figure others might want them too.

Saturday Morning Coffee

FrapAs I’m getting started it’s a nice crisp 27F outside just before 8AM EST. The sun is out and will be all day. We’ve had a very mild winter this year, with the exception of that polar blast around Christmas, and I don’t expect us to get any snow.🌞

My coffee is in hand, time to get started. Hope you enjoy the links. ☕️

Reuters

A gunman opened fire on Monday night on the main campus of Michigan State University, killing three people and injuring five, before an hours-long manhunt for the suspect ended with his death, apparently from a self-inflicted gunshot, police said.

It’s the guns. I don’t know what else to say. Over and over and over again we see this and do nothing. A truly American thing and not one to be proud of. 😞

Chicago Tribune

Kansas City Chiefs win the Super Bowl for the 2nd time in 4 years, beating the Philadelphia Eagles 38-35 on a FG with 8 seconds left

I’m happy for the Chiefs and their fans. It was a great Super Bowl, a nail biter, not a blowout. Oh, and the Mahomes to Kelce connection is without a doubt the best in football and one of the best ever. If Patrick Mahomes can stay healthy and have a 20-year run he’ll break all kinds of records and win some more rings.

Macworld

Just short of the 10th anniversary of that first Mac Pro misstep, Apple is now late in concluding its processor transition by shipping the first Apple silicon-based Mac Pro. What’s worse, reports from Bloomberg suggest that the company has ditched the next Mac Pro’s highest-end processor, calling the computer’s entire purpose into question.

Given Apple’s new chip architecture with memory and processor built into the chip I have a difficult time defining what a pro machine should or would be. Maybe you have to accept a new definition? Maybe it doesn’t mean a flexible and expandable architecture?

What I’d like to see is Apple give the Professional computing world a way to use their current investment in Mac Pro a way to replace the x86 based Xeon chips with Apple Silicon. Of course Apple would never do such a thing because money. 💸

Linode

CAMBRIDGE, Mass., Feb. 15, 2022 – Akamai Technologies, Inc. (NASDAQ: AKAM), the world’s most trusted solution to power and protect digital experiences, today announced it has entered into a definitive agreement to acquire Linode, one of the easiest-to-use and most trusted infrastructure-as-a-service (IaaS) platform providers.

I follow a number of indie software developers and they tend to use Linode for their service backends. Two that come to mind are Micro.blog, the system I use for publishing my blog, and Overcast, the indie podcast app for iOS. I’m sure there are many more out there I don’t know about. I’ve never done any large scale backend work for my indie endeavors but if I did I’d most likely choose Linode because they’re inexpensive, reliable, and have great customer service.

Hopefully they don’t start hiking prices, laying off people, and becoming a terrible place to host. 🤞🏼

Semafor

Spotify’s podcast push began in earnest in 2016, when Ek invited audio executives including higher ups at Gimlet to the company’s headquarters in Stockholm, Sweden to explain the emerging American podcast market.

Spotify calls their recorded audio podcasting. It’s not. Podcasting is the audio plus a delivery mechanism in the form of RSS. Yes, you can have a podcast as I’ve defined it behind a paywall. They just want to lock you into their app with their advertising and try to upsell you on other things. That’s fine. It’s their business but don’t call them podcasts. Ok, off the soap box. 📦

I was listening to the Pivot Podcast last night and Scott Galloway point out that very few podcasts make a profit. That’s true of what he defines as a podcast. Remember, this started as an open technology built by Dave Winer and Adam Curry. It was used and loved long before businessmen decided they could monetize it. Just like blogging. It’s was and still is a way for us mere mortals to communicate to the outside world, even if we’re not paid a dime to do it.

Oh, and I have a feeling some of the small podcasting shops are doing just fine, but they do things differently and have well loved shows. They’re just not exclusive to Spotify or Apple or whatever Big Co place you get your podcasts. They’re fully open and downloadable using your podcast player of choice because they’re built on top of RSS as the delivery mechanism.

The key phrase to listen for when you hear a podcast advertised is ”Download wherever you get your podcasts.” Then you know it’s a real podcast.

Crooks and Liars

The hearing got incredibly creepy when Arkansas state Sen. Matt McKee asked a trans pharmacist if she had a penis. “Do you have a penis?” he asked the woman, who seemed stunned at the question.

Unbelievable. I wish we could get past this and so many other things. So many people want to control how others behave and how they live their life. Often times based on some form of religion they’ve twisted to support their hate, disdain, or jealously of others.

Let people live their lives. Show them respect and grace as fellow human beings. It’s not our job to tell folks how they should live. That goes for women, brown skinned people, and the LBGTQ+ community. ❤️

Doctorow

After half a decade of sedate, steady growth, Mastodon suddenly surged, from 600,000 daily users to 2.6 million in the space of months.

Some folks are already writing off Mastodon. Silly people. If you’re looking to get a huge following and interacting with movie stars, influencers, government officials, and the rich and famous, don’t expect that from Mastodon. It’s not built for that. It’s built like your everyday neighborhood for us commoners to engage in. It’s real people carrying on real discussions. Sure, there’s gonna be some hate but there are mechanisms in place to take care of that crap. I love it and I’m excited to see it grow. There’s no algorithm to encourage you to follow people or corporate master to satisfy and no need to grow to billions of users because of it.

It’s like blogging. It’s all open and up to us, everyday people, to keep it. ✌🏼

New York Times

Lurking behind the concerns of Ron DeSantis, the governor of Florida, over the content of a proposed high school course in African American studies, is a long and complex series of debates about the role of slavery and race in American classrooms.

Talk about hateful, mean, and unsympathetic to fellow human beings. DeSantis is an authoritarian who wants to mold Florida into his own disgusting image. He doesn’t want you to think for yourself or question authority, no sir. He wants a bunch of dumb drones serving the rich and powerful.

Get out if you can. It’s a terrible state. If you can’t, or don’t want to, I wish you luck and hope you find a way to help change the state. 🍀

Joseph Heck

In the past couple of years, I’ve had the occasion to want to make an XCFramework – a bundle that’s used by Apple platforms to encapsulate binary frameworks or libraries – a couple of times.

I don’t know Joseph personally but I’ve interacted with him on the NetNewsWire Slack and Mastodon and he’s a really kind, thoughtful, selfless man. He’s given me feedback on Stream and Mac programming questions. All that to say he’s one of the good ones.

Anywho, this is a great piece on how he built an XCFramework with a Rust core. Rust has become the new, safe, language for creating highly performant software and being able to use it natively on iOS or Mac and integrate it right into Xcode is wonderful. 🧰

Cory Doctrow

Mobile tech is a duopoly run by two companies – Google and Apple – with a combined market cap of $3.5 trillion. Each company uses a combination of tech, law, contract and market power to force sellers to do commerce via an app, and each one extracts a massive commission on all in-app sales – 15-30%!

Duct Tape, fixer of all things!Web tools continue to improve to the point that native apps may become a thing of the past for many companies. Of course folks like me will continue to do native iOS, and hopefully Mac, apps for as long as we can, but the writing has been on the wall for a long time. Native apps are becoming less and less important with each passing day. Learn HTML, CSS, and JavaScript.

New York Times

Over the past year, we have seen a sweeping and ferocious attack on the rights and dignity of transgender people across the country.

A really great piece by Jamelle Bouie. Please, go read it if you can.

Me on SwiftUI list performance

Yours truly who accidentally started a conversation about SwiftUI List performance. Smooth, fast, stable, code is important to me and most developers. we do strive to make our apps the best they can be. I’m still learning, still trying, to make all my apps better each time I work on one. This conversation may change how I do Stream for Mac.

Tiny Apple Core

Confessions of an Old Developer

WillowTree Engineering

“One of the biggest reasons the title of “Staff Engineer” is so hard to wrap up in one quick explanation is because it entails such a wide scope. Over the course of my time as a Staff Engineer, I’ve had responsibilities that fall into all of the following categories at one time or another”

Brain in a jarUp until I became an Engineering Director I’d been a Senior Software Engineer since the early 2000’s, not long before Microsoft acquired Visio. I was so self conscious about the title change I asked that nobody talk about it. I didn’t tell anyone. Why? I was kind of embarrassed because I thought there was no way I could be a Senior Engineer amongst all the legendary Principal Engineers I worked with. At Visio a Principal Software Engineer was equivalent to what we call a Staff Software Engineer at WillowTree.

Fast forward to 2019 when I join WillowTree we had Staff Software Engineers and I had never actually heard the term. We also had Principal Software Engineers. The difference was a Staff focused on technical stuff and the Principal on managing folks and helping them grow.

Since then the Principal role changed name to Engineering Director. Same responsibilities, new title.

One of the things I found attractive about WillowTree was the dual track a Senior Software Engineer had the choice of taking when they promoted to the next level. I’d been thinking for quite a while I’d like to become more of a people manager and get out of day-to-day coding. To this day I still love writing code and building product. I fill that need today by building my own products. They’re small, digestible, apps I enjoyed building and maintaining, especially Stream.

Since I became an Engineering Director I’ve caught myself missing the day-to-day work of building a product. By that I mean doing the code. It’s a real transition to become a people and project manager instead of writing code. It’s taken time for me to really embrace the change and I’m finally started to settle into it.

A part of me wonders if I could be a Staff Engineer and I think I could. Staff folks tend to work on stuff around the edges, gluing all the various bits together, making sure the build pipeline gets setup and working, working with the client to decide architectures, third-party services, and overall strategy. They also tend to jump on big issues, bugs, and hop around technologies at will and pick them up quickly. In my experience at WillowTree they have the ear of our client.

AHHHHHH!My history tells me I have filled a lot of those roles, all of them in fact, but the thing that I feel would stop me from doing that job is speed. I’ve never been quick to make change. Yes, I can adapt, but I’m not one to do it overnight. I’m not what I’d label intelligent. I work really hard at what I do to make things soak into my brain. Over the course of my career I’ve outworked people. I don’t give up when I’m onto something. My lack of speed has always been, I believe, my biggest weakness.

That’s why the people manager track was so interesting to me. I knew it was time to get out of coding, I love mentoring, and it feels really great to see others grow in their career.

But I sure do love sitting in a quiet room building software and if I could work on my own projects all day, every day, I’d do it in a heartbeat. 😃

Saturday Morning Coffee

Espresso ShotI’ve had a head cold for the past week and my body is finally getting on top of it, finally. As a result I’m tired this morning and my brain is foggy and doesn’t want to do anything. Coffee to the rescue, I hope! ☕️

Hope you enjoy the links.

CNN

More than 23,000 people have been killed and tens of thousands injured after a magnitude 7.8 earthquake struck Turkey and Syria on Monday, officials said.

It’s been a very sad week for the people of Turkey and Syria. So many dead and wounded. I haven’t kept up with it like I normally would for such a tragedy. Why is that?

Thankfully people are still being rescued from the rubble. America needs to send help.

Arstechnica

According to The Register, Google and Mozilla have recently been spotted working on versions of Chromium and Firefox that use their normal Blink and Gecko rendering engines, respectively.

It doesn’t surprise me to hear Google and Mozilla have native browsers built for iOS. Why not, their code is very portable already, it makes sense.

Some competition on the platform would be good for Apple and consumers.

Colm Doyle

It’s hardly insightful to suggest that the last few years have substantially changed the day to day experience of a knowledge worker. Nearly overnight even the most remote skeptical leadership teams were forced to embrace flexible work practices like working from home.

At WillowTree our CEO, Tobias, is a huge proponent of working in the office full time. When COVID hit we were just getting ready to move into our newly renovated building at Woolen Mills, but that didn’t happen and everybody went remote.

Fast forward a year and a half later and WillowTree is making preparations to return to the office on a hybrid schedule. Then COVID spiked again so it was out on hold. Eventually a poll was taken, we do lots of polls at WillowTree, asking if folks preferred in office or work from home. Tobias himself was shocked to learn that over 20% of the company preferred it.

Things changed based on the poll and a team was created to that would allow anyone to work from anywhere. I’m part of that team and I love it. I’m grateful our leadership is open to big change. So far it’s been really amazing.

Facebook Engineering Blog

Facebook for iOS (FBiOS) is the oldest mobile codebase at Meta. Since the app was rewritten in 2012, it has been worked on by thousands of engineers and shipped to billions of users, and it can support hundreds of engineers iterating on it at a time.

If you’re a developer go read this piece. When folks think of mobile software they most likely think of toy sized apps like Stream, not a lot going on. Then you run into a beast of a codebase like Facebook and you realize mobile software is “real” bonafide software with real challenges.

Mike Masnick

In the past few decades, however, rather than building new protocols, the internet has grown up around controlled platforms that are privately owned.

This is a piece from 2019 and it holds up really well. He’s basically discussing what ActivityPub and Mastodon have become. A lot of the challenges around siloed social networks is around “free speech.” I put that in quotes because most folks think free speech is a free for all, anything goes, and you can’t ban me because I said something nasty or threatening to you. Of course a platform could ban you and it has nothing to do with free speech. Companies and individuals don’t have to take the abuse and can choose to ban you if they want. Mastodon has helped this in many ways. I run my own Mastodon server and it’s by invitation only so I know and trust the folks on it to maintain a certain decorum. I know they won’t be nasty or threatening and it’s self policing. We need more small instances with better community management.

Cloudflare

Today we’re introducing Wildebeest, an open-source, easy-to-deploy ActivityPub and Mastodon-compatible server built entirely on top of Cloudflare’s Supercloud.

I read through this post and I think it’s really wonderful to see addition ActivityPub based services come online. It’s an exciting time!

Cordi

About the tech experience on Mastodon. This is the last of three posts I have on Mastodon. I’ve been on the app for more than two months and have been content to ghost Twitter.

A nice series of posts about one persons experience with Mastodon. If you have friends fearful of joining they should go read this and see what someone else has experienced. Sure, it’s not Twitter, it’s even better, and it’s growing day by day.

Jack Dorsey believed Twitter should be open, not a silo. Mastodon and ActivityPub are delivering that vision. A central hub, controlled by a single corporation, is no longer in charge. The people are.

Digits to Dollars

After 30 years of dominance, the industry has come to come view Intel as a giant who has fallen on hard times. We do not think this is the right way to view the company, and it creates mental blind spots which hinder our ability to assess what are the right next steps for the company.

It’s hard to believe Intel is having so much trouble. They coasted for so long on their x86 architecture and still make a ton of money from it but the times they are a changing. Apple creating their own, much better, silicon must scare the pants off of Intel internally. They’re lucky Apple doesn’t care to sell their tech to any computer manufacturer. Imagine a Windows PC running on Apple Silicon. That would be glorious. 😃

Dave Rogers

What is somewhat more puzzling to me is the nature or character of the people who are attracted to this type. The toadies and sycophants, the enablers and lickspittles who compete for proximity to someone in power, someone in control.

I love reading Dave’s stuff. He’s an extremely kind, compassionate, man and a great writer. Unfortunately he lives in Florida and that state is full of looney birds, especially at the government level. Their Governor is is King Looney, a complete nutter, with fantasies of making Florida a totalitarian government run by him. His desire to control everything is exactly the opposite of a free nation and against everything our nation was founded on. He needs to go.

Dave, like many of us, can’t understand why people want this sort of strongman creating horrible policy in charge. Why would you want your rights squashed? You’re American, don’t you believe in freedom for all?

Tiny Apple Core