Posts

Computer History Museum Oral Histories

Image
The Computer History Museum Oral Histories are a wonderful project. They are deep, long, interviews with many different programmers. Lots of never-before-made-public details about important projects.

For example, this oral history by Oral History of Kenneth Kocienda and Richard Williamson goes into details of how iOS was designed:




Or if you prefer PDFs:

Oral History Part 1

Oral History Part 2

One of the interesting things I found out was that there was an attempt to use HTML/Web APIs to write iPhone apps, and that for the first two or three iOS releases some of the apps, including the Stocks and Weather apps were implemented as HTML/Web apps.

Girls Who Code iPhone App Development Course Review

One of my daughters recently took the Girls Who Code iPhone App Development course.

This was a two-week summer course, taught 9 am to 4 pm in a high school computer science classroom. The first week the girls were taught the basics of the Swift programming language and iPhone App development. The second week the girls formed into 4-person teams and wrote their own iPhone apps.

The girls learned how to use modern software development tools like Stack Overflow, GitHub, and Trello.

Much of the instruction during the first week was by way of working through examples from a private Girls Who Code website.

What worked well:
The girls learned the basics of iOS app development, especially the Interface Builder.The girls learned how to work in small teams, how to design apps, how to meet deadlines, etc.The girls were motivated by the assignment of writing an app to improve society/the world.The girls learned how to present their final project to a group. What could have been better: From watchin…

On-the-cheap Machine Learning, revisited

A short update on my On the Cheap Machine Learning blog post. After almost a year of use, I’m still pretty happy with the setup. The hardware has worked well. I haven’t done as much independent ML research as I had hoped, but I have contributed many hours of night-time GPU cycles to the Leela Zero open-source Go-game-AI project. I don’t think I would change anything about the build, and there’s nothing about it I want to upgrade yet.

However, in the past year a new option has appeared for on-the-cheap machine learning: Google’s Colaboratory project. Colaboratory is a free web-based IDE for writing machine learning applications. What’s especially cool about it is that comes with access to a cloud-based GPU. The GPU they provide is the NVIDIA K80, which is not the fastest GPU, but it’s still plenty fast for experimenting with machine learning. [Disclosure: I work for Google, but not in any groups related to Google Colaboratory.]

Colaboratory puts machine learning within the reach of any…

What I learned in 2017

Shipping an Audio Pipeline In 2017 I shipped a new audio rendering pipeline for the iOS version of Google Play Music. I use it to render a particular flavor of fragmented MP4 that we use in the Google Play Music streaming music service. It was quite a learning experience to write and ship real-time audio code on iOS.

If you are looking to write an audio pipeline for iOS, I highly recommend basing it on The Amazing Audio Engine 2. Core Audio is a powerful library with an peculiar API. TAAE2 provides a much nicer API on top of Core Audio, without adding much overhead.

I had designed and implemented much of my new audio pipeline in 2016, but 2017 was the year that I deployed the pipeline to production.

I learned that shipping an audio rendering pipeline comes with a long tail of bugs, most of which have the same symptom: "I was listening to a song when it stopped". I was able to find and fix most of my bugs by using a combination of:
Great base libraries. (TAAE2 and Core Audio)…

The Modern Family's Guide to Technology to take on a European Vacation

Image
This summer I took my Seattle-based family of five for a three-week trip to Europe. We had been promising the trip to our kids since they were little, and this year we were finally able to go. We had a wonderful time!


Here are my tech-related traveling tips.

Disclaimer: I am not being paid to write this, and there are no affiliate links. I'm writing this to help me remember my trip, and in the hope that it will be helpful to other families (and maybe even couples and individuals) planning similar trips.
Hardware Tips Take your mobile phones Take one modern mobile phone per person. Android, iPhone, either is fine, but you'll want something with a SIM slot and nice camera.
Leave your laptops at home I didn't take any laptops with me, and I was able to do everything I needed to do using just my mobile phone. It was a relief to not have to lug around a laptop.
A few times I had to request the desktop version of a web site, but for the most part, the mobile phone worked fine for…

Family Computers, 2017 Edition

A quick update on my family's computers, as we start the 2017-2018 school year
My family's current setupGoogle WiFiiPhonesMacbooksWindows Gaming PCSchool-provided Windows convertible tablets iPadsAppleTVWiiChromecast AudioLaserprinter All-in-One.High speed document scannerNest thermostatsGoogle Home Changes since last year Home Network I bought a set of Google WiFi routers. I love them. They have worked flawlessly since the day I plugged them in. Best Google hardware product ever!
Phones I upgraded my kids to refurbished iPhone 6s+s in Incipio cases. They are happy campers. We kept their old iPhone 5s's as backup phones for science projects and vacation trips.
No more Beats headphones I've been having problems with my kids' Beats headphones. I had two sets of headphones, and they both needed to be repaired twice while under warrantee. When they broke again after the warrantee had expired, I just threw them away.
I now buy my kids $15 Panasonic earbuds. They don'…

Team Blue Iris ICFP 2017 Programming Contest Postmortem

Image
Team Blue Iris ICFP 2017 Programming Contest Postmortem My son and I competed as team "Blue Iris" in the ICFP 2017 programming contest.

The ICFP programming contest is an annual 3-day programming contest sponsored by the International Conference on Functional Programming. Functional programming is an approach to writing programs that stresses writing as much of the program as possible in terms of functions. That's as opposed to the more commonly used imperative programming.

In the contest, people form teams to compete for three days to solve a problem, using any combination of programming languages. People compete for the joy of problem solving in the language of their choice. It's common for people to use outlandish or obscure programming languages. It's sort of like the Wacky Races of programming contests.



I've competed in this contest about six times over the past 10 years. This year was the first year my son joined me. My son's got about a year's …