Since it’s a new year, time to think deep thoughts. Consider this proposition: when some technology graduates from expensive/uncommon to affordable/prevalent, there is a corresponding major advance in software to take advantage of it. That software extends the technology in ways that were never thought of in the first place.
In some way, this is ruddy obvious: why write software for a technology that is not succeeding? For sure, if the technology is expensive enough, you could make money providing expensive software for it, but in reality, why should you? You are in essence laying a bet that said technology will become more affordable and therefore common in the future, at which point you will be well poised for dominance in the field.
No, what I find more interesting here is what happens to software when a technology hits the real mainstream. A small diversion if I may.
The other day I bought an Eye-Fi Pro X2 SD card for my DSLR, mainly to try it out to see if it fits into my way of taking photos. If you’ve not heard of it, it’s not only a memory card but also a WiFi adapter: take a photo and it’s automatically uploaded to your PC via your WiFi network. The card came in a cardboard sleeve with just a USB adapter. No leaflets, no instructions, the sleeve had a sticker saying “go to this website to learn more about configuring the Eye-Fi card”. This points out to me several things. First, the SD card format had to become standard before making this adapter even made sense. Second, there has to be a reliance on the use of WiFi in the home. And third, it assumes that customers have ready access to fast internet (a driver and an app had to be downloaded and installed, you had to register with the site so that, if you wanted to, your photos would be uploaded to their servers).
Fast internet is one of those technologies I’m talking about. Remember the days of Hayes modems and top speeds limited to 14.4Kbps? Would you do all you do now on the internet if you were limited to dialing up? No, of course not. The explosion of access to broadband internet has resulted in – for better or worse – blogging, Facebook, Twitter, Flickr, software installs via the web, regular updates to your operating system, browser wars, YouTube and streaming video, sharing of information and services, and so on, ad infinitum. Web software changed dramatically once fast internet was ubiquitous and no longer the province of the wealthy. Nowadays, we pretty much write software that assumes some kind of always-on connection, or we write software that can work anywhere so long as there’s a browser running it. What ideas do you have for software that need this always-there, fast internet?
The smartphone (and tablet) form factor is another one of those technologies that, once it reached a certain tipping point, resulted in an explosion of different types of software and different kinds of apps. Just today, I typed “gas station” into Google Maps on my phone to get directions to the nearest gas station: the car was running on fumes and I didn’t know the area. What other kinds of apps do you rely on every day that would be impossible if you didn’t have this small computer in your pocket attached to some fast internet?
Even more basic, just think of the software that’s now getting written in interpreted languages. Once the hardware got fast enough, and the computer science got clever enough, interpreted languages started being used all over the place, from server-side web apps to client-side apps in browsers. It’s not that long ago that Google showed the way with the V8 interpreter engine for JavaScript, meaning that client-side apps were valuable and fast enough for everyday use. And of course with interpreted apps, we’re now used to the speed and agility with which we can deploy changes to those apps (there’s no install!). Once the tech was there, the software and the way we use and deploy that software grew rapidly.
And as a final example, let me point to the cloud. It wasn’t that long ago that putting your publicly-accessible servers on the internet (that same fast internet) was something only high-tech companies did, like Google and Amazon. Now the cloud (whatever your definition may be) is a commodity. Sure, you can store your photos “in the cloud” or your music (or even your license to listen to music that you don’t actually have locally on your hard disk as MP3s), but these days people are doing so much more: storing data and making it available, web sites, app servers, scalability, development, all on a pay-as-you-go type plan, rather than having to purchase servers for your own data center. The interesting thing about the cloud is that over the past year or so, it’s become almost ubiquitous and it’s certainly cheap. Are you a start-up? It’s cheaper to provision a few virtual servers from Microsoft or Amazon than to purchase the infrastructure to do it yourself. You are developers, not IT managers. Where this will lead, I’m not sure, but of one thing I am certain, this same fast internet plus the cloud will result (has resulted) in some new and innovative software.
The basic problem is of course (a) spotting a technology that could/might/will turn mainstream (I, for example, am no clairvoyant), and (b) what kind of software could be designed and written to take advantage of that technology. Here’s a list of tech that is at least interesting, but not yet mainstream, what do you think?
- Wearable computers, like Google Glass
- Televisions, such as 4K TVs, Google Chromecast, Microsoft XBOX, etc
- Automobile intelligence, such as performance monitoring, car-to-car communications
- The connected home, for example, Nest
- Big Data provisioning and processing (for some definition of Big Data)
- 3D printing
Which of those (or others) triggers that spark? What ideas do you have that, if only some technology X became prevalent, would mean giving up your day job for a chance at software fame and fortune?