Tools for Online Speech logo
by Jacob O'Bryant

I'm resurrecting the Discourse forum

Welcome to my (weekly? monthly? whenever-I-feel-like-it-ly?) newsletter about improving the information environment. I'm Jacob O'Bryant.

For a few months back in '22, I was running a Discourse forum as a sidekick to this newsletter. I ended up switching over to Discord because I discovered they had released forum channels, which gave me the structure I liked from Discourse without feeling quite as heavyweight. So I backed up my Discourse instance and shut it down.

I have now brought the old forum back to life and have spiffed it up a bit. The main reason is that I’ve been thinking about how to keep up a regular writing habit now that I have a job, and I think Discourse fits with that better. I don’t want to commit to sitting down for two hours each week to write up the newsletter, so instead my plan is to post in small chunks to the forum throughout the week. Sending my newsletter(s)* will become a mechanical process: copy and paste stuff from the forum, do a little formatting, hit send. At some point I could automate it, maybe.

*This forum will double as a community for Biff in addition to Tools for Online Speech—it’d be fun to get a bit more overlap going there.

I could have done a similar process while still posting to Discord instead of here, but, if the forum is to become so central to my publishing flow, I’d really like to have the posts be public—an aspect of Discord about which I have complained many times. With Discourse, I can include in the newsletter below each copied-and-pasted post a “View discussion” link which will let you actually see the comments without being signed in already. It’s a tiny yet crucial thing, and the fact that Discord doesn’t handle that use-case is a testament to the fact that it really was not designed to be used the way I wanted to use it.

Another cool thing about Discourse is that they’ve added real-time chat! Discord is becoming Discourse and Discourse is becoming Discord…

Discussion >>

Yakread latest features and roadmap

I made a few tweaks to Yakread a month or so ago:

  • The “For You”/“In case you missed it” algorithm now takes your pinned subs into account. If you pin subs on the subscriptions page, they get boosted substantially in the algorithm.
  • Made some improvements to Yakread’s feed parsing so that it works with Mastodon RSS feeds.
  • Improved the unsubscribe feature/flow so that it can handle all newsletters, not just ones that support automatic unsubscribe.

Next on the docket:

Open-sourcing the codebase. I’d like to get this out of the way before I move on to adding more features. The codebase won’t be polished or anything, but I’ll at least have instructions so potential contributors can run it locally and deploy it. It will likely require some code work as well, like cleaning up/nuking the commit history (ahem) and making sure I’m not hardcoding “” anywhere.

Dark mode! And typography settings. Font size at least.

Better experience for short-form/high-frequency RSS feeds (like Mastodon feeds). I’d like to batch the posts in some way, but there are some implementation details to figure out. I’ll also be able to easily add support for Substack Notes and even Twitter, thanks to Hopefully Substack gets their act together and adds native RSS support at some point.

Tags for subscriptions and bookmarks, so you can organize them by topic. I’ll probably also add a filter to the For You page so you can view algorithmically-selected posts from a particular tag. Maybe let you choose how much each tag should be weighted, e.g. “50% of my feed should be content tagged as ‘butterflies’, 30% should be …”

Discussion >>

Open source as software dev career prep

Someone solicited some advice from me recently on the topic of how to pivot into a career as a software developer and I wrote up a fairly verbose email response. The main suggestion I gave was to spend time tinkering with an open-source project, in addition to working on your own projects and whatever else you might be doing to learn programming. I thought it’d be worthwhile to rewrite that up here.

First is a caveat: I’ve never pivoted into a software dev career; it’s the career I’ve started with. The best advice will probably come from people who have had personal experience making the pivot. My advice will tend to lean more towards “what will help you prepare to do the work of a software engineer” and less towards “how do you get a first job as a software engineer without a CS degree.” The two questions have some overlap, but how much, I don’t know.

Back to open source. In my experience, the most significant difference between coding on your own and coding in a job is that in the latter, you have to learn a pre-existing codebase. At least in the first few months, it’s normal in my experience to spend the vast majority of your time studying the existing code and learning how it works. After many hours of that, you write 20 lines of code, then repeat.

Tinkering with open-source projects is a great complement to working on your own projects because it gives you experience in working with someone else’s codebase. You don’t even have to submit your changes back to the project; you can just mess around at first. As a start for one of my projects, one time I took an open-source Android music player and modified it so that if you hit the skip button within the first 30 seconds of a song, the next song would be the theme song for Bill Nye the Science Guy.

After doing some of that, if you are able to start writing pull requests that get accepted into open-source projects, that will be even better preparation for a job. Besides learning how an existing codebase works, you’ll get practice taking a feature request/bug report description and translating it into working code, and it’ll force you to be more rigorous—you have to make reasonably sure you’re not introducing any bugs, and you have to write code that’s easy for others to understand and maintain. You’ll also likely have to make changes to your code based on feedback.

You can Google around to find an open-source project you’re interested in. Think about what apps/websites you use yourself, then see if there are any open-source alternatives. e.g. if you write on Substack, you might enjoy hacking on Ghost.

A final note: different projects have different stances/policies/instructions on contributing. You don’t need permission to tinker around with the project on your own, but if you want to try submitting a pull request, look for a link/section on the GitHub page titled “contributing.” For example, the Ghost GitHub page links to this document. In general, just be aware that getting a pull request merged into a project creates work for the maintainer (they have to review your code, they have to fix any bugs that pop up later, etc), so try to minimize that burden.

Some other assorted things I mentioned:

  • It’s never too early to start looking at job postings and talking to people who work there. Even if you aren’t ready to start applying yet, you can still build relationships and learn more about what it’s like working there, what they look for in new hires, and any other questions you might have.

  • Don’t get too hung up on which language to learn. Pick one and stick with it for a while. If you’ve found an open-source project you’re interested in, perhaps pick whatever language it’s written in. It’s probably best to pick a fairly mainstream language so that there will be plenty of learning resources.

  • I don’t know anyone who’s tried Launch School, but based on the website it looks promising to me. In particular, the pricing ($200/month for as long as you need) seems ideal for a company that wants to support mastery-based learning. (In contrast, I used to be excited about Lambda School–now BloomTech–which professed to use mastery-based learning, until my wife tried it in 2019. The quality of education was extremely low.)

Discussion >>

Published 6 Sep 2023

I write an occasional newsletter
about my work and ideas.

RSS feed · Archive

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.