Scrollable Volume Icon

Let’s say you click on the volume icon in the Mac system menubar. Now, keeping the cursor on the icon, scroll up to increase the volume. The catch is, you can’t.

While the scroll direction of the volume slide really is the natural direction, only the dropdown slider accepts scroll events. The more convenient interaction is to extend that area to the icon so that it is possible to change the volume without moving the mouse.

Yes, this is the smallest nice-to-have feature, but why not?

What Am I Sharing? - Titling UIActivityViewController

UIActivityViewController was introduced in iOS 6.0 with the purpose of offering a standard way to present system and application services. But one thing it lacks is a title. For example, wouldn’t it be nice to know where a url is taking me?

In case you need more free music
Sometimes I just want to see what this long url reads...

Slack displays a custom view above the Activity Controller to give more context about the actions that can be performed. This is a good step in the right direction and probably the most that third-party developers can do without messing too much with internal views. Of course it would be great if the native UI could include a title section similar to Action Sheets.

Slack's custom title view
Native Alert Sheet title view

I was a bit curious to see if I could make a custom title view. It’s a bit hacky to insert the custom views at the right location to fit into the animation and not well tested so use at your own risk. The source code is available here.

And it comes in blur

Tuning the Apple TV

  • Apple
  • TV
  • Tech
  • Talk

I was fortunate enough to attend Apple’s TV Tech Talks in Toronto and I had a great time. The conference was well-organized and covered a range of topics from customer expectations, to development, to marketing. Although some of the content presented seemed trivial, there was clearly a lot of deliberation behind every decision, such as the concept of the Focus Engine. It reminded me of a recent episode of Under the Radar where David Smith talked about solving complexities. Usually one starts at a simple solution, only to discover the edge cases involved. However after numerous attempts and lots of learning, one often ends up with an elegant solution. I was really inspired listening to the Apple’s explanation of the design process and their best practices. I also thought that the presentation slides and animations were fantastic.

Future of TV

Apple is really pushing apps for its TV platform. I think there are three main categories: games, content consumption, and shopping. Games are going to be very popular because it can be a very communal activity - something that was heavily emphasized during the Talk. Moreover, the App Store makes it super accessible for players to purchase and download new apps.

Time will tell, but this may be the real consumption device as there are many built-in features in AVKit such HTTP Live Streaming (HLS) that can improve the viewing experience. Furthermore, native Interstitial (prevents users from fast-forwarding ads) support and TVML suggests that Apple wants to help content creators jump on the platform by reducing barriers. If Apple can get more content providers onboard, even those who are just starting out, then this can provide more leverage when negotiating content deals with cable companies.

Shopping also ties in very well with Interstitials. Remember those commercials where you had to call within 5 minutes to take advantage of the “special offer”? Well the Apple TV can potentially present an ad for a pair of shoes, and allow the customer to purchase it directly, all in the span of 30 seconds. I wonder when Apple Pay will arrive for the TV? Either way this can lead a new realm of targeted, interactive ads.

The new Apple TV and tvOS opens the door to many new possibilities. 2016 is going to be an interesting year…

Building Solids

  • Solids
  • Building Apps

Solids is a puzzle game for iOS and Mac that I spent a lot of time making. The idea is simple: The game starts with a board of partially filled circles. Each circle gets filled only if it matches the colour of the top header dots. You swipe horizontally or vertically to move each row or column of circles, and the objective is to make them all solids.

Concept

We are all influenced by what has come before and this game is no exception. I think my initial inception was from one of the chapters in Math Circus1. I didn’t want any fancy graphics and I knew I had to use gestures for interactions on a small screen. However one small problem with removing the seals is that it also takes out the indicator for where circles need to be placed. I experimented with labeling each circle with numbers, so players need to arrange them in increasing order. But this was a bad idea in many ways, as it is (1) hard to read, (2) not clear without instructions and (3) ambiguous whether the ordering should be horizontal vs vertical. I also didn’t want to incorporate too many colours because it would be hard to differentiate between them. Using the header dots was a good alternative in my opinion.

Good ideas and inspiration lay the groundwork, but continuous improvement and hard work are required to create something that stands out. As simple as the concept was, it took a lot of experimentation in different directions to finally get to that point. Overall I think I spent a lot of time on polishing the game UI and interactions with the player. There’s often the idea of shipping the most bare-bones app possible in order to gauge the market, and push out updates as fast as possible. However I think that most games are an exception to this rule, especially games that are defined by the experience.

Feedback

Nevertheless, one of the most important things that I did was to get feedback from others. As developers, it is so easy to get “used” to testing an app that we get biased into thinking that everyone will be able to easily pickup the game. There was a fine line between being too complicated and too trivial, and it would have been very hard to gauge without the feedback of others. I want to thank everyone who beta tested and provided their thoughts!

Development

One thing I did from the start was to experiment and not worry too much about efficiency and code quality. This was also early in my Swift career and I didn’t have too much experience with its coding style/organization. I used simple UIViews to display the circles/dots and this worked well up to and including the final concept. However it was then that I realized that, aside from the UIViews, I could easily port the game to the Mac. I remember watching a couple of WWDC videos on how the iWork team created a shared codebase. I rewrote the game using CALayers, which also allowed me to animate how much a circle was filled in (a lot more easily). I have to say, one of the benefits in the Apple ecosystem is that many of the Foundational frameworks are cross-platform and this makes it very easy to target multiple platforms.


Solids is something I spent a lot of time experimenting, building, and polishing. The game is simple to pick up and each level is uniquely intriguing. I would appreciate greatly if you can check it out and would love to receive any feedback that you might have! I usually read tweets @hweetty.

1. I remember playing Math Circus in elementary school (as well as those typing tutors, etc). I guess its my version of Chris Liscio's growing up with computers.

Go Go Bus

  • Go Bus
  • Fedbus
  • Greyhound

Busing can be a really annoying adventure - routes get changed, traffic, overcrowding, etc. But it’s the start of a frosh new term and I wanted to share my experience taking the bus from Waterloo to the Toronto region. I’m on a bus right now actually.

There’s mainly three different services: UW Fedbus, Go bus, and Greyhound. Of course each has their own characteristics so let me describe them below.

Fedbus

The Fedbus is run by UW’s Federation of Students and available for Waterloo students. It’s fairly cheap, especially if you are purchasing a round-trip ticket ($20 total). It can be pretty convenient if you live close to one of its locations. However it only runs once on Fridays and Sundays (during the term), which certainly limits your flexibility. It can be purchased online or at the Turnkey desk in the SLC.

Go bus

It’s the bus that everyone knows about, runs on a regular schedule and can reach many destinations. Even though there’s only one route - the 25[ABCF]? - that travels to and from Waterloo, its variants can be a bit tricky to decipher at first. Normally the 25 route goes between UW and Square One (be sure to take the B or C express variants as they can usually save you almost an hour). The exceptions are the A variant, which goes to Milton, and F, which goes to York University. Unfortunately these two variants have a limited schedule, so be sure to check it ahead of time. It’s probably worth getting a Presto card because students can receive 17% discount1. You might also find this little webpage useful to keep tabs on your balance (I keep it open as a tab on my phone).

Greyhound

I’ve only taken the Greyhound a couple of times over two years ago so I don’t have much to say. It’s usually the better choice if you are travelling to downtown Toronto. Many Greyhound buses offer wifi, but for me it’s not a big deal since I usually listen to podcasts. You can purchase tickets at the SLC and take the bus from BMH.

Tips

When traveling on an unfamilair route, I like to plan ahead by using Google Maps. Afterwards, I will usually use the Transit App because it provides a real-time schedule of all nearby buses (and has Google Maps search built-in). It’s convenient to use the Presto card so you don’t have to worry about spare change or bus tickets. Safe travelling!

1. You can apply for the Presto student discount through the Go Pass tab on Quest.