The downfall of Rdio and my journey to find a replacement

Screen Shot 2015-12-27 at 2.07.16 PMRdio breaks some bad news

On November 16th, 2015 Rdio announced that they were filing for bankruptcy, and their intellectual property was being purchased by Pandora for $75 million. I had been using Rdio for several years, after a coworker of mine at Twitter informed me that one of the employee perks was a free unlimited subscription.

The signs that Rdio might be in trouble weren’t hard to come by. Each year there were layoffs (not a great sign for a pre-IPO company), and eventually, whatever deal Twitter and Rdio had in place expired and Twitter employees were given the chance to continue with a paid subscription without losing account details and history. I jumped at the chance because I loved the service so much, and had in fact already been paying for several other accounts for my family members to use. I ignored any signs that the company was in trouble because the service provided a very valuable and hard to come by feature for me: If you limit the amount of people you followed to those with very similar musical tastes to your own, Rdio was a wonderful discovery machine. I could see the last thing my friends had been listening to, as well as their most recent history, and there was even a feature that lumped together all the new stuff people across my social graph were listening to. I found this to be just as good if not better than the holy grail of music recommendation, word of mouth. In the last few years I have discovered and enjoyed so many new albums and groups, all thanks to the wonderful work of the team at Rdio.

Apple Music to the rescue?

When Apple Music offered a free 3 month trial in August, I signed up for it because I’m always trying out different services and I figured there is no harm, it’s free! I enjoyed the fact that almost everything I wanted was in the Apple Music catalog, but that one great feature from Rdio was nowhere to be found. In fact, your Apple Music library lives in a bit of a vacuum, and it’s not possible to see what your friends are listening to or what they have recently saved to their own music library. I also had some other issues with Apple Music on iOS. I like to download music for offline listening because I commute by train from my home to San Francisco, and there are several points where the train is underground and my phone loses reception completely. When this happens, the Apple Music play next queue disappears, and becomes inaccessible until you are online again, at which point it will have been zeroed out. A frustrating experience for someone like me who tends to queue up a number of albums I am in the mood to listen to at once, only to discover less than 40 minutes into my commute that my play queue has been erased by some shitty software bug. (At least I hope it’s a bug, because if the development team at Apple decided this was the way such an event should be handled than they can go fuck themselves.)

So after several weeks spending most of my time listening to music through Apple Music, I went back to Rdio, and not long after that was when they made their announcement, leaving me in a lurch.

I knew Apple Music was probably the path of least resistance, since they already had my music library (i.e. I didn’t have to sit there and feed it artists and albums for days, like Spotify) but their software had proven to only make me dislike trying to listen to my music. I did give Spotify an attempt or two, but I really dislike that piece of software, and the service does not treat albums, artists, and tracks as equal entities the way Rdio did, so it became tedious to try and use the service in a way which it wasn’t intended to be used, i.e. listening to whole albums, and queueing several albums at once for listening throughout the day.

The Queue

One other feature I will dearly miss from Rdio is the ability to keep track of your play queue from any device. For example, when I would complete my work day, I would press pause on the Mac desktop version of Rdio, and then plug my headphones into my phone and continue listening to the queue from the same position. Rdio also gracefully kept the play queue intact when my phone would go in and out of reception during my commute. Spotify claims that this is how it should work, but I found the queue state to change rather frequently, most likely because of failed API calls from my mobile device. Apple Music simply does not provide any context on your computer what you’ve been doing on your phone, aside from a Recently Added section. You can’t access your play queue across devices whatsoever.

So after scratching off Spotify and Apple Music, and a brief attempt at using Tidal (ugh), I decided the best way forward for me is to go back to the days when all I had was one or two CDs in my car with me, and a portable CD player to listen to them with. That is, if I don’t have the music with me physically, I just won’t be able to listen to it.

Keep it local

At first I attempted to do this using Apple Music and the built-in Download option, but for one thing, sometimes the downloads would silently fail, and when I tried to play the failed tracks they would simply load in the player, and then skip to the next track. I often found entire albums in this state, and the only way to fix this issue is to remove the album entirely from your collection, go find it again on Apple Music, and then add it back into your collection, and THEN you can try to download it again and hope it works this time. Considering I have several hundred albums I’d like to carry around on my phone at all times, I got sick of this song and dance very quickly.

At this point, I was also getting really sick of the bugs on the desktop version of iTunes (which is how you access Apple Music on a Mac, why they can’t have consistent naming across all these products that they own, I don’t know). This is when I remembered a little-known developer called Coppertino. They make a music player for Mac and iOS that I have found to be the perfect solution for my problems. Below I am going to describe how I achieved my final setup, and the pros and cons to going this route.

VOX music player

First of all, I’m a huge music fan, I go to shows as much as I can, and I have been a musician since I was 6 years old, went to college for music, and after that played regularly in a rock band for several years, until it was clear I was not going to be able to make a living without doing a SHITLOAD of hustling, which I’m not really good at anyway. All that is to say, I believe artists should be paid for their work, and I put my money directly in to artists’ hands as much as possible. With all that said, it pains me to say that as of today, the best way I have found of capturing and keeping music without relying on some third party to manage my library is by using private torrent trackers to download everything I want. There are never issues where albums go away, or are delayed due to artist’s whims or licensing issues. I download the album as a folder of files, and I never have to worry about finding that album again. I also like to purchase vinyl versions of records as they almost always come with a download code for 320Kbps encoded mp3s. I take these files and store them in Dropbox for safe keeping.

There are many things that I love about the VOX music player. For one, you can use the media keys built into all the latest Macs by downloading a system preferences panel that lets you toggle controlling music playback from the keyboard, headphones, or a paired remote. With every other music player I’ve used on a Mac, including Rdio, when you used the media keys to control playback it always triggered iTunes opening in the background, just taking up resources for no reason. Not so with VOX, however they are capturing the media key input, it does not result in iTunes opening and consuming resources.

Screen Shot 2015-12-27 at 12.45.57 PM.png

I also enjoy the fact that by default VOX has nothing inside of it, you have to provide the media yourself, but there are a number of choices which makes that simpler. Inside the VOX application preferences, there is a panel called sources, which is how you inform the application where to find your music.

Screen Shot 2015-12-27 at 12.44.40 PM.png

As you can see, there are several options here, Collections, iTunes, Last.fm, and SoundCloud. The SoundCloud integration is kind of neat, but I found the notifications SoundCloud pushes out to make it too annoying to use in practice, so I have not enabled it. If you choose to Sync with iTunes Library, and you use Apple Music, anything you’ve “liked” will be present in the player, and it is probably the easiest way to get started with this application, or if you just wanted to try it out without investing too much time in getting your collection loaded up.

I have decided however, that I will forevermore maintain my own local library of files (and I’ve decided to use FLAC, because why not?). So in my case, once VOX was open, I opened a Finder window with a view of my Music directory full of FLAC files, and just drag and dropped the entire collection into the VOX player.

VOX supports the ability to upload all your music into their cloud locker service known as LOOP. For $5 a month, you can store all your FLAC files or any other type of media VOX recognizes (and it recognizes a lot!) and then these files become accessible to other computers and devices using the VOX media player app.

Screen Shot 2015-12-27 at 12.44.45 PM

This means that I only need to maintain one single music library on a Mac which will be treated as the master, and then I can load music onto my work laptop or phone at will. By default, simply choosing music to play and listening to it on the other non-master devices will result in the track being streamed. If I choose to, there is a download option available on the iOS app, as well as from the Mac desktop app.

The desktop app is also very nice looking, and provides a plethora of information in a nice, compact design. I love that it includes details about the encoding of the file you are currently listening to.

Screen Shot 2015-12-27 at 12.43.56 PM.png

By default, the player takes up very little space, and of course you have several options about how the player should behave such as keeping it on top of all other windows, in all spaces (Mac’s term for desktops), etc. when you’re curious to see what’s coming up next in your play queue, clicking the ellipse (sometimes called a ‘More’ button) the player expands to show details of the play queue:

Screen Shot 2015-12-27 at 12.44.14 PM.png

From there you can manage your queue, jump forward in the queue, etc. To the left of the queue tab is your library tab. In there is all the music you have fed into VOX. There are sub tabs for various sources like Loop, iTunes, etc.

Screen Shot 2015-12-27 at 1.13.29 PM.png

Overall, it’s a great experience to use on the desktop and on iOS, and it provides all the same features across both operating systems.

VOX for iOS

The best part of this new setup is by FAR the iOS app. Because VOX provides the LOOP cloud storage service, when you open up VOX on iOS, you can see all of your content and listen to anything from your collection immediately, without having to worry about connecting back to your home computer or deal with your shitty internet service provider. The iOS app provides a beautiful view of all of your albums, and the philosophy behind the app works very well for me, as someone who cares only about albums and artists, as opposed to tracks or playlists.

Just have a look around this gorgeous interface:

This slideshow requires JavaScript.

Now of course, nothing is perfect.:)

Problemos

The most annoying thing to me is probably the fact that when I attempt to share what I am listening to using the native iOS share sheet to write a tweet, there is text generated for the tweet automatically based on the artist and track which is excellent, but then it also includes a statement and link about the player itself, which is fine if I were allowed to change the default. I understand, the app store market is rough and exponentially so for an indie developer. I’m happy to promote the app as much as possible, and trust me I tell everyone I know about this thing. But I find it tedious to have to edit the pre-filled text in a tweet when all I usually do is take out the link to the app store download.

Share with everyone!

A nice bonus would be if it linked to a service like tape.im, which I believe is private and used only by the developer behind the Mac desktop music player app Simplify, but maybe they could make a deal. It let’s you share one link that displays a page with links to popular streaming services, so you can share to your friends without having to think about which service they’re using.

Big files move slow

I have chosen to use FLAC files. Being that these are lossless audio files, they take up a lot of space. The LOOP uploader can only go so fast, and depending upon your ISP it may throttle uploads meaning it can take quite a few days to upload even a modest collection like mine (About 163GB).

Disk space

I’ve also had some issues, which I believe are not due to the VOX application itself, when my Mac running the LOOP uploader ran out of disk space on the main disk. However, this left some uploads in a failed state, or albums would be missing some tracks. To be clear, I mean in terms of the playback of files FROM the LOOP service onto another device. I had to go through the library on the master VOX Mac running the LOOP uploads, and comb through each album looking for tracks which I need to upload to LOOP. It would be nice if the application featured a smart playlist of tracks in this state, would at least make repairing issues like this faster.

LOOP works very well for me

That said, once files are pushed up to LOOP, the service is rock solid. I have used it in spotty coverage (2 ‘dots’ of LTE in Clayton, CA) and streaming works beautifully. Of course, since they are just direct copies of your files, the sound quality is identical aside from the fact that I stream over Bluetooth in my car. I could plug a USB directly and the only limitation would be the processing on the internal iPhone audio chip.

I downloaded a ton of stuff back to my phone after uploading to LOOP from the Mac. Now I can carry all the albums I love to hear again and again, and I can get access to my library on demand without using Apple’s service at all. Because let’s face it, Apple makes great hardware, but their online services suck a jaguar’s ass.

Headphones

I’ve also been playing with an open source project which aims to become a Tivo type of system for your music. The idea is you point the Headphones software to your music folder, and it uses musicbrainz’s API to identify artists and albums/releases, and then you can configure it to utilize NZBs or torrents to automatically download new albums or other releases as they become available. If you’re familiar with SickBeard this is the same thing, but for music. In fact, I wouldn’t be surprised if it was a fork.

I’ll really miss Rdio for the great music discovery experience they built, but too many services have failed me now, so I’m planning to continue curating my own music library of files and backing it up appropriately, so no matter what service I choose to use or try, I’ve always got a hard copy of my library somewhere.

I’m also hoping that last.fm will come up with a better app on iOS. The new site looks like, but it’s all the same old stuff, just interesting ways to look at your data and see recommendations. I find last.fm’s recommendations to be mostly good, sometimes great. I just wish it was a nicer experience from a phone.

I’m very happy to have all the music I love directly stored on my phone, like it was 2005 and I was carrying around an iPod synced to iTunes at home. Grabbing new music is really easy now, so it’s not hard to jump into something new if someone suggests something to me. I look forward to enjoying this setup for a long time to come, I just hope that the developer of VOX continues to support this software!

Particle Zoo stats

I reached out to my old band mate Jeff yesterday to see if he still had the data he kept on all of our old band’s shows. Luckily he did, and I was able to extract the following stats from my time playing in the band. The most important stat is the date I met my wife, which was before a show in South Amboy, NJ on 5/18/2002!

139 shows total
From 11/3/2000 to 5/27/2006

Breakdown of activity by year
2000: 2 shows
2001: 13 shows / 1 EP (Go-go)
2002: 43 shows / 1 LP (It's in the Cans)
2003: 29 shows
2004: 31 shows
2005: 12 shows / 1 LP (Loneliness and Strangers)
2006: 5 shows

Venues played more than once:
14 Maxwell’s
   9 Krogh’s
   6 The Baggot Inn
   6 Loop Lounge
   5 Uncle Joe’s
   5 Court Tavern
   4 Zabbazu
   4 Tierney's
   3 The Blackstone
   3 Images
   3 Broadway Central Café
   3 Arlene Grocery
   2 Whiskey Bar
   2 The Underpass
   2 The Shannon Lounge
   2 The Saw Mill
   2 The Saint
   2 The Crossroads
   2 The Continental
   2 Plum St. Pub
   2 Jitter’s
   2 Connections
   2 Capt. Nick’s Rock n Roll Bar

Cities played:
20 New York, NY
19 Hoboken, NJ
10 New Brunswick, NJ
9 Sparta, NJ
7 Passaic, NJ
5 Jersey City, NJ
5 Bound Brook, NJ
4 Montclair, NJ
3 South Amboy, NJ
3 Philadelphia, PA
3 Cumberland, RI
3 Block Island, RI
2 Stanhope, NJ
2 Seaside Park, NJ
2 Garwood, NJ
2 Fairview, NJ
2 Elmwood Park, NJ
2 Brooklyn, NY
2 Asbury Park, NJ
2 Westchester, PA
1 Woodbury, CT
1 Union, NJ
1 Trenton, NJ
1 Teaneck, NJ
1 South River, NJ
1 Somerville, MA
1 Secaucus, NJ
1 Seaside Heights, NJ
1 Salisbury, MA
1 Rockaway, NJ
1 Rahway, NJ
1 Providence, RI
1 Portland, ME
1 Pequonnock, NJ
1 Passaic Park, NJ
1 Nyack, NY
1 Newburgh, NY
1 New Hope, PA
1 Morristown, NJ
1 Long Branch, NJ
1 Linden, NJ
1 Jamaica Plain, MA
1 Ithaca, NY
1 Hartford, CT
1 Hamden, CT
1 Franklin, NJ
1 Fairfield, NJ
1 Ewing, NJ
1 Buffalo, NY
1 Brooklyn, NJ
1 Baltimore, MD
1 Allston, MA
1 Allentown, PA

2013, in more than 140 characters

January

Image

2013 was an amazing year for our family, and since I haven’t posted all year, I figured this would be a good opportunity to write down my thoughts. We started the year going to the top of Mount Diablo (visible from our backyard), and this was one of many outdoors trips we would take this year.

In January JP and I were still working the 12 hour overnight shift from 7pm to 7am. This led to learning how to make cappuccinos with the machine at work thanks to JP’s time working at Borders.

Anna and I checked out an Eichler home in the area, and fell in love with these unique homes. When we buy a house we will almost surely wait it out for an Eichler home.

We did a lot of travelling in December of 2012, so we pretty much stayed home for the month of January.

February

In February things started to get interesting. We were in talks with Twitter to move to Ireland and work with the new TCC team being interviewed and hired for 2013. Before our trip to Dublin, I took a class trip with my kids to the Cathedral of Christ the Light, which was an amazing building.

Image

Then, on February 21st, the night before we were to fly to Dublin, Anna’s purse was stolen while we were taking her mom out to dinner to say thanks for watching our kids while we were away. Fortunately, her passport was not in the purse, and we were able to cancel all debit and credit cards before too much damage was done. We also had to have all the locks on our house changed, as the thieves got her license and house keys.

Regardless, on February 22nd we left for Dublin in good spirits! Dublin was amazing. We met many new friends (mostly people that worked at Twitter, of course) and Anna got to enjoy the city while I was working. The first day there we took a bus tour that drove from Dublin down to Cork and back. We had a few stops along the way to see some castles that were many centuries older than America. Overall the trip was amazing and very positive.

Image

And of course what trip to Ireland would be complete without a visit to the Blarney Stone (I kissed it, Anna did not).

Image

Image

March

After a crazy international trip in February, March was much more quiet. Of course, that doesn’t mean we didn’t take any trips! My father-in-law was in Brea (near L.A.) for business right around Easter time, so we drove down to stay with him and my mother-in-law for a few nights, and they took us all to Disneyland! We also went to the Santa Monica Pier, and did a little driving around Hollywood.

Image

We had a great time at Disneyland and overall a wonderful Easter break.

Image

April

In April Bunny broke her arm riding her new Razor scooter in the backyard. She was in good spirits after getting checked out by the doctor!

Image

April is also the month of Bunny’s birth, and this year she chose to celebrate with a handful of close friends and we took them all to the Melting Pot!

Image

We also decided to finally trade in our aging, beat up Dodge Caravan for a nice 2011 Toyota Camry!

Image

May

In May I got to reunite with Lukasz, who I had interviewed while I was in Dublin, because he was the first hire for the TCC Dublin team! This month was also the time both girls were scheduled to receive First Communion, and to help us celebrate, my mom came out for a brief visit!

Image

So did our good family friend Christian, as well as the kids other grandmother from Florida (she who had flown out to watch the kids while we were in Ireland)!! The First Communion was a great success, and we had a nice little party afterwards.

Image

The other major event in May was Mother’s Day, of course! To celebrate we took Anna to her favorite restaurant: The Distillery, in Half Moon Bay. We had a great time as always.

Mother's Day Dinner

We were also very proud of Lila Holler, who won best poetry for the 2nd grade across the diocese! Her little book of poems was amazing, and she is an inspiring little writer.

Lila wins her award

June

In June we found out that one of our favorite people from NJ had secretly moved out to Oakland! We made plans right away to visit with Chris Silk. It happened to coincide with the Alameda sand castle contest, and then the girls and I spent the afternoon with him while he grilled us all up some food. It was great to have another friend in the East Bay.

We quickly made plans to go camping, and we found a great campground right at Lake Tahoe called Sugar Pine Point. The days and nights were both amazingly beautiful. This was when we fell in love with Tahoe.

9050382737_97bcbd791a_b

We also decided to join a private swim club, since the summers in Concord get pretty intense. Best decision of the year, the kids love it there, and it is quite affordable!

June was also the last full month I worked the overnight shift at the Twitter Command Center. I had been studying Python and working on a new project which would make it into production by the end of the year!

July

At the end of June Anna and the kiddos went down to Naples, FL, to stay with her parents for a few weeks (as has become their normal summer routine). That meant I had a lot of time at home alone, and spent some of my days with these dudes:

IMG_0054

This photo was taken at some outdoor music festival that happened in Oakland, I can’t remember the name. I finally bought myself some new clothes, and JP and I finally got back to working days at Twitter. This was one of the best things that happened to me this year, as it meant not having to constantly switch between sleeping during the day and sleeping during the night. This started some amazing changes at work that continue to bring me joy.

For the week around my birthday, I flew out to Naples, FL to spend it with my wife and kids. We also took a day to drive up to visit my dad at his new marina!

IMG_0143

We spent the day fishing off the pier, and had a nice lunch and dinner with my dad before heading back to Naples. Later in the week, we had a great dinner with my grandparents, and the day before I flew home we had one last lunch with them at their favorite spot on Marco Island.

IMG_0155

After I got back from FL, a few days later we started one of our quarterly Buddy Weekends (since my family was all still back in FL). Billy Reuben flew out to stay with JP and I, and we pretty much just hung out watching movies, playing video games, a lot of Space Team. It was a great time, and a perfect way to end the month.

IMG_0217

I almost forgot, but I also had a visit from an old friend from my days studying computers at Chubb in NJ. I had helped him get an interview at Twitter and he and his wife came out for a round of interviews and to check out moving to CA. It didn’t work out, but it was really great to see Mike Mackintosh again.

IMG_0256

August

In August, my family came home, and we took our second trip to Tahoe with Max and Donna Michaels. We split a house with them, and it was one of the best vacations we have been on!

IMG_0311

IMG_0322

The kiddos and I in Emerald Bay

Anna and I on King's Beach

We rented a paddle board, did a bunch of hiking, and everyone had a really great time.

No August would be complete without a birthday party for Lila Holler! This year she was obsessed with pigs, so everything at her party was pig themed. We had it at our pool club, and the kids had a great time. Most importantly, Lila finally had a birthday party she enjoyed, after years of parties ruined by one thing or another. (She was born the same day that Hurricane Katrina struck New Orleans).

Lila's 8th birthday party

We also celebrated Anna’s birthday, but unfortunately we couldn’t go to The Distillery this time because the bridge was closed between here and there. She got a nice Free People dress and a lot of love.

Also school got back into gear this month and EVERYONE was glad the kids had something to keep them busier.

September

This month, there was a huge fire on Mt. Diablo that looked much scarier than it really was.

Mt. Diablo Fire

In September the latest Grand Theft Auto also came out, which was a very exciting time of the year for me. We put together a little man cave in the garage, and JP came over to enjoy the experience of picking the game up at midnight and playing until we couldn’t keep our eyes open.

The man cave

We were also invited to a celebration of Mexican Independence Day, where we got to see the traditional dresses and food that our Mexican friends enjoy on this special day.

I also got to see Unknown Mortal Orchestra at the Fillmore, which was a great concert.

Unknown Mortal Orchestra at the Fillmore

Lila and I also had a daddy/daughter day alone and went to the Oakland Zoo. It was good, but it’s no Philadelphia Zoo.

Lila at the Oakland Zoo

October

In October Anna and I celebrated our 10th wedding anniversary! Hard to believe it’s been that long already, seems like much less time. We celebrated by going back to Tahoe and renting a place just with our family. We had a really wonderful time, again, and tried some new places out. If we ever buy a second house I’m sure it will be in Tahoe!

Anna, Bunny and Lila at Lake Tahoe

At the end of October, we went camping again. This time, it was with Anna’s long time friend from NYC, Logan Carter!

Logan and Anna in Big Sur

We had a great time camping with them in Big Sur, in fact we decided to extend our stay an extra night so we could enjoy another day together! We met Logan’s boyfriend Gab, who did most of the cooking since he’s a chef. We did some more hiking and sight seeing. Overall it was a great trip and a great time.

Every October ends with Halloween, but sadly I think Anna got all those pictures since i didn’t go trick or treating this year.

We got another nice surprise in October, as we found out that Twitter was going through with an IPO in November!!!!

November

We didn’t think Twitter would IPO until 2015 or 2016, so it was definitely a pleasant surprise to find out it was going to happen THIS YEAR! Everyone was abuzz at work about the IPO, and the day of the IPO we all gathered in the commons at HQ to watch the opening bell at the NYSE.

Twitter IPO at HQ

After watching the opening bell, we all got back to work while we waited to hear what the opening price was. Once the price was getting close to settled, my team and I watched the news pretty closely to see it happen in real time.

Watching TV in the TCC

Overall it was a really exciting day, and it was a blast to experience that first hand. We had a party that night which kicked off with a speech from our CEO. Overall a pretty great day.

That wasn’t the end of the excitement for November though! We had a visit for several weeks from the Rivas family, from NJ. They are like family to us, we are very close. While it was stressful having 9 people in a house made for 4, it was a fun time, and we were all thankful that we got to spend some time together for Thanksgiving. We took them to SF, the Golden Gate Bridge, Dolores Park (where I saw Biz Stone and Ev Williams playing with their kids), as well as a bunch of other places like Napa.

Rivas' at the Golden Gate Bridge

Thanksgiving Dinner

December

In December I had the opportunity to go to a Python Meetup at Yelp HQ, which was really enjoyable. I went with a coworker named JJ, who I eventually found out lives less than a mile from us in Concord. I first met JJ when he gave JP and I a TON of feedback at work on our software project. It was really exciting to have someone with as much experience as JJ take an interest in helping us out so much. JJ also told us about a school specifically to help children with dyslexia, which is something we have been looking for to help Bunny. We went this month to visit them and while it isn’t perfect, we think it will be the right choice to help Bunny overcome her sequencing issues. I was finally able to introduce Anna and JJ at the Twitter holiday party. Anna also got to meet everyone else on my team that she didn’t know, and one of the other coworkers that has been a huge help to me this year: Joe Smith.

All dressed up for the Twitter Holiday Party

Anna and I stayed in SF the night of the holiday party so we wouldn’t have to deal with getting all the way back to Concord. We got all dressed up in our room and then took a cab to City Hall for the party!

Twitter Holiday Party at City Hall

On Christmas Eve, the kiddos both sang with the school choir at the 5pm Mass. Here they are all dressed up:

11541100015_70ee91afe5_b

To close out the year we had an amazing Christmas, the best one yet. The kids got everything that they asked Santa for, plus a couple of old things from us. Anna was surprised with a new computer!

Overall this year has been amazing for us. Now that our company has IPO’ed we have a pretty solid idea of the value of our stock, and it’s very good.

Personally, I’ve had good success getting more and more feeling back while recovering from my transverse myelitis (which first struck me on New Year’s Eve 2010). Anna and I have been growing our marriage, and I feel more in love now than ever before. The kids have branched out into trying new things (both are doing Cheerleading, and Bunny has been taking Irish step dance lessons). Anna has been working towards starting her post partum doula business.

As for me, this has been one of the most exciting years for me professionally. I started the year with a nascent software project at work, which has turned into what takes up most of my time at work now. We realized after a few months that we needed some more experienced developers giving us input, and that was when we started working closely with Joe Smith. He has been an immeasurable help to us. That was topped off by the surprise feedback we got from JJ later in the year. Since then he has become something of a mentor to me at work. It’s amazing to have all this help available to enhance all the studying and hard work I do to propel my career forward.

2014 looks to be shaping up to be the year we finally get rid of all credit card and student loan debt, and we might even buy a house! As we prepare for our little NYE party tonight, I look forward to all the adventures we will have in 2014, as well as looking forward to my professional development at work!

Camping in Santa Cruz

When I start any new endeavor I tend to let my imagination run wild and then I always end up disappointed because reality does not ever measure up to the limits of my imagination. I feared that when I accepted my current job at Twitter that the whole experience could never be as good as I imagined because of this. However, I was pleasantly surprised to find that Twitter and California completely blew away my expectations!!

First of all, the position I have is new, and it’s a great challenge as well as a satisfying feeling to be building our team from the ground up and contributing to that process. Second, the perks here are well beyond what I imagined it would really be like. A while ago I interviewed for a financial firm in Santa Monica, and they tried to show off all the perks they had for their employees, but I got the distinct feeling that they were putting on a show specifically because there was a potential new hire in the office that day. At Twitter, it really is just amazing all the things they do to take good care of their employees and keep everyone happy. They provide three square meals a day, freshly prepared and cooked on site, as well as an arsenal of snacks, beverages, and all kinds of other perks I won’t even go into because it would just take too much time.

Probably the greatest perk of all though is the fact that they understand the value of having a good work/life balance. My shift covers 12 hours a day, for 3 or 4 day weeks. The rest of the time is mine to do with as I please. This means I see my family more often, and we have more time to do awesome stuff that we couldn’t have done before. In addition, we’re living in beautiful California, where it hasn’t rained for like 3 months.

Taking advantage of this, last week we took off on a one day camping trip to Santa Cruz. When we left home, it was about 92 degrees out. When we reached Route 1 outside Santa Cruz I took my phone out to check the temperature. Turns out it was only 65 degrees there!! We turned off the air conditioning and opened all the windows to enjoy the cool, crisp, Pacific air. We got to the campsite not long after that, and once we had set up our tent and settled in, we took a drive down to the closest beach to see the ocean.

Image

The beach featured a dramatic drop from the parking lot to the sand, and it happened to be an overcast, foggy kind of day there, but we enjoyed running around for a few minutes before we went back to the car.

Image

Image

The climb up the stairs was rough!

Image

Once we got back to the campsite, the girls took advantage of the banana bike rentals and bouncy beach thing:

Image

Image

While Anna and I sat with the dogs and enjoyed a few relaxing moments together:

Image

Then Anna cooked up some burgers and hot dogs!!

Image

Afterwards I took the girls to the pool while Anna tended to the campfire:

Image

and finally we ended the day by roasting marshmallows and enjoying each other’s company!

Image

The whole family had an amazing time, and we wouldn’t have been able to do it without Twitter! I am forever grateful for all the ways in which this company has helped us to improve our lives!

Gmail on iOS (and why it sucks)

In my search for the perfect client I’ve tried several variations of client and configurations, and I’m going to lay out below why I think Gmail on iOS in it’s current state sucks. I’ve used the default Apple Mail app, which you can’t remove from the phone at all, the Gmail iOS app which was released sometime last year and immediately pulled again because of fatal errors (way to go Google! How much money do you guys need to develop a simple client for your ultra popular webmail service?) and the recently released Sparrow client after some positive experience using their desktop Mac client.

Mail

First let’s look at what the built in Mail app from Apple can and can’t do. This is the only iOS client that can download new email in the background without any further intervention. You don’t need to open the app to kick off a new download, the client simply gets new email as it is delivered to your inbox. You can optionally include a notification in various permutations. If you need to know about certain email in a rather timely fashion, there is simply no better solution as far as getting those messages in front of your eyes.

However, for Gmail you only have two configuration choices on iOS. You can choose to set it up as a Gmail account, which does not allow push notifications or background polling at all, so the closest you can get is fetching new email every 15 minutes. For most use cases that’s probably fine, but it also means you can’t sync your contacts if you plan to use Gmail as your primary contact database (which I do because it’s fucking convenient to have all your contacts in one place). The other option is to set up Gmail as an exchange account, which does provide instantaneous push for new email (like BlackBerry has done for YEARS), and you can also sync contacts and calendars using this configuration option. The only downside here is that battery use is slightly higher because you’re getting email delivered constantly rather than in 15 minute batches. If you have a busy inbox it could make a pretty big difference in your battery life. No matter which of these two options you choose, the way that the Mail app handles emails is not that different. Under the default Gmail config, you’ll get an archive button instead of a trash can (delete) button, but the exchange setup can easily be configured to allow the delete option to archive messages anyway.

Apple Mail app
Mail app uses a “flag” for Gmail stars and the center bottom button is for archive (instead of delete)

The default Apple Mail client also has the ability to handle messages using IMAP folders which then map back to functions in Gmail. There are the special folders like Important, Spam, and Starred, and then there are also all your labels as folders. So it’s nice that you can at least apply a label to an email, but that also archives the message (removing it from your inbox) and you can only apply one label at a time. If you try to apply a second label, the email is essentially “moved” into another folder. It’s a limitation with the workaround of using IMAP rather than the Google Gmail API. I also use a ton of filters for various automated emails (think nagios) and they are left unread but shuffled out of the inbox so that my phone isn’t constantly buzzing. In the Gmail web client, I can see the number of unread messages which have been filtered to a certain label, which isn’t something that Apple provides in their Mail app unless you specifically choose to sync that IMAP folder to your phone, which obviates the whole reason I filter messages out of my Inbox in the first place.

Apple Mail app doesn't show unread count on "labels"
Apple Mail app doesn’t show unread count on “labels”

Another pain point here is that none of the folders displayed in the Apple Mail app have any colors. I have many of my labels configured in my Gmail web client with meaningful colors so I can quickly identify them without having to read the text, and it’s unfortunate that this can’t be carried over on Apple’s Mail client, but my understanding is that Google doesn’t provide a method in the Gmail API to determine label colors anyway. The other annoyance I have with the Apple Mail client is that while it does allow you to apply a flag (which translates to a Gmail star) it takes three taps inside a message to do so, or you can do it in four taps while you’re looking at the multiple message view. In the Gmail web client it is as simple as clicking (once) on the star icon or tapping the “s” key if you have Gmail keyboard shortcuts enabled.

Despite these annoyances I still find Apple’s Mail client to be the best solution for me so far if only for the fact that all messages are downloaded and waiting for my response when I open the client, so there is no delay when I decide I want to do some email triage. I just open the app and start archiving, labeling, or starring messages depending on what I plan to do with them.

One last minor quibble I have is that Gmail does not expose lab features through the IMAP functionality, so there is no way to “mute” a message from the Apple Mail client, or any other IMAP client for that matter. As far as I can tell, there is no reason they could not merely make the special Mute label another IMAP folder, but so far there is no sign that they are going to do this.

Other highlights/lowlights: Mail includes up/down arrows for quickly jumping from one message to another without having to go back to the list of all messages first. This saves a shitload of time each day as I go through email and archive most of it, marking only a few for followup or further reading.

Gmail for iOS

When Google finally released a native iOS Gmail application, I was extremely excited! I was looking forward to getting full Gmail functionality (stars, labels, filters, etc.) from a native iOS application. It is amazingly stunning how poorly Google executed on this app. First of all, I do have to give credit that all functions available in the Gmail web client are available on the iOS client, I can star, label (and I can see the correct label colors), mute, archive, delete, the whole shebang.

Gmail for iOS
What a novel idea, make starring an email one tap away, and show me the full label name/color in the message list!

It also provides the superior search that Google is known for, and they do display counters on every single label with unread messages. This is also the only iOS client which will actually display the labels applied on a message in the list view, which I greatly appreciate. However, there are many ways in which this app is crippled. The most obvious thing is that it only loads the first 10 emails, just like the mobile version of Gmail, so if you have a backlog and you want to read your messages from oldest to newest (I do, and I do) you better like tapping “Show more messages…” a bunch of times.

Gmail for iOS limitations
Show more messages…UGH

The second most annoying thing about using this app is that it’s actually just loading their HTML5/JS mobile page in an iOS wrapper with a few special buttons on it. This means the app does not have the look or feel of a native iOS application. The bounce when you reach the top of a list is “wrong” and the scrolling physics are very different. In addition, they have this asinine scribbles feature. Seriously? I am NEVER going to use a mobile email client to draw something with my finger, WTF? Another way in which this app is broken is that when you scroll to the bottom of the list of all your labels (I have about 50) you can’t tap the top iOS status bar to quickly jump back to the top (where the Inbox is).

Unread counts
Unread counts on individual labels!

My final problem with the official Google Gmail app for iOS is that push notifications are completely broken. For whatever reason Google has not seen fit to code their app so that it utilizes “Notification Center”, which is basically all the ways that Apple ripped off Android in order to mangage and display new notifications. All that being said, I would fucking love using this app if they allowed me to connect more than one account at a time!

Other highlights/lowlights: Since Gmail for iOS is not a client but a wrapper for their mobile website, there is no syncing necessary, and there is something to be said for that, despite the fact that you have to load 10 messages at a time in a long list.

Sparrow for iOS

So after all the frustrations experienced using the default Apple Mail client and Google’s own Gmail app, I was holding out hope that the team at Sparrow would pull through and make a really great iOS app. They didn’t. Almost, but not quite, or at least not enough to satisfy my personal needs.

First of all, I have to admit that I had been going to their coming soon page on a daily basis  in anticipation of the initial release of the app. I may not be a fair judge because I had such high hopes that this app was going to end all my suffering when using email on iOS. So let’s dig in. At first glance the app is very nice looking, and has a great design flare. Unlike the Gmail for iOS app, it’s fully native, so scrolling, the end of screen bounce, all sliding and animations are fluid and beautiful. The experience of manipulating the app is excellent. My first problem is in the display of the list of messages.

Sparrow for iOS
Label colors don’t sync, only one label is indicated in the upper right corner, but what the fuck label is it? Who the fuck knows?

As mentioned earlier, there is no way for the Sparrow for iOS app to sync the actual colors I have meticulously assigned in Gmail, so right off the bat that is annoying because I can’t rely simply on color to help identify which label is applied to an email, and since they don’t provide the text from the label, it’s pretty much useless as any kind of indicator except “there is a label on this message”.

In addition, even if there is more than one label applied, Sparrow can only show the color for one label in the message list, and I’m not even sure how they determine how to do that, but the point is there is information here that is not available at all using this client. You’d think then that at least if I went to an individual message it would have a way to show me the actual label name, even if the color is all wrong, but no. The individual message view completely ignores labels entirely, as if they don’t exist at all. I guess the idea is that if you’re reading the actual message you’re beyond the point of needing to know how it’s labelled, but there are many messages which already have one label applied and I want to add a second, but I have NO WAY to tell which is applied or not applied using this app. I am the kind of person who needs meticulous control of stuff like this, to the point that if Sparrow let me edit the colors of the labels in their iOS app (like they do on the desktop client) I would definitely go through each label and match the color as closely as possible (like I did on the desktop client). Unfortunately, it only appears you can modify an existing label’s name, not color.

Some other annoyances include the fact that I can only apply a label from the list view (not inside an individual message when I might be more likely to actually have a clue as to what I want to label the message as), and in order to apply a star it takes at least two actions (in list view, a swipe and then a tap; in full message view two taps) and this is opposed to Gmail where again it’s one tap in the iOS client and in their mobile Gmail interface. I would much rather have the full static bar along the bottom with the buttons exposed in the individual message view, which would eliminate the need for a second tap on common functions like star. I would also prefer if the individual message view replaced the “new mail” button with a label button, so I could apply labels without having to go back out to the list view, swipe to expose the buttons beneath the message, and tap the label button to view the available labels and then finally tap to apply a label.

Although Sparrow is made specifically with the Gmail API in mind, apparently Google also doesn’t expose the labs functionality to the API, so there is no way to mute a message from the Sparrow email client either. They also have no way to continue fetching new email when the app is not in the foreground, and that makes it dreadful to open the app when there are a few to a hundred emails waiting, meaning that you’re waiting several minutes just for the privilege of seeing what your unread email looks like. They also currently do not have push notifications, but that is apparently coming in an update soon. It doesn’t really matter to me anyway, because push notifications still doesn’t mean the app will be able to download new mail in the background so I can just blast through it when I’m ready without having to wait for it all to download.

Other highlights/lowlights: One thing that drives me fucking crazy about Sparrow for iOS is the fact that the method for moving between various conversations is to scroll to the very top or bottom of a message and then keep pulling in the same direction. In long threads, getting to the top again is easy because you can tap the middle of the status bar, but getting to the bottom has no shortcut, and the other email clients discussed here include buttons for this.

In addition, since the same method is used to move between threads in a conversation as well as full conversations, you sometimes end up having to go back up through multiple replies to get to the next conversation, or go back to the list of messages to choose the next conversation. The whole thing could be implemented more elegantly and without much effort, and without changing the way the app works. The really frustrating thing about this is that in a full on message view, they could have used left and right swipes to move between conversations since that was not a method that existed. I specifically expressed to the developers that I thought this was the best method, but they decided to implement something different. I think the application is beautiful and well built, but some of the UX choices they’ve made are not the most efficient use of taps, swipes, and slides. I understand the choice to put the buttons inside another button in message view in order to show more of the content of the message, but it means every time you read an email that you want to star, you have twice as many taps to make.

Unfortunately, for now it looks like I’ll stick to using the default Apple client because yet again Apple has hamstrung developers from being able to provide the same functionality. I wish they would at least open up some of the private APIs that they are obviously using for stuff like downloading new mail in the background so a better Gmail client could be produced. Each of these clients have their strengths and if they could all be combined into one super client I would easily pay $10-20, it’s that important to me.

Also, I’m not writing this because I’m a curmudgeon, but because I deeply care about this issue and because these clients all have great things going for them, which makes my frustrations amplified.

Life is Good

I recently passed 90 days doing my new job at Twitter. Anna, the girls and I have started to settle into our new home, and school and work have been great, if not tiring. Bunny has started running track, which she has been excelling at! She really enjoys the events, and the younger kids all do the same events as the older kids, so she really feels a part of something bigger than herself or her school. Lila started doing a dancing/cheer class, which will be short lived but she is thoroughly enjoying it! Anna has been working hard at reupholstering and refinishing furniture in our house, in some cases to great transformative effect! I’m so proud of all my family members!!!

Working for Twitter has so far been the best professional experience of my life. The company takes great strides to keep their employees well (and healthily) fed, the work is very stimulating, and there are tons of interesting events going on all the time. Sometimes they’re just social, but there are also a lot of mentally stimulating events going on, from visitors coming in to present talks, to discussions that occur by serendipity. This week was the first week I took over primary duties in my new role, and while it’s been exhausting, it is really rewarding to know I’m having a positive impact so early on. My new schedule will start soon, and just in time for the summer months so our whole family will be able to spend a lot of time exploring the trails and other places in California. So much to do, and soon we’ll all have lots of time to do them! I’m really looking forward to that.

New opportunities

Yesterday was the last day of my employment at the Nasdaq Operations Center. It is extremely surreal to no longer be responsible for systems that I have been monitoring for several years. All of a sudden I am no longer responsible for the systems that I helped create and curate. It’s hard not to think about it. However, I have a new opportunity at Twitter to leverage my experience in operations at Nasdaq and I am excited to get started there. I will miss the relationships I have fostered at Nasdaq but its time to move on.

20111223-195339.jpg