Posts

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 …

On-the-cheap Machine Learning computer

I recently put together a cheap-and-cheerful machine-learning-capable PC.

https://pcpartpicker.com/list/wwyQ2R

Highlights are:
Pentium G4560 CPUNVIDIA 1060 6GB GPU16 GB RAM512 GB SSD The main difference from a budget gaming rig is that I chose a relatively overpowered GPU. This is because for machine learning I think the main bottleneck will be GPU RAM size. This particular GPU model has a lot of RAM (6GB) for a relatively low price.
The other extravagance is the 512 GB SSD. It would have been cheaper to use a smaller SSD coupled with a traditional hard drive. I went with a single SSD because I don't want to deal with the hard drive.
So far my son's done far more gaming than I've done machine learning. He likes the system a lot. It's >10x the graphics performance of his previous machine, a 2012 Mac Mini running Windows 10 in Bootcamp.

Overheating fanless Scooter Computer

A few months ago, inspired by The Scooter Computer, I bought a fanless Intel Broadwell 5257u computer. I set it up as a Core OS Docker host, but quickly discovered that I didn't actually have much use for Docker or Core OS. Recently I tried to repurpose it as a low-end Windows 10 game box. That unfortunately ran into heat-related stability issues. Windows 10 worked fine as long as I didn't try playing 3D games. Playing 3D games like Counterstrike GO would crash after 10 to 15 minutes, with a very hot heat sink. Fiddling with BIOS settings and drivers didn't make a difference.

I guess the lesson to learn from this is, when buying a fanless computer, not to get the highest powered available CPU. Safer to get the lowest power CPU that meets your performance needs. Or just get a fan. :-P

Family Computers, 2016 edition

As the summer of 2016 draws to an end, it's time to plan my family's IT setup for the 2016-2017 school year.
My current setup
iPhonesMacbooksiPadsApple TVChromecast AudioPrinter/scanner.Apple Time CapsuleNo-name "scooter computer" for playing with docker. Phones for kids The big change this year was that my youngest kids got their own phones. The process went well. I'm glad I spent the extra money to buy refurbished iPhone 5s's instead of cheaper phones. The iPhone 5s's have been reliable and easy to administer. The 16 GB of storage has occasionally been a problem.
I restrict my youngest kids' phones so that they can't install apps. It's tedious to have to unlock and then relock the phones to install apps for them, but I like being able to have a say on which apps they have on their phones.
I bought Otterbox cases, which worked well at protecting the phones. So far all the phones have survived. One phone did get dropped in the water briefly, bu…