musings between the lines

there's more to life than code

technology exploration

| Comments

Exploration

Starting a new project is daunting, especially when you only have a general idea about what you want to do. But it’s also a great time to explore and check out the new toys out there.

I’m predominantly a Java programmer. So I’ve been accustomed to working through my typical stack of tools to get things done. A nice relational database, some ORM layer to access the database, a servlet layer, a web layer to produce APIs and web compatible objects, and then all the front end magic to put it together for the end user.

It’s been all nice and dandy, but at some point, you need to sit back and wonder if you’re still on the right track… or rather, the most efficient track not just for development, but also just for the sake of keeping your toolset sharp and being cognizant of the new ways of doing things out there.

So, I was thinking about taking a bit of a break from the traditional way I do things to see what I can explore out there to help me learn something new and interesting. Something to get me nicely ramped up and eliminate all those bottlenecks I used to run into. It couldn’t hurt to look right? Just to see what new things are available that could help me out?

It turned out to be a far bigger, faster, more complex world out there than I thought.

Findings

Databasing

There’s the whole NoSQL movement, which I’m still convinced is more akin to “T-don’t-like-SQL-so-I-want-some-other-query-system” rather than a genuine improvement. The plus side is that these new tools have been built in the age of web applications and public APIs so usually everything is geared and ready to just be jsonized from the start. Some popular databases here are things like mongoDB and CouchDB, with which you can apparently pair PouchDB for offline databasing. Interesting.

Server side

There’s the whole Node.js movement, which is nifty, albeit having seen where Javascript came from, makes me cringe to think how core of a language JS is becoming even on the server side. But apparently performance of node and its plugins can be tuned to achieve something on par to a traditional Java stack. That’s at least a good start.

Though that’s not saying too much since the Java stack was never the fastest horse in the stable, it was just the most robust one. The other neat thing about Node is that there’s a robust plugin environment for it. Lots of extra tools and tidbits to add prebuilt layers and reduce complexity. End point and service generation plugins like Express and an interesting upcoming one called Hapi, built by one of the OAuth authors, Eram Hammer sound pretty interesting.

Packaging systems

Deployment, packaging, preparation, compression, parsing, aggregation and all that complex/tedious but necessary stuff. Things like npm and grunt help build and put things together. There’s the whole standalone Bower package repository that you can pull from and keep your libraries up to date. Lots of tools and utilities out there to help put things together and get them to places like Heroku and AppEngine.

Client side

Lots… and I mean LOTS of stuff here. Everything from the usual jQuery for easy DOM and Javascript manipulation and utility toolkits like underscore.js to nice templating and backend hookup systems like AngularJS and backbone.js. And of course, the now ubiquitous CSS bootstrapper Bootstrap for easy visual uniformity.

Generators

And to put it all together, there’s a boom in helping create and bootstrap your entire development stack. Projects like Yeoman and Meteor (my take is here) give you the full client side stack ready and prepared, as well as some work being done to do the same for the server side. Looks like a promising and interesting way to just get up and running fast without having to muck with all the setup work. Plus, usually included are a testing infrastructure or two like Testacular, but there’s also things like Mocha and Swarm.

So much help

There’s a slew of videos, examples, documentations, forks, samples, convenient generators for just about anything. If you don’t want to craft something on your own, just do a search for a generator of some sort and there’s probably going to be a site dedicated to it. Video tutorials can show you how code is crafted, and sometimes what’s more interesting, see the IDE environment some of these coders use.

And more…

And all the even newer cutting edge 0.0.1-alpha projects in the works. Bleeding edge concepts pushing boundaries and testing waters.

Oh yeah, apps!

Which is a whole different beast. Written in ObjectiveC, Java, HTML5, with native support, ubiquitous support, responsive, catered and whatnot. Various platforms like iOS and Android and their associated tutorials and development environments. Don’t forget ChromeOS and its set of Chrome related apps, extensions and themes too. The application stores themselves like Apple’s App Store or Google Play and the Chrome Web Store all offer a variety of places to show your app to users.

And so much more…

There’s a lot… I mean, a lot out there. And I’m finding more and more everyday, with every search, with every tangential link and every posting I run into. Plus they’re all evolving and changing and improving.

I’ll probably be posting about some of my discoveries on a day to day basis via my Google+ account, so feel free to follow me there.

I hope I can keep up…

Further

Sharing some additional links with more information that I found useful. Feel free to recommend some more:

    dynamically pulled from delicious. see more…

    Image sourced from onceuponageek but unsure of the original creator.

    Comments