It is with a great deal of pride that I’d like to present to you the Grand Central Board, the latest Open Source project that we have started here at Macoscope.
Seeing that this is my first post on this blog, I should probably introduce myself, maybe even show off a little bit. Some of you may even know me already, because one of my previous Open Source projects, Design Patterns In Swift, gained real traction in the community and, with over 5000 stars, gave me quite the reputation in worldwide Swift rankings on GitHub Awards.
But now let me tell you the story of how this new project came to life.
Recently, Apple released the latest update of its venerable set-top box along with a completely reworked operating system for the new device, christened tvOS. I’ll have to be honest with you here, at first I wasn’t impressed. I haven’t even bothered with ordering the extremely cheap DevKit when all my friends got one. I rarely ever use my TV, and my Netflix consumption is limited mostly to my iPhone. But I wanted to build something useful for this new platform. What could that be? I had no idea, but the desire to build was so strong that I eventually signed up for…
The Apple TV Tech Talks
When I learned that I was selected to participate in the Apple TV Tech Talks, I chose the meetings held in New York on January 12, 2016 over the ones in London or Berlin, as I already knew those cities pretty well and wanted to finally see the Big Apple. Makes sense, right? Why New York, you ask? Bear with me. The city is important to the story.
The awesome team from Apple shared with us some pretty interesting and useful stuff about developing for this new platform and its ecosystem. One of the highlights was that the App Store team holds a meeting every Thursday to discuss and decide which apps will land in the Featured category for the upcoming week.
After the talks concluded, I had the rare opportunity (for a guy from Europe, at least) to talk with Marco Arment and David Smith. Marco explained to me that he stopped wearing his Apple Watch in order to try and wear his new analog watch, and I have to say that he seemed pretty happy with it, it didn’t look like he missed the smart part. I found it a little bit weird, but I listen to ATP pretty often and I’m used to peculiarities like these. We talked at length about the rumors of Apple planning to remove the headphone port from iPhone 7 and we all seemed to agree that this is very likely to happen. We joked about future watchOS iterations dropping frames in the second hand animations on the original Apple Watch, referring to the fact that older iPhones tend to slow down after they’re upgraded to more recent iOS versions. Let me tell you, it was loads and loads of fun!
On my way back I decided to go and see the famous Grand Central Terminal. The place is magnificent and its cathedral-like vaulted ceilings are incredibly impressive. Like any other lame traveller, I decided to record a couple of time-lapse videos of people stopping by the timetables and… Eureka!
That was it! I was going to make a board for the new Apple TV! So anyone can hang a TV up on a wall in an open space or a team room to show everyone what’s up and quickly get them up to speed. I know that Panic has a pretty good Status Board app, but I would never stick an iPad, a device with a gorgeous screen, to the back of the TV and then hook it up via a Lightning-HDMI adapter which downgrades image quality. Never ever.
And, most importantly, I wanted to make it an Open Source project so that everyone could add their custom widgets and changes, and improve upon our work. In my head I called it Grand Central Dashboard, but the abbreviation GCD is kind of taken already (thanks, Apple!), so we renamed it to Grand Central Board. And−don’t even ask−it’s obviously written entirely in the ever so loved Swift 2 and uses CocoaPods.
The board is a really lighweight piece of code. The TV screen, in landscape orientation, is split into six nearly square widgets loaded from a remote configuration file. You can use the space in any way you want, as this is just a view. Updating the widget is standarized, though.
There will be separate blog post with a detailed tutorial for developers on creating your own widgets.
Oh boy, my head almost exploded with ideas about what the board could feature and which widgets I should implement. Every company and almost every team has something they can display on a board like this and my ultimate vision for the software is individual companies developing their own widgets making use of their services. One can easily imagine Atlassian making a burndown chart widget or Travis designing one listing the current builds and their status.
Here’s my wishlist:
- time (pretty obvious),
- who is in the office? (with data sourced from timeION),
- burndown charts from JIRA,
- builds from Travis,
- stars per repository on GitHub,
- Twitter timeline, mentions or hashtags,
- a geotagged website traffic heat map
And these are just the cheapest and most useful ones I could think of.
The First Widget: A Watch
At first I just made a regular, boring watch displaying both date and time, and it looked like some sort of bad Windows 95 screensaver. It was one of those unique, precious moments in my life where I scratched my head and said to myself: “Well, this is shit, I need some help.” Lucky for me, Dawid Woldu, a coworker of mine here at Macoscope, graciously offered some of his time to help me out with designing the watch.
“Great! Just give me something with a time, the current timezone and date, nothing fancy,” I said. He came to see me two days later, sent me this GIF, and said: “I designed a watch that doesn’t display time.”
Oh my God! What!?
I was stunned, the idea blew my mind. It’s the geekiest and weirdest single thing I have ever implemented in my life but I love it wholeheartedly!
The watch gives you the time in five-minute-long slices. There are two modes, hot and cold: the former, presented on the left, shows you how much time is left until the next hour on the clock, whereas the latter, the blue, cold mode shows the current hour until it’s 31 minutes past, then switches to the hot mode. The white segment displays the event described in the center of the watch face. If there is more than one event planned for the upcoming hour, the display will alternate beetween the events every 10 seconds. If no event is planned, the center is empty. How cool is that?
OK, we have this app and the watch widget, what now? We need more and I mean a lot more widgets. This project is still in its early stages and there is a lot to do, so if you have the time and want to make something cool for Apple’s latest platform, here’s the repository on GitHub:
If you want to contribute, please add an issue and discuss your plans with us. This will allow us to give you assistance should you need it and to make sure that people aren’t working on the same things.