Antilaconia is a microblog engine. It’s already sort of usable.
Well, people who read some of my previous entries probably saw it coming.
Why is it called Antilaconia? Well, I have nothing against Laconica, or, as they call the software these days, StatusNet. Antilaconia is just across the bay from Laconica. That’s all. =)
Why Antilaconia? Well, I originally had the intention to just deploy a major-brand open source microblog engine on my webhost. Of course, that turned out to be a big pile of problems. Friendica required some strange stuff and just straight up refused to work. StatusNet was just fine, except it wanted the access to syslog(8), and cheapo webbo just doesn’t want that shit.
Small snags. Small snags.
So I wrote my own damn microblog. Heck, the folks who wrote Twitter had a prototype running by the end of the day, how hard it can be?
And I did actually have a prototype running by the end of the first real day of implementation. The preceding days where just me getting used to a brand new framework.
Antilaconia is written in Ruby, which is one of the greatest programming languages ever (and incidentally the language Twitter used pretty heavily, though they’ve reimplemented some of the stuff in JVM-based language, Scala).
Twitter was originally written using Ruby on Rails framework. I would have used it here, and avarthrel.org’s webhost also supports Rails, but beastwithin.org’s webhost best supports PHP and plain old CGI scripts. Rails’ performance is moderately terrible under CGI environment these days.
So for my purposes, I used something lighter. Antilaconia runs on top of Camping framework, which is very simple and lightweight compared to full-featured framework like RoR. (I prefer to call RoR “full-featured”, because it’s certainly not “enterprisey”. It’s not heavy, just it has some operational encumbrance.) Even when Camping is very small, it still employs some of the Ruby on Rails frameworks like ActiveRecord. I was originally inspired to try out Camping because the original creator is delightfully and awesomely crazy.
The user interface of the application uses Twitter Bootstrap CSS library. Previously I was a fan of Blueprint CSS, but Bootstrap is even cooler. And hey, I’m using Twitteresque technology again, woohoo. Some of the other components I’m using include Ruby implementation of bcrypt (for storing passwords), kramdown (for eventual addition of full posts), and the Ruby Twitter client gem.
The philosophy of Antilaconia is simple: I need to be able to post microblog entries. They get stored locally. They get displayed locally. They get posted to Twitter and whatever other services I’m using.
It’s a little bit more, shall we say, antisocial than the other solutions because I absolutely don’t want to write support for social streams interfaces. What I’m doing instead is separation of concerns: My blog is a blog, and if you want social streams, I’m talking to other services that do such things. To wit, I’m spamming my stuff to Twitter, dammit.
What I want on my website, however, is a blog. Human-readable blog. I may provide Atom feeds eventually, but that’s a bloggy thing, right? Not a microbloggy thing.
My original concerns of Identi.ca transferring over to pump.io was that there’s no client support (yet) and that there’s no support for Twitter either. Well, Antilaconia supports Twitter and it took whole 10 minutes to implement thanks to the Twitter client gem. I literally was taking a break to do laundry and said “what the hell, let’s add Twitter support today”.
There’s no real client support yet, but with a little bit of fiddling with Bootstrap, Antilaconia works beautifully with Firefox for Android:
Features to add? Currently, I can post stuff. I can tweet stuff. I can’t actually delete stuff. The thing can only show recent posts and there’s no way to browse any archives. There’s supposed to be some kind of support for extended bodies of text: You can write a short “microblog summary” of the post, and then add additional body to the message for a little bit of elaboration, kind of like what most social networks do these days. Also, I need special support for URL shortening too. Also, there’s little commenting and only barebones sanity-checking going on besides what the framework provides.
But it basically works, and it basically spams Twitter, so that’s a good start.