Javascript Everywhere: The Road to Quotable 1.0
A few days ago, I released the Android version of my app Quotable, marking version 1.0 and also the first ‘app’ I’ve released on iOS and Android.
Calling it version 1.0 is a little disingenuous however: this is actually the third time I’ve built this product. A couple of years ago, I was at Bowling Green State University, sitting in my dorm, brooding over the fact that I wasn’t able to go to a hackathon back home. Not liking feeling left out, I decided that this would be a good time to learn PHP and MySql, so I built what turned out to be the first version of Quotable, a project called “Futureference.” Futureference was a hit among my friends, but unforunately since I had no idea how to effectively build PHP apps, it was unmaintainable.
Fast forward a semester. A friend and I were brainstorming ideas for projects, and I mentioned that I had just discovered a thing called ‘Meteor,’ and had built a few apps for school with it. It’s cool because it lets us write code in javascript, something we’re both fans of. We decide to build Futureference version 2, calling it Futref.me this time. Again, it was a huge hit among our friends, but the lack of a mobile version totally killed it. We had plans to make a mobile version (I personally had little interest, she wanted to work with ObjC), and I even started working on an API, but it never took off. We ended up doing other things and eventually I took Futref.me offline.
Fast forward a year. I’m sitting on the bus, returning from boston like I do every day since I dropped out of school, attended Startup Institute Boston, and started working for SessionM full-time. I read that Meteor is about to hit version 1.0 (when I last used it it was about version .6), and that they were just starting to support Phonegap and Cordova integration for building native apps. I immediately knew I had to build the third version of Futureference, so I took out my laptop and started hacking before I even got off the bus (the aformentioned friend wasn’t as excited unfortunately).
Working With Meteor
I’d like to say that the integration with Phonegap and Cordova was so solid that I was able to build out Quotable with the version they released that night. Of course, that wasn’t the case. I sometimes forgot that it hadn’t yet hit version 1.0, and I was using software that wasn’t meant to be used in a production app. The devs weren’t particularly useful either: I reported multiple times that the twitter login feature wasn’t working on iOS 8, only be to told that this certainly wasn’t true and I was doing something wrong in my app. Of course with the next point release in the patch notes was a line about fixing the twitter login on iOS 8 (there was another issue where the same thing happened). This was a tad frustrating as some of these bugs were total showstoppers, one preventing testing on iOS at all. But once they got resolved everything worked like a charm, and I was able to hack my way to both an iOS and an Android version.
Would I recommend using Meteor for your app? Probably. The barrier to entry is extremely low, for the most part things ‘just work’, and the technology there is extremely cool (not to mention you get to use javascript, the best programming language). Just because it’s 1.0 now won’t stop you from scratching your head at some of the choices they made however. Some things are downright unintuitive, if not broken, and you’ll have to google around for a lot of answers. But if you can get past all that, you’ll probably find the joy of implementing a new feature in just a few minutes to be so exciting you won’t even care. Just the fact that I was able to go from nil to a sumitted Android app during an hour and five minutes bus ride says a lot about the framework. I would certainly do it again, and probably will in the future.
Moral of the story? If you’re an idiot like me and can’t wrap your head around xcode, javascript everywhere is the new hip option that is finally on near-equal footing with native code. Or, if that’s not your cup of tea, stop worrying about things like platforms and programming languages and just hack on whatever (assuming you’re not starting a business, but if you are don’t take advice from me).