I’m loving Jekyll as a blogging engine. I do not however, love how it formats dates. Outside of a database table, a date should not look like this:
That’s an ISO 8601 date in full Zulu form, in case you were interested.
While we’re at it, dates had better not look like this:
…because that’s simultaneously ugly and hard to use (quick! tell me which number is the day and which is the month).
This is almost right:
04 October 2013
…because it has an unambiguous month, but that leading zero on the day reminds me of ledgers printed with dot matrix printers, and most irritating of all it’s missing the suffix. Today isn’t “the zero four” of October, it’s “the 4th” and our dates should be written that way.
So we’ve established that we want this:
4th October 2013
The more hasty readers amongst you will have leapt to the conclusion that you can pick the appropriate filters and have all that perfectly formatted goodness just spill out. But no! It’s not that simple! Because Jekyll uses Liquid for filters, which uses strftime for formatting dates, and strftime doesn’t have support for suffixes on dates. I know all this because I raised an issue with the nice people on the Liquid team asking them to add support for suffixes on dates, and they (very politely) said no.
So I was torn. I wasn’t about to go spelunking through the code to strftime to figure out a way to do this. For one thing, it’s written in C and languages without garbage collection are for braver men than me. Also after this many decades of active development I’m sure it’s an incredibly complex and sophisticated beast. I’ve written a small amount of code to handle time zones and it made my brain hurt. I can’t imagine working full time on a project where all you do is wrangle dates.
So I thought about it some more and came up with this:
Update 26th October 2013: Anatol Broder was kind enough to send me a pull request with a much simpler solution, which you can see above.
Yes, I know. This solution is not elegant. It’s a monstrous piece of code which aims to achieve something very simple. It works at the wrong level of abstraction, using Liquid filters when it should be using C. It’s probably hopelessly inefficient.
It does however, have the benefit of actually working.
So if you want pretty dates in your Jekyll blog, copy and paste that into the appropriate place in your templates and you’ll be good to go.
I’ve been using Reeder for a few years now, but when Google Reader was shut down the the iPad and Mac versions were left out of commission as Silvio Rizzi built support for other back end syncing services. It’s been a great product though, and I’m not really upset about the time it’s taken to get this 2.0 release done. I’d much rather see a polished app done right than a clumsy app done quickly.
Reeder 2 looks very much like an iOS 7 app. If you’re still on iOS 6 the icon looks out of place nestled in amongst gloss, gradients, and drop shadows; but once you’re in the app it feels pretty nice. While using it I couldn’t help being reminded of Vesper. Animations and transitions are smooth and well thought out, even on the dated hardware of my iPhone 41. I’m particularly fond of the little labels that pop up underneath toolbar buttons as you press them. This is a great piece of interaction design that gives you an uncluttered UI without requiring you to you play guess-the-icon.
On the first launch of the app you’re presented with a gargantuan list of gestures to learn. For anyone who used the previous version this won’t be a big deal, but for new users I think this will be a major source of pain. Gestures are essential to getting things done in Reeder. Much of the value of the app comes from its ability to get you through your feeds quickly, which you can’t really do effectively without understanding how the gesture system works. You can’t go back to the list that explains all the gestures after you’ve dismissed it - this is your one and only chance to learn how to use Reeder properly. If you miss something, or don’t fully understand what the text is trying to say, then I guess you’re on your own. There are better ways to teach people how to use an app, and presenting a list of stuff that we’re expected to memorize does no one any favours.
Once you get past that hurdle, you’ll find that this version really is easier to use than the one it replaces. Text is bigger and clearer, you can swipe from left-to-right to go back to the previous menu2, you can even grab the title bar and invoke a pull-to-refresh without scrolling back to the top of a list.
Unlike the previous version, Reeder 2 is a universal binary that works on both the iPad and iPhone. The iPad version is a complete rethink of the app, ditching the grid of icons for a multi-column layout similar to how Twitter’s iPad app used to work back when Twitter was run by people who knew what they were doing. You can push columns around with playful springiness and fly through your unread list pretty quickly. Photos take up the full width of the display now, which on a retina display really does look neat.
My only gripe about the iPad version is the buttons to flick back and forth between posts are now at the bottom of the display rather than the side. When they were on the side you could hold your iPad in both hands, and have the buttons within swinging distance of your thumb. Now you’ve got to grip the device awkwardly every time you want to quickly skip a post.
I know I’ve listed a few complaints here, but Reeder 2 really is a great piece of software, and for five bucks it’s a no-brainer. Go buy it.
I know. I know. I’m upgrading this year, but can’t decide between the Galaxy S4 and the iPhone 5S. ↩
I’m not sure who first came up with the idea to do this. I first saw it in Sparrow, but since then I’ve learnt the iOS music app has it too (even in iOS 6 you can swipe left-to-right on the album art while a song is playing and you’ll go back to the songs list). Either way, it’s a very good idea that’s become a system-wide part of iOS 7. ↩
Had Apple followed the trend that they’ve established in the last few years, this morning they would have released the iPhone 5S and kept last year’s iPhone 5 around as their lower cost $99 model.
Instead, they decided to release the iPhone 5C - a pointless product which I can’t understand the existence of.
If you gave me a choice between the metal-backed, durable, good looking iPhone 5, and the functionally equivalent but plastic iPhone 5C, I’d stick with the older model.
What purpose does the 5C serve? Sure, it’s a cheaper iPhone, but we’ve had those for years. It comes in a bunch of colours, but people who care about that sort of thing often use cases to achieve the same effect. I know some people like to scoff at cases for uglying things up, but Apple hasn’t been shy about getting into the business of making them alongside their devices, which looks like an endorsement for using them.
I imagine that plastic back is cheaper to produce though, even if it is less nice. Remember all that hoopla about 725 unique glass inlays that were indistinguishable to the naked eye? Yeah, that’ll cost you $100 more now.
There’s a culture that has developed on the web. Like any large group of people thrown together in loose association, societal norms have sprung up that dictate what’s considered acceptable behaviour. Over the last few years, April Fool’s Day has evolved into a collective excuse to let our hair down and do something a little silly for a few hours. It’s a pleasant tradition that I get a chuckle out of each year, and I’m sure many of you reading this feel the same way.
This year though, things seem a little different. There’s a cynical attitude being circulated around that April Fool’s is unprofessional or childish or somehow beneath us all.
In my opinion, that way of thinking is a little sad. We shouldn’t allow ourselves to be sucked in by cynicism. We need these cultural touchstones. Depending on where you live in the world Christmas, Hanukkah, or Easter might be a part of your community’s cultural makeup. These events become landmarks in our personal histories that bind us to the people around us and become a part of our identities.
On the web there’s very little that binds us as a community, but April Fool’s Day has become a mostly harmless part of our way of life that we all get to be a part of, and I think that’s a good thing.
Alright, now with that out of the way, go laugh at Google Nose.
I’ve decided to make this an annual tradition around here. Remember folks - this rampant speculation about the upcoming year is for entertainment only. I have no inside knowledge. Thankfully.
But first, a retrospective on last year’s predictions. In short, I didn’t do all that well. I’d never get a job reading tarot cards. RIM is still in business, but it’s hard to say for how long. WebOS didn’t really go anywhere significant. Windows 8 had an OK-but-not-great launch. We didn’t see a 15” MacBook Air (though the new Retina MacBook Pro fills the slot where I expected a 15” Air to land). I was more or less right about Android on tablets and smartphones though (I even got the Jelly Bean code name right), so that’s something.
So what happens next year?
Tesla starts shipping the Model S, and everyone wants one. Their biggest problem will be that they can’t make them fast enough. The only people unhappy about the success of Tesla are oil companies. This doesn’t bother anyone.
Under the leadership of Marissa Meyer, Yahoo finally gets it together. The long-floundering tech company stops trying to be all things to all people, and focusses its time and energy on a few key products where it actually stands a chance of winning. Yahoo Answers focusses on becoming a decent source of real-time information. Flickr becomes cool again as the joy gets sucked out of Instagram.
Microsoft has its worst year ever. Surface tablets wont sell. Touch screen laptops are derided as a joke (seriously, the whole device wobbles every time you touch the display). Office becomes increasingly irrelevant to small businesses and to consumers. The Enterprise Services division is as important as ever though, and that props up the company. It might be fun to hate on Microsoft (I’m certainly enjoying it), but it’s important to remember that this is a company with a truckload of money. They can afford to run at a loss for quite some time. While their immediate future looks rough, the company isn’t going anywhere.
Google (and in particular Android) has a great year. I have no idea what the next version of Android will be code named (Klondike bar? Krispy Kreme?), but it’ll have a user interface that’s coherent and consistent in a way that no other version of Android has ever been. Google will stop scratching the surface of what’s possible, stop playing catch-up with Apple, and show us a genuine vision for the future of mobile devices. App developers start embracing the platform in a way that was previously reserved for iOS. Android apps start showing up on Beautiful Pixels in significant numbers.
Apple plods along making money hand over fist, but we don’t see an Apple branded television set, wrist watch, pocket knife, or scuba diving kit. They stick to what they know, making better versions of last year’s stuff, and making their customers pretty happy. The Mac Pro gets a major overhaul, making Marco Arment happy. It comes with a Retina Thunderbolt display, which reviewers run out of hyperbole to describe. After 2012’s unremarkable iOS 6, I don’t really have high hopes for the immediate future of the iPhone, though I’m sure it’ll involve fewer bits of torn paper in the calendar app now that Jony Ive is calling the shots.
Last year I ended with a prediction (more of a prayer really) that Half Life 3 gets released. With the news that Valve is working on a new game engine I’ll make the same gamble again this year, and I sincerely hope that this time I’m proven right.