BiteofanApple Archive About Apps Microblog Photos Links
by Brian Schrader Maintainer Steps Away

Posted on Thu, 15 Nov 2018 at 09:20 PM

Michael Morris (11/9/2018 - Textual Newsletter):

It is with a heavy heart that I must announce that I will be stepping down as the only full time maintainer of Textual. Textual isn't as profitable as it used to be... [and] I do not see it recovering to the point I can continue doing it full time...

I also must step down because I am burnt out from doing the same thing for the past 8+ years... Textual will not disappear from the Earth completely. I still have plans to do infrequent small improvements though I can't make any promises when and what those will contain.

I'm really bummed to hear that Michael is stepping away from Textual and even more-so because it's partially for financial reasons. I've been a Textual customer for years now and I love the app; I plan to continue using it as long as it runs on my Mac.

Developing indie-software is difficult and 8+ years is a really good run. I wish him the best with his next project.

Textual IRC →

Mastodon and Microblogging

Posted on Sat, 10 Nov 2018 at 12:04 AM

Manton Reece:

We’re launching 2 major features today:

  • can now cross-post to a Mastodon user account, in the same way we cross-post to Twitter, Facebook, Medium, and LinkedIn. This takes a copy of your blog posts and sends them to a specified Mastodon account.

  • Your custom domain on can now be ActivityPub-compatible, so that you can follow and reply to Mastodon users directly on This also means someone can follow your blog posts by adding on Mastodon. (This username is configurable. Mine is

Really excited to see Mastodon integrations in and congrats to Manton on launching such a huge feature. His attention to detail is really appreciated. Here's just one example of it in action:

Muting in has been expanded to support muting individual Mastodon users, or entire Mastodon instances based on their domain name. We have also preloaded a common list of Mastodon instances that are muted automatically because of code of conduct violations.

Manton is very careful and deliberate about the design of features and this is, of course, no exception.

Coincidentally, I've had Mastodon integration on the list of features for a long time and I can't wait to get there.

Code Lasts Whether You Know it or Not

Posted on Sun, 04 Nov 2018 at 06:52 PM

When I first wrote the code to generate this site, and the 4 other times I've rewritten it before settling on the current implementation, I don't know if I thought I'd still be blogging, let alone still relying on that code over six years later. To its credit, the code still works well, the last time I touched it was to upgrade to Python 3 in 2016 to get full unicode support 🎉, and back in July to fix a bug with JSONFeed dates, but in 2018 it's definitely showing its age.

A pile of mostly undocumented bash and Python scripts and a bunch of fragile Python path hacks have allowed me to write these words and so many more over the past 6 years. To this day the site doesn't have a real archive page where posts are collected by year or month, it's just a giant, single page list of articles. Back when I wrote it, I didn't think I'd have enough posts to ever need that, or that if I did, I'd cross that bridge then. I didn't. I've swept it under the rug as a nice-to-have feature for years, and honestly if it became an issue, I'd probably just move to a real system like Jekyll or Wordpress; it'd be so much easier.

I'm reminded of something I saw on Twitter the other day:

An example of some old code that lives on

The code we write exists for as long as it's being used.

Recommendations, Echo Chambers, and

Posted on Sun, 04 Nov 2018 at 06:16 PM

In my last post I laid out three main problems that the blogging ecosystem has when competing with social networking sites. I also mentioned that aims to solve all three of them at once.

  • has a chronological, Twitter-like, unified timeline of posts from sites you follow.
  • You can easily connect your Wordpress blog with and post to your site from within the app or the website.
  • The directory makes it easy to browse and search for other sites to follow, and is free for anyone to use regardless of whether they use or not.

In addition to search, most social networks have some sort of recommendation system that gives users suggestions for new people, sites, or channels to follow. Recommendation systems are notoriously difficult to make well, and even "good" ones are now being heavily scrutinized for causing the isolated echo chambers you find on most social networks. If blogging and feed readers are to make a comeback, then they have to have an answer to the search and recommendation systems that all social networks have. has one of those: Search.

Traditionally, social networks rely on a recommendation system where some sort of machine learning algorithm looks at your interests and recommends things to you, but recommendation engines are often the source of the echo chamber trap that most users find themselves in. Apps and services like Overcast use a pretty simple recommendation engine that simply shows you podcasts and episodes that your Twitter friends have recommended. While is probably the most conservative about shelling out recommendations: their discover page is manually curated according to their community guidelines. This has the added benefit of being able to really control what kind of stuff gets promoted on the site, but it can be difficult to scale and it can't easily give users personalized recommendations.

How present the recommendations are also changes their effectiveness. Overcast and strategically place their recommendations in spots you'd only see if you were already looking for new stuff to follow, rather than omnipresently in the home feed or in banners on the side.

All of those systems have problems; all systems do. I don't want to have yet another echo chamber system, and I also want to promote oft-neglected forms of content like local news outlets and investigative journalism. This leaves me with a hybrid approach between editorial curation and Overcast's friend-based recommendations. I'm pretty far off from building this system now, but when I do get to it, I want to make sure I've thought about the consequences first.

Blogging has an Image Problem

Posted on Sat, 03 Nov 2018 at 12:02 AM

I've asked a few people recently about the differences between services like Facebook, Twitter, Instagram and traditional blogs. The answers are almost entirely conventional not technical, and this leads me to what I think is a big reason why blogging has receded in recent years: blogging has an image problem. It's supposed to be for everyone, but lots of people, who are sometimes extremely active on social media sites, are hesitant to start a blog.

From a technical standpoint, the combination of a blog (that supports WebMentions and/or ActivityPub) and a good Feed Reader can provide nearly all of the features people require from a modern social network (a combination that aims to provide). The technology exists, but to get started with blogging is still too complex. On Facebook or Twitter you can sign up and be posting in minutes, you can easily find other things to follow, and you can easily see what others are saying. Typical Feed Readers solve only one of these problems. You can follow other sites, but you can't post to your own, and you can't easily discover new sites to follow. Having a blog then means that you have to switch from reading a post in one app, to posting to your own blog in another, which makes blogging feel arcane and clunky. And even with both a good reader and a blog, it's still fairly difficult to find interesting things to follow. is my attempt to solve all three of these issues at once and make reading blogs and blogging on your own site just as easy as browsing your timeline and posting to Twitter.

Feed Readers and Local News

Posted on Fri, 19 Oct 2018 at 06:58 PM

Interest in local news outlets has been declining over time. Bigger, flashier news outlets with more resources can attract more users and more traffic. But local news provides so much valuable information to the people living in the communities they serve and arguably this news generally effects reader's lives more than national news.

I've been thinking a lot lately about how can help promote local news. Adding individual sections for each "locale" is obviously untenable since the directory is manually curated, but simply tagging a site as a "reputable local news outlet" might be enough. The issue then is deciding what reputable", "local", and "news outlet" mean from the outside. 1.2 is Out!

Posted on Wed, 17 Oct 2018 at 05:10 AM

The wait is over: v1.2 is out! This update has been steeping for a while now, and I hope you all like it. Along with a ton of iOS features (listed below), I've also given the site a makeover, added a demo video, added a 7-day free trial for new users, included a lot more info about how works and how to use it, as well as quite a few little web UI enhancements.

New Features

  • New Discover/Search tab allows you to find and follow new people and sites directly from the app!
  • New Profile tab shows you which sites/people you've recommended and which ones you follow.
  • Search for any site in the Pine Directory right from the app.
  • Post to your own site from the app!
  • Follow and Unfollow Sites directly from the app.
  • Follow sites using a URL from the app!
  • In-App Notifications now give you more feedback about what's going on in the app.
  • Added a way to report bugs right from the app (RIP inbox).


  • Images are front and center now
  • You can now browse your entire favorites history.
  • Scrolling the timeline is much smoother
  • Adds Haptic Feedback to lots of buttons for a more responsive feeling interface
  • Fonts are crisper, cleaner, and more readable


  • Fixes a bug where the app could crash in the background which would stop it from preloading new items
  • Fixes a bug with the Done button and swipe gesture in the article web view
  • Lots of other minor fixes

If you're using and like it, please tell your friends, and if you've never heard of it, check it out! →

The Scope Creep is Real

Posted on Sat, 06 Oct 2018 at 08:34 PM

With development on v1.2 wrapping up, and a releasable version in sight, I've been thinking about why this version has taken so much longer than the previous two. My answer in short: I kept adding features. 1.2 is a huge update, and it was intended to be, but as time went on it kept getting bigger mostly because I kept wanting "just one more feature". On the web side, I've improved the performance, finished most of the groundwork for the public API, added lots of tests to ensure I'm not accidentally breaking things, and added a 7-day free trial for new users. On the iOS side I've added the ability to follow and unfollow sites directly from the app, recommend sites to other users, browse a site's previous posts, you can now post to your own site, and there's a new Search/Discover tab with a browsable directory of new and interesting sites to follow. All in all, version 1.2 has probably 2-3 times as many features as the 1.1 version does, and I can say that v1.2 is at a point now where it has most of the features I originally envisioned for

With all that though, I'm not sure if it's a better strategy to release a steady stream of minor updates or hold things back for a few big releases every couple months. The same work gets done, but the steady stream means that more features would be released sooner instead of being held back for a major release. On the flip side though, its a lot harder to promote and get people excited about a minor release than a major one. And even if one approach is better than the other, I'll probably still find myself tacking on "just one more thing" into every release (I guess the hard part is limiting myself to just one "just one more thing").

Regardless, I'm super excited to get v1.2 out into the world, so keep a weather eye on the horizon.

Pine v1.1 is Out & A Special Moment

Posted on Fri, 13 Jul 2018 at 06:33 PM

Pine v1.1 for iOS is out today! This release ended up being a bit smaller than I'd originally intended, but it has enough fixes and improvements that I didn't want to sit on it any longer. Along with a few bug fixes and performance enhancements, Version 1.1 adds a couple of really cool features:

  • Images now show up in a beautiful slideshow in the timeline, rather than just in the full post view.
  • Siri can now read the contents of an article to you, which is really nice for keeping up with the news on a walk or ride.
  • If a feed doesn't specify an image, Pine will grab the site's App Icon, or Favicon to show instead.
  • Fixes a nasty issue that would cause scrolling to be really choppy.

Sign up for a subscription to start using the app today!

Pine Joins the Wall of Apps

On an episode of ATP years back, Marco Arment mentioned that he gets prints of his app icons made in order to have a physical reminder of what he's built. I really liked this idea, so for the last couple of years I've done the same thing, and last week, my Fracture of the Pine iOS app icon arrived and is now on my wall.

I think this is my favorite print so far. The colors are stunning.

To paraphrase Marco: Software Developers spend hundreds of hours building a thing that can affect hundreds (or thousands) of people, but since it's software, you can't touch it or take a picture of you in front of it like you can with a bridge or something.

Pine joins Adventurer's Codex and MyGeneRank as the third app I've built (or had a big hand in building).

When you build and ship software, there's no tacky trophy, no photo of the ribbon cutting, or blueprints of the structure; nothing you can easily take home and keep as a reminder. Having physical prints (and especially Fracture prints) of your app icons is a nice little momento of all of the effort and time you spent to make a thing.

On the Future of Social Media

Posted on Wed, 11 Jul 2018 at 01:40 AM

I just finished the newest episode of the Ezra Klein Show with Jaron Lanier. Jaron spends a good portion of the episode talking about how the systems we've built into the internet, and social media specifically, have really had a negative effect on civil discourse.

One question Ezra brought up really struck me:

If you were building, or you were redesigning a social network that would call forth our better selves... what do you think would be the parameters of that? What rules would you set such that it would urge us to be a better version of ourselves, not a worse version?

Their discussion really resonated with me. Jaron mentioned that he thinks that the algorithmic nature of today's social media and the algorithms used in advertising are both large causes of a lot of the strife we see online. He argues that how we measure engagement (clicks, posts, activity, etc) allows the most impassioned people (and often the most hateful) to drive the conversation.

I've been thinking a lot about what makes good social media recently because of Pine. I think that a new generation of social media will revolve around the principles that users have control over what they see, that they own the content they post, and that no one person or company controls all the ways they see the world. I think that, combined, these changes make social media better for us all.

It's a really good episode; highly recommended.

Jaron Lanier’s case for deleting social media right now →



Creative Commons License