I've been on a side project binge lately. My latest effort is an Android client for Micro.blog called Pico. I've been using Micro.blog more lately and also using Android for my phone. Micro.blog is an Apple-heavy community from what I can tell, so there are no first-party Android apps for Micro.blog. There is already a third-party app, but it doesn't let you compose new posts yet.
Although that functionality is apparently coming in future, I was bugged that I couldn't create new posts from my phone (especially since the text entry field in the web app is buggy in Firefox for Android, so I didn't even have a solid backup). So I decided to scratch my own itch with a tiny, ugly, hacky project.
And that's how Pico got started.
So, why write a client for Micro.blog? I've been a user of Micro.blog for a long time. Before the Micro.blog Kickstarter, even, for people who remember that. But I've come and gone from Micro.blog over time.
Before the Kickstarter, the community was almost all white men who worked in tech. In fact, most of them seemed to work with Apple tech, specifically. The creator of Micro.blog, Manton Reece, builds software for Apple products, so this isn't too surprising. At such an early stage, it seemed like most of the signups were from people in Manton's network. But this left me feeling like a minority, and the tiny community didn't give me enough chances to connect with others.
After the Kickstarter I wandered back to Micro.blog and gave it another shot. The software itself was still early and buggy, but the community was a bit bigger and more diverse. I had some great conversations with others on Micro.blog, but ultimately found myself disappointed again. Part of my disappointment came from frustration with the software itself. I had to change the way I posted on my own blog to fit into Micro.blog, and I found that annoying. I wanted to be able to post as I always had, and have Micro.blog be an extra social layer on top of my blog—that was the appeal of Micro.blog, after all.
More recently I tried out Mastodon. Mastodon feels a lot like Twitter to me in terms of the tone and the content you'll see there. For those who like the idea of Twitter but find it an uncomfortable place to hang out, this is great. Personally, I don't like Twitter at all anymore. I don't like memes, or internet culture, or silly jokes, or random thoughts from random people. That's the stuff that Twitter—and now Mastodon—is great at, but it's not what I want.
Trying Mastodon led me to trying Micro.blog again, and I've found that I've settled into it more easily this time. I'm using a hosted microblog, so I don't have to worry about the issues of how I post on my blog as much (they haven't gone away, but they're not as much trouble when they only relate to longer-form posts). This also means I don't have all my microblog posts on my own domain, where I control them. I don't like that, but if I were going to use something like Mastodon or Instagram as my main social network, I wouldn't own that content either, so in that sense I'm not missing anything. I may explore using my own blog for posting to Micro.blog more in future, but for now I'm enjoying the community and the ease of joining in with a hosted microblog.
So why make an Android client for Micro.blog? Why me, why now, why open-source?
Although the community has expanded and diversified, Micro.blog's community still feels Apple-heavy. This is likely because the platform is still small enough to be an extension of Manton, and is heavily influenced by his decisions.
There are now three (3!) first-party iOS apps for Micro.blog. Each has a different focus. There's the main client, for browsing and posting to Micro.blog, Sunlit, for exploring photos on Micro.blog in an Instagram-like fashion, and Wavelength, for posting short podcasts, or "microcasts".
(As an aside: Manton's clearly going for a breadth over depth approach here. The web app still has bugs that have gone unfixed for months, browsing back through old posts in your account or your timeline is extremely limited, and there's a lot of polish missing from the apps—for example, there's no loading indicator in the web app, so you just see a blank screen or existing content and have no idea it's updating. But in the meantime, two more iOS apps for the platform have been added. Everyone has different priorities, so this isn't necessarily wrong, but it can be frustrating to see new features or whole new apps created while you're still using buggy software that seems to be unloved.)
Besides the first-party apps, there's at least one third-party iOS client, and there's an Electron-based Mac app.
So Apple users are well-served by Micro.blog. Android users, on the other hand, have only one option right now: Dialog, an Android third-party client that's in public beta. Dialog is great. It's solid and reliable. It doesn't currently let you create new posts, which is why I wanted to make Pico, but otherwise it's a solid bet.
Dialog's not open-source, though. So Android users are at the mercy of the Dialog developers (as we all are at Manton's mercy in terms of the platform itself). I don't necessarily think Dialog should be open-source, but I think it's nice to have open-source options so you can have more control over the development of products you use every day.
It's also important that Android users are as welcome on Micro.blog as iOS users. (You could say the same for Windows or any other platform—I don't plan to make any other apps for Micro.blog, but welcome the idea that others might.) As an Android user, you might be turned off from Micro.blog when you see there's not much choice of native apps (especially since the web app's text input has been extremely buggy in Firefox for Android in the recent past).
Finally, why me? Initially, because I'd recently started tinkering with Android development in Kotlin, and using my Google Pixel as my everyday phone again. I was bothered that I couldn't post to Micro.blog from my Pixel, and thought building a small app that just let me create new posts would be a fun side project.
Since building the first iteration of Pico I've decided to build it out into a full client. I'm enjoying learning more about Android development, and it's fun to be able to contribute to a community I'm part of. It's also my first real open-source project, and I'm happy to be able to share it openly so others can contribute, learn from it, or just appreciate the transparency of seeing inside my process.
Finally, it appears (and I may be wrong here) that all the third party developers of Micro.blog are male. (If I'm wrong about this please let me know! But even if I am, I think the point will still stand that the majority are male.) There's a lot more to diversity than gender, but being a woman in tech, I'm particularly aware of the lack of gender diversity in tech as a whole. It's a nice bonus to be able to tip the gender balance of Micro.blog third party apps a teeny, tiny bit.
What Pico does now
Pico is still super early, and doesn't do a lot. It's also very rough around the edges. But here's what it currently does:
- Create a new post including text and/or an image
- View your timeline
- Open the conversation view for a single post
- Reply to a post from the timeline
One of the things I'm most excited about so far is that when you reply to a post, Pico will automatically start your reply with the usernames of everyone mentioned in the original post. None of the other apps (including the first-party iOS app) that I've tested so far do this. And there's a good reason—there's no easy way to pull those usernames from the JSON you get from the Micro.blog API for each post. The way I'm doing it probably isn't a great idea long-term, but it does the job. Having only the author's username inserted into your reply when you're engaging in a conversation with multiple users is a huge pain, and really bothers me in other apps, so I'm excited to have solved this in Pico.
Pico was hacked together quickly and isn't solid, reliable, or polished at all. It needs a lot of work to smooth out the rough edges and make it nicer to use, as well as handling edge cases and errors.
Discovery of tagmojis
Micro.blog has this idea of "tagmojis", which are emojis used like hashtags might be on another platform. I pretty much hate this idea, but it's all we've got. Our benevolent dictator Manton has decided this is how we'll group posts together instead of using something like hashtags, so we can either work with it or lose out on that extra element of discovery. Currently there's a long list of tagmojis that the platform supports, and almost all of these will automatically group together any posts that use the chosen emojis.
Discovery is something people complain about a lot on MB, especially new people who sign up and struggle to find people with their interests. One way I can make that better for Android users is to build the tagmojis into Pico so they're easy to find and browse. This will encourage discovery and make it easier, as well as encouraging people to post using tagmojis once they see how they work and what's available.
I'm already working on adding a basic Discover section in an upcoming version of Pico, but later on I'd like to add an easy way to browse the tagmoji sections.
A media section
I love that on iOS, Sunlit is basically an Instagram clone that uses Micro.blog photo posts for its data. I'd like to offer something similar in Pico. I don't think a whole extra app is necessary, especially since I don't want to replicate Sunlit's story feature, which lets you create a post with multiple photos across multiple dates. But it would be nice to have an extra screen that lets you browse just photos.
Pico is open-source. You can grab the code or the latest APK from GitHub.
If you'd like to try Pico, you'll need a Micro.blog account with a hosted micro blog. You can download the APK from GitHub. You might need to check your security settings to run the APK, since it's not from a trusted source.
Please feel free to submit an issue if you have a question or suggestion for the app, or even submit a PR if you want to help out! You can also hit me up on Micro.blog anytime.