Manton Reece, creator of Micro.blog, stops by to talk about the history of Micro.blog, what it's written in, how it handles feeds coming in and going out, cross-posting, authentication, and the somewhat hidden features of Micro.blog: bookmarking, bookshelves, and even podcasting.
Time Jump Links
- 00:20 Small web
- 01:55 Introducing Manton Reece
- 02:32 Micro.blog
- 03:43 What is the history of Micro.blog?
- 07:13 Linking from a link blog
- 15:56 What is Micro.blog written in?
- 17:54 The changing social media landscape
- 27:22 Feeds going in and / or out
- 31:28 Dealing with authentication
- 34:16 Can you selectively cross-post?
- 36:25 Bookmarking on Micro.blog
- 41:34 How does the highlights feature work?
- 45:47 How is Hugo integration done?
- 54:41 Bookshelves on Micro.blog
Episode Sponsors 🧡
MANTRA: Just Build Websites!
Dave Rupert: Hey there, Shop-o-maniacs. You're listening to another episode of the ShopTalk Show. I'm Dave--tiny blog--Rupert, and with me is Chris--uh... very popular, but also, uh, you know, small blog--Coyier. Hey, Chris. How are you doing today?
Chris Coyier: I only like small blogs, actually.
Dave: Yeah. Artisanal, seasonal, artisanal, local, small blogs.
Chris: Yeah. As a matter of fact, I know we should get on with things, but I have a tab open. I've had a tab open for two weeks. There's this alternative search engine thing called Kagi.
Chris: They launched this little... It's like a throwback to Stumble Upon from the... It used to be a browser extension. You just clicked the button and it takes you to some new website. You're just like, "Ha-ha!" You just get addicted to taking you to new posts.
They have some version of that. I think they're calling it Small Web - or something.
Dave: Yeah. Yeah.
Chris: It's just a whole bunch of RSS feeds, and you just click this big blue button that says, "Next Post," and it takes you a recent-ish post from these many thousands of RSS feeds on there. That word "Small Web" is right in there. It's saying these are just... To get on the list, it has to be an independent blog from a person. It's just fun. It's fun to click the button.
Dave: Who do we have in the studio today that can help us talk about Small Web?
Chris: Well, I was thinking that about 10% of the blogs on there are probably hosted on a little site called Micro.blog. Do you just say, "microblog"? Micro.blog, Manton Reece, is that how you say it?
Manton Reece: Mm-hmm. Yeah, thanks for having me on the show. We pronounce the dot - I don't know - just to keep it kind of unique, "micro dot blog."
Chris: Oh, I knew I did it wrong. Micro.blog.
Manton: A lot of people don't. A lot of people just say, "microblog." That's fine. I think I was feeling... I don't want to take over the word "microblog." That's a real word that people can use for other products and other blogs. [Laughter]
Dave: Fair. Okay.
Manton: So, "micro dot blog," but you can call it whatever you want. It's fine.
Dave: That's the productization of, I guess, the art form, perhaps.
Manton: Mm-hmm. Right.
Chris: You can go there right now. You can type in micro.blog into your browser and go there. And you can sign up. And you can have a blog in about two seconds. So, it's for people that are interested in that for some reason.
Is the micro-ness enforced in any other way other than simplicity? [Laughter] What if I wanted to use Micro.blog for my long-form blog posts? I can do that, right?
Manton: Yeah. Totally fine. Totally fine. I use it for my long posts, too. Most of my posts are short now. But yeah, I have longer essays sometimes. Yeah, there's no limit.
Well, there is some kind of database limit, but it's - you know. You're not going to write as much as can fit in thousands and thousands of characters that are allowed.
Manton: Yeah, some people say we should have branded a macro blog or some other, but no.
Dave: Ooh... ooh...
Chris: Nah! Nah!
Manton: [Laughter] You can have short posts, long posts, photos, videos, audio, whatever. So, it's a full blogging system now, which is not... I guess it's not super well understood. I think, when we launched, people were expecting more of a Twitter clone.
Manton: And so, I think a lot of people never wrapped their head around that, yeah, it's a little different.
Dave: Can we go through the history of it? I feel like I was there. You were in a coffee shop coding it. [Laughter]
Manton: Yeah. That's....
Dave: You were at Café Goodwins coding it.
Dave: And then you did a Kickstarter, I believe.
Dave: And then there was kind of this... This was pre-Elon even. There was some Twitter API stuff that just made you sort of rage-quit Twitter. I don't know. Can you walk us through the history of how Micro.blog got born?
Manton: Sure. Yeah, the rage quit happened maybe like ten years ago or so. I want to say it was 2012-ish when Twitter started, yeah, years before Elon started really cracking down on third-party developers, discouraging different types of apps. And I got really frustrated and said, "Ah! They don't want third-party apps. They don't want people to use their API. I'm out!"
And App.net came along around that time, too. And I was kind of fascinated with that. And as that was fading away, I realized I really should just be posting all this to my own blog. I've been blogging for years. I should have short posts on my own blog. I control it. I can cross-post to other services to reach other people if I want to. But I really want it all on my own domain name. That's where Micro.blog came from.
Yeah, the Kickstarter was the very, very beginning of 2017. It took most of that year to sort of roll it out to beta people and get some apps built and that sort of thing. Then kind of launched to the public later in 2017. And just keep working on it.
Yeah, it started. I think it was just short posts at the very beginning. You couldn't even upload photos. And of course, now photo blogs is a huge part. I mean people love to post photos on their own blog. And I can't imagine it being as limited as it was in the early days. But now it's a full blogging system.
I feel like we compete as much with Twitter and Mastodon as we do with WordPress and Ghost and full-featured blogging platforms.
Chris: Fascinating! It really is because it is kind of both. Your blog feels like a prototypical microblog.
Chris: You don't even do titles.
Chris: If somebody subscribes to your RSS feed, which I do in my reader, it just says your name--
Chris: --as the title of every single post. And that's okay because it's just whatever. RSS isn't ready for you. You're too progressive.
Manton: My longer posts will have a title, and that's kind of how Micro.blog and how my blog thinks about the world is if you have a short post, it doesn't have a title. There are some services that get confused if RSS feeds don't have titles in the items, and they'll fabricate, like, "Untitled post," or "Placeholder here."
Manton: I've tried to sort of... Every time I see that, I try to reach out to the developer and point them at the RSS spec. Title is optional in the spec. You don't need a title. And if it's a short post of 200 characters, just leave the title off and apps should be able to seamlessly adapt their UI so that it just looks nice, so that it looks more like a Twitter sort of microblog interface.
Chris: Yeah. Yeah, fair enough.
Dave: What about the John Gruber thing where his title is a link that goes to a totally different website? Is that in the spec?
Dave: Is that legal? [Laughter]
Manton: It kind of sort of is in the spec because, yeah, you can have a URL that points somewhere else. And then in the JSON Feed, which I helped with, we also have this concept of external URL. But to be honest, the way [laughter] John uses it on Daring Fireball can be frustrating because, yeah, you get linked somewhere that you weren't expecting.
Dave: Yeah. Yeah.
Manton: I think has, for years, wanted to move away from that so that the permalink always posts, you know, links back to his own website and then you can link from there where you want to go. But change is hard.
Manton: Eventually, I think he will change his RSS feed. I know his JSON Feed is already updated that way.
Chris: Oh... I copied it for a while because I used to kind of like it because I'm like, if I'm writing about you, if I'm trying to send you somewhere else, I should just send you somewhere else.
Chris: I eventually gave up on it because it feels weird. It's like - I don't know - but that website, there's a very high chance it's going to go offline (for one thing).
Chris: I, like you, have tons of old posts that if I go back ten years, it's way lower than 50% chance that whatever I'm linking to is there.
Chris: But anyway, I think you can almost best of both worlds it. CSS-Tricks eventually had two links. I put permalink or something, some kind of phrase that means to me, and then direct link with an arrow that kind of insinuates you're going to what I'm talking about. I don't know if that was the perfect solution, but it kind of did the trick.
Manton: Yeah. It depends on the author. I find that where it becomes a problem is when you get too far from just a link blog where you're including a link to something else and you're adding five words, like, "Check this out," or "This is cool," or the title.
But where it becomes a problem is when you add a lot of your own commentary. That's the case on Daring Fireball and a lot of other sites--
Manton: --where I'm going to link to this. I'm going to include a block quote. Then I'm going to add four paragraphs of commentary. At that point, it's not really a link blog, right?
Manton: It's a full blog post that you happen to be linking to something else. That's where I think it becomes kind of confusing. Just being more consistent about where the link is going, I think, helps readers.
Chris: Yes. It really is because if I'm reading that and I want to grab a link to it because what I want to link to is your commentary on it, where do I get that link now? The title link is gone - whatever.
Chris: So, that gets awkward.
Manton: Exactly. Yeah, I had a whole rant about this, actually. At some point, it frustrated me, and I had a blog post. And I adapted that for part of my book that I wrote about blogging.
I think it's still in the book. I don't think I cut it. But yeah, this is a minor problem to complain about, but it is something that I think we've been blogging long enough that we should have some good conventions for this.
Chris: Fair enough. Okay, so it's 2017.
Chris: You decide to do a Kickstarter for it, and I can relate to that. That's like, "I think there should be another service." What was your message in the Kickstarter that was like, "There should be better blogging options in the world"? Or did it kind of have a "screw Twitter" vibe to it?
Manton: [Laughter] Maybe a little bit, and the timing was kind of funny because I think it might have been more successful if it had launched earlier or later because I think the people who were frustrated with Twitter kind of maybe a few years before that, and then obviously when Elon Musk took over, people became frustrated for other reasons.
But it was still really successful, I think, and I was really blown away by the response. But the message was basically, "We should own our content. We should blog more on our own sites. We shouldn't put all our data in a silo somewhere, whether that's Twitter or Instagram. Blog at your own domain name, not someone else's domain name."
By doing that, we sort of... A couple of things, I think, interesting happened. One, you control your content. You can move it places. Like you were talking about with websites going away all the time, you have more control over it. If you want to switch hosting providers, no problem.
Manton: If you want to switch from WordPress to Ghost, Micro.blog to whatever, roll your own site, it's all fine. You can continue to get all your links working.
Then the other aspect of it was if everybody is blogging on their own site and we have all these RSS feeds (like the good old days), we could build services and communities that tie everything together and a better user experience. And that was sort of the Twitter-like aspect of, like, what if we rebuilt Twitter but based on RSS feeds where everything is just much more distributed? Kind of how the Web was supposed to be.
We weren't supposed to have all this content in one place all on Twitter and Facebook and Instagram. We were supposed to be a little more spread out than that. Yeah, so that was the message.
I made a video for Kickstarter, which every once in a while, I'll kind of go back and look at it because it's all still what I believe. And so, I think we got a couple of things right early on that luckily we've been able to keep rolling with. But yeah, that was the message.
Chris: Yeah. Nice. Then the people spoke. They met your goal. You built the thing.
Chris: Now we're years later. You even have a whole team around it now. So, it worked out pretty well, huh?
Manton: I think so. I'm super happy with it. It's like any developer; we build different apps. We work for different companies. Consulting. Building apps for other people. Whatever.
This is the first thing (in decades of my career) that I would just want to keep working on the rest of my life. It just checks all the boxes of, like, I love to blog. I love to write this certain kind of application. I love open APIs.
It also allows me to... There's enough variety in it that I can work on the blogging aspects. We have a whole thing about tracking books you're reading, so you can blog about them. Podcasting. There are so many different things that I can work on that, as long as it keeps growing, as long as we are successful enough that I can pay myself, I can pay other people eventually and grow the team, that yeah, it's a success. It doesn't need to be huge. It just needs to be big enough to support a small team and keep everybody happy.
Dave: Elephant in the room, or big bluebird or big black X in the room.
Dave: It's probably been a wild year for you here since the big kitchen sink incident.
Chris: Oh, yeah. Did you benefit from the exoduses? You'll read new reports that Bluesky had the biggest day ever. Does that spill over into Micro.blog a little bit?
Manton: It does. I mean less... Those big guys, they get most of the attention. And Mastodon, I think, got the biggest benefit.
It's interesting because Mastodon and Micro.blog kind of came out around the same time. I think he might have beaten me a little bit, like 2016, end of 2016, early 2017. And then both kind of developed in parallel. Similar ideals, but just kind of a different approach.
But the timing, for whatever reason, worked really well for Mastodon when it was growing right as people were leaving Twitter. So, I think they benefited a bunch. Definitely, Bluesky has benefited a bunch. But we've also benefited a bunch. Yeah, I'm fine. I'm fine.
In some ways, it's nice not to be the biggest benefiter. You know what I mean? It's like when you have an influx of thousands and thousands of users all at once, it creates scaling problems. It creates community management problems. So, we had a nice flow of people coming and looking for other alternatives.
Chris: Yeah, that's great. Okay, so again, we're already way into this, but Micro.blog. Go there. Sign up. Pick a username - whatever. All of a sudden, I have a blog. It is hosted by you, but I could easily (and it sounds like you highly encourage) me to buy a domain name.
Chris: And host it at that instead because then I kind of fully control it and can move it and all that stuff. I would echo that. That's a fantastic way to work and think.
Here's a weird one. Is it Rails? [Laughter]
Manton: It's not quite Rails. It is Ruby. It's Ruby Sinatra.
Manton: Sinatra, yeah. You know I did a bunch of Rails, and I felt it was just getting so big and I don't want to say bloated, but it was just like there are lots of things there, and I tried Sinatra and I felt like it was just really streamlined and simple. And so, that's what it is and still.
Manton: It's a pretty large project now and maybe it's too big for the way Sinatra was kind of designed, but I still love it. It keeps it simple. There are not a million dependencies on different projects.
Rails changes so often, I feel like. Everything is deprecated every couple of years. You've got to change all your stuff. I'm pretty happy with just floating along on Ruby Sinatra. Yeah, Ruby Sinatra and then the rest is pretty basic.
Chris: Oh, I get it. That's cool.
Manton: Yeah. MySQL, use Redis a bunch.
Chris: I thought of that. Wasn't the launch of Rails had this famous demo that was kind of like a blog.
Manton: Mm-hmm. Yep.
Chris: It was kind of like, "Look. You can scaffold out users. Look. They each have a blog, and you can make crud stuff - or whatever." I was like, "I wonder if that's what this is." But yeah, I got Ruby right anyway.
Manton: Yep. Ruby. I love Ruby, still. I really like it.
Dave: Well, and Sinatra is the hidden gem because it's just lightweight. I don't know. It's just like the route render piece.
Dave: Almost like one file, one render endpoint sort of thing. It's cool.
Manton: Micro.blog is just one file. It's just one giant, giant file.
Manton: Not really, but....
Chris: CodePen was Sinatra for the first year, so.
Manton: Oh, yeah?
Chris: And then we ported.
Dave: Oh, nice. See.
Chris: Now it's Rails and now, yeah, I don't even know what to call it now because it's such a monstrosity of different things.
Manton: Mm-hmm. Yeah.
Chris: Okay, so one of the reasons this came to be is because I was in a particular position. I have my own blog that just happened to be WordPress, and I'm happy with that, so I'll probably just stick with that. But I own the domain name, so I could do whatever I want with it (over time).
But I was in this position where I was like... Part of my career really is trying to create content and then get it out to as many people as possible. When the landscape of social media and stuff changes, even if I'm old and tired of it, we've got to figure it out.
We even have this show. Why have a podcast if you never tell anybody about it? Part of our job is to get it out there, at least a little bit (to the best of our abilities).
That kind of eats away at me sometimes. So, in my latest round of it eating away at me with my own personal blog, I'm like, "I'm just going to do it. I'm just going to sit down and figure out how to do the thing where, when I publish something on my site, it does the Indie Web ideal of publishing to every social media site that's relevant."
I don't care to publish it to Instagram because Instagram is just photos, and this is a blog post, and that's a weird mismatch. I'm not trying to produce an automated YouTube video of my blog post. That's not my goal. But there are so many text-based ones like X - or whatever - that still exist.
But also, Bluesky and Mastodon and LinkedIn is even in this vein now, which is almost news to me. I don't know when they switched to the, like, "We're just Twitter now." But that happened.
Then there are more. I just made a whole list of the ones that would be practical to publish to. Threads, I guess, is out now. I made the list and be like, "Okay, who is ready for this and who isn't?" Who has APIs ready to take this stuff?
Mastodon, for whatever reason, feels obvious. They have APIs out the yin-yang. Everything and anything can publish to Mastodon. It's just apparently incredibly easy. So, that wasn't hard to find ways to wire up my WordPress to it.
But Bluesky is so new that that's a weird one. There are not a lot of places doing that one. Threads is even newer, but miraculously does have the APIs to do it.
Anyway, I was, one by one, going through the list and finding... You'd think there'd just be... WordPress being what it is, you'd think there'd just be one big, super plugin that just could do all of them. I think there probably wants to be that, but nobody has really nailed it yet.
Then there are probably some annoyed people, too. I'm sure the Jetpack team was annoyed. They have Jetpack Social. That's a product from Automattic, Jetpack is. It's like a plugin for WordPress. And Jetpack Social is, in a way, to help you do this, to publish to stuff. Only, they've, over time, had less places they publish to, which is like, "Oh, what a bummer for them."
I think they were highly annoyed by the X changes to their API to make this hard or impossible or financially infeasible, right? They have a free API, and then they have $100 one, and then from there it's like $43,000 a year - or something - and you're like, "What?!"
Manton: [Laughter] Yeah.
Chris: That's not right.
Chris: Yeah. Well, you tell me first, and then I'll tell you where this ended up.
Manton: Well, no. I was just going to jump in and say that I actually paid Twitter (X) the $100 a month for a few months because we had supported posting to Twitter from Micro.blog for years, and we knew that wasn't going to last forever. The writing has been on the wall.
But when they just really gutted all the API stuff, stopped supporting third-party apps like Ivry, Twitterific, and that sort of thing, I decided I wanted to just have a smooth kind of ramp off - or whatever - for my customers. Instead of it stopping right away, give my customers a few months' warning that it was going away. Yeah, so I paid that $100 for a couple of months. [Laughter]
Manton: And I didn't love paying for it, but I felt like, "Eh, I'll pay for it for my customers for a little while and then we've got to shut it down," because like you said, it was kind of a joke; $100 up to tens of thousands of dollars just to do something which I think should be free, you know, giving Twitter content.
Chris: You're giving Twitter content. You're giving it to them.
Dave: Hey. For the price of a small SUV, you can post to Twitter from your blog.
Chris: Yeah. No. No. No. No thanks. But I did want to... As much as I'm just incredibly conflicted about this, I did want to try to make that one work because I historically have the most followers there anyway, and sometimes even if there's a bad guy at the top, you can't... You can almost use their own platform as protest against them, in a way. Be like, "You can't push me out. I'm here. I think you're a jerk, and I'm going to say so on your platform," in a way.
Anyway, that one, still to this day, nothing. I cannot figure out a way to go from WordPress to it. It's unbelievable. What a joke. I'm still mad about it to this moment. But I've got every other single one working, and the story ends up that as many that Micro.blog can do this. Hopefully, that was the big moment for everybody.
You probably didn't even know that. We've just talked about it as a blogging platform for now. But you've built in to Micro.blog a both incoming and outgoing syndication model, and I use both. So, I'm sure Manton can explain this to us better, but I don't write on Micro.blog directly at the moment. But Micro.blog has all my posts in it because I say, "Here is my RSS feed from over here. Please suck it up," so I'm kind of cross-posting to Micro.blog. Then Micro.blog can post out from there. And you have a bunch of integrations like Mastodon. I forget what your whole list is, but it's a pretty thick list. It's a pretty good list.
Chris: Did I get that right?
Manton: Yeah. No, that's exactly right. You got it right. Yeah. One of the goals was if you don't want us to host your blog, that's fine. Just tell us where your WordPress blog is (or whatever you have) and Micro.blog will just bring the posts into the timeline. So, if someone follows you on Micro.blog, they'll see the post from WordPress.
And then, yeah, as soon as the posts come into Micro.blog, Micro.blog can then turn around and say, "Yeah, we'll send that to Mastodon," or LinkedIn or Bluesky or whatever. Twitter used to work. Facebook used to work. Because of those companies locking down their APIs, we had to remove those two.
Yeah, I think we still have like eight services that we support: Medium, Flickr, Bluesky. We added Nostr also recently. [Laughter]
Manton: And just trying to not be too picky about we're only going to support certain APIs that we love. Yeah, the open Web, you should be able to move posts around. So, yeah. You want to send it to Bluesky? Great. Enable that and it'll just automatically go out there.
Chris: Right. Don't envy that. Does become a little bit of technical debt for you because Bluesky is so new. It just feels like 100% chance that, at some point, it's going to break on you and you're going to have to go fix it.
Manton: Hmm... Yep.
Chris: Then at the cost of working on some other thing that you could have been doing that day. But I like it. You're one of the very few that does Bluesky at the moment, so that was useful for me, anyway.
Dave: That might be worth it just for me. [Laughter]
Manton: Yeah. And I'm sorry. I sent you an email about that. And I feel kind of bad because I don't usually say, "What about me?! What about my thing you should be using?" [Laughter] Eh, I don't know. I did anyway. [Laughter]
Chris: Oh, yeah! You pitched it?
Chris: Oh, yeah. No, it's good, though. If you could do them all, that would be ideal. You have LinkedIn. I'm using Mastodon and LinkedIn. Is that the only two I have outgoing at the moment? And Bluesky, right?
Chris: Three, I guess. I want Threads, but you got burned by Facebook, so why would you jump on Threads? It's the same company.
Dave: Can you have multiple imports? Is that something? I have a YouTube. I have a Twitch. Can those vacuum in as well?
Manton: Yep. Mm-hmm.
Manton: Yeah. You can have as many... Well, I think, actually, it's limited to like 10 or 12. It's kind of an arbitrary limit. I was just worried about someone adding 100 feeds and spamming everything.
Manton: Yeah, you can--
Dave: Somebody is going to add Wikipedia to Luro, and I'm just going to die. [Laughter] That's what I live in fear of. Please, don't do it.
Manton: Gigabytes of data coming in. Most people just have one feed that it's bringing in. But yeah, some people will have a Micro.blog feed, a WordPress feed, and then some people do things like they'll post movie reviews to Letterboxd and services like that.
Dave: Yeah. Cool.
Manton: Those have RSS feeds, so you could add an RSS feed for one of those.
Manton: Then if someone is following you, they'll see, "Five stars. I love this movie," or whatever. Yeah, it's kind of interesting when you add multiple feeds and just let Micro.blog kind of bring them all together.
Dave: That's a dream. I like that.
Dave: My Jekyll doesn't do that. That's wonderful.
Chris: The incoming and outgoing is a little unique, I'll say.
Chris: The fact that, yeah, if you were just huge in Letterboxd and your dream was, "Oh, all I fricken' want is for my Letterboxd to shoot over to my Mastodon," there's probably no super first-class way of doing that other than something like this. Maybe there's some, like, "If this then that" recipe or something.
Manton: Yeah. You'll have to roll your own kind of thing. Yeah, if this then that, or some script or, yeah, something. I can't think of a lot of just out-of-the-box click and make it work.
Dave: But you're saying even people are using this as kind of like this is where they post photos and then those go out to their socials.
Dave: It kind of be, yeah, just a one-stop post point, too.
Dave: That would suit me because I don't want to manage a photo blog, to be honest. [Laughter]
Dave: I like taking a photo here and there, but I don't want to manage a photo blog. And so, it'd be cool to kind of experiment with that.
Manton: Yeah. I think it's fun. I've seen someone will have photos dot their domain dot com or something like that. They'll just have a separate photo blog, and it kind of looks like Instagram. It has a grid of photos, and you just post. Then from there, yeah, let it send it out to Mastodon or wherever.
Yeah, we added Flickr. Not totally sure what the future of Flickr is. But it's still around. Some people still love it.
And some of these services like Bluesky, no idea where it's going to go. Nostr is just weird, wild west, off in the weeds. But I felt like adding some of these even early, even if, like you said, they'll break later, probably, and we'll have to kind of redo the API. I felt like adding those just sends a statement. It makes a statement of, like, "We love the open Web. We love these new platforms. They're not all going to last. But let's support what we can."
Chris: Yeah. I like it. Pretty cool. Yeah, there's Pebble, too, is a new-ish one that has really limited use, it looks like, but looks really nice [laughter] if you ask me.
I think Bluesky -- sorry, Bluesky people -- just is the grossest of them esthetically somehow but has some momentum, whereas Pebble looks great and has nothing. [Laughter] So, who knows?
Manton: Yeah. I'm not sure. And I don't think Pebble has an API or apps or anything yet. Yeah, to the point about Threads and the concern of posting to Threads because Facebook, in the past, has been not kind to third-party developers once they started locking--
After Cambridge Analytica and some of the bad press, I started locking everything down. There was a developer, a few developers, that kind of reverse-engineered the Threads API, and they built a library and documented it, so people could post to Threads. And just a couple of weeks ago, they got a cease and desist from Meta, so they had to shut that down.
It is risky. I try to stay away from scraping and reverse engineering APIs, especially if it's a company that is probably going to be hostile to that sort of thing.
Chris: Hmm... Right. I don't think any of them that you have on Micro.blog are the type that... One of the ways these integrations work is that you go to developers.socialnetwork.com, and then you create an app. Then that app has certain permissions, and it has special API keys. Then if you want something to integrate with it, you copy and paste those API keys over to some other service that needs to use them - or whatever.
I don't think you have any that are like that, right? They just auth. And once you're auth'd, it works.
Manton: So, I think LinkedIn works like you described. I think you have to register. Flickr probably still does. But you're right. The trend is away from that sort of you've got to register on some other platform, which I love.
If rewind way back to early days of Twitter, the very first Twitter APIs didn't... It was before OAuth was really established. To log into a Twitter app, a third-party app, you literally put your Twitter username and password in.
Manton: Not great for security having your actual password around everything. And at some point, Twitter moved to sort of an OAuth model, which required registering your app. It seemed like a good idea for the security of, like, password sharing. But actually, what it allowed Twitter to do, it basically gave Twitter control over third-party apps.
Because you had to register, now Twitter can say whether you're allowed to use their API or not. Of course, it was theoretical but now Elon Musk comes along, and he says, "We're going to use this power. We're going to shut everything down."
If an API believes in the open Web and wants to encourage apps to use it, cannot make itself the bottleneck. Can just let it be more open where you don't need to register. You can use the API. There's some sort of system for letting users sign in. It's just better.
I don't love the idea of anyone, especially big companies that I don't totally trust, I don't love the idea of giving them control over what I can and can't build if I want to build something for their platform.
Dave: Yeah, it kind of went from the whole app. Then it kind of went to, "Oh, no. The user has to manage the authentication." Then GitHub even has a mix, right? It's kind of weird.
Dave: You install it at the org level or the user auth's it. It gets confusing.
Dave: I do have just a small question. I post on my website. All of my blog posts are good. But let's pretend one of them is really bad, and I don't want to put it on LinkedIn.
Dave: Does Micro.blog offer any sort of job protection or anything like that?
Manton: Yeah. There is. We used to have it where it was kind of like an all-or-nothing. You kind of have to disable all the services if you don't want it to be posted or not.
But just recently, maybe last year, we added a per-service toggle, so when you post to your blog, you can say, "I just want this to go to Bluesky and Mastodon, nothing else."
Unfortunately, that doesn't work with blogs that are not hosted on Micro.blog right now. I need to figure out how. I don't want to get too into the weeds on the technical part, maybe, but basically, because Micro.blog is reading your RSS feed and then bringing that into its platform and then sending that out to other platforms, there has to be a way to keep track of which posts are going to which services.
Manton: In Micro.blog, if you're hosting with us, we have that. If you're hosting on WordPress where you have a Jekyll blog or something like that, I'm not totally sure how to preserve that setting. There should be a way. A little more work needs to be done on that, probably.
Dave: Oh, it's... Don't worry about me and my niche request here.
Manton: No. No, it's good. No, it's good. I think a lot of people would like that. The Indie Web has an API called Micro Pub, which we support for posting from apps. It does have this concept of syndication targets where you could say I just want this to go to Bluesky, or just want this to go to LinkedIn. And so, there is some plumbing for that, but a little more work needs to be done.
Dave: Yeah. Yeah. Interesting.
Chris: It might be interesting to go over more of the complete feature list. We've talked about you can blog right on Micro.blog, but then there's this element of a social network. Because everybody is sharing the platform, I can follow people, and they can follow me. It does end up having this social network thing going on. You've got that, right?
Chris: That's the whole complicated bit of software right there.
Chris: Feeds. Feeds are no joke. You know? Then much like every other social network, people have a username on there, so I can @ mention you, and you'll get notified of that.
Chris: It's straight up a social network. But there's more than that, right? You have this bookmark feature that's fascinating to me because it looks very robust in that, for a long time, I used this service. What's the pinboard?
Chris: Pinboard.in - or whatever.
Chris: That guy. It had this neat feature that, you know, it was a browser extension or a bookmarklet, and you're on some page. You're like, "I just want to save it," so just like the delicious of old or whatever, it's just your bookmarking tool. But it has some public aspects to it. And you can tag it and stuff like that.
He had this cool feature that if you were Pro - or whatever - that it would not just save a URL and a little bit of metadata, but it would yank the whole page, too, and dump it in an archive so that, should it go offline some day or whatever, you have your copy of the page. It looks like yours does that, too.
Chris: Which is quite the bonus feature for a little blogging platform, I'd say.
Manton: Yeah. We do that, and I was inspired by that from Pinboard and also just the Internet archive.
Manton: The Internet archive is just an incredible achievement. I don't know how they do it. But I've always felt like the Internet archive is great, and the Way Back Machine is great. But do we really just want one of those? I feel like we should have more than one copy of the Internet.
Manton: There could be other... I don't know. There could be other services that have their own take on archiving, and they can have their own copy of posts.
Yeah, this is not included in the basic plan. But if you upgrade to the $10 [laughter] subscription -- this is my plug there -- anything you bookmark, we archive a copy, and we archive the CSS, HTML, images, everything. So, it'll be of the post that you bookmarked.
Manton: Also, we do that for anything you link to in your blog. So, if you just link to something--
Chris: Oh, wow!
Manton: --we archive it. Yeah. Which I love because, like you were saying earlier in the show, the default is for most websites to die, unfortunately.
Manton: So, everything is 404, eventually. And if we archive everything you link to, it's really nice because, five years later, you go to your blog, and you can say, "Oh, yeah. That thing is gone," and just update the link to the archived version.
Chris: Oh, so you host them, too.
Manton: Oh, yeah, yeah, yeah. We host them. Yeah.
Manton: I think it's really powerful. I don't know exactly where all that is going to go. But I love that we do it because I think it could enable things later.
Chris: Yeah. It just seems like a big add-on. Somebody could do a startup that just does that, I feel like.
Chris: And charge $20 a month or something and have that not be totally off the mark. But you just get it for $10 a month. It's just the premium plan has it, right?
Manton: Just the premium plan. Yeah, exactly.
Yeah. I don't know. I love it because it does feel sometimes like we're adding everything and it's the whole kitchen sink in here. But it's just a really nice complement to blogging because you'll often bookmark something, and you want to blog about it later. So, great. Let's make that easy.
So, you bookmark something. You can add some tags to it. Then one click, you turn that into a blog post.
The other thing we do when we archive the webpage, we extract the text from the page that you've archived, and you can make highlights in it. And so, you could highlight--
Manton: Yeah, highlights. So, you could highlight a section that you read and then, later, one click, turn that into a blog post.
Manton: Everything we do, I feel like, is somehow connected to posting to your blog. [Laughter] I feel like bookmarks fit in that. You're not going to blog about everything you bookmark, but some of the stuff you will.
You bookmark something, you're interested in it, and whether it's a link blog (like we were talking about) or whether you wanted to write an essay about something. Yeah, it's just nice to have everything kind of integrated.
Manton: Yeah. Yeah.
Manton: It's a mess. I don't even know.
Dave: That's where $10 already--
Manton: Yeah. Yeah. Yeah, I remember hitting my head against the wall trying to make all that work. And it's not perfect, to be honest. Every once in a while, you'll bookmark a page where the HTML is just a mess. And it tries to extract the text from it, and it tries to get the selection range right, and it fails.
Manton: But you know, nine times out of ten.
Manton: But we are archiving CSS and images. But the highlighting, to be clear, the highlighting has to happen in the text version. There's like a reader mode, kind of.
Chris: Yeah. Yeah, yeah. I've seen that.
Manton: I want to read this thing I bookmarked, yeah.
Chris: You strip away all the crap and just leave the paragraphs and whatever.
Chris: Did you have to write that, too? Or is there some good library for that? Oh, please say there is.
Manton: There are good libraries. I think I'm using... I'm using some version of the readability library.
Manton: I'm trying to remember. I wrote this code a long time ago. [Laughter] There's so much HTML parsing in the project, I can't even remember how everything fits together. But yeah, I think I used some version of the readability library, which tries to kind of figure out where the actual body content of the page is.
Chris: Yeah. I've heard tell that that's a harder problem than it seems. So, for your sake, I'm glad you're not doing it by hand.
Chris: There are heuristics and stuff. It's hard, like blogs that don't even use P tags or whatever.
Manton: Yeah. For sure.
Chris: I'm sure that sucks.
Manton: Yeah. And like I said, it doesn't always work. But it works enough. It works most of the time. [Laughter]
Chris: Yeah. Good. Good. That's the bookmarks feature. Pretty robust. Then did you do browser extensions for it or something?
Chris: Yeah, you can bookmark.
Manton: Yeah, bookmarklet.
Manton: Yeah. It's just super simple. Probably should have a browser extension just to make it a little nicer.
Chris: Ah, you should wait for somebody to ask, I guess. I just always thought that once content security policy became a thing on the Web that everybody would start doing it, and they just haven't really.
Chris: But they do stop bookmarklets. So, if your bookmarklet works by doing some--
Chris: In a sense, what it does is it injects a script and executes the script. And a content security policy blocks that. That was the message early on is, "Ooh... You're going to break all our bookmarklets." Even try it now. If you're on GitHub, they have a pretty strict one. You probably can't grab a post from GitHub in that way. So does CodePen. [Laughter] But we don't really have anything you'd want to bookmark in that way.
Manton: I should check that out some more. We also, on the iOS, the Micro.blog iOS app, we have a share extension, and I feel like that's mostly what I use.
Chris: Yeah. Yeah, yeah.
Manton: If I'm in Safari or whatever on iOS, you hit share, and then it pops over to the native app.
Chris: How do you get it? There's an iOS app for Micro.blog, and then you just get it? Oh...
Manton: Exactly. Yep.
Manton: Yep, and then there's a mechanism to just... Yeah, the share extension in the app that will pop up.
Chris: Yeah. I'm always annoyed by apps that do their own share extension, like YouTube. They pop up their own little fake one, and then you've got to go scroll over to more - or whatever it is.
Manton: Right. [Laughter]
Chris: Then all that does is open the native one. You're like, "Yeah, that's what I wanted, the native one." [Laughter]
Manton: Yep. Yeah, it's a little clunky. Do you want an iframe? Do you want to embed? Do you want a link?
Chris: [Laughter] Am I wrong? There's something to do with Hugo, too? Like if you're making your own blog and you want to do something totally unique with your theme and styles and all that. Somehow, you run somebody's Hugo build or something? Is that part of it?
Manton: Yep. No, that's right. Yeah, so when we added the blog hosting, I was like, "Do I invent my own theme, markup so people can customize, or do I use something kind of off-the-shelf?" And so, we used to use Jekyll, actually. We switched to Hugo a few years ago.
So, if you host your blog on Micro.blog, we run everything through Hugo. So, basically, in a nutshell, you post to Micro.blog. You say, "New post," type in some stuff, and hit save. We save it in our database. We run it through Hugo with all of the themes, templates, and everything. Then that creates a static site. Then we host that static site for you.
Then there are some other little magic in there to make some of the dynamic stuff work, but that was one of the early goals I had. Nothing against WordPress, but WordPress, for a while, got kind of a bad rap for performance because everything is super dynamic and PHP... If you don't have one of the caching plugins installed or whatever. I guess this isn't much of an issue anymore but, for a while, it seemed like it was an issue. And I felt like if we just statically generate everybody's blog, it'll be super-fast. We can host it across multiple servers. Yeah, so that's the model.
Yeah, we run everything through Hugo, and then you could bring in a custom Hugo theme. You can edit CSS templates, that sort of thing.
Chris: Hmm... So, every time somebody presses publish on a Micro.blog post--
Manton: Yep, it runs Hugo.
Chris: --a few seconds later, it'll run a Hugo build? Holy cow.
Manton: Yep. It's... I love it. I mean it's not... There are drawbacks just because it's not instant, as instant as you would like. So, we do some sort of tricks to make it feel instant, so adding it to the timeline right away.
Sometimes we will do kind of like a partial Hugo build just to get the permalink webpage up immediately. Then we'll turn around and do a full build of all your blog post because some people have thousands and thousands of blog posts, so Hugo is really, really fast, but there's still a little bit of time to run it all through the process.
Yeah, so there are some drawbacks, but I love it. I love that I can post with any app and it just spits out a static site that I know is going to be fast.
Chris: Yeah. That's amazing architecture. Is it like one Hugo install that magically that you can give different assets to, to build?
Dave: Folders, too?
Chris: Or does everybody have their own Hugo install? Do you know what I mean?
Manton: Yeah. It's one. The only tricky part is, yeah, there's one Hugo install, basically, on each server. We have a couple, a few app servers that it runs through.
Manton: Then we also have multiple versions of Hugo for different versions because Hugo... I love Hugo, but it does... [Laughter] Getting to my complaint about Rails, Hugo tends to break things also, often, like the new version of Hugo. Some tags just won't work anymore. So, we maintain a few versions of Hugo, and you can switch your blog to use the latest version.
Chris: Oh, I see. So, you don't have to break people's crap.
Chris: You can stay upgraded. Like if you don't care, you'd probably just run the most current one.
Manton: Sort of. I mean, to be honest, we are slow to upgrade to the latest version [laughter] because I'm so worried about breaking things. But generally, we will have some version of Hugo and we'll just stick with that version that works for like a year or more. Then we'll add the new version as an option, like you can opt-in to get the new version. Then when everything... we're sure that all of the themes and everything work, then we'll automatically update everyone to the new version.
Chris: That's a nice way to do it. We deal with that same kind of problem going forward on CodePen. For most of the history of it, if you just were writing some CSS and you're like, "I'm going to use Sass," you just selected Sass from a dropdown menu, but we didn't really build in a way to say, "I want Sass version 3.2 - or something - forever. Please don't change it on me." We just didn't have that option.
So, when Sass would upgrade, we'd really have to worry, like, "Hmm... Are we just going to do it? Are we just going to upgrade so that every person in the history of time who has ever written a Sass Pen is just going to be on the new version?"
By some miracle, for the most part, processors like that didn't break stuff too badly or that we could fix it in some way. But we got off easy. [Laughter] I think those breaking changes are much more common in bigger processing software. Now, going forward, we're just not going to do that. If you pick a processor to use in some way, it's going to be locked to that version forever. You have to choose to upgrade it.
Manton: That makes sense. No one wants something to break in the middle of their life. [Laughter]
Chris: Well, it's the worst thing ever in making websites. You're like, "I didn't change anything and this doesn't work anymore." That doesn't feel fair. [Laughter]
Dave: Yeah. I feel like there's a lot of value in saying, "We'll build it. You just type in here, and we'll go build the thing that you're trying to build." There's a lot of value. But there's this huge sort of risk that you're taking, too.
Hopefully, you like what comes out because [laughter] otherwise, in order to fix a security issue or something, I might just have to break your thing. It's risky. It's a tough place to be.
Chris: Things should be locked in time. You know? There's something to be said about the package. Is it semver? I don't know. The language where sometimes there's a little up arrow thingy, and sometimes there's a dollar sign, and sometimes there's nothing. They mean different things.
I think if there's nothing, it means just stay on this version. Never change it.
But the up one is like, major versions. The other one is minor versions.
It's just a nice way. It's just your way to signal how much you care.
Dave: The eat bacon operator where it's like the bacon, and then you do the mouth opening, eating the bacon.
Chris: That's the eat bacon operator.
Manton: I've never heard it described that way. I love that.
Dave: Yeah. Eat bacon operator.
Manton: That's great.
Chris: Yeah, well, good job with it all. Really. I'm glad that it exists. I think I've been aware of it for a long time, but it took Twitter sucking for me to really [laughter] have my own moment of figuring out how to syndicate better to different things. Y'all handle it pretty well. I'm a paying subscriber, damn it.
Manton: Woo-hoo! Thank you. Awesome. No, I love that. Definitely, I think a lot of people... I hear that sort of thing from people. They kind of heard about Micro.blog six years ago or four years ago. It was kind of on their radar, but it wasn't for them.
Then, eventually, they might come back. And I love when that happens because we are improving it all the time. It's recognizable from five years ago, but it's so much better [laughter] than it was before.
Chris: Right. Right. Right.
Manton: And so, it's kind of nice when someone gives it a second chance, like, "Oh, now it does all this other stuff." That's fun.
Chris: That matters, right? I just saw this other one the other day called BearBlog.dev.
Chris: Pretty neat, right?
Chris: A little blogging platform thing that's also hosted, but it does nothing. It does nothing. It's just a blog, and then you blog. That's it.
Manton: Yeah. Yeah, simple. Yeah.
Chris: You have about 50... yeah. Sure, that's admirable, too. But it means that if you don't need that, you don't need that.
Chris: Whereas I feel like Micro.blog, you might want to take a look at the feature set because there's a lot of stuff in here. I could see somebody using it just for bookmarks.
Chris: That's a pretty robust, cool feature. Or I want to do this smooshing of multiple feeds into one feed; you've got that.
Oh, it's got really nice activity pub integration. I could use it just for that.
Chris: Or I like the people there, so I'm going to follow a bunch of people. And it becomes my little RSS reader, in a way. You could use it in that way.
There's a lot there to like.
Manton: Thank you. Thank you. I appreciate that.
Dave: And you have bookshelves.
Chris: Yeah. We didn't even talk about that one.
Chris: The book reading thing.
Manton: That's kind of off on the side, but I really love it. During the pandemic, I just got reading more. Kind of got back into reading books. And so, now I read quite a bit. I love being able to track them just on something. It is related kind of to blogs, so when I finish a book.
We actually have a whole separate app called Epilogue on iOS and Android that's just for tracking books, yeah, and reading goals and things like that. And so, I love... I finish a book, click, and I have a blog post that says, "I finished reading this book by so-and-so, and I really loved it. A fantastic book." Just really easy to get that kind of stuff onto your blog instead of Good Reads or some silo somewhere.
Chris: Oh, gosh. Everything is so understated. I'm like, "How do I get a book in here?" Oh, it's a tiny little search box where you just type in any book in the entire world, and it just shows up. I almost don't expect that that is going to do that because of how understated the search box is.
It's not a criticism. The whole inside is like that. I think you do what works for you, but yeah, it's impressive.
Manton: Yeah, understated. I think that is a good description for a lot of our UI. I'm always worried about hitting someone over the head with something, like, "Look at our feature! Look at this huge button that's blinking and it's red!" because it just feels like websites are just so much like that, like, "Read this book! Subscribe to this thing! Click here if you want to do this thing!"
Yeah, a lot of our stuff errs on the side of not even telling you it's there. [Laughter] But yeah, you have to dig a little bit sometimes.
Dave: Empower user feature, I like it. Well, cool. Well, we're kind of hitting our hour here, so we should probably wrap it up. Manton, thank you so much for coming on the show, telling us about Micro.blog. For people who aren't following you and giving you money, how can they do that?
Manton: Yeah, Micro.blog is at micro.blog. Would love to see you. Try it. Let me know what you think.
I've been blogging for a while at manton.org. I post about whatever. Mostly stuff I'm working on with Micro.blog, but other things.
And books... If you want to know... If you really want to know what book I'm reading, it's there.
Dave: Perfect. You also have an excellent podcast, maybe one of the longest Mac podcasts, Core Intuition with Daniel... I can't say Daniel's last name.
Manton: Jalkut. Yeah, Daniel Jalkut.
Dave: Who is also in the blog-o-sphere with MarsEdit.
Manton: Oh, yeah.
Dave: Yeah, it's a good podcast if you're into Mac stuff, like the nitty-gritty. You go a little bit deeper than the--
Dave: You get into some ex-code-y kind of stuff.
Chris: I'm embarrassed that I've never seen this. We're neck-in-neck for episodes.
Manton: [Laughter] Oh, yeah! I actually noticed that. We're in the 500s, I think, both shows.
Dave: You're like one above us, man. Wow! Hey!
Manton: Oh, wow.
Dave: That's great.
Manton: When did y'all start? Are you pretty consistent?
Chris: Over ten years because we only do it weekly.
Manton: Well, but yeah. So, you probably... So, I think we started, I want to say, 15 years ago, around, because it was like right when the iPhone--
Dave: Yeah, 2008, I'm looking.
Manton: Yeah. But at the beginning, we kind of... sometimes a little while would go. We'd have a show every couple of months.
Manton: Yeah. That's interesting.
Chris: But not anymore. You're consistent now, weekly?
Manton: Pretty consistent every week. When we got sponsors, it became kind of easier to be motivated. But every once in a while, we take a week off anyway.
Manton: Because we take a week off every once in a while, you will probably pass us in episode number pretty soon. [Laughter]
Chris: Oh, no. We're past you, I'm afraid. Dave had it wrong. We're 586 to your 570.
Manton: Oh, you are way past. Okay, yeah.
Manton: All right. Well, you will continue to be past us then.
Dave: Yeah, unless papa gets a new vacation.
Dave: Or sabbatical.
Dave: No, we'll see. Awesome. Well, cool. Well, again, thank you so much for coming on. Really appreciate it.
Thank you, dear listener, for downloading this in your podcatcher of choice. Be sure to star, heart, favorite it up. That's how people find out about the show.
Follow us on Twitter or Mastodon. We're not on Micro.blog yet, but you know. Maybe one day.
But the real party is over in the Discord. Join us at patreon.com/shoptalkshow.
Chris: Heck yeah, it is.
Dave: Chris, do you got anything else you'd like to say?
Chris: [Tongue roll] ShopTalkShow.com.