Bindroid – A Binding Framework for Android

I’ll admit it — I was spoiled by my days on the Silverlight team, playing with XAML, .NET, and databinding.  When I started building Android versions of my apps, I went in with the expectation of a similarly modern, powerful UI framework, but quickly found myself frustrated by the complexity of creating UI that tracks values as they change in my application.

Unlike XAML-based UI frameworks, Android doesn’t really have a standard change notification mechanism, nor does it have databinding functionality.  For my apps, I found it useful to build a general-purpose framework that I could use to build really rich, responsive user experiences with minimal effort.  I’ve decided to open-source this framework as Bindroid, in the hopes that others might find it useful as they build their apps as well.

Bindroid makes binding your UI to your data really easy.  Just use a “Trackable” to implement your properties (in Java, I consider this to be a pair of methods on an object named get<Name> and set<Name>) like so:

public class FooModel {
  // An int property named "Bar"
  private TrackableInt bar = new TrackableInt(0);
  public int getBar() {
    return bar.get();
  }
  public void setBar(int value) {
    bar.set(value);
  }

  // A String property named "Baz"
  private TrackableField baz = new TrackableField();
  public String getBaz() {
    return baz.get();
  }
  public void setBaz(String value) {
    baz.set(value);
  }
}

Trackables are quite magical — they “infect” anything they touch with observability, so that even calculated properties can be observable:

public String getBarBaz() {
  int strLength = (getBaz() == null ? 0 : getBaz().length());
  if ((strLength + getBar()) % 2 == 0) {
    return "Baz's length + Bar was even.";
  }
  return String.format("Bar: %d, Baz: %s", getBar(), getBaz());
}

Once you’ve implemented your properties this way, binding to them is a one-liner in your Activity’s onCreate(). For example, the following line binds the Text property of a TextView named barBazTextView to the BarBaz property we just defined:

FooModel model = new FooModel();
UiBinder.bind(this, R.id.barBazTextView, "Text", model, "BarBaz", BindingMode.ONE_WAY);

As you manipulate the values of the model, barBazTextView‘s text will automatically update to reflect the new value of BarBaz. It’s that simple!

I’ve found that whether binding to individual values or collections of values, Bindroid dramatically simplifies the process, and makes developing Android user interfaces a much more pleasant experience.

I hope you’ll give it a try! You can learn more about (and get a copy of) Bindroid by visiting the GitHub repository. It’s all available under the MIT License, so have at it!

How Barbershop Harmony Has Helped My Career in Tech

Update, April 11, 2013: Happy Barbershop Quartet Day and 75th anniversary of the Barbershop Harmony Society! It all started 75 years ago today on a rooftop in Tulsa, Oklahoma.

I’m a software engineer.  I’m also completely addicted to an incredible hobby: barbershop.  I’ve been reflecting lately on the impact of this thing I’ve grown to be so passionate about over a very short amount of time on the development of my career, and I’ve realized it’s been pivotal for me.  It’s kept me grounded, built my network, given me a reason to build cool things, helped me find the confidence and courage to do things I never thought I’d do, and been a huge amount of fun in the process.  I wanted to share a bit about why I’m so excited about it, and why it (or any other hobby) might hold some similar value for other aspiring engineers.

Cutting hair

At this point, you might be asking, “What’s Barbershop?”  I’ve had people legitimately ask me whether I cut peoples’ hair, and it always makes me chuckle.

Barbershop!

Barbershop is an American a cappella musical style characterized by four-part, tight harmonies with a primarily homophonic (all parts singing the same words at the same time) texture.  Not everybody knows what a barbershop quartet is off-hand, but most people have been exposed to it in some form or another.  Some pop-culture examples:

All of this helps perpetuate a stereotype of Barbershop as a group of middle-aged fogeys dressed in brightly-colored, striped suits, wearing boaters and garters and a big moustache.  But modern barbershop is a stunning and thrilling sport, culminating yearly in the world’s largest a cappella competition — an exhibition of the world’s greatest barbershop quartets and choruses.  Some of my favorite recent winners:

Barbershop’s got a heavy dose of schmaltz and the thrill of ringing a chord that just can’t be beat in my book, which is why I feel so lucky to have made it a part of my life.

The Community

I grew up with barbershop in the household.  My father had a quartet that rehearsed weekly at our house in Southern California, and I have fond memories of listening to them rehearse and seeing them perform.  I never really got into it, though — my sister was the singer in the family, and my focus was always on academics.  It wasn’t until after I had finished my education in Computer Science at UC Berkeley that I began to explore an interest in barbershop.

When I first moved to the Seattle area to work for Microsoft after university, I didn’t really know anyone in the area, and was searching for a way to establish a social circle and make friends.  My dad suggested that I check out the local chapter of the Barbershop Harmony Society, Northwest Sound.  I sent them an email, visited a rehearsal, and was instantly hooked.  I remember vividly one of of the members of the chorus walking over to me and saying “would you stop smiling so much!”

Within 6 months, I’d auditioned and become a member of the chorus and participated in my first International Barbershop Chorus Contest and convention in Anaheim:

By joining the chorus, I’d been warmly welcomed into a community — one that would mean more to me than I realized at the time.  It became an important part of my social circle.  When my grandfather passed away, they were there to support me.  As I got settled into my new career, it helped provide me with a life outside of work where I could foster both my own individuality and new friendships.

Every convention I attended (whether local, regional, or international) was a reminder of this huge community I had become a part of.  Almost anywhere in the country that I might go, I could count on there being a group there to welcome me with open arms.  Part of the beauty of Barbershop and being a part of the Barbershop Harmony Society is that it’s a group of amateurs (a huge portion of the members can’t even read music!) all sharing a common interest while producing great music.  It’s a hobby that’s accessible to everyone from all walks of life — not just singers — which means there are always new people to meet and new experiences to share.

My quartet-mates and chorus-mates have become some of my closest friends — there to support me through thick and thin — and not just when it comes to singing.

The Network

Singing with Northwest Sound and the Northwest Vocal Project in Seattle was immensely fun and provided some great social experiences, but it also turned out to open up a number of other opportunities.  Being so close to Microsoft’s main campus meant I got to know people from all around the company working on a wide variety of products.  Some were new to the company — others had been there for 15 or 20 years, and knew all of the ins and outs.  Whenever I had a career-related question, I knew who to go to for advice.  And the chorus was chock full of people from all sorts of disciplines — the tech folks from Microsoft and Amazon, lawyers, doctors, teachers, construction workers, you name it.  I even took one of my chorus-mates as my new dentist!

When I moved back to Silicon Valley, one of the first things I did was find a local chapter to join.  There, I found Voices in Harmony, and incredible group that rehearses weekly in San Jose.  I got far more than I bargained for with this group.  It’s a veritable who’s who of Silicon Valley.  I was still at Microsoft at the time, but my chorus-mates worked as engineers at Microsoft, Google, NVIDIA, HP, Intel, Salesforce, TIBCO, and a dozen other local tech companies.  There are entrepreneurs and investors, lawyers and accountants.  It’s not a free ticket to anything, but it’s certainly a ripe place for developing personal relationships with people across the industry.

Tons of people in tech.  There are certainly many more that I didn't point out, but as you can see the density is quite high!
Tons of people in tech. There are certainly many more that I didn’t point out, but as you can see the density is quite high!

Last year, we performed at the Intersection event, held at Pixar, since the event was run by one of our members.  As part of the performance, we delivered an emotional tribute to Steve Jobs, singing “I Will Go Sailing No More” from Toy Story for the likes of Ed Catmull (President of Pixar) and Tim Brown (CEO of IDEO).  This is a connected and savvy crowd.

As I moved on from Microsoft to Google, and then finally to the startup I’ve been so excited to be involved with in the last year, Parse, this network would prove invaluable.  I received fantastic counsel from my friends in the chorus, and made some of the best career-related decisions of my life.  Perhaps the best advice I got was to jump from the cozy comfort of Google into the startup world.  Were it not for the encouragement of my chorus-mates, I might have continued to wait — to hem and haw rather than pulling the trigger — and I would definitely be regretting it.

The Experiences

Barbershop has helped me grow in ways that have directly translated to the work I’ve done.

First, as cliche as it may sound, it helped me find my voice.  There is a dichotomy in Barbershop of quartet singing (where you are solely responsible for your own voice part) and chorus singing (where you are a member of a section, all singing the same voice part and contributing to a unit sound).  In either case, however, you have to work to produce harmony, reinforcing the other parts as you go.  Sing without confidence, and there’s nothing for the other people in your section or quartet to latch onto — you force them to come to you instead of adding to the sound.  Sing so loudly that you blast the other parts away, and you pierce through the fabric of the sound — actually detracting from the performance even though you have added volume.  The lesson: move confidently, but listen, and reinforce and complement the strengths of your team.

Less metaphorically, Barbershop has given me a huge amount of experience with public performances.  It’s hard to get too worked up about speaking for a room full of developers after you’ve started to get comfortable singing with a quartet for an audience of hundreds of people, singing with a chorus in a stadium full of thousands, or performing in front of some of your musical heroes.  I’ve learned a lot about finding ways to calm myself before performing, owning the stage, and even enjoying the experience.  It’s a skill I’ve used frequently — whether at Microsoft, at a local user group, or with my coworkers.  There’s still a lot that I can do to hone this ability, but I value the opportunities I’ve had to practice thanks to my barbershopping habit.

The hobby has also stoked a competitive fire in me.  I don’t take part in barbershop competitions looking to win (I’m not nearly good enough), but each contest is an opportunity to test myself — to mark my progress and improvement.  I’m intent on getting better; I’m constantly trying to push myself and find ways to help my team/quartet/chorus perform at ever-higher levels.  I may not always succeed — I have plenty of deficiencies to overcome — but this all keeps me energized to do more.  I find myself using my work to reinforce my singing, and vice versa.  When I’m feeling a slump in one, I can always count on the other to get me going again.

My quartet, taken just before going on stage to compete.

The Projects (a.k.a. C♯… a.k.a. D♭)

Some of the most rewarding work I’ve done has been steeped in my barbershop fixation.  I have found a lot of joy in crossing my passion for barbershop with my passion for technology — in ways that have had concrete impacts on my career.

My first foray into the barber-tech world occurred while I was still with Microsoft in Seattle working on the Silverlight team.  The chorus’s music leadership needed a way for members to submit self-evaluations of recordings of themselves, after which the music team would provide feedback and suggestions for ways to improve.  I decided to build a Silverlight application in my spare time to address the problem.  It wasn’t a sophisticated application, but it resulted in a number of suggestions and bug reports that could be driven back into the product I was working on.  It also gave me significantly more empathy for Silverlight developers and the experience they would have working with the product.  I was able to use that empathy to advocate for developers and more effectively prioritize our work.

Near the end of my time at Microsoft, I started experimenting with mobile app development for Windows Phone 7.  After all, it was on a platform I was already deeply familiar with, and I knew it would give me some insight into a new realm of development.  I chose as my first apps a digital pitch pipe (used by singers to help them find the starting key of a song) and an app for accessing an online database of barbershop tags (short snippets of barbershop songs that can be learned and taught quickly, by ear — a common pastime for barbershoppers).  Before starting at Google, I reimplemented both apps for Android, and eventually built the pitch pipe app for iOS as well.

A Tombo pitch pipe.

The apps (Pitch Perfect and Tag Master), both free, were far more successful than I had ever anticipated.  I built them to support my hobby, and hoped a few people would find them useful.  Since launch, however, Pitch Perfect has been downloaded over 200,000 times, and Tag Master has been downloaded about 12,000 times (which, when you consider that the app is only for barbershoppers and the barbershop harmony society only has about 25,000 members, is pretty impressive).  Not bad for a personal project done in my spare time!

More important than the success of the apps, however, is that building them opened up the world of mobile app development for me.  It was while working on these apps that I happened upon Parse, and having considered (and rejected) building a custom backend to support my apps, realized that Parse was doing something spectacular.  There were only 5 people on their team page at the time, and I knew immediately that I had to get involved.  I applied by API, and took my first step into the world of startups.  I can’t speak for the guys who interviewed me, but I highly suspect that my having built and shipped apps on multiple mobile platforms was an important part of what made me an intriguing candidate, and I know it’s given me insights I wouldn’t otherwise have into mobile app development.  I couldn’t be happier to be working at Parse today, building an amazing product that makes mobile application development orders of magnitude easier, and barbershop was a big part of getting me there.

Giving Back

For me, barbershop has also been an outlet for volunteerism and charity.  The Society (and its charitable arm, the Harmony Foundation) works to preserve this art form, but also contributes to music education across the country.

I’ve tried to do my part to give back.  Beyond just donating, my quartet and I have volunteered our time working for an annual youth harmony camp in Pollock Pines, California.  Last year, I, along with the rest of my quartet and some other friends from my chorus, put together a youth chorus in the Bay Area to take to an international youth chorus festival in Tucson, Arizona.  We built the organization from the ground, up, while introducing a new generation to barbershop music.

This was valuable both because of its charitable nature and because of the experience it gave me building and organizing a group of 20-odd people.  It’s not a skill I’m using yet in my professional life, but I do one day hope to be involved with growing an organization, and I think this experience will prove to be useful.

The Tag

Barbershop continues to be an important part of my life, and I’m still learning new lessons that apply both to the musical world and to my career.  I’m still very young and have a lot to master — in both the world of barbershop and the world of high technology.

What’s clear to me, though, is that barbershop has been a major net positive in my life and my career.  Beyond just the joy of the hobby, it has provided a community, a network, inspiration for projects, and vast opportunities to learn and grow.  Perhaps it’s not for everybody (although I encourage everyone who’s even got the slightest inclination to give it a try!), but I do think there is value for everybody in finding a hobby — a passion — that can broaden your horizons.  Find ways to make it work for you and your career, and pursue it knowing that its value is manifold.

I’m not nearly old or wise enough to preach, but I wanted to share what has worked for me.  I’m excited to keep following this path, and hope others find similar inspiration!

I’ll leave you with a video of my quartet, First Strike, at our most recent competition.  We’ve come a long way since we first started singing together a few years ago, and still have a huge amount of room to improve.  Don’t forget, I’m an amateur, so be gentle!

P.S. If you’re interested in learning more about how to get involved with Barbershop (or if you’re looking for a quartet to sing at an engagement ;)), please contact me!

Parse now supports .NET and JavaScript Windows 8 Development

Hi all!  I know it’s been a while since I last blogged, but I’ve been hard at work.  Since January, I’ve been excitedly working at a startup called Parse, working hard to make building rich, connected mobile apps easy.  Parse provides a ready-made backend for your mobile app, and it allows you to go from zero to app in no time.  I use it for my own apps (across all platforms), and we’ve got lots of folks building amazing things on our platform.  I’m extremely proud of the work we do, and I think everyone that is doing mobile app development should give it a close look and see if it meets their needs.

I haven’t forgotten my roots in the .NET world, either.  While we’ve been hard at work producing SDKs for iOS, Android, and JavaScript, we’ve also been keeping a pulse on Windows development, and today we’ve announced a Windows 8 SDK, supporting both JavaScript and .NET/XAML development.  As you know if you’ve followed me since my Silverlight days, I hold .NET development very dear, and we’ve put a lot of care into building these SDKs to make building your apps as easy and seamless as possible.

Please take a look, and don’t hesitate to email us at feedback@parse.com with your feedback!

See our launch announcementplatform page, and developer guide.  Getting started is free!  I can’t wait to hear what you think.

Pitch Perfect for iOS now available

Wow, it’s been a very long time since I’ve posted, but so much has happened in the last year.  I joined an incredible startup called Parse, and am working on things I’ve never been more excited about.

I’m also happy to announce that I’ve finished porting my digital pitch pipe application, “Pitch Perfect” from its original Windows Phone 7 incarnation to iOS, and it’s now available for free (ad-based) from the app store!  I hope you’ll give it a try, add a rating, and so on.  The Android version of the app now has over 135,000 downloads on the Google Play store and a rating of 4/5 stars (the Windows Phone version has about 14,000 downloads — not too shabby either!), so I’m hoping the iOS incarnation will be welcomed with open arms as well!

I’ve even integrated Parse into my apps so that you can sign in using your Facebook ID and your song list will be kept in the cloud in case you ever switch devices (as I do frequently!).

As always, I’ll leave you with the goods.  You can find the details here:

http://apps.depoll.com/barbershop/pitch-perfect/

Or get it directly from the App Store:

http://itunes.apple.com/us/app/pitch-perfect-for-ios/id539417298?ls=1&mt=8

Pitch Perfect for Android now available

Once again, I’m very excited to announce that I’ve finished porting my digital pitch pipe application, “Pitch Perfect” from its original Windows Phone 7 incarnation to Android, and it’s now available for free (ad-based) from the Android marketplace!  I hope you’ll give it a try.  I got some great feedback on Tag Master, and I hope to continue to get great feedback on Pitch Perfect.  I hope you’ll give it a try, and tell me what you like and what you don’t!  I know I’m not the best in the world when it comes to app aesthetics, but I hope it’s pleasant enough to use and functional.  It’s been a nice little personal side project for me, and hearing about people using these apps is a blast!

For me, this app is particularly useful because I struggle to remember the mapping from key signature to key note (what is 3 flats again?  A?  E flat?  I can never remember!), so having that built right into the app keeps it at my fingertips.  In addition, I’ve added a feature to the Android app that allows you to keep a list of songs and their keys, so you’re never stuck trying to remember what key that song you’re about to start rehearsing/performing was in.

Again, thanks to my friends in Voices in Harmony for helping me do some light testing of the application.  I’m sure I’ll discover things worth changing, but it’s immensely helpful!

Anyway, as always, I’ll leave you with the goods.  You can find the details here:

http://www.davidpoll.com/applications/pitch-perfect

Or get it directly from the Android marketplace:

https://market.android.com/details?id=depollsoft.pitchperfect

Tag Master for Android now available

I’m very excited to announce that I’ve just finished porting my Barbershop Tag application, "Tag Master" from its original Windows Phone 7 incarnation to Android, and it is now available for free from the Android marketplace!  I hope you’ll give it a try — tell me what you like and what you don’t, and who knows, maybe it’ll end up in the next version! :)

I know for me, having one of these apps for my phone (originally a Windows Phone 7 device, which is why I built for that platform first) is extremely useful when singing at afterglows or just for browsing tags.  It’s been awesome seeing all of these other developers building apps for the various smartphone platforms and truly bringing a modern edge to barbershop.  It doesn’t hurt that it’s a real opportunity for me to "geek out", both on Barbershop and on software!

A huge thanks to the folks at barbershoptags.com for running an incredible service to our community, and to the small set of friends in Voices in Harmony who’ve been helping me beta test the application.

Anyway, you can find more details here (also includes information about the Windows Phone 7 app, which I hope to update soon):

http://www.davidpoll.com/applications/tag-master/

Or go directly to the android marketplace:

https://market.android.com/details?id=depollsoft.tagmaster

Pitch Perfect now available for free!

LargePcAppIconI’m very happy to announce that I’ve now made my pitch pipe software for Windows Phone 7, Pitch Perfect, available for free! Earlier this week, a free, fully functional, ad-based version of the application was published to the marketplace. I hope you’ll give it a shot and let me know what you think!

The $1.99 version of the application (sans ads) is still available if you prefer to avoid the ads (as is an ad-free, limited functionality trial) – now you’ve just have no excuse to avoid giving it a try and providing feedback if you’ve got any!

You can get more info by going to the Pitch Perfect page of my website, or grab the app from the marketplace using one of the links below (requires the Windows Phone 7 or the Zune desktop client):

Free, ad-based version:

wp7_278x92_blue

Full, ad-free version:

wp7_278x92_blue

Software development and other goofy geeky goodness.