Ambient background image.

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

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

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.

The Steamclock Conference Radar

Conferences have long been a way Steamclock stays plugged in to the app design and development community. We’ve attended, volunteered for, sponsored, emceed, and spoken at over two dozen conferences since 2010. One of our goals this year was to spread that love by having everybody at Steamclock attend at least one conference in 2017.

Unfortunately though, great conferences have a tendency to be short-lived. Some of our favourite conferences of recent years, including XOXO, CocoaLove, Çingleton, and NSNorth, aren’t happening in 2017. Even if conferences continue every year, sometimes they lose their magic (or inexplicably relocate to the suburbs). The silver lining of this cycle is that it opens opportunities for new and interesting conferences every year.

With that in mind, here are some of the conferences that folks at Steamclock are planning on attending in 2016:

CocoaConf

This conference series has been a longtime staple in the iOS development world. So far this year they’ve only announced Yosemite in March and Chicago in April, but we’re keeping an eye out for a return to the Pacific Northwest.

O’Reilly Design Conference - San Francisco in March

Since there seems to be a lack of indie app design conferences, especially in North America, we’re giving a more “corporate” design conference a shot this year.

Úll - Ireland in April

For years now Úll has been a masterfully produced show about product design, the Apple ecosystem, and being human. This year they return to the spring, their natural position in the conference calendar. Where WWDC may perhaps lose some of its social gravity this year, you can always count on Úll to provide the unexpected, the breathing space, and the impromptu singalongs that make memories and knit together the iOS community.

Polyglot Vancouver - Vancouver in May

A few blocks from our offices is Vancouver’s yearly multi-denominational development unconference. As with any unconference the quality of the sessions can be uneven, but here’s the secret: it’s in your hands! An unconference is what you make it, and we’d like to show up with one or two session proposals this year that we’re excited about.

Google I/O - Mountain View in May

Android development doesn’t have the rich array of indie conferences that iOS does, so despite the logistical weirdness that marked last year’s I/O, our Android folks will be in the lottery again. With luck they won’t be left in outside in 90 degree heat again.

Traction Conf - Vancouver in May

One thing I wanted to try this year was to attend a more “businessy” conference. Traction is ostensibly about growing businesses, which is a key piece of what we do for our clients, so I figured, let’s give it a try! With luck there will be a survivably high pragmatism-to-buzzwords ratio.

WWDC - San Jose in June

Yes, WWDC has moved to Silicon Valley. For iOS and Mac developers who win the ticket lottery it’ll still be worth the trip. For folks that go for the cavalcade of social events and get-togethers that have studded the week in San Francisco, it’ll be a harder sell. Still, Steamclock will there as usual, minus one tiki party.

Layers - San Jose in June

Layers, the delightful design conference, hasn’t officially announced dates for 2017. Fret not though, since they have not-so-subtly teased that they’ll continue their tradition of being the tasty designer cream filling to WWDC’s crunchy programmery… cookie… outside? The point is, it looks like they’ll be in San Jose in June!

CascadiaFest - Pacific Northwest

For the last few summers, CascadiaFest has been a fun conference centered on JavaScript and web development. There hasn’t been an announcement one way or another about 2017, but we’re definitely keeping an eye out.

Release Notes - Chicago in October

The pre-eminent conference about the business of mobile apps is back this year, but is now in the much more exciting and accessible location of Chicago! I have reason to believe that this year’s Release Notes will be excellent.

That’s it so far. If we missed any awesome mobile design and development conferences let us know, and hope to see you sometime this year!