Sunday, April 12, 2009

First Posting

As the title of this blog would imply, I'm planning on writing about learning new things. Specifically, I'm talking about development tools and practices, maybe a little technology in general and its play on our culture. They're really not that separate.

The technology world is moving fast... very fast. It's exciting, it's fun, it's also very easy to be left behind.

For a while now, I've been left behind. I've purposefully stayed away from the various web crazes. Never joined myspace (honestly, can't remember even visiting). I held out against facebook until last month and somehow never heard of twitter until maybe 2 months ago. Heck, I've never posted a blog until just about now. Mostly, I figured, the masses were fickle and whatever is hot today will be dead tomorrow. It wasn't worth my time.

I was wrong. By skipping out on these things, I missed experiencing what makes these crazes succeed and fail. Why did facebook replace myspace? What drives people to blog 140 characters at a time on twitter? Why is mint.com destroying quicken's web site offering?
I'm not an entrepreneur, nor do I have any desire to be one, but I am a software developer and what's going on with technology on the web will surely creep into all corporate and consumer technology. To understand it and follow it is to prepare yourself for what all IT will be in a few years. When congressmen are tweeting during a presidential address to congress, it's time to realize that not only will this affect my career as a technologist, but it's very quickly going to affect everything.

These crazes as I've been calling them are having profound impact on the tools software developers have access to. They force standards so that different sites can interact with each other. They drive browser improvements that make client side code easier to write, and probably most importantly, they shape user expectations to how things are supposed to work.

This changes how you might architect all software. Why build client-side applications that need to be deployed and maintained for your corporate intranet when a centrally located server can deliver fully featured applications right through your user’s browser? It's a change in how we develop, sure, but in the end, it's a benefit to everyone. You just have to adjust a little.

After seeing Google's announcement that the Google App Engine now supports Java, I figured this was probably the kick in the butt I needed. With the exception of JSF, I really haven't learned anything new since taking my new job about a year and a half ago. What we’re doing is very interesting, but we're pretty conservative in terms of technology. If I want to learn about the tools that are going to build the next generation of software, I’m going to have to do it on my own time.

In my little App Engine project, I’m attempting to try things I haven’t used before. GWT seems like a great toolkit for creating more user friendly web applications. It’s certainly a different way of thinking about writing a web application. I’ve also decided to grab JDO for persistence over JPA which I know and love. I’m breaking out the JSON to interact with Twitter and using their beta support for OAuth for handling authentication to twitter’s services.

I haven’t fully decided where this little app will go more than just a programming exercise, but if it ever becomes anything useful, it’ll be posted. For now, it will be the driving force behind these posts. As I learn things, I’ll talk about them. If I find something cool, you’ll hear about it. If something isn’t so cool (I’m looking at you JDO), you’ll probably hear about it too. We’ll see, could be fun.