Ambient background image.

The work and times of the app development team at Steamclock.

Follow @steamclocksw or our RSS Feed or explore our archives.

Return of the Map of the Internet

Four years ago, we built a 3D map of the internet for Peer 1 Hosting. That was a really fun project – it’s not every day your app is featured on CNN. With over 100,000 downloads and an average rating of almost 5 stars, the Map of the Internet was one of the most-loved apps we’ve built. The visualization was used in various other mediums, including an exhibit at London’s Science Museum. It was really cool.

Soon after the app’s launch, our client Peer 1 was acquired by Montréal-based telecom Cogeco. It seems the key to getting your company acquired is launching a cool app with Steamclock! In the resulting shuffle though, the app got out of date, and eventually it disappeared from the App Store.

When the app went “out of print”, so to speak, we got a surge of fan mail about it. Folks wrote in from around world, asking for information on the data, permission to use the visuals in other work, and whether the app would return. We also got some requests to open source the code, so people could help update the data and continue to support new OSs and devices, which was great to see.

Well, we’re glad to announce that we’ve teamed up with Cogeco Peer 1, who have been great to work with, and brought the apps back to life!

This fall we brought Map of the Internet up to date to support iOS 11, iPhone X, and current versions of Android. The updates are now live on the App Store and Google Play. The new apps feature new data through 2017, and some UI updates and refinements over the original versions too.

Even more exciting is that the folks at Cogeco Peer 1 have agreed to open source the apps! Now, community members can check out the internetmap github repo, propose improvements, and submit pull requests. If you’re down with Objective-C++, we have the project for you! 😘

Thanks so much to the folks at Cogeco Peer 1 for making this project possible, and for all the fans of the app who wrote or tweeted that motivated us to get this done.

Bluejay: Reliable Bluetooth in Swift

Building apps that reliably talk to Bluetooth hardware can be tricky. Apple’s Core Bluetooth APIs are pretty low level, and they offer enough flexibility to really make a mess if you’re not experienced with Bluetooth. We’ve built a lot of Bluetooth apps in recent years, ranging from medical apps to solar lighting apps, and learned a lot about what does and doesn’t work well with Core Bluetooth.

Using those lessons, we built a framework for building reliable Bluetooth apps. We call it Bluejay, and its first public release is now available! 🎉

Bluejay is a simple Swift framework for building Bluetooth LE apps that are reliable. It makes properly queuing Bluetooth communications easier, helps coordinate background operations, and takes advantage of Swift idioms with a callback-based API.

We’re staying modest by numbering this week’s official public release 0.1, but Bluejay is already working in three apps we’ve built for our clients, so with luck it will be a good fit for your apps too. We’re going to keep iterating and are open to the community’s input as we move towards a 1.0 release.

We’re eager for feedback, though of course Bluejay is MIT-licensed, so code contributions are encouraged but optional. If you do build Bluetooth apps, or are even just curious, we’d love for you to take a look and let us know what you think!

Hello Kotlin!

Last week at Google I/O, the Android team announced that Kotlin is now an officially supported language for Android development. This is good. Very good.

When Apple launched Swift in 2014, it raised a big question: when will this young language be ready for prime time? In contrast, Google’s announcement of support for Kotlin actually reduces uncertainty: Kotlin has proved itself a capable and relaible language for Android development in recent years. The question about Kotlin has long been: is this going to be the language Google puts its official weight behind? Thankfully, we now know that the answer is yes! You can take it to the bank – which we intend to do.

Yes that’s right, we’re throwing the doors open: Kotlin is now our first-choice development language for new Android projects. We’ve been building various smaller projects in Kotlin over the last year, and while it’s a great improvement over Java, it’s been hard to guarantee that this scrappy new language isn’t a flash in the pan. Thankfully that era is over, and Google’s commitment to the language gives us the confidence we need to go all in.

Kotlin and Swift, sitting in a tree

Not surprisingly for a new language, Kotlin has a ton of advantages over Java due to its modern language features, along with a cleaner, clearer syntax that’s still familiar to folks who know the Android system APIs.

What’s less obvious but exciting here at Steamclock is that Kotlin is a lot like Swift. While there are surely differences – for example Swift’s performant value-typed structs aren’t generally available in JVM-based languages like Kotlin – there is a ton of overlap with Swift’s language features and basic syntax choices. A developer who is comfortable with Kotlin or Swift should be able to get comfortable in the other quite quickly.

Looking at just one example, Kotlin has a feature that Swift has taught us to very much appreciate: nullability. In both languages, the type system will not by default let a variable be assigned a null value. If you want a variable to be nullable, you need to mark it as such, and then the complier will ensure that you handle what happens if that variable turns out to be null at runtime.

While nullability seems at first to be a complication, a burden of sorts, it is a mental shift that once made, produces substantially more reliable code. It’s incredible how many failures that occur in production code – both server-side and app-side – that boil down to an unexpected null value. Being able to categorically remove these bugs gives us a big leg up in reliability, and fewer fires to fight down the road.

Of course, nullability is just one of the modern features that Kotlin and Swift bring to the table. So, here’s to cleaner, clearer, safer code – on iOS and now on Android.

Reports from the Mountain

For years, the Association of Canadian Mountain Guides has run a service called the Mountain Conditions Report. The MCR started as a mailing list so professional guides can warn the world about hazardous mountain conditions before things get ugly. Some avalance risk here, a bear sighting there – all in a day’s work as a mountain guide.

A couple years ago now, the famed outerwear company Arc’teryx got in touch with us about the MCR. As part of their work with guides, they wanted to bring Mountain Conditions Report to the web and mobile. As with most of our clients, they were looking to build the web platform, and have Steamclock build out a great mobile app. In the longer term, they wanted to roll out this potentially life-saving tool to mountain guides and the public worldwide. Marc Piché, the Technical Director of the ACMG, explains the motivation like so:

The Canadian guiding culture is very much about sharing. We want to learn from each other’s experiences. Sharing helps everyone make informed decisions and prevent incidents.

At its core, MCR is about creating and viewing field reports. There are plenty of other details, including a directory of guides who have posted recently, alerts for nearby reports, and so on, but the core experience is about finding and posting reports.

Since we launched the MCR app, we’ve been iterating it, making improvements, adding features requested by guides, and adding support for more guiding associations arond the world. It doesn’t get much better than building an app that could help save lives with a company we all admire – living in a city as rainy as Vancouver, rain gear is a core competency.

If you’d like to learn more about MCR, there are articles on the background for and details of MCR on the Arc’teryx blog. The app is also free to download on the App Store. Let us know what you think!

How To Decorate an Office

When I started Steamclock, I had a lot of experience being in offices, but no experience decorating one. For the first couple years, our walls were mostly bare. All our office said about us was: “we have an office”.

Since then, we’ve invested in making our office actually feel like a place we want to be five times a week. During that process I’ve learned a lot, especially from Rachael and Rachel here at Steamclock, who have put a lot of time into making it great. (Yes, we are 20% Rachaels by volume, as all companies should strive to be.)

And so, here are some of the simple lessons we’ve learned about crafting an office.

1. Plants are friends

Plants can be a challenge for tiny startups, since you may not yet have an employees who is skilled at keeping plants alive. Still, as soon as you can, it’s worth getting some hardy plants to green things up. Plants are inexpensive, look good, and most importantly, just kind of make people happy!

2. Get matching art

My first attempt at office decorating was to start ordering one-off posters or other pieces of art that we just generally liked. While this can work, it’s both easier and better to get batches of prints or other items that look good as a set. For example, we now have a set of NASA posters, a set of Pixar posters, and a set of app icons. Each on their own is nice enough, but as sets they look great.

3. Show your work

If at all possible, it’s nice to show off work you’ve done. This might be designs you’ve created, momentos from projects you’ve shipped, or in our case, icons we’ve designed for apps we’ve worked on. While it’s important to always be looking forward, it’s also worth celebrating what you’ve shipped.

4. Your windows are a canvas

Ideally, your office will have a healthy number of windows. Windows are great for natural light, but they’re also big canvases that can be filled (or simply trimmed) with art. For years now we’ve kept neon or chalk pens that work for writing on windows in the office, and change up what’s on the windows from time to time.

5. Big art is worth it

In a home, you’re likely to fill your walls with shelves, furniture, and so on. In an office, you often have more wallspace to work with, and that means you need bigger art. Now, larger art can cost substantially more, and seems like a bigger commitment. I was initially gun-shy on larger pieces, and early on I just stuck to ordering various little posters and knick-nacks that may or may not look nice together.

I now know this was a mistake. Larger art looks better, takes less time to collect and place, and may not even cost more once you’ve actually filled up your walls.

If you’re looking to fill a wall with something large, a suprisingly cheap option can be a giant vinyl. We have a simple monochrome vinyl of our logo, four feet wide, near the entrance of our office. It’s pretty great. For the same price, you can get a far larger vinyl than a full-fledged sign.

6. Advanced technique: hire artists

It’s always good to hire multidisciplinary employees, and in our case, our Office Manager, Rachael Ashe, is a talented paper artist. While we may not have full-time paper art needs, we very much enjoyed having Rachael build us a custom origami art piece for the office. Visitors love it, and it’s now a permanent fixture in our meeting room.

7. Soundproofing can be art too

Speaking of meeting rooms, a meeting room plagued with echo and noise is the bane of any conference call. While it’s even better to minimize unnecessary conference calls, you can make calls a lot better by adding sound dampening to your meeting room. A rule of thumb for soundproofing is to cover a wall, ceiling, or floor area equal to your floorspace with sound-absorbing materials. Professional sound dampening can be extremely expensive, but indie sound dampening can be surprisingly easy, and attractive. In our case, we got a simple area rug and deployed Rachael’s amazing origami masterpiece, and voilà: far less echo.

8. Embrace your personality

Just because you’re incorporated doesn’t mean your art needs to be corporate. One of my favourite things in our office is a painting of a unicorn and a rainbow. This was our first piece of art, selected by our first employee, and just like everything else, it says something. Years later it still hangs on our wall, saying: This is the kind of company where you can propose putting up a rainbow unicorn slaying ponies, and it will happen.