Work Note: Stream for Mac

I was slow to start today. I wasn’t sure what I wanted to work on at first. It took me a couple hours to really get rolling.

So, what I did was fix a refresh bug that was bugging me. When I added a new blog the blog table view didn’t update. It took me a long time to decide how I wanted to fix it. I went through a bunch of ideas then I noticed that I’d already had some stuff in place that would allow me to fix it pretty quickly. Unfortunately it took me forever to get to that point. That’s now fixed. ✅

I had another bug that was really bugging me but I keep forgetting what it is until I run into it again. This week I decided to save the offending Atom feed into my collection of test feeds so I’d get it fixed. Bug exterminated. ✅

AHHHHHH!I have a small list of things to do before making a 1.0 release. Once I get those items completed I’ll put together a limited beta and collect some feedback. I need to do a lot of polishing. My tables flicker too much during updates because I reload everything and force the UI to render. Yeah, very heavy handed. If I can minimize the flicker I may ship it like that. Once the Mac version is out I can focus on catching it up to the iOS version and start adding new things to both at the same time. I have so much work ahead of me but that’s perfectly fine!

Work Note: Stream for Mac

Brain in a jarWorked on Stream for Mac today since we’re celebrating our granddaughters birthday tomorrow, should be a super good time. Looking forward to it.

So, today when I started I had to fix a couple of outlets in my Mac NIB for the main window. How this got busted I’ll never know but it was and it caused the app to crash at startup. I do this so rarely that I forget how to do it, so it sucked to have to start off that way. Fixed. ✅

Next thing on the fix it list was a bug I’d introduced three weeks back. When I’d refresh the blog list using a pull to refresh on the iOS build or Cmd+R for the Mac build it would make all the network requests and tell the view controller to do its thing, however I messed up my view model when I added the ability to filter down to single blog selection in the UI, whoops! That was a simple fix. ✅

I decided, with the time I had left, to add some keyboard support. Doing a Cmd+A will now select all feeds. I need to add an All item in the blog list so folks can click on it if they’d prefer to select to display all feed items for all blogs that way. Maybe next time.

I also added support for using the up and down arrows to navigate through the list of blogs or the list of feed items. That went together pretty quickly and I really like the results. Done. ✅

I’m going to add some vi support to the keyboard to do some navigating as well as making the space bar scroll the through the article you’re viewing or moving on to the next item once you reach the bottom of an article. Stuff like this are kind of table stakes in existing feed readers. Future addition.

Until next weekend I’ll have some new features to play with on my Mac. I’m tempted to start a TestFlight but it’s still so early days. Reach out if you’d like to try it now. It may crash and misbehave but it’s kind of fun to play with, if you can tolerate it. 😄

Work Note: Stream for Mac

More work on Stream for Mac today.

I renamed some stuff because I had Feed and FeedItem used in various places. A Feed represents the Blog’s RSS Feed information. A FeedItem is a single entry from an RSS feed for a particular feed.

Those are accurate names in my opinion but just glancing at them can be confusing in their use in the code. So, what I did was rename the table view BlogListTableView and the view model for it BlogViewModel. I also added new classes for table views called BlogItemCellView and BlogItemTableCellView. It made things a lot easier for me to read and understand. The base models of Feed and FeedItem remain as they were.

I finally got around to filling in the left side table view of the three columns. This is a simple list of blogs. I also added a little code to allow me to filter the list of feed items based on the selected row in the blog list. Simple, expected, stuff.

After doing that I adjusted the blog cell and feed item cell to use a different font for the blog title and feed item title. They look a lot better now. I also added some padding around the outer edge to space things out so they’re not all jammed together.

The final task was fetching and caching the favicon for each blog. That’s where I wrapped up for the day.

I can now display a list of blogs. By default all feed items display in the middle column. When you select an individual blog the middle column displays just the items for that blog. I still have to add a new top level item to the blog list to allow you to select All items, but not today.

Image of Stream for Mac

Stream Work Note

Red sock.Today I worked on some refactoring so I could support another column in the Mac version of stream and I migrated away from my singleton instance of the database because it just felt gross.🤮

That removes the only singleton in the app and I feel a lot better about it.

I’m splitting some functionality out of a view model and putting it into a different view model to better support the third column Stream will now have.

Yes, I’m adding a feed column. Stream for Mac is the only version that will have that extra column because it feels natural for the “Big Dog” app to have it.

I still plan on keeping the app extremely simple and will provide a Timeline Mode that hides the feed column so it behaves just like the Stream we’re accustomed to.

More to come. Today was a lot of infrastructure work and rebuilding the iOS to make sure it still works as expected.

The Mac version is in a bit of a busted state because I ran out of time today. But I’ll get it fixed ASAP. 😃

Until next week, take ‘er easy.

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