Moneyball and Software Development

I really enjoyed the book Moneyball.  I didn’t enjoy the movie as much.  The pacing seemed off and Brad Pitt seemed like a bad choice for the lead.  There also seemed to be this intense desire to inject drama and controversy into the film’s plot which was ironic when the point of the book is exploring a purely rational approach to a very subjectively emotional game.

Read the book, watch the movie.  The question that many will ask following experiencing either is “How could economic theory apply to my profession?”  I’d like to spend a few minutes thinking through some Moneyball implications with regards to Software Development.

fashion driven

Talent vs Grit

hired at enty level

flame out

amazing programmers start their own companies or are never heard from

Maybe more than any other profession, software development is impossible to “game”.  In other words, good programmers really are good, and you don’t see guys who don’t do a good job churning out software that works.  Yes, it is possible to have some sort of awful application made by crappy programmers, but eventually you’re going to have to pay the piper and address the technical debt you’ve been accumulating. 

Privacy on the Web

The last couple of weeks have been quite eventful regarding Privacy issues on the web, although, it’s unclear to me how much of this has been noticed by the general consumer.

  • Facebook has released updates to its platform, which bring about two privacy-impacting changes: your life’s “timeline”, and the inability to logout from Facebook as they’ll continue to track you across the web.
  • Amazon’s new Kindle Fire tablet, with it’s “all new but not really” cloud powered browser, Amazon Silk.

As a stockholder, I love Amazon’s new tablet offerings.  For the Fire, the price is great, the physical seems good, the OS looks good in the screenshots.  The only real disapointment to me on the Fire was the pretty miserable battery life (only 8 hours?).  The release of these devices is perfectly in line with Amazon’s true mission statement as being the World’s Best Fulfillment company.  Whether they’re delivering books, baby formula, computing power or movies, they’re the ones fulfilling it, and the Kindle line of products continues to be a digital extension of Amazon’s famous, highly efficient warehouses.

As an armchair privacy advocate (hey, I donate to the EFF and Software freedom!  And I use Tor!) I’m reasonably troubled by the Amazon’s cloud browser.  Unlike what millions of nerds thought when they watched the video, this is not new.  Opera’s been providing this service on their mobile browser for years.  This is how many high latency (read: Satellite) providers implemented their browsing experience.  This is how Blackberry used to provide their browsing experience.  It works by keeping a persistent connection open to Amazon’s cloud and heavily cache content saving DNS lookups, connection initiations, and on being able to prefetch common navigation paths.  Amazon does get points for telling us they’re going to track our browsing habits in the Terms of Service, but this is yet another one of those small but troubling erosions of privacy that I believe the normal consumer is simply unable to rationally comprehend. 

Except this IS different from Opera/Blackberry/Others, because Amazon has a much higher incentive to use this data in initially innocuous but eerily invasive and potentially damaging ways.  Remember, as a shopper and a stockholder of Amazon, one of my favorite assets of theirs is their incredible recommendation engine, which is now being bolstered by information on what websites you visit, in what succession, and how long you spend there.

We need a Privacy Nutrition Facts.  It doesn’t need to be regulated, but it should be voluntary, easy to read, and prevalent.  Just like how Firefox and Chrome solved the Phishing problem by warning you when you’re on a risky domain (combination of crowd sourcing and URL parsing looking for those password strings), we need a way of accurately conveying risk to the consumer. 

Are we all sure that we want to be offered books about marriage counseling due to a few Google searches?  Do we want ads about relocation options and moving supplies appearing on my work browser because I visited a job board last week?

Don’t we at least want the option of making the above decisions without needing to have a Computer Science degree or reading in-depth technical blogs or reviews of every major new product?  I do.  Just like Apple removed a lot of maintenance work from my life with their products, at some point it’d be great to not have to spend time on security due diligence with every gadget or service my extended family purchases.

And as for Facebook – they’ve long been almost blatant about how little they care about privacy.  The new flap over them tracking you around the web even after explicitly logging out is crazy and was defended by some as an “oversight” or part of the new strategy of “frictionless sharing.”  I’d go so far as to say they’re now actively endangering users on the web, and it’s their “aww shucks” attitude fronting for their true corporate priority of privacy non-priority that makes it particularly infuriating.  But at least in my opinion, most of the “Aww shucks” is coming from new/young/sniped-from-Google-or-elsewhere employees of Facebook who desperately need to justify the mental model they have of Facebook as a company who cares about its users.  I don’t think there’s any confusion over the true corporate intentions, which are evidenced by action after privacy eroding action.  

Lets just say that I’ve added rules to Adblock to torch all Facebook cookies ( see here , there are also some plugins that do this for you now as well).  It does seem that they’ve tweaked their disingenuous logout procedure some in response to the controversy, but how many of their 500 million users are even aware that this every happened?  And they still track you, just “not as much”.  In healthcare we’ve learned that deidentification of large data sets is almost impossible, and AOL’s CIO got fired for not learning this when he release de-identified search results – when will we learn this with social networking as well?

To sum up – privacy is really important, and in many ways it has become an even more urgent problem with the variety of broadcast style mechanisms we have out there that are learning our habits and likes and dislikes, increasingly with an eye towards monetization.  Maybe it’s the next great must-have plugin – a crowd sourced privacy grade for sites and application.

 

PHP Sucks!

Software development is a remarkably fashion driven industry.  I’m definitely guilty of the default “newer is better” mindset that many technologists have, but one of the more bizarre fashion statements I hear constantly nowadays is “Oh, I mean, you know how PHP sucks.”

I hear it at conferences, from developers old and young, in companies large and small.  Modern languages like Python and Ruby are better designed, maybe have cleaner syntax, have a few features that PHP does not, maybe even better library support, and they’ve got Rails and Django.   It’s natural to conclude that PHP Sucks!

A few years ago when we started incorporating Ruby into our platform, this gospel was so well ingrained that when we found that long-running scripts chewed up a lot of memory we blamed PHP.  Because it sucked!  People were actually rewriting scripts into Ruby because they could run for a day without running memory, until someone noticed that there was a leak in our internally built database abstraction layer (wich Ruby didn’t use), fixed it, and made PHP suddenly so much better.

But when I talk to developers and hear that statement, I like to drill in on why they think PHP sucks and here are the common reasons, in no particular order:

  • We use PHP it at work and there’s so much legacy garbage code.
  • PHP encourages bad programming.
  • PHP doesn’t have the developer mindshare that Ruby enjoys.
  • All the best companies use Python/Ruby.

PHP is older.  It has a good 5-6 years on Python and Ruby and that includes an incredible amount of growth for the web.  It was heavily used prior to frameworks and Ajax and Web2.0 and standards around TDD for the web.  Legacy garbage code is not the fault of the language, it’s the fault of the developer.

PHP does not encourage bad programming.  Bad programmers or bad organizations encourage bad porgramming.  Blaming PHP for our lack of discipline is setting everyone up for failure the second time around with a different language.  I’ve seen just as much bad Ruby code as PHP, it’s just there’s usually less of it because there’s only been a few years for the Ruby stuff to accumulate.

PHP doesn’t have the same developer mindshare on the cutting edge, at least as far as I can tell, and there is some merit to the idea of using what is being progressed, but there are good PHP alternatives to a lot of the key cutting edge Ruby or Python projects.  Looking for a good framework?  Check out Symfony2.  Behavior Driven Design guys should check out Behat.  Heroku and several others now support PHP.  My guess is that “new car smell” of a new framework and new project is what people are really after.  Spin up a new project on PHP and use some of its modern conveniences and see if you agree.

Many good companies use Ruby or Python, many use PHP.  Here’s a company defending its use of PHP a year ago.  There are still more lines of PHP code out there in some really great products written in PHP.

Bottom line: PHP doesn’t suck.  Guns don’t kill people and neither does PHP.  I’m not saying that Ruby and Python and PHP are all equivalent, but I am saying lets put down the fashion statements and really say what we mean.  Without truly understanding our reasons behind language choice, we’re doomed to make really stupid mistakes like the anecdote above, and faulty decision making processes that hide true requirements produce bad decisions.

I also like trying new things.  My last two projects were a Rails and Django project.  But when asked why I was using them, I said “to learn” not “PHP Sucks!”  

 

Web Development on Mac OS X (Lion)

Others have written about this before,  but I’ll underscore the sentiment that managing a local development environment on OS X where that environment requires Open Source Software is a royal pain.  At the companies I’ve been involved with, we generally eschewed local development environments and instead gave everyone access to a development server that included the requisite databases and web servers and vhost entries.  It worked OK, but there are some significant drawbacks.  Namely, unit testing, environment experimentation, single point of failure if the dev environment goes down, and the needs of a developer to refresh their own copy of a dev database or make other similar changes tend to suffer.As a hobbyist with a simpler environment, or as a developer that’s deploying to Heroku or other cloud platform, local development is the way to go, and here is where Mac OS X makes life difficult.  There are several package management systems out there that tend to step on each others’ toes (and it seems language and framework ecosystems always prefer the one that you’re not using).  Mac OS X also tends to haphazardly ship versions of Python or Ruby or whatever that are a couple of versions behind, then not upgrade them until they do an OS refresh.  That refresh (cough, Lion) will fail to mention it’s upending your world until you try to use your environment that’s always worked.Here’s my solution: just use VirtualBox.  Deploy an Ubuntu or Debian server, link that server to your local development directory and you’re done.  Then use the excellent package management that Linux affords to setup your environment in about ten seconds.  This has another advantage in that you can also use all your deployment hooks (Chef or Puppet) that you’re using on your production servers.Once you’re up and running, here’s how I work: I edit and run git from outside the virtual machine, and run the environment and web browser from within the machine.  Still todo: see if I can use my OS X browser to hit the virtual machine’s private IP so that all my tools are running externally (a little easier for workflow) so the virtual machine is just acting like an external server.Now you have a fully fledged (free, and always available) server, and you can still retain your Mac toolchain when and where you want it without worrying about Apple and OS X pulling the rug out from under you.  Remember: encapsulation of a work environment is just as important as encapsulation of code.

A Few Things I Wish the Apple Appstore Had…

My first app store experience was many years ago, before Apple, before iOS, before any of the other app stores you see today.  It was Redhat’s Redcarpet subscription service which delivered a library of applications (packages) via the internet in an easy to use command line tool.  There was even a GUI if I remember correctly.  Then Debian/Ubuntu came around with their package repositories and it was such a major usability difference between Linux and Apple/Microsoft that it was only a matter of time before it caught on.  Of course, the ideals behind the Linux offerings of ease of use, reliability, and compatibility are supplanted somewhat by the key aims of profitability and control inherent in modern app stores, but who’s counting?Things I wish the Apple App Store had (these are post-Lion upgrade thoughts)

  • Some way to know what the schedule of app update notifications is – it’s unclear to me if this is daily, whether I have to have the appstore application running all the time, etc.
  • The App Store should intelligently close your application when updating an existing application.
  • The App Store should be able to store your credentials, and not require credentials for doing an update if the app is in safe state (e.g. closed).
  • There should be a compatibility layer in Lion that lets you run your iOS apps on your Mac.  I’m sure this is coming, but I wonder when.
  • The App Store should offer to scan your hard drive and find applications that it can manage for you.
  • On the Featured and other pages, you should be able to hide apps you’ve already installed.
  • Somewhere down the line, it might be interesting to have a “lists” feature like Amazon.  Apple could even show what apps certain celebrities use in lists like the inflight magazines do for travel accessories.  Maybe that’s too much on the pointless-marketing side.

I’m sure there are some other options that I’m missing, but overall I’m happy with the experience.  The App Store managed Lion install was incredibly painless, and so much nicer than having to mess with the Apple store, or a nasty CompUSA.

A Guide to Walt Disney World – Tickets and the Magic Kingdom

I wasn’t a big Disney buff until I met my wife.  She loves Disney, because, as she likes to remind me in that tone that only self-evident-truths-that-I-have somehow missed deserve, “It’s the happiest celebration on earth!”  At first, I got a kick out of going to Disney because she did, now we both enjoy going and usually manage 2-3 days a year.  This is our unofficial guide to the parks. Tickets Disney tickets are expensive, and it’s very difficult to get a good deal.  Your options are generally speaking the following:

  • Florida Residents: If you’re a Florida resident, you can purchase tickets at a discount with your valid Florida drivers license.  These are non transferable, and Disney fingerprints you to avoid the “have my Florida friend go one day then I’ll go”.  The discounts are very very attractive and if you pay attention they’ll run specials that have restrictions (certain days blacked out, etc.) which will let you get down to roughly 40 bucks a day if you buy a 3 or 4 day pass.  This is the best deal you’ll ever manage.  Note that most multi-day passes (but not all) can be upgraded within six months of your first visit to a year-long annual pass for the difference between what you paid and the annual pass rate.  This is another really good deal if you plan to go often.  Rule of thumb – if you’re going to go more than 5 days in a year, get the annual pass because it includes free parking, which saves you 10 bucks a day.
  • Out of Staters: You have a lot less options.  Generally speaking, you’re going to pay full price, unless you can wrangle some sort of amazing package deal, but beware, these tend to not be the greatest deals once you analyze it.

Scam Options: There are plenty of scam options available:

  • Timeshares: These involve sitting through a timeshare presentation (usually with two friends you’ve brought along) for 2 hours and result in theme park tickets and a room or two for a night.  This is OK if you’re sure you can say no, but they make us nervous because you usually have to prepay a hundred bucks or so that will get refunded upon viewing the presentation.
  • Tickets for some other presentation: See above. Same deal and same risks usually.
  • Get a Florida ID to unlock the Resident Discount: These services will help you get a Florida ID card, but are often defeated by the fingerprinting that Disney does and it’s illegal – a serious felony if you’re caught.

Legitimate Discount Options

  • Triple A (AAA) – They have a discount.  Use it.
  • Military Families – Another nice discount if you’re eligible.

The Bottom Line on Tickets

Disney is expensive, but here’s the thing – you’re going to spend as much money inside the park if you’re not careful as you did on tickets.  Seriously.  Many find that the ultimate costs of food, drinks, parking, souvenirs, aren’t closely scrutinized while they’re there and add up to being way more than the actual park entry fees.  Our advice would be to focus on cost control in those areas and just bite the bullet on the tickets.

Controlling Costs Inside

Disney allows you to bring food and beverages into the park.  I’m not sure about alcoholic beverages, but for sure you could sneak them in if that’s important to you.  We believe that eating as we walk around the park is one of the best things about Disney, but if you’re watching your diet and trying to cut your costs, bring sandwiches and some bottles for water is the way to go.  We see a lot of people with CamelBaks on throughout the park and if you stock it with enough ice, a Camelbak should last you most of the day. Don’t forget sunscreen – the stuff they sell inside the park is very expensive – $20 for a bottle, and you don’t have a choice on this item.

Hotels

We would advise not staying on property hotels.  They are really expensive compared to other options out there.  Hotwire and Priceline are your friend, but beware of the fact that there are a LOT of older hotels in the Orland/Disney area that are run down.  We recommend Priceline since you can read reviews on the properties you’re thinking about staying at before you pull the trigger, but we’ve had no real issues with Hotwire.  You can generally find accommodations that are decent in the 80 dollar per night range.  Many hotels have a resort fee or parking fee each day that’s tacked on so keep that in mind when you’re looking.  Many hotels also provide a shuttle which will save you the $10 a day parking fee at each park.

Times to Visit

We’ve been in the spring, summer, fall, and winter and even though we had a great visit in late April, it was a little skewed because it was during a weekday.  The Wife insists that January is the best time to go both for temperature and crowd control reasons, and of course, if it’s during the school year try to go on a weekday.

Fast Passes

The fast pass has revolutionized Disney and its infamous lines.  These are your life savers.  The way it works is each ticket gives you a token that lets you cut in line between a certain timeframe in the future.  This time increments throughout the day until about mid afternoon most fast pass machines shut off.  We recommend a strategy of hitting the popular rides early.  In other words, if you want to hit Space Mountain (one of the longest waits in the Magic Kingdom) immediately make a bee-line to that ride as soon as you enter the park, and get your fast pass.  That will give you a relatively early time say between noon and 1:30PM, then once you’re done you can Fast Pass your number two selection.  This will save you up to 2-3 hours of standing in line.

Line Monitoring Applications

You should also download an app for your phone that gives you wait times for each ride.  I use WDW waits and WDW maps – they’re free and seem to work OK.  They allow you to input wait times and see wait times reported by others across the park so you can monitor your hitlist during the day and “sneak” into rides that have their wait times temporarily drop.  We’ve used this to snipe a ride with “no wait” that was close to us several times and it’s remarkable how much wait times can fluctuate throughout the day.

The Magic Kingdom

This is the smallest of the parks, believe it or not, and also the busiest.  Expect the highest percentage of kids and stroller-jams.  We’ve found that even though most kids annoy us (we have no kids) one of the best things about the Magic Kingdom is to watch kids freaking out with excitement on the way into the park and during the day, and to spot meltdowns that occur when they get tired.  If you’re lucky, the parent will also melt down and we take sadistic pleasure in witnessing this.

Here are the absolute must-see rides:

  • Space Mountain – a fast, chaotic, clackety ride that’s world famous because it’s in the dark.  This is our first fast pass of the day always.
  • Monster’s Inc. Laugh Factory – this is probably the best, more underrated ride in the entire park.  I can’t say enough good things about this show.  Essentially, it’s a standup comedy routine performed by actors who voice and control the expressions of animated Monsters on the screen in front of you.  You can submit jokes, the audience participates, and no two shows are the same (jokes and gags differ).  This is an unbelievably creative ride and if you liked the movie, it’s a slam dunk.
  • Thunder Mountain Railroad – this may be a “kiddie coaster” but it’s a fun one with awesome theming.  The ride is fun and feels chaotic enough to be exciting.  Try to get a seat in the back cart.  This is always our second fast pass of the day.

Things we Enjoy

  • Tea Cups – This is another ostensibly kid ride that can be had in any park, but we attempt to spin as fast as possible and it’s a relatively short wait.  If you do this right, you can usually be so loopy you’re close to falling down at the end of the ride.
  • Pirates of the Caribbean – this ride closed for an overhaul that lasted quite awhile but really only saw them insert a few Captain Jack Sparrow figures into the ride.  It’s the same as it ever was, and that’s generally a good thing.  It’s got a covered line which gets you out of the heat and we generally use this line to eat a snack since it moves pretty well (usually not more than 40 minutes).
  • Train Ride – we use the train to get around the park a lot since the Toon Town and Frontierland stations are well positioned to save you walking through the chaos of the middle of the park. Note – currently Disney is completely renovating/rebuilding/expanding the Fantasyland part of the park which means the Toon Town station is closed which really limits the train’s usefulness.  This should reopen in 2012.
  • Haunted Mansion – we like this ride because it seems to exemplify the old-school haunted house theme and has a very creatively themed line with funny tombstones, etc.  This is probably not a good idea for young kids.  Bonus – every time we’ve ever been on the ride it has paused or broken down for a few minutes and a voice comes on that advises you to stay inside your “Doom Buggy”.  For us, this is the best part.
  • The People Mover – a good way to rest your legs and relax.  Nothing earth shattering here.

Things We Hate

  • The Hall of Presidents – Yes, I get this is a classic, but it sucks.  Although it is air conditioned and the wait is short, the problem is you’ll be tempted to fall asleep during it if you pop in during the middle of your day.
  • The Lilo and Stitch Ride – Easily the worst ride in the park.  It’s a bizarre ride, but it makes a little more sense when we learned that it was originally an Aliens themed ride that got retooled.  It’s horrible horrible horrible.  A complete waste of time.
  • Small World – insane lines and that horrid song.
  • Country Bear Jamboree – we thought we liked it as we had fond memories of this line, then we recently went to it and it ruined the memories for all time.

Food Guide

  • Giant Smoked Turkey Leg – the single best food offering in the park.  These can be found in Frontier Land in a cart right by the river.  If you’re on a high protein diet / low carb diet, this is essentially your only option, but who cares?  The meat is actually not turkey but Emu and it’s awesome.  Make sure you bring dental floss if you’re going to eat one of these – the meat tends to get stuck in your teeth and you can’t buy it anywhere within the park.
  • Cotton Candy – The Wife loves this.  You can get it on Main Street and also in Frontierland.
  • Pineapple Soft Serve Float / Coke Float / Pineapple Ice Cream – my favorite dessert, can be found in Adventureland near the Pirates of the Caribbean.
  • Taco Salad – find these in the food court opposite the Pirates of the Caribbean.
  • Jelly Bellies – these are insanely expensive but they’re inside the general store in Frontierland along with the Cotton Candy and Aunt Selma’s massive cookies, which are really good.

Other Items We Enjoy

  • There is a glass blower shop on Main Street on the right side when the train station is at your back.  Inside there are artisans that are shaping glass items and we’ve also seen them blowing glass to make goblets and other large items.  This is a lot of fun to observe.
  • The camels in Adventure Land spit water on you when you walk by.
  • The parades are always entertaining to watch, and even more fun to watch kids freaking out as their favorite characters walk by.  Protip: monitor line times closely during parades to hit a few rides while the parade soaks up large crowds.

Some Thoughts on Two Factor Security

Awhile ago I wrote an Open Letter to Mint.com laying out some major concerns I have with their service and their security implementation.  Almost all comments both here and on Hacker News and Reddit were divided into three categories:

  • From non-Americans: How is a service like Mint.com even possible or legal? US Banks don’t have two factor security?
  • I totally agree that Mint.com and their service is insecure and I don’t use them!
  • I agree that Mint.com needs better security, but their service is great and anyway, it would be too time consuming/too expensive/too hard/too impractical to implement these security improvements.

Between the time I wrote that letter and now, we’ve seen RSA (the only major token based two factor security provider) have all of its hardware tokens compromised to much public uproar. At Sentry Data Systems, we’ve had two factor security implemented for years using time based cookies and additional security questions to challenge users when they were logging in from a device that hadn’t been previously authorized.  This is similar to how many banks in the US do two factor security if they choose to implement it.  While not a HIPAA requirement, we felt that it was a great feature to offer that provided an additional layer of protection.  We’d originally offered RSA SecurID tokens to customers but found that most customers balked at the price, and even if they did use the tokens, many would simply tape it to their computer monitor or keyboard, or they’d forget the token at home which would cause quite the contentious support call. This experience brought to the forefront several issues that I had with hardware based tokens:

  • Casual users or those who didn’t value the two factor security benefit would simply leave the token lying around or affix it somewhere – it wasn’t natural to expect a user to carry one more thing with them day-to-day.
  • If there was a compromise, you have to replace all of your hardware, for everyone, everywhere.
  • They were expensive.
  • They were highly recognizable and screamed to informed observers that you had access to a system that was considered high-value by someone.

I even went so far as to start sketching out an iPhone app that we could deploy for our customers but it seemed like quite a lift to do it well (a correct implementation is key in cryptography systems) and it was with much delight that I ran across an outfit called DuoSecurity based in Michigan. They have really put together a fantastic service that provides both SMS based (challenge/response) and one-time password (via an iPhone or Android app) options for two factor security.  I signed up for the service, installed their package on my Ubuntu Linux server, and within about 15 minutes, I had a very strong two factor solution that avoids all the drawbacks of the hardware token approach…for free.  Yes – they provide up to 10 users for free to let you get your feet wet and see how the system works.  With the token being my phone, I’m not going to forget it, it doesn’t draw attention to itself, I can’t tape it to my workstation, and they can update the software if they need to. If their service goes down, you can configure it to not require the second factor (the default) or you can choose to prevent logins and keep a private key around for last-ditch logins.  Of course, for those of us running cloud based servers, there is still the risk that your hosting account could get compromised giving an attacker shell based access to the machine – hopefully Slicehost and other services will implement this type of additional security soon (Amazon’s EC2 cloud already implements two factor security as an option). Duosecurity can be easily implemented with any web application, a lot of VPNs, and on your Unix/Linux servers quickly and easily.  If you’re doing anything with medical, financial, or other sensitive data you should definitely check them out.  If you just like additional protection for your own servers and services, they’re a great option as well.  Just in case you’re curious: Duosecurity put up a great blog post about the steps they’ve taken to prevent compromise if they came under the same attack as RSA. A few thoughts on improvement:

  • Give me an apt package please!  I don’t want to compile things, and I don’t want to edit configuration files.  These things make it hard to deploy on lots of servers.  I talked with a support rep from Duosecurity and they told me this is in the works already.
  • Put a login form on your website!  They email the login URL to you but I shouldn’t have to remember it.
  • It’s a little unclear to me if the pricing scales well- if I’ve got the same 35 users access 100 machines, does that mean I pay 35x100x$3?  That seems expensive.  Course, it’s still way cheaper than RSA but at least you could bind an account to a token and not worry how many servers you were accessing.  It’s possible that a single user crosses the server boundary, but again, I’m unclear on that.

Bringing it all back to the original point – there is simply no excuse why a service like Mint.com doesn’t use Duosecurity to protect its own user’s logins.  But the second issue still exists – how do banks provide consumers of financial data access without compromising the entire account? A poor man’s solution of sorts could be taken by banks providing read-only accounts for customers that use generated, revokable passwords.  Google takes this approach with its own two factor implementation for Gmail.  You get texted when logging in normally, but for other applications, you generate a password that can be revoked at any point.  It seems like a decent compromise – you can’t control the account from that login, and the password is of sufficient length and complexity that it’s unlikely to be brute forced.  My initial suggestion of using Oauth is essentially the same thing. Congratulations to the guys/gals at Duo Security on providing a really great set of tools for developers and users.  I really hope it catches on and more and more providers begin offering two factor as an option.