Insert the url of the feed you want to read here (e.g. https://news.google.com/news/rss/):
Or try one of the following: Ajaxian, BBC News, BBC China, Brent Simmons, CNN, Digg, Digital Point Forums, Flickr, Forex Events, Blog About Libraries, Google News, Harvard Law, Killer Startups, Movie Trailers, Poker Blog, Swimming, Yahoo! News
The fact that
DisposeBag is not a name in Apple’s Combine framework sparks joy. I was never, ever going to write code where that was a thing I had to read.
Thing you should know: Mark Boszko — my friend, co-worker, and producer of the The Omni Show — did a podcast called The Optical that dives into movie special effects, and it has some amazing guests such as Douglas Trumbull.
If you like movies, you should listen to these.
Seattle Xcoders Tonight: WWDC Topics 13 Jun 2019, 2:31 pm
The Xcoders meeting tonight should be pretty great — we’ve got a bunch of lightning talks on new stuff from WWDC.
It’s the Woodstock of today. In later years, more people will claim to have been at this meeting than could have fit in the room. :)
In the Sweet Setup’s review of iOS RSS readers from last May, there’s this sentence that I love: “It’s perhaps ironic that Google Reader helped popularize RSS, considering the sheer horror of its interface design.”
NetNewsWire CI, New Technote 13 Jun 2019, 1:09 am
We now have continuous integration set up for NetNewsWire. I didn’t need it for a long time, when it was just me — but now that we have multiple contributors, it’s important.
We’re doing the app and the separate frameworks (RSCore, RSParser, etc.) the app uses.
* * *
Most of my work, between now and shipping, is writing. Here’s a new technote: Why Reruns Happen.
* * *
We have had not one single crash report since 5.0a3 shipped. :)
(Yes, the app does have a crash catcher: no, we’re not relying on people finding the crash logs on disk and sending them in.)
NetNewsWire Contributing, Code of Conduct 12 Jun 2019, 1:20 am
I finally got around to two things NetNewsWire needed: 1) a page describing how to contribute, and 2) a code of conduct.
They’re both on the same CONTRIBUTING.md page.
If you’d like to contribute, the process is pretty straightforward. File a ticket, talk it over, write the code, do a pull request.
I don’t like too much process. This seems just right. That said, I’m still learning about how to manage an open source project, and any feedback on this (and anything else) is definitely welcome.
NetNewsWire Status 11 Jun 2019, 1:23 am
We just released NetNewsWire 5.0a3.
Almost all the current remaining work in the Beta milestone is writing — some tech notes and, most importantly, the Help book.
What will probably happen is that we’ll run out of coding to do while I’m still writing. Which is fine — it just means Maurice can go see how much we can use of SwiftUI in the iOS app. We want to go as all-in as possible (while still making a great app).
We’ll use SF Symbol too, of course. Probably Combine. All the things!
(Yes, we’ll be requiring iOS 13 for the iOS app.)
At any rate — the Mac app (minus documentation) is damn close to what’s going to ship. It’s just a matter of finding and fixing the last few bugs.
Maybe shipping in July? Fingers crossed. :)
Catalina compatibility tip: don’t use NSFont as a key in a Swift dictionary. I’m getting crashes from 10.15 users that include this message:
Fatal error: Duplicate keys of type ‘NSFont’ were found in a Dictionary. This usually means either that the type violates Hashable’s requirements, or that members of such a dictionary were mutated after insertion.
It’s quite possible this was always a bad idea, of course, and it’s just that in 10.15 it crashes. I don’t know.
NetNewsWire 5.1 Planning 9 Jun 2019, 7:05 pm
My job with NetNewsWire, more and more, is product manager. Which I don’t mind. :)
Anyway: I just combed through the issues list and picked out features for 5.1. I had a general idea of what I wanted going in, but it’s good to look at everything.
Here’s the list for 5.1:
- Feedly syncing
- Theme-able article view
- Localization — probably just French
- Text size settings for timeline and sidebar
- Catch up command (an easy way to mark-read before a chosen cutoff date)
Feedback is welcome, of course. Your ideas of what to do next might be different from mine.
Best place for feedback is on the Slack group, but Micro.blog, Twitter, and email are good too.
Short Stuff 9 Jun 2019, 3:47 pm
You may remember the early days of Blogger. Posts didn’t have titles, and they were often quite short — sometimes just a sentence and maybe a link. And these posts appeared on a person’s own blog, which could be hosted anywhere.
It was well-understood that blogging is provisional, is thinking-out-loud. It was the flow of life-on-the-web. Not everything was an essay.
When Twitter came along we collectively decided that this kind of thing was Twitter’s jurisdiction — that these are just tweets.
But why should we agree that Twitter, or any company, owns an entire form of writing for the web?
That’s why my short stuff appears here (and on my microblog) and then gets copied to Twitter. It belongs on the open web first.
Twitter is just another form of syndication. It’s not the home of my writing.
My Blogging Setup These Days 9 Jun 2019, 3:12 pm
A friend of mine asked me about my blogging setup. I figured I’d blog about it. Definitely skip this post if it’s not the kind of thing you’re interested in.
This blog, inessential.com, lives on an inexpensive shared host. It’s all static files, generated by wildcat. The posts are stored in a Git repository.
Posts from inessential.com are also picked up by my Micro.blog account, where they appear to people who follow me there. Micro.blog also forwards my inessential.com posts to Twitter, to my @brentsimmons account.
The Xcoders blog is owned by the Xcoders group; the Omni microblog is owned by Omni.
micro.inessential.com posts get forwarded to Twitter @brentsimmons. The NetNewsWire blog posts get forwarded to Twitter @netnewswire. The Xcoders blog posts get forwarded to Twitter @xcoders. The Omni microblog posts do not get forwarded.
I do all of my writing on a Mac. This is because I’m in front of a Mac when I’m working, whether it’s my day job or working on side projects.
(This is not a general comment on the suitability of iPad for work. It’s not there for me personally yet, but that’s fine. It’s making progress all the time, and I’m certainly encouraged by the news from WWDC on this front.)
How I decide what goes where
It’s pretty obvious, usually. Cat pictures go to the Omni microblog. :) Xcoders announcements go on the Xcoders blog; NetNewsWire announcements go on the NetNewsWire blog.
The one slightly tricky thing for my personal writing is deciding between my main blog and my microblog. Long things always go on my main blog. Very short things are also totally okay for my main blog — but they’re okay for my microblog too.
So, for short things, I just make a snap decision, go by feel, and try not to spend more than a second on the decision. Since I’m writing in MarsEdit, picking the destination blog is just a matter of selecting it from a pulldown menu in the compose window. (I can choose a destination, write the post, then change my mind about the destination before posting. Easy.)
I rarely just tweet something, unless it’s truly ephemeral (or a reply, obviously). I prefer to blog first and let Twitter get a copy. This is part of owning my own content.
NetNewsWire 5.0a2 is up!
Putting My World Back Together 8 Jun 2019, 6:42 pm
I have not watched WWDC videos so avidly, and with so much glee, in a decade. The last time was probably with the iPhone SDK.
And now I’m putting my world back together in my head, a little bit at a time. It’s going to take a while.
One thing you should not miss: the SwiftUI DSL is not some Apple-only magic. We can define our own DSLs in Swift 5.1. Imagine what more Apple can do with this, and imagine what you can do with this.
See the What’s New in Swift video. Also pay close attention to property wrappers.
One thing I keep wondering about — because my apps tend to be about databases — is the SwiftUI of Core Data. In my app I use value types for most things stored in the database, which Core Data doesn’t support. So this means a whole bunch of custom code.
I would love to have defined my model using a Swift DSL and used an engine that (like Core Data) stores my data in SQLite.
The NeXT Era Ends, the Swift Era Begins 7 Jun 2019, 6:56 pm
I’m surely not the only person to think, all week long, that this WWDC marks the end of Apple’s NeXT era and the beginning of the Swift era.
The NeXT era began, of course, when Apple acquired NeXT, with its Unix-based operating system, amazing developer tools and frameworks, and its CEO, Steve Jobs.
Cocoa was so much better for writing Mac apps than the Mac Toolbox was. The Mac Toolbox had been a revolution — but this was more than just incrementally better. (Cocoa is NeXT’s application frameworks that had been adapted and evolved for the Mac.)
A common refrain of Mac developers at the time was that Objective-C wasn’t nice at all to look at — but it was a wonderful language for the ways its underpinnings allowed for these powerful and easy-to-use frameworks.
It was mind-blowing. Don’t underestimate how much so.
And then, years later, Apple created UIKit, which was a modernized version of Cocoa for iPhone, with its small screen and touch interface. It was Cocoa for devices you carry around with you.
Also completely mind-blowing.
Fast-forward to now, and note that millions of apps have been written using this technology which was born at NeXT, then brought to Apple and pushed so very far forward.
Even if you’ve been writing mostly in Swift the last few years, you’re still writing in a NeXT context. Your apps still live in that world, whether you know it or not. Your apps are still Objective-C apps in a very real sense.
Then this week happened
Before WWDC there was plenty of talk about Catalyst (which we had been calling Marzipan) which is a way of bringing UIKit (iOS) apps to the Mac. And this was indeed part of the news of the week.
But the future was never about UIKit being a better version of what we already had for Macs. In some respects UIKit is better, in other ways not. It’s just that there are so many more iOS apps than Mac apps.
Though I don’t discount Catalyst’s usefulness — we will get lots of apps new to the Mac — the real news this week was about SwiftUI and the Combine framework. This, finally, is a new way of writing apps, and it’s based on Swift and not on Objective-C. It’s very much not from NeXT.
It’s early. It has bugs. It’s not nearly complete. Sure. But it’s also how we’re going to write apps in the future.
And it’s mind-blowing. Apple’s marketing for this year’s WWDC had it right.
It may be a while before you’re running apps that use SwiftUI and Combine (and who knows what else still to come). We’re in a transition, and transitions take years. But we’ve all just had a glimpse of the next 20 years.
WWDC 2019 First Words, Which I May End Up Eating Later, but Hopefully Not 7 Jun 2019, 1:14 pm
SwiftUI is the future of app-making for our community.
UIKit for Mac (Catalyst) is a lateral move. I’m sure this will be super useful for a lot of developers, though not for me personally (since I don’t have an iOS app to move to the Mac).
But AppKit and UIKit both look like old news compared to SwiftUI and the Combine framework.
* * *
I’m not going to start using SwiftUI right away in NetNewsWire for Mac — NetNewsWire 5.0 is too close to shipping. We’re fixing bugs, and that’s it.
But we do plan to use it in NetNewsWire for iOS, since it’s not as far along as the Mac version. Obviously I’ll have more to say about SwiftUI as we learn more about it.
Could we eventually get to that place where the Mac and iOS version share UI code via SwiftUI? It looks promising! I would love that.
* * *
The future of app-making looks more and more like web development. Declarative. Semantic. Dynamic — adapting to context (interaction styles, accessibility settings, screen size, etc.). Runtime-editable.
SwiftUI and Combine can also be seen as an answer to Electron and React Native. The right answer for Apple, I think.
* * *
I’m way behind on videos. I’ve seen just a little bit so far. So much to learn! This was a big WWDC.
The Best Thing About WWDC 1 Jun 2019, 1:17 am
I used to think that the secret of happiness is that, when you show up at [whatever], people are happy to see you.
Which is great! It truly is. No question. When people see you, and they’re glad, it’s so great. It is.
But years on I figured out the real secret: what’s even better is that when they show up, you’re happy to see them, and you show it.
That’s the real secret to happiness.
Remember that at WWDC. :)
NetNewsWire Alpha One 1 Jun 2019, 12:35 am
After five years of work — including getting the name NetNewsWire back, and a beautiful new app icon by Brad Ellis — NetNewsWire 5 has finally hit the alpha stage.
This was the very first milestone to hit in the bug tracker. No other milestone will take years to achieve. But I did it — and, way more importantly, we did it. I did a bunch of foundational work, but then folks like Maurice Parker, Daniel Jalkut, Olof Hellman, and others totally stepped up and made huge contributions.
* * *
When we (NewsGator, at the time) sold NetNewsWire to Black Pixel, I described working on NetNewsWire as the thrill of my career. I loved every minute. I loved talking to every NetNewsWire customer who wrote in. I loved everybody who helped test, and everybody who helped me think things through.
And now I’m at it again. Only this time it’s open source, and there are people willing and able to help actually write it. And there are people writing in again, via email and via the Slack group — and this is already better. A bigger thrill.
I’m in my 50s now. When NetNewsWire 1.0 shipped, I was 35. Did I think things could get better with age? Nope!
I’m so glad to be wrong. :)
* * *
How fortunate am I! Today is the day NetNewsWire 5.0 alpha one goes out — and it’s NetNewsWire, not something else, and it has a NetNewsWire icon.
And my Bendii Syndrome has taken me over entirely.
NetNewsWire Meetup at WWDC 26 May 2019, 2:41 pm
Find me at the Fairmont hotel lobby bar at 4 pm on Monday (June 3).
I don’t expect a large group — not like the Micro.blog meetup or Automators meetup. So I think we can keep it simple and just meet there in the hotel. (It’s a pretty big lobby.)
NetNewsWire 5.0d17: Feature Complete 25 May 2019, 3:25 pm
NetNewsWire isn’t in alpha just yet, but, with the addition of syncing with FeedBin, it is feature-complete.
Here are the change notes for this release.
Many thanks go to Maurice Parker, a major NetNewsWire contributor, for writing the syncing system.
This is a major milestone! I can see shipping from here. I’ve been working on this thing for years, and it feels great to be getting close.
We’re testing and filing and fixing bugs. Brad Ellis is working on a new app icon.
We’ve just started working on the Help book, which will live online.
We haven’t thought that much about the product page yet, but we’ll have to make that a real marketing page while still retaining — hopefully enhancing! — the spirit of the app.
The iOS app is surprisingly far along. At some point, hopefully this summer, we’ll get that into TestFlight.
And, of course, after NetNewsWire 5.0 will come 5.0.1, 5.1, and so on. There are lots of things still to do. NetNewsWire 5.0 will be the foundation, not the end.
PS If you want to help test, write code or documentation, or just help us think things through, please consider joining the Slack group.
Toolbars Without Button Titles 23 May 2019, 4:23 pm
Michael Tsai, in Mac Toolbar Labels and Accessibility, mentions that he considers showing buttons and button titles, at least as an option, preferable to icon-only.
Two things to know about this:
- VoiceOver can still read the button titles
- The buttons display tooltips on mouseover
In other words, it’s still possible to read the titles, and it’s still accessible in at least one important way. However, the titles are not as easily discoverable, and it’s difficult for people who have trouble picking out shapes or associating them with meanings.
Here’s the thing: title-less windows don’t give us the option of showing button titles. No window title, no button titles. I assume most developers would like to be able to offer the option of showing button titles — but they can’t if they also want to use a title-less window. (This is an AppKit thing.)
Title-less windows often make sense for non-document-based apps. Michael mentions MarsEdit, OmniFocus, and ReadKit — and he could have mentioned NetNewsWire too, which uses this style.
* * *
There’s a hugely important aspect to this: developers follow Apple’s lead when it comes to app design. I’m trying to find Apple apps that allow for buttons and titles, and all I’ve found so far is Mail and the iWork apps. (The iWork apps are document-based, which means their windows need titles.)
Some Apple apps with unlabeled buttons include Safari, Calendar, Dictionary, Font Book, iTunes, Xcode, Maps, News, Notes, System Preferences, and Photos.
This is how the platform rolls these days.
* * *
In fact, lots of Apple apps — and third-party apps — don’t even have configurable toolbars at all. This is a shame. At least with Safari — and the apps Michael mentions, and NetNewsWire — you can rearrange items to your liking, and choose the items you want to see.
Because toolbar customization is part of AppKit, it requires less code than writing your own fixed toolbar. And it’s an easy customization win for your users.
If your designer doesn’t like it, then tell them they need to understand Macs and Mac users better.
* * *
I’d bet that Mail in the next MacOS release will have unlabeled toolbar buttons.
Still Fearing the Reaper 22 May 2019, 4:26 pm
Steve Troughton-Smith writes a lovely article (Don’t Fear) The Reaper — but I still fear the reaper. I do.
Steve’s point is that the Mac has been through transitions before. A transition takes time, and we don’t necessarily know exactly how it will end up, but it ends up marvelously.
I completely agree about the past: Mac OS X was a thrilling fusion of the classic Mac experience and NEXTSTEP, with a whole bunch of new stuff added.
I loved it.
I started writing NetNewsWire, a Cocoa app, during the 10.1 days, even though I had been a classic Mac developer. I had no interest in Carbon — because Cocoa was an amazing framework, so far ahead of what we had on the Mac before.
It was incredible. It‘s still incredible.
So, knowing how this has worked out in the past, why do I fear the reaper?
Because bringing UIKit brings no new power. If anything, it subtracts power. UIKit apps — at least so far — are all sandboxed and available only via the App Store. They don’t offer everything AppKit offers.
And, to make things worse, it’s reasonable to be somewhat skeptical of Apple leadership’s understanding of the platform. Daring Fireball quotes a source at Apple as saying they had “taken their eye off the ball on Mac.”
Getting the Mac OS X transition right was a priority for the company: if it failed, the company would fail. But with this? Not the same story at all.
* * *
I will be delighted — and relieved, and singing hosannas — when it turns out I was wrong to fear the reaper. I hope so very badly that I’m wasting my time with my worries. I know what Apple is capable of — I just need to see it.
I love this. This is a page that would never appear as a category on the App Store — and yet it’s an important category.
And it’s a reminder that we can create things that don’t appear on Twitter, Facebook, or Medium. Putting up a website isn’t hard. And it’s fun! Plus you get to do it exactly how you want to do it.
The site has a repo on GitHub, where you can file bugs and feature requests or make pull requests.
Do yourself a favor and bookmark the site. :)
I’m currently testing FeedBin syncing in NetNewsWire, and just filed issue #666. Hell yes!
I’m so looking forward to LIVE near WWDC — not just because it’s fun, but because the App Camp for Girls folks deserve a huge round of applause and a big party!
And, of course, we want to support their ongoing mission, even if doesn’t include summer camps.
Is it true that UISplitViewController doesn’t support three panes?
If so, then what I want from WWDC is three-pane support. Bigger iPads these days need it.
Fiery Feeds is looking pretty damn good!
Slack has a new thing — I think it’s new, anyway — where you can have a page where people can sign up to get an invitation. No longer a need to run your own thing.
Here’s a link for signing up for the NetNewsWire Slack group.
ScriptWeb for iOS found: it’s Automation Orchard. :)
Here’s what’s cool for me: normally I’d be stressing right now about a talk to give during WWDC — at AltConf or SwiftBy or somewhere — but I’ve retired from doing talks. It’s so nice not to be stressing!
ScriptWeb for iOS Should Be a Thing 14 May 2019, 4:56 pm
Back in the ’90s and early 2000s — before we forgot how easy and fun it is to code up a little site and put it up on the web — people used to make sites for the communities they were in.
It was like: “I know! Let’s put up a page! It will link to all the cool resources somebody interested in __ would learn from. We’ll update it now and again when there’s new stuff.”
Key point: it’s not a blog. It’s a directory, and often a single-page site. (There might be a few bullet points under a “What’s New” section, though.)
The best example that I know of was ScriptWeb — which still exists, though it’s no longer updated. It was all about Mac scripting, back in the early days of AppleScript, in the days of UserLand Frontier and MacPerl and HyperCard.
ScriptWeb was great. I started off my career as a scripter, and I went to ScriptWeb all the damn time.
So… where’s the ScriptWeb for iOS automation? I’m not going to do it, but somebody should!
* * *
If I were doing one of these sites these days, I’d store the source on GitHub, so that people could see revisions, and, most importantly, be able to make pull requests and file bugs for things they think should be added.
In other words: let the community help with the site. It shouldn’t be a big time commitment.
NewsWave developer writes about his new app, including the principles behind the app and how he decided on the business model.