Friday, June 12, 2015

WWDC Day 4 - ...and that's a wrap

And the last day...

  • What's New in Internationalization - Boy, OS X/iOS has a lot of i18n options. Now you can localize how you call people, and provide alternatives for strings based on width. And you should use the options to make your app work with readers of right-to-left text. There are options to simulate these.
  • What's New in UIKit Dynamics and Visual Effects - So, you can set your views to move around to a number of rules. Isn't that swell? Please don't do this unless you are writing a game. Really. You'll make my wife seasick.
  • Building Better Apps with Value Types - Swift has a bunch of types that are logically stored by value. This talk was all about the effects of that. By this time, I was completely zoning out, so I'll have to revisit this later.
I had lunch with Emily Toop on the Firefox iOS team. She is new to Mozilla, but an experienced iOS developer out of the UK. Lovely venue at the Samovar Tea Lounge in Yerba Buena Gardens.

Overall impressions of WWDC:
  • It was good to see Apple people, but I no longer miss the place. It was a long time ago that I worked there, and life is much different now.
  • iOS programming is just fun.
  • I am ready not to be with huge crowds for a while.
  • This was not a blockbuster event for Apple; nevertheless, the improvements for both OS X and iOS are real, and interesting.
  • The food at the conference was not great. Lunch today was terrible, which is why I went offsite.
  • They finally got enough transmitters out to fix Wi-Fi in the hall, just in time for it all to be over. You would think that after 15 years of Wi-Fi being on their laptops, they would be able to get this right... Of course, the hotel Wi-Fi wasn't any better in the evenings, when everybody left the conference.
  • My feet hurt.
I would be happy to come back next year, but I am not going to push again unless programming the Mac or iOS is my primary job. Lots of good stuff. Also, there are some sessions from last year I need to watch.

WWDC Day 3 - Sessions are starting to run together...

We are in the thick of things now; next to last day. Sessions I attended:

  • Optimizing Swift Performance - This was a disappointment; it basically was Apple people telling us how Swift is optimized by the compiler, including a mode which does optimization of all of your modules at once. It also demonstrated Xcode's profiling features. While that is interesting, I had been hoping more for how to fix slow Swift code. Don't get me wrong, the presenter demo'd changes in Swift code making his app faster. It was just a different take on the topic than I was expecting.
  • Continuous Integration in Xcode - XcodeServer is cool. It is not Jenkins. It really wants to run in OS X Server. And it was introduced last year, so the meat of the feature was presented in last year's WWDC. I need to go back and watch that video. This could be very useful for Mozilla's iOS efforts, if we take the time to write tests using XCTest framework. I feel like this is an area I can explore and contribute to the team.
  • Mysteries of Auto Layout, Parts 1 and 2 - Without having seen the basic talk on Auto Layout in the 2014 WWDC sessions, I was a little lost on how to start this from scratch. Dry, long, but ultimately interesting, I will be glad to watch this again after playing with Auto Layout myself.
  • CloudKit tips and tricks - Another area I need to go back to 2014. Basically, you can rent space on Apple's servers to provide a back end to your app. Alas, it requires an Apple ID for your users, and I know that will be a barrier to entry.
I had lunch with my good buddy Jim Ingham. We worked together at Sun, Cygnus, Red Hat and Apple, off and on from 1997-2006. It was good to see him. I wish I could remember the last name of the other Apple engineer who joined us, Greg. He had been there a few months when I left, and he had moved from Austin (!). It was good to eat a good lunch away from the show.

I also went to the Apple Bash.  They had the band Walk the Moon, and I was pleasantly surprised. There was actually musicianship on display. I am not going to buy anything, but for once, I wasn't counting time until the band stopped.

It was not a dinner outing. There were small entree-like snacks, but it's not the same. So Paul and I found a late-night place near Union Square.

Thursday, June 11, 2015

WWDC Day 2 - more sessions and a party

Lots of sessions today. Let's tear right in:

  • App Thinning in Xcode - Basically, the App Store will take your app apart and only deliver assets that your device needs. Storage savings good. You can also have on-demand resources. As long as your connected... They also talked about if you have your own distribution of apps (enterprise). If you set things up right using Assets catalogs, this is done for you. Cool.
  • UI Testing in Xcode - OK, this stuff rocks. You can record your UI. You can introspect your UI. As long as it is accessible. Which is not that hard to make happen for most apps. (Firefox may be an exception....) I am really excited about this.
  • Getting the Most out of App Analytics - Ugh. It's a website. They showed us features. Good data certainly, but a horrible topic for a talk. I walked out early.
  • Protocal-Oriented Programming - Awesome talk. Basically, Swift has a much richer type safety mechanism using protocols than traditional OOP. Really enjoyed this talk, and will almost certainly watch it multiple times to understand everything that went on.
  • CloudKit JS and WebServices - So, I wish I had attended or watched the CloudKit talk in 2014. Must do that. It looks awesome. This talk was about the JS libraries for it.
After the main conference, I went to see James Dempsey and the Breakpoints. Uneven songs musically, but the words are all about programming in Cocoa, and it's pretty funny. Check it out on iTunes if you are into that sort of thing.

And I closed the night having an excellent cocktail with my best friend, Paul Tien-Shih Lee, whose birthday it was. The View bar in the Marriot is wonderful.

Wednesday, June 10, 2015

WWDC Day 1 - Sessions, Sessions, and some old friends

Tuesday was filled with sessions, with breaks in the Developer Tools lab. Sessions I attended:

  • iOS Accessibility - Actually my favorite talk of the day. First, the presenter talked about the tenets of accessbility, and demo'd taking an app and adding voiceover capabilities. It's not that hard to do.
  • What's New in Swift - First of all, this sessions was very very crowded. Swift has really caught on in the Apple community. Important features in 2.0:
    • Error handling - similar but not identical to exception handling. Really needed in the language, as I have run into cases where iOS was throwing an exception, but there was no way for me to catch it and figure out what was going on. Huge addition to the language.
    • Protocol extensions - These are much easier now, as you can include, for instance, all collection classes, or things like that. This can be quite powerful, and a lot of new functionality and APIs written by Apple are implemented this way.
  • What's New in Cocoa - OS X APIs are being made more Swiftable, so Objective C is being enhanced to interoperate better.
  • What's New in Cocoa Touch - Frustrating session that talked about a bunch of technogies in outline format directing us to the session that matches. No real content here.
  • Improving Your Existing Apps with Swift - The presenter showed us how to take an existing app and add code in Swift to it, even if it is in Objective C.
I also spent some time in the Developer Tools Lab catching up with former coworkers. Plus, I discovered an Xcode 7 bug launching the simulator, and I talked to them about that.

After the show, I met some friends from college and/or my very first projects for dinner in San Mateo. I was truly great to see them.


Tuesday, June 9, 2015

WWDC Day 0, Part 2 - Platforms State of the Union

The Platforms State of the Union session was much more interesting than the keynote. Highlights applicable to what I work on:
  • CloudKit - looks like Apple is setting up a JSON server for Mac and iOS apps to use as a backend. Have to have an AppleID, so I don't know how useful it really is for customers not in the Apple ecosystem, but I intend to find out.
  • StackView - Finally. A useable layout manager. With several different sizes of iOS devices out there, having a much more flexible adaptive layout manager has been missing for too long. Tcl/Tk and Java AWT/Swing have had this for years; good to see something useful here.
  • Storyboard linking - Hooray! Before Xcode 7, all of your storyboard UI was in one big file. This made it really hard to manage, particularly when you have multiple panels with multiple engineers working on them. Xcode's Interface Builder really likes to have a big screen, and the very large storyboard made it worse. Better zooming in IB would help, but breaking this out really needed to happen.
  • Xcode now has memory checking features. Looks like a combination of static and runtime analysis. This looks as useful or more than tools like Coverity and Purify.
  • There is UI testing now. This is really big. One of the big problems with both iOS and Mac OS is that there has been no way to record and test actions with UI elements. Web developers for years have had Selenium for this, and there really has been no comparable native solution for most other platforms. There are some things you have to make your app do to take advantage of this:
    • You have to make your app accessible.
    • You have to make your app localizable.
    • You have to make your app use the Size classes (which make the UI adaptable; see StackKit above)
You should do those things anyway.
Great session.

Monday, June 8, 2015

WWDC Day 0, Part 1 - Keynote

First of all, there are a lot of people here. Last night, my buddy told me that I might want to line up early; otherwise, I might have ended up in the overflow room.

And my Mozilla colleagues, Emily Toop and Darrin Henin, wanted to hook up early. So I set out to Moscone West and arrived at 6:30. I initially went to the back of the line. It went north on 4th, all of the way west on Minna, back South on 5th, and then almost completing the circle halfway back up Howard. 

Fortunately, the other Mozillians found some of their friends who work at Facebook, and got us a place at the front of the line. Hooray.

They let us into the building at 8. We went up the escalators, and then walked all of the way around the second floor, where we waited in the (hot, crowded) hallway for another hour.

At nine, they let us crowd around the base of the escalator to the 3rd floor. We were there for about half an hour when we were finally let into the main hall.

The keynote itself was a little disappointing. New versions of OS X and iOS with some whizzy features. My favorite was the multiapp features in iPad; looking forward to playing with those. My single favorite announcement was that Swift is now going to be Open Source and run on Linux. They then talked about watchOS, which I currently have no interest in.

And then they wasted 45 minutes with the Apple Music announcement. OK, I can stream all of Apple's catalog. But I have to either stream or play my library? Wasn't clear. And the performance did nothing for me.

So. OS X El Capitain and iOS 9: Yay. Looks good. Carry on. 
watchOS: Cool, I guess. 
MUSIC: meh.

Sunday, June 7, 2015

WWDC - D -1

When WWDC signups went up, I decided to take a chance and see if I could score a ticket. Much to my surprise, I did get one. So, here I am, in San Francisco, the night before it starts, and I am about to go for the first time since 2005.

In that WWDC, I was an Apple employee. I worked on the Developer Tools team. We were shuffled into the Apple Employee room for the Keynote.  At the end of the keynote, Steve Jobs announced that Apple was moving the Mac product line to Intel. I was on the team that was "in the know" about the transition. SJ asked us all to stand up, and the rest of the employees gave us a standing O. Was one of the proudest moments of my career.

Since then, I have moved to Austin and have worked several jobs. Currently, I work in automation for Mozilla. I hope to do some development work someday, and Mozilla has an effort underway for iOS, so I am going to be attending sessions and talking with people here about that effort. I am also going to sessions for my personal projects.

I checked in today, and they did something really smart. They gave us a windbreaker. Anybody who has been to San Francisco in June knows that this is really smart. There are probably many attendees who have never been here and don't know that June and July are cold, foggy and windy here.

This is not the first year they have done this (I saw somebody with a "14" on his back), but it is really brilliant.


Tomorrow is dominated by the Keynote, and in the afternoon, the only things to see are Platforms State of the Union and the Apple Design awards.

I'm stoked!