Something new and purdy just arrived! š
Iām stoked! I know what Iām doing tonight after everyone goes to bed. š



Something new and purdy just arrived! š
Iām stoked! I know what Iām doing tonight after everyone goes to bed. š



Some Hayseed, LLC, behind the scenes. š¤£
I operate my app empire under the name Hayseed and I have two products; RxCalc and Stream.
RxCalc is a Pharmacokinetics Calculator. Itās used to calculate how long drugs interact with the body. Go read about it. It is interesting.
My brother, Jerry, has a PharmD ā Doctor of Pharmacy ā and loves the more technical side of his profession, heās a total geek and Chemistry undergrad so of course he loves stuff like that.
We collaborated on it in 2009 because he needed it for work. I did the app and he did the math. We paired to get it coded up and we were approved for the store on July 4, 2009.
It hasnāt changed in years and could use an update to add a new way of doing calculations.
Stream is an RSS or Feed Reader.
I built Stream because I love blogging and use a feed reader to consume others blogs and news sites. One of these days Iāll ship Stream for Mac! š¤£
I wanted Stream to be slightly different and I loved my Twitter app, Twitterrific from the Iconfactory, so I decided Iād like to have a feed reader that worked in timeline form. So, Stream was born. It presents your feeds in reverse chronological order as youād see in Twitterrific. Posts from multiple sources are folded together so you can read casually. The initial release didnāt have a read/unread status but it was a highly requested feature so I added it.
Stream is FREE to use but if you like it youāre free to leave a tip. I appreciate every tip I receive. I have a feeling when I do get a tip itās from a friend, love yāall. ā¤ļø
I am grateful for any support I receive for my apps. Thank you. šš¼
The feed reader app market is very crowded and you can find excellent readers from multiple companies. Here are a couple I use.
Unread is a beautifully designed and darned useful app from Golden Hill Software. The iOS App sports a swipe driven user interface, beautiful type, a stellar reader, and my favorite feature, a read later view. Itās labeled as Favorites but you can save random articles to it to read later. I use it multiple times a day. I use the list I build to inform my Saturday Morning Coffee post.
Oh, it also has its own syncing system that is really good! Highly recommended.
Tapestry comes from the amazing folks at Iconfactory. Itās more than a feed reader and is highly customizable.
You can add your everyday RSS feeds but you can also add Mastodon, Bluesky, or Reddit feeds to name a few.
As ever, the UI is beautiful and thoughtful. I use it on occasion just to admire their work. Iconfactory is a shop that embodies what it means to design beautiful, usable, highly performant, and stable software for Mac and iOS.
It is updated at a rapid pace and is evolving to allow you to reply to posts from other services. Like I said, powerful!
Also, highly recommended.
Itāll be 1.7 in the store so I can sync the iOS and Mac versions. š
How close am I? Itās hard to say to be perfectly honest. One day Iāll just declare it good enough and Iāll boot it out the door.
I want to do a bit of work to the leftmost view in the app to make it into a sidebar and shrink up each item displayed there a bit. Thatāll mean some font size changes and probably change the size of the icon and tweak the middle column a bit. š¤£
Then again, maybe not? Iām just not sure I want to do it now.
I will definitely do a bit of visual cleanup. Iāve been tweaking it over time and itās getting closer. I think of the mess I had when I first got it wired together and itās come a long way.
Itās going to ship without Settings because I just want to get it done. No changing the number of days to keep feed items (it defaults to 30), no alternate icons, and no tip jar. My hope is to rework Settings in the iOS version and do it in SwiftUI so I can bring that work to the Mac. I do want to make it look like it belongs on the Mac, so itāll get tweaked for sure.
I am going to start doing all work in SwiftUI moving forward since itās āthe futureā of the platform and I need to take the plunge. Over time itās only going to get better.
One of the most disappointing things to me is the number of features and infrastructure changes Iād like to make. Some are mostly hidden ā like parsing the web page associated with the feed ā or adding some automation support. The list goes on and on. Oh, heck, sync is a huge one at the very top of the list. Then thereās support for other feed backends⦠ugh! I could go on forever. š¤£
One more thing. I think I’m going to have to pull the Read Later feature from the app if I want to get it out the door anytime soon. That’s going to require considerable work to parse web pages instead of just simple feeds. I have thoughts on it and once I get around to it I think it’ll turn out just fine, but it’s quite a bit of work to do right now.
Just some random thoughts on a Friday morning.
I fixed the issue with my Context Menuās not working. Totally stupid move by me ā I knew it would be. After my last coding session I changed a property to be āweakā because I thought it was retained somewhere else. Then I committed that change because I needed to pack up and get home. Mistake! That property needed to be retained because it was passed in and the caller created it to be handed off, it was NOT retained. What a rookie move on my part. š¤¦š»
Removed the āweakā last night and now it magically works. Oh, yeah, I also made another change. Instead of using a NIB to create the menu I did it in code and I just like that better. It was extremely straight forward and felt very natrual. Works great! š„³
Next, the app was approved for Testflight last night and Iāve already received some very good feedback! Thanks, John! (No weāre not competitors, Johnās Unread is far and away one of the best Mac and iOS feed readers on the market. Go get it and subscribe because his sync service is fantastic!)
Look, I know Stream for Mac isnāt going to be good for everyone and even some of my testers may look at it and say āThis is complete crap!ā But, it makes me happy working on it and Iām especially thrilled to be making my first Mac app.
Itās ok to be critical of it! Iād love to get your feedback, so if youāre using it, please share your opinion. If youād like to see a really rough beta, let me know (if youāre reading this youāll know how to find me!) and Iāll add you to the list!

This morning I decided to get TestFlight setup so I could start dropping alpha and beta versions of the app. It didnāt take long, which was really nice, and Iāve submitted a build for Apple to approve for testing. Iād imagine it will take some time to get through the gauntlet since itās the first version of Stream for Mac. Fingers crossed it doesnāt take long to get through. š¤š¼
Besides that I added a couple new menu items to the View menu and implemented them.
The first was View > Timeline which is meant to present Stream in its two pane layout with a stream of blog posts in the left column and the text of the post in the right pane. Iāve called it Timeline but I donāt like it. It feels backwards. When Timeline is selected the leftmost list of blogs is hidden so you get that two pane view instead of three. It feels backwards because when itās checked the blog list is hidden. I need to find a better way of presenting it. The functionality works just fine.
The other menu item is called Read/Unread Dots. I need a better name for this as well. What it does is hide or show the read/unread state dots. When I originally shipped stream I didnāt keep track of read state. It was meant to make viewing a more chill experience. I had a lot of folks reach out and ask me to add that read/unread state, so I did. Now I want a way to turn them off. This feature will make its way back to the iOS App as well, probably in a new menu item or as part of Settings. I need to think on it a bit.
Iād intended to do a bit more but as I was running through the UI testing random stuff I noticed the context menu for the blog list wasnāt working. It worked just fine last weekend but not today. š¤¬
I spent the remainder of my work time trying to understand what Iād done wrong. The actions were all hooked up, they just didnāt fire when a menu item was selected. I checked the NSMenuItem and it wasnāt nil and had all the menu items present. It just wonāt invoke the associated action.
Depending on how those table view cells are configured I will remove the menu by setting the new menu to nil, but thatās only for the All and Read Later items since the menu items donāt make sense for two things.
The other thing I did was delete my toolbar from the main NIB. I put it back later in the day but it did make me wonder if that change had something to do with my other menus not working. Yeah, itās a stretch since theyāre in separate NIB files. But I sure canāt explain how I broke it. š¤
Any tips from Mac AppKit experts would be appreciated. šš¼
Thatās all for today. It was a good start but that busted menu was a huge time sink and I donāt have an answer for it yet. Maybe I should see if Claude can fix it? š
Todayās progress on Stream for Mac felt great. I was able to replace the Collection View item in the Blog List ā leftmost column ā with a native NSCollectionViewItem, which was extremely straightforward.
I also added right mouse click menu support so you can do a few actions in your blog list; Mark All Read, Copy Feed Link, View Website, and Unsubscribe. All of the actions work as expected.
Cmd+A now selects the top most item in the list ā All ā and displays all items from all blogs in the middle column. You can, of course, select that item with the mouse and get the same results.
The middle column adds right mouse menu support for; Copy Link, Open, and Share⦠All actions work as expected.
Iām showing my hand a little bit with the item called āRead Later.ā š Yes, Iām adding an Share Sheet Action that will allow you to not only āSubscribe in Streamā to add a subscription from the blog youāre browsing but a new item will be called āRead Later in Streamā that will stash a reference to any site youāre browsing so you can check it out later. Hey, I really need that for myself! Itās how I collect notes for Saturday Morning Coffee. For now Iām using John Braytonās excellent Unread to do that for me. Stream needs that support so itās gonna get it. Both the Mac and iOS versions will have it.
I still have a lot of cleanup and tweaking to do. Mostly in the area of design. I have visual nicities to add and tightening some visual elements up to make my eye happy. Itās getting there.
Some things that need fixing. Selection of a blog item currently has black text and a blue highlight. The text needs to become white so you can read it easier. Iād also like to round the selection rectangle a bit and give it some inset so it doesnāt look so sharp. They currently look like you could cut yourself on them! Same for the middle column. Selection needs some help and that includes the same rounding and inset work. Using the app shouldnāt result in cuts.
I have some nagivation stuff to add ā like using the spacebar to advance an article and jump to the next one when you reach the bottom. Iāve already added vim J and K keys to havigate up and down the middle column. Iād like to be able to navigate the entire thing without taking your hands off of the keyboard. Need to add something for navigating the blog list with the keyboard, maybe D & F? Are there standards for that yet? Iāll see what other Feed Readers use.
I feel very close now. My current plan is to ship the first release without Settings, so no way to tip me. š I will add that support next. For now Iām just really excited to kick it out the door. I can build on what I have from there. Once it gets out there are things Iād like to do for the iOS version and Mac version that will be shared. I need better article parsing, I rely on what the RSS feed provides and if it doesnāt provide the full text of the article, I canāt display it. In the future the app will go to the article and parse the full text if allowed.
So little time, so many features Iād love to do!
LETāS GO!

I was able to make it to the coffee shop and work on Stream today. Iāve been revisiting how to construct a good AppKit cell view ā NSCellView ā that does exactly what I want. And I continue to fail.
Iāve tried using constructing a cell using a NIB. It didnāt work as Iād wanted it to and I could never get it right. I abandoned that attempt.
Next I tried doing it in code. I managed to get the same exact results. It didnāt resize properly. I abandoned it.
I decided I should do it in SwiftUI. It only took me an hour or so of tweaks to make it work exactly like I wanted! Yay! š„³
Next I had to get the little blue read/unread indicator working. I tried a lot of stuff but I couldnāt make it work driving it from an AppKit view (more on this later.)
So, I decided to give AppKit another try. This time using NSGridView in code. I wasnāt able to get the results I was after. So, you guessed it, I abandoned the attempt.
I thought Iād be clever and let Claude do it for me because Iām so darned hung up on it working as an AppKit cell.
I gave Claude a description of what I wanted, pointed it at the working SwiftUI version, told it to use my coding style, and turned it loose. At first glance I was surprised. What it built worked exactly like my AppKit versions. The date wasnāt pinned to the right of the cell view and things didnāt flow properly as I resized the cell. These are the exact same issues my hand built versions had. š³
I went back to Claude and explained what I wanted to change and why. It went to work and made some tweaks. I thought, this is it!
Nope. Not it. Still has the same issue. The code was tweaked but I got the exact same results. š³
I was puzzled to say the least.
At that point I was ready to declare I was a completely incompetent developer, throw my computer in a lake, and go hide away in the woods somewhere until I died.
I decided that was a little extreme and decided Iād go back to the working SwiftUI version.
Now, how do I actually get the darned blue read/unread dot to update properly?
I poked around at how Combine and SwiftUI work and how to properly expose and use a property when it updated. This time I went right to my model and made the very simple changes. Those worked as expected. š„³
Now, to be clear, Iād tried some combination of things prior to this attempt and they all failed. Why didnāt I do it this way to start with? Well, Iām dumb, and stubborn, and wanted it to work a certain way, so I kept trying to do it my way. Sure, I used Combine and @Publish and ObservableObject, and the other macro Iām forgetting at the moment, or some other combination of those.
This time I told myself āJust bite the bullet and do it exactly like the documentation says, donāt try to fit it into your model.ā
It works. Iām happy about it.
I stubbed out Command+click options on the cell and added some print statements just to make sure it did stuff. It did.
I packaged up my laptop and headed home. Now I sit here tying this up. Iāve been banging my head against a wall off and on since December of last year. I am an idiot and maybe I should quit?
Problem is, I really want to make this app. š
Time to hit publish and go mow the lawn, where Iāll think about my next steps for Stream for Mac. For the time being Iām freed of that burden I carried for so long.
Now I can do the features I need to ship the first release.
That is a good feeling. šš¼
Out of curiosity I just configured a new MacBook Air. Iām pretty sure itās the one Iād buy if I were in the market for a new laptop.
Hereās the configuration:
⢠15in.
⢠Sky Blue
⢠32GB Memory
⢠1TB SSD
⢠Included power adapter
⢠Yearly AppleCare+
Total price: $1,899
My work laptop is a 16in M2 MacBook Pro with 32GB memory and 1TB storage and itās a great computer. Fast and reliable.
The Air would definitely be enough horsepower for my app development.
When I finally kick Stream for Mac out the door itās going to have two modes of viewing feeda. The first will be the Classic Timeline View. Itās the reason I created Stream in the first place. I wanted something that felt like a social media timeline. A continuous stream of news in a unified timeline, flowing from newest to oldest. Itās a very simple concept and one I think some folks appreciate.
Hereās what the Timeline view will look like on the Mac.
The second view style will be Blog View ā at least I think thatās what Iāll call it? This view will be the view most folks associate with Feed Readers. It will have the three column, Mail like ā view with Blogs in the leftmost column, a list of Posts in the middle (the Timeline), and the Post Reader on the right side.
I need to put Thunder Chicken down for a bit and focus on Stream for Mac because I have a lot of work to build out before Iāll feel good about shipping it. š
MacBook Neo features a beautifully crafted aluminum design thatās built to last. With its soft, rounded corners, MacBook Neo looks elegant while feeling solid and comfortable to hold. At just 2.7 pounds, itās also easy to carry in a backpack or handbag. Bringing a fun touch of personality and style to everyday computing, MacBook Neo comes in a spectrum of four gorgeous colors: blush, indigo, silver, and citrus. These colors extend to the Magic Keyboard in lighter shades and new wallpapers, creating a cohesive design aesthetic and making MacBook Neo the most colorful MacBook yet.
I love the color choices! Iād go for the Citrus one myself. š
TL;DR - 8GB RAM is the only memory choice, max of 512GB of storage. In that configuration itās $699.00.
All-in-all a great low end Mac. šš¼
This would be a welcome UI change in macOS. I keep thinking about older operating system UIs and I miss that more chiseled look. Iāve also always loved the color versions of Mac icons and the angle theyāre drawn.
I think Iām just feeling nostalgic but Iād love to see a modern take on this older MacOS look.
Worked 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. š
And it seems retro in the worst way that weāre still using anything other than a scripting language for most of our code. We should be using something simple and light that can configure toolbars, handle networking callbacks, query databases, manage views, and so on. And maybe with a DSL for SwiftUI-like declarative UI.
Almost none of that code needs to be in a lower-level language like Swift or Objective-C. It really doesnāt. (I say this as a performance junkie!)
It could be in Ruby, Lua, Python, or JavaScript. Better still would be a new language invented specifically for the problem of writing apps, something designed to make the common challenges of app writing easier.
We did have this stuff decades ago. Not for app making in general, sure ā but now itās 25 years later, and a company like Apple could make this real for all its app makers.
Where to start? Letās start by saying I agree 100% with Brent. Having a built in scripting language with dynamic UI updating and easier ways to build code and UI would be absolutely incredible! And, like Brent says, Iād love to see Apple make this happen.
A hojillion years ago when I worked at Visio we had VBA (Visual Basic for Applications) integrated right into Visio. It was a fantastic way to build custom Add-Ons for Visio. You could embed your VBA solution right into your template or document so folks could invoke it right from the app. This allowed folks to make fancy automation to fit their particular need and do it in a high level scripting language that could control Visio in all kinds of ways! I loved it! I spent a lot of time working on Add-Ons to Visio in C and C++ but I used VBA to test things before implementing them as an Add-On ā Add-Ons had the advantage of being usable app wide.
Iām not sure how VBA is used in Visio today but before I left Microsoft had added a way to build your solution code into binary form so it could be signed before including it as a part of your solution package. It was such a marvelous development environment.
Now, if youāve ever used VBA in Visio, Excel, or Word you know exactly how powerful it is. Could you imagine having access to something like that within your Xcode dev environment that was fully integrated, or even supported like VBA in an application? Yes, itās a lot of work to make something like VBA work but it is so worth it.
Brent mentions Ruby, Lua, Python, and JavaScript as the scripting languages but I have to say Microsoftās Visual Basic for Applications is so much easier to understand and use than any of those languages and it was easy to open functionality to it using Microsoft COM, IDispatch specifically, in the app. I know, COM has a bad reputation for being difficult. Yes, like I said earlier, itās a LOT of work, but itās so worth it when you can open all that power to your users and yourself! Taking that to the next level, like Brentās talking about, would be a huge boon to Apple Platform Developers. AppKit, UIKit, SwiftUI, Objective-C, and Swift are still too deep to move quickly. If developers creating code for any of Appleās platforms ever took some time to use VBA theyād see what Iām talking about. The paradigm is a bit different than theyāre used to but, hell, I was so confused when I came to iOS development! Theyād get used it after a time.
Building UI and code behind VBA forms is so easy. Drag and drop a UI, double-click on the element youād like to add code for, and write your code. Thatās it. Itās that easy! I would totally embrace this idea for application development on Apple platforms.
You can build at a higher level today using awesome tools like Xojo that give you a very Visual Basic like experience complete with a drag-and-drop forms builder just like Visual Basic!
Psst, did you know that folks have been scripting applications for iOS, complete with dynamic UI updating, with React Native? Yeah, itās true! Iāve been working on an application like that for the last two years. Weāve almost completely rewritten the application in 100% React Native, which uses JavaScript as its backing language and a way to build UI in a very HTML/CSS manner. Think SwiftUI with web technologies. It works.
I know of many applications using Electron to deliver cross platform apps, like 1Password. They used Rust for mission critical code and put an Electron āfront endā on top of it. Microsoft has fully embraced React Native. They like it so much theyāre the primary maintainer of React Native for Windows!
Am I saying React Native is a perfect solution? Hell no! Itās a terrible developer experience in my opinion. Most folks use Visual Studio Code ā I prefer Nova myself ā as their editor and donāt have a nice debugger to fall back on. Nothing is integrated. Itās a bunch of tools losely hung together by duct tape that let you kind of see whatās happening in your app. Hey, if you think console.log is the height of debugging then this environment is for you! š¤£
In the end I, like Brent, would love to see a modern scripting environment thatās embedable or standalone that is fully supported by and used by Apple internally to create applications. The embedded environment is very enticing to me. Something like Visual Basic for stand alone development and Visual Basic for Applications for embedded scripting would be absolutely incredible!
Modern means easy to use UI builder and code behind that is a super simple language like BASIC and on top of it make it easy for third-parites to make extensions to the environment and provide code modules that give developers the power they need for specialized applications.
Look at Xojo. Thatās it. Apple, buy it and make a version thatās 100% built for your platforms and is embedable in applications.
Iā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. š
There 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.
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?
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.
I thought Iād sticker up my work MacBook Pro and after adding the centerpiece WillowTree sticker I stopped. It just looks so nice.
Federico Viticci ⢠MacStories
MacPad: How I Created the Hybrid Mac-iPad Laptop and Tablet That Apple Wonāt Make
I may call it a monster in the title but this is a fantastic idea for a device in my opinion. I love that it has both iPad and macOS operating systems and both chipsets. It is after all just an iPad bolted onto a MacBook Pro bottom.
I can see a little cottage industry springing from this. I envision a top cover that fits the laptop perfectly and includes an intelligent dock, or tray, for the iPad to slide into. That intelligent dock would also provide a way to plug directly into the back of the MacBook complete with a hinge so you could close it and it would look just like a laptop from another manufacturer.
The dock would also need a way to provide power and a USB-C connection so Sidecar wouldnāt require a network connection to operate. When docked the docking system would autodetect it and fire up a session into the Mac and display it. Iām not sure how that would work, but it would be amazing.
When detached you could close the lid and use it in clamshell mode, hooking up a full size display, keyboard, and mouse.
This is the perfect device. ā¤ļø
I 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. š
Good 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. š
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. š
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. š
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.š¤¬
In September 2004, the activity we called audioblogging was starting to gain traction.
Neat little story about how podcasting got its name. šš¼
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. š¤
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. šš¼
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.
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.
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.

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.
As 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. āļø
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. š
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.
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. šø
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. š¤š¼
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.
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. ā¤ļø
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. āš¼
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. š
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. š§°
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%!
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.
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.
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.

Iāve recently purchased MarsEdit 5 and itās really nice. Itās what Mac Experts would call a āMac assed Mac app.ā
Itās been a real labor of love for its longtime developer and caretaker, Daniel Jalkut, who continues to expertly tweak and polish each feature like the craftsman he is.
I didnāt purchase MarsEdit 4, but had been a happy MarsEdit 3 user for years. When version 4.0 shipped I thought Iād just use the web version of WordPress, and did, up until switching over to Micro.blog full time. When it came to Micro.blog I used the native clients and web versions and they served me just fine.
Iām also a listener of Core Intuition, Daniel and Mantonās wonderful Indie Developer podcast. Theyāve been talking about MarsEdit 5 for a while now and when it made it to the App Store I decided Iād purchase it for its new Markdown support, which has been my preferred way to compose blog posts for a while now.
Not long after downloading it I hooked it up to this very blog and created my first post with it. It detected I was using Micro.blog and prompted me to get an app token from Micro.blog. I did that and once I added the token to MarsEdit I was up and running. All of my blog posts pulled down and ready to edit.
The editor is smooth and fast. All of my categories were pulled down and listed on the right side of the post. It is very stable and it publishes posts really fast.
Daniel really cares about his craft and provides excellent customer support. Overall itās a keeper and a piece of software I can easily recommend if youāre a blogger who uses a Mac.
Of course there is one thing Iād like to see added. An iOS App as a compliment to the desktop app would be amazing. I do compose many blog posts on my iPhone because itās the computer I have with me all the time. Iām actually composing this post on my iPhone with Tot. Why? Because Iām chillinā on the couch having a beer and Iām too lazy to go get my laptop. š
MarsEdit 5.0 by Red Sweater Software lists for $59.95 and can be purchased directly from the Red Sweater website or the Mac App Store.
Good morning! Itās Christmas Eve ā for those who celebrate!
Look, Iām a native California boy. Itās mostly sunshine and warm weather year round. Sure weād get down in the high 20s overnight on rare occasion, but nothing like weāve experienced in Virginia this week. Itās been pretty darned frigid. The temperature at the moment is a balmy 8 degrees outside, with a feels like of -7. Thatās just wild!
Anywho, first cup of coffee is in the mug. Time to compose the post. āļø
Many people using PCalc on their shiny devices today don’t realise that the app has been around for a lot longer than they think. In some cases, a lot longer than they’ve been thinking.
Happy Birthday PCalc! š
Itās impressive to have an active 30 year run with a piece of software. Congratulations on 30 years and counting James Thomson!
By now, you probably know where this is going: yes, I wrote my own utility and call itĀ SimBuddy. Itās aĀ FREE downloadĀ from theĀ Iconfactory.
Craig Hockenberry is a long time Mac and iOS Developer. Heās best known as the creator of the first Twitter client, Twitterrific, but heās also developed many fun and useful apps for the Iconfactory.
If Apple gave out lifetime achievement awards, Craig would be deserving of one.
Thanks for another great development tool, Craig!
Well, yes. They did. They did it by making the single worst strategic mistake that any software company can make: They decided to rewrite the code from scratch.
This is an oldie-but-goodie. The Joel on Software piece above is from 2000 and touches on something that can destroy a company quicker than anything: rewriting software.
The article was brought up somewhere this week because Musk is reportedly looking to rewrite Twitter.
I mean, dang, dude! Maybe try to understand how all the things work together before jumping to that conclusion. A lot of cool stuff was happening before you blew the place up.
Randomly thinking back to my time at Apple.
— @taquitos@macaw.social the new Taquitos (@taquitos) December 5, 2022
In 2013 when the iOS side of iTunes U, Podcasts, App Store, and Remote were owned by a team of 7 engineers. Each app source in a different source control.
I was lead for iTunes U. I was told a few things by my new manager
1) Don't ...
Iāve been trying to stay away from linking to Twitter but I couldnāt resist this tweet because it captures something a lot of modern devs should hear.
Basically the tweet thread goes on to explain how broken Appleās development process was broken on a particular team.
Iām not saying alternate forms of development are necessarily bad but grinding devs into the ground is not good, at all. People need time to live, and sleep.
It’s not just Tesla investors who are at their wit’s end with CEO Elon Musk, who has been making a huge mess of his Twitter takeover.
Ah, yes, The Musk Effect. Heās dragging Tesla down with Twitter and Iām shocked the Tesla Board hasnāt fired him.
But, really, after all this, I cannot fathom how anyone can possibly get all that excited about joining yet another centralized social media site. Perhaps Iām biased (note: I am biased) because it was my frustration with the problems of these big, centralized social media services that made me write my Protocols, Not Platforms paper a few years ago. But, after all of that, the big question that kept coming up about it was āsure, but how would you get anyone to actually use it.ā
Hereās to the Open Web making a comeback! We now have Mastodon and Micro.blog to fill our Twitter mojo and both run on open standards like ActivityPub and RSS.
A friend asked what I think will happen to Twitter. Hereās my assessment
Nice little Mastodon thread from Dare sharing his thoughts on the Twitter mess.
You’d like to have time to code, but nobody else is onboarding the junior engineers, updating the roadmap, talking to the users, noticing the things that got dropped, asking questions on design documents, and making sure that everyone’s going roughly in the same direction.
This piece from Denice is required reading for any Software Developer. It explores the position know as Staff Engineer or Principle Engineer in many companies today.
At WillowTree was have a dual track for Software Developers after the Senior level; Staff Engineer or Associate Engineering Director.
I personally reached a point where I decided it was time to change direction and focus on building teams instead of coding, so I became an Associate Engineering Director.
It is interesting to note the Staff and Director positions overlap in significant ways but also have very unique traits. The Director position is a people management and team building position, the Staff position does deep dives into technology and can master just about anything.
Anywho, go read Deniseās piece, itās very good.
Like in the past years, I will try to answer a couple of questions: How many binaries are in iOS 16? Which programming languages are used to develop these apps? How many apps are written with Swift? What is the percentage of apps using SwiftUI versus UIKit?
I had to share this because I too find it interesting to know how much Apple is eating their own dog food when it comes to their developer technologies.
Swift seems to be making real inroads and SwiftUI (worst name ever) is starting to show itself.
Iāve been thinking about doing Stream for Mac with SwiftUI. It is the future of development on the Mac and iOS. All devs need to learn it at some point.
Newsrooms should not spin up instances for their reporters partially because this is too new to dedicate strapped staff to
Iāve been pushing the idea of news companies spinning up their own Mastodon servers. Dan does make a good point about not doing that. If Mastodon could be enhanced to export all posts to another instance I have a feeling Dan wouldnāt be as opposed to the idea. As it stands you can move instances but it only keeps your followers, you lose your posts. Thatās no bueno.
We want the field of journalism to take ownership of the ways stories are distributed and audiences are engaged.
With the most recent flight of users from Twitter Mr. Davidson spun up an instance of Mastodon for journalists. That was a brilliant idea and provides a bit of distance from the journalist to their organization. Itās a great alternative to news orgs spinning up their own.
There has never been any mystery about what happened on January 6, 2021. As Senator Mitch McConnell said at Trumpās second impeachment trial, āThereās no questionānoneāthat President Trump is practically and morally responsible for provoking the events of the day.ā
In many ways Iāve lost confidence in our Justice system because it treats the rich, politicians, and white people differently than everyone else. Combine more than one of those traits and youāre likely to walk away unscathed where someone who works at the coffee shop, is poor, and dark skinned is totally screwed.
Itās not right. TFG must be brought to Justice. Our system requires it if our democracy is to survive.
How to have a good internet experience in 8 easy steps
I usually avoid posts that include āstepsā or āX reasonsā because theyāre usually really bad click bait type articles. This one isnāt. Go check it out.
