WWDC 2017

I thought I’d jot a few notes about next weeks WWDC, Apple’s major developer conference. Full disclosure: I’ve not been following the rumour sites very closely this year. I’ve not even done as much iOS development since WWDC 2016 as I have for the last few, so what follows is just a wish list. It’s based on neither leaks nor an in depth knowledge of failings of the current developer tools.

Hardware

WWDC is normally a time for software announcement but so much of Apple’s hardware is currently stale that it would be disappointing if nothing is updated before September.

Pretty much every Mac and iPad Pro could do with an refresh. We know not to expect a Mac Pro update, but anything else would be fair game. An update to last years MacBook Pros would be a decent indication that the “Pro” market is still a segment that Apple wishes to serve.

Personally I’m not currently in the market for new hardware, but good and frequent updates would show that my platform of choice will remain viable.

Development tools

In the last year I’ve written an Apple TV app and a small Mac app. The former I used as a exercise in learning Swift. What I found was that I liked the language but hated the tools.

Xcode is just less stable, slower and less complete when using Swift. I also picked a time where open source projects were transitioning from Swift 2 to 3, so not all projects worked together nicely. (I ended up using no third-party libraries for just this reason.)

Based on this experience, when I wanted the Mac app to be something I put together super-quickly, I chose Objective-C instead. I missed Swift-the-language but I appreciated the return of a usable Xcode. Call me a Luddite, but on balance I think I preferred boring but stable. (I also used Cocoa Bindings which feels much more natural in a language like Objective C.)

So my wish is simple: a Swift development environment that’s as smooth, fast and complete as when coding in Objective-C.

iCloud

Despite the negative press, iCloud has mostly worked well for me. Famous last words. Last year, Apple fixed my last core complaint: that it wasn’t possible to share CloudKit records between users. I’ve not seen many apps that use it yet, though.

What’s left?

Firstly: storage sizes. It feels that the amount of space you get isn’t very generous. The 5Gb “free” space just isn’t enough. You should be able to back up all your iOS devices. And the storage tiers should probably be cheaper or give you more space for the same money.

Secondly: I love iCloud Photos. Take a photo on my iPhone, have it instantly appear on my Apple TV. Download my DSLR pictures to my iPad, have them available on my Mac without any extra work. What’s not to like? Well, each device has its own database of Faces and other metadata. I should get the same results for the same search term on all devices.

Thirdly: more Continuity. The main thing I’d like to see is continuity between the various Music apps. Start listening to a playlist on your iPad, pick it up on your iPhone when you leave home or on your Apple TV when you want to share it more widely.

Mac

I upgraded my personal Mac to Sierra but my work computer is still on El Capitan. Day to day I notice very little difference.

This sounds like a bad thing but, actually, it’s not. I broadly like 10.11. It’s stable and fast for me. I think for the next version I’d just like them to finish what they started.

Does Siri on the Mac feel finished to anyone? What about all the extras in iOS Messages that never made it to the Mac? The web (and Chrome) are always advancing, so there’s always work to be done on Safari.

There is a feeling of stagnation on the Mac but maybe that’s inevitable at this stage of development. Do we really need major annual updates any more? I wasn’t convinced this cadence is useful or sustainable when they announced it. I’m still not sure.

iOS

As a younger platform, iOS clearly has more room for growth than macOS, but with a decades development much of the low hanging fruit has already been picked.

Overall, I’m fairly happy with iOS on the iPhone. Sure, there are tweaks. How about being able to configure the Control Centre? Or change the default apps from the Apple-supplied version? (For what it’s worth, I prefer Safari to Chrome and would probably stick with Mail.app, but competition would be good.)

But the iPad… so much of what was added in iOS 9 still feels unfinished. I love side-by-side apps but I hate having to switch between those apps. I often also want to switch the two running apps, but there’s no simple way that I’ve found.

Ultimately this is similar to the macOS situation: refinement and finishing what’s already there. I don’t think we need a revolution this year.

Apple TV

Some progress, any progress, here would be good. I like my Apple TV but it’s not cheap compared with the competition and the App Store is not exactly vibrant. Some of the recommended apps, for example, are still the same launch titles. Not good for two years later. (I hesitate to conclude that traffic in the App Store is low based on downloads of my own app… but it is a data point that suggests so.)

Is it a games machine? If so, why do Apple only sell one controller? Is it for TV? Then where (in the U.K.) are the ITV and Channel 4 apps? Where is Amazon Video? As the industry moves to 4K, why is it only HD?

Apple seem not to know what to do with it, so my wish would be some statement of intent.

Overall

The funny thing is, desipite using both the Mac and iOS devices all day, every day, I’m pretty happy overall. Maybe it just indicates a lack of imagination on my part but my vote for this year would be simple, incremental updates.

Earth Day Cynicism (Not mine)

Earth Day bugs me.

Okay, not Earth Day itself. The idea of respecting and preserving the world is difficult to argue with. No, what annoys me is all the big corporates jumping on the bandwagon just to be seen to be there. 

These companies do, effectively, nothing, or at least nothing actually useful, just to say that they’re supporting Earth Day. It’s worth talking about a couple of examples.

My employer had committed to turn off the lights that illuminate the logos on all its buildings for our lunch hour. They also suggest that we turn off unnecessary computers and other equipment for the same time. They generously suggest that home workers to do the same.

Lame. 

Why not turn off the lights for the whole day? Why not have signs that don’t need power all year?

Apple, on the other hand, actually do a pretty good job environmentally, considering that they manufacture stuff which is inherently nasty. Not to say that they couldn’t do better, but they claim 100% energy for the US comes from renewables for example.

But even they fall for pointless symbols. All their retail staff were to wear special green t-shirts. How environmentally friendly is it to print thousands, possibly tens of thousands, of shirts to be worn for a single day?

There are lots of other examples. They might argue that these things are significant at their scale. Or that their feeble offering do mean something as it increases awareness. 

But wouldn’t it benefit everyone if they actually did something that protected the environment all the time? The marketing team glomming onto a genuine movement just to get positive press is incredibly cynical. Being genuine would be much better press. 

Otto: Assembly

With all the pieces printed or purchased, it was time to assemble Otto.

Since I’d already tested the Arduino and enlarged the holes for the eyes and stepper motors, the process of putting it together was actually fairly uneventful.

Putting Otto together

Because of the small size, some parts were very fiddly but it wasn’t hard per se. Kudos to the people who put the instructions together!

I came across three minor problems.

First, I pushed one of the screws in too far, so that it looks as though it has a small horn. I almost did the same thing on the other side so it would, at least, look symmetrical. It’s not a big deal but I know it’s there! It’s not worth re-printing the head for so I’ll have to live with it.

Second, the battery pack hasn’t arrived yet so I had to run Otto only when connected to power via USB – a computer works but so did the power brick from our Amazon Fire tablet.

Finally, as I speculated, I think I ordered an incorrect part. Fortunately it was only the buzzer so it isn’t critical. I’ll probably try to fix this soon.

(The buzzer I have didn’t have polarity labels – which I’m not sure is important – and wouldn’t stay put on the end of the cables – which I know is a problem!)

With the robot assembled and its head snapped into place, the next thing to try was powering it up and seeing it dance and avoid obstacles.

Had I not played with the electronics separately I probably would have freaked out and assumed it wasn’t working. As I found, it takes a few seconds to download the software and reboot and, unlike before, I couldn’t see any of the lights flashing as they were all now inside Otto.

My patience paid off and he started dancing on the first try. The kids, who had lost interest during some of the more intricate fiddling around that was required earlier on, were suddenly excited again. Actually, make that kids of all ages were excited!

I was impressed that it worked on the first try. The dancing is pretty cool. At one stage I’m its routine it tries to stand on tip-toes and falls over every time. I suspect it would have to be very finely tuned for that ever to work. One of his legs could do with a little calibrating but it works well enough.

Next I uploaded the “obstacle avoidance” program. I found this a little less reliable than the dancing, but it did walk, then stop and tap its foot when you wave your hand in front of its eyes. Looking at the code, I wonder the buzzer adds something?

Overall, it was a great little project. “It works” is a pretty boring conclusion, but it’s true. I expected far more to go wrong. I’m happy that it didn’t.

Otto: Electronics

The first stage of building a dancing, obstacle avoiding robot was to build the body and legs using my 3D printer. The second was to test the electronics before assembly. This would prove to be more eventful than the printing.

I was least sure about all the electronics. They components arrived and… they sure looked okay. I didn’t think the buzzer looked quite right — it looked too big, but I figured that it even if a little lose it should make something approaching a buzzing noise.

The computer itself arrived poorly packaged, with a bunch of the pins bent. I managed to right them without breaking anything.

Arduino Nano, IO Shield, obstacle detection (eyes), motors

And talking of breaking things: I plugged in the Arduino and… nothing. Eventually I realised that I needed to install a Serial-USB device driver. The Otto download came with a CH341 (as it’s creatively called) driver so I installed it, rebooted and… well, when you see text scrolling up the screen when you boot your Mac, either you accidentally jabbed command-V or something bad is happening. In this case, the latter.

Anyway, after a fair degree of panic and dread at the idea of finding and installing another kernel driver from a random website, I found one that seemed to work.

I tried the Arduino before bundling it into the plastic body just to make sure I had the fundamentals down. I plugged in the IO Shield and one of the motors. I press “Upload” in the Arduino app and… seemingly nothing at first. Then blinking. Then the motor started whirring rhythmically.

I picked out a few other example apps and tried those. The best one, at least in the sense that it proved that I was doing the right thing, just blinked one of the boards LEDs. It looked like it worked, so I changed the delay from one to two seconds and saw that that worked too.

Nice.

Now all the bit are made and shown to be more or less Known Good, it’s time to assemble Otto.

Otto: Printing

The first stage of building a dancing, obstacle avoiding robot was to build the body and legs using my 3D printer.

Surprisingly, for someone who has been playing around with computers since I was eleven but only had a 3D printer for a month, I was much more worried about the electronics than the actual making stuff.

So confident, in fact, that initially I placed all six pieces into one print job.

Then I chickened out. I switched to four prints: the body, the head, the feet and the legs, in that order.

3D printed head, body and legs.

In one sense, I need not have worried. All the pieces came out just fine, though it took longer than I anticipated. The body, I naively guessed, would take two, maybe three, hours. Nope. Nearly eight!

Suitably chastened, I allowed ample time for the others.

The head and the body connected together with a satisfying snap. Things looked a little worse when I tried to place the electronics inside. The IO Shield fit in so snugly that I was worried that I wouldn’t be able to get it back out. The “eyes” and the motors didn’t quite fit in at all. The apertures were just slightly too small.

I worried how much surgery would be required, but in the end a little scraping around the edges with a sharp knife did the trick.

Overall: fairly straight forward. Next: the electronics.

Photography, opinions and other random ramblings by Stephen Darlington