TinyText: Programming the World with Nothing more than Web Technologies (HTML, JS, CSS)
What’s the news you say? People have been programming the Web with HTML + JS + CSS for decades yet it is only now that we’ve started seen a new breed of applications that for practical purposes are indistinguishable from native apps: Fast, responsive and rich as demonstrated on the Internet Explorer 9 https://www.beautyoftheweb.com/ that work without the need of additional downloads or plug-ins. At Microsoft we get the web and it is only going to get better.
I’m talking about applications that are programmed with client web technologies that behave like native apps and in many cases are more responsive and reliable. It is not just about HTML5 it is about the underlying engines providing capabilities and APIs that allow programmers to use simple JavaScript to program everything. Take a look at Node.js, a friend of mine is playing with it and he has been impressed with how easily you can program a web site (not a web page, an actual web site with the webserver included) with nothing more than JS.
Mobile developers have long been using browser controls to serve as the bridge between the web and native applications for Windows Phone, Android, Iphone, you name it; yet that always has been a bit of a hack IMO but what are we if not hackers I guess. More formal, yet still limited, APIs have been emerging to make scripting languages a first class citizen in this new brave world of multiple devices.
Why am I so excited about all this? Well, because it has been a refreshing and rewarding experience to plunge again into the client world in one of my moonlight projects, TinyText. It is a simple yet pretty useful text messaging client that also integrates with Facebook so whenever your friends join TinyText you can also send messages to them (kind of a Facebook address book).
I originally started with the goal of building a Windows Phone app that would allow me and my wife exchange messages without paying for SMS; I just find utterly absurd to pay for SMS in a world where phones have unlimited data. Then my friends saw the prototype App and they like it. I thought, well, why not, let’s release the app and have my friends join. People starting downloading the App and now I have thousands of users growing a bit each day :)
Yet the biggest complaint was that there was only a client for windows phone; not anymore. Yesterday I released the beta version of TinyText Everywhere, which is a web version of the App built with nothing else than HTML, CSS and JS. It is pretty basic I admit but it gets the job done and runs fairly decent on all devices and browsers I’ve tried it on (IE, Chrome, Safari, Android, IPhone, IPad). As the underlying platforms start exposing more JS APIs I envision the web version being the “only” version that I will ever maintain. Sure, there will be no escape from providing different flavors of the app for different devices but it will be a lot easier to use the same language (HTML + JS + CSS) and the same distribution mechanism (the web) to cater for multiple devices. Will I ever release a native version for Android or IOs? I wouldn’t discount it but we’ll see ;)
Take away from the story? In the off chance that you aren’t yet honing your web development skills (particularly HTML5, JS), what are you waiting for? Get on it.