Going along the theme of things I did in 2012, here is a list of 15 things I did - and loved - and am very glad that I did. These are all software engineering related things, and are presented in no particular order (sorting the list would take too long).

15 Things I Love Software Development


The categories range from new software I used, to new technologies/frameworks that I started using or got more involved with, or other slightly unrelated things - like my new Android phone.

1. I love my Samsung Galaxy S3 Phone

Shortly after I started my new job at KSL.com I was told that I needed to choose a phone that would become my “work phone”. Since at the time I had been using a $15.00 flip phone from Walmart, I was just glad for the upgrade. After consulting some friends and doing some research, I ended up choosing the latest and greatest Android phone at the time. And I’m glad I did.

I absolutely love my GS3, now running Jelly Bean. If you’re looking for a new phone, and can’t decide between an iPhone and an Android phone, I can honestly say that you won’t regret going with the Android. The extra large screen is simply amazing. Every time someone comes visit my wife and I, and they ask me to log them in to our WiFi, I have a hard time typing the network information on their minuscule iPhone screen…

2.  I love Google App Engine

I have been using Google Web Toolkit for a few years now. I absolute love it (see item #3). However, due to my previous commitment to PHP, I hadn’t given much thought to GWT RPC because all of my projects’ back end was all in PHP. Earlier this year, however, I decided to finally make the move to GAE. The result? I can’t get back to serious PHP development anymore. Other than this blog and other trivial freelance projects, I’m not sure I’ll ever touch PHP again - at least not by choice. We still use PHP for 90% of our products at work, so for now I can’t get away from it.

If you’re not familiar with Google App Engine, you should be ashamed of yourself. If you know what it is, but haven’t done anything about it yet, shame on you, too. And if you are a GAE user, then you know how good it feels having it. Amazon Web Services and Windows Azure are both awesome (I have done work on both of them). But Google App Engine is my favorite. Especially when you use it in conjunction with other Google tools.

3. I love Google Web Toolkit

It’s so sad that Google is moving away from GWT and embracing Dart a bit more. I guess I have to jump in and do a few projects in Dart before I can add it to my list of 15 things I love. But for now, I’m so happy with GWT. Especially because porting projects from GWT to Android is so easy. At least it’s much easier than porting it from a vanilla Javascript code base (or worse yet, porting a jQuery project to Android).

4. Google play

While Google Play is a great place to find the best apps and other goodies for your Android devices, the main reason I love Google Play so much is because of the way it allows any developer to enter the app market. Best of all, it only costs $25 one time fee. The feedback cycle is so powerful, that if you, as a developer apply some basic principles of user-focused development, you will be able to engage with your users and get enough feedback to make your app great. Of course, where you go from there is a choice that is left up to you, but the tools are available, and the door is opened to those willing to walk through it.

5. Eclipse IDE

Over the years I have tried many different text editors, IDEs, and everything in between. It wasn’t until I read an article that briefly mentioned the term “Eclipse power user”, that I was inspired to become one. Ever since I started on this journey, I find myself loving the Eclipse IDE (currently using the Juno version) because of how much it allows me to produce. The main take away from this is that no matter what IDE you use, you should definitely invest in it (download/buy the best plug-ins and add-ons, learn all the shortcuts, etc.) and become a power user of it. And in my particular case, that IDE is Eclipse.

6. Git & Github

All throughout my college career, along with the jobs I had around the same time, I used SVN for our source code management repository system. After a few projects, I had become quite the subversion power user. Then I learned about sites like Assembla where you could get unlimited free private repositories. At that point I did nothing until I set up a free private SVN repository for whatever project I was working on, even when I was working on a project by myself. I had no plans on moving to Git. Then I started working for KSL, and was forced into the Git world. It took me a few weeks to really grasp the concepts and get the differences between the two systems. The most painful lesson was losing code after a system crash - I was still under the impression that a Git commit was the same a an SVN commit (meaning that I thought a Git commit pushed changes to the remote server - not the case). But now I have no plans on ever touching an SVN repository again. EVER! I know I will have to deal with a subversion project here and there, but never will this be by choice. Git is definitely the way of the wise.

7. Google Chrome Web Store

Shortly after I started putting out a few HTML5 demos, I learned about the Google Chrome Web Store. At the time, the main features seemed to be add-ons and themes. Fine, those were fun to create, and I enjoyed the relatively high user base I got out of those. Then I learned about actual Chrome apps. That was even more fun, because I was now able to officially publish my HTML5 apps. Best of all, I still earn a decent amount by monetizing some very simple web 2.0 type HTML 5 applications I’ve written. What a great opportunity.

8. HTML5 APIs

I remembered how amazing it was to use a <marquee> tag back in the day. Even more impressive was being able to adjust the direction that the text scrolled. But then I grew up and realized how limited web application development really was. Until browsers grew up. With better Javascript virtual machines - and more useful APIs, along with the millions upon millions of users who are exposed to your applications right away (no downloads, no installations), developing web apps became such an amazing opportunity. And thanks to the various HTML 5 APIs available, there is less and less limits each day. For a freelancer/independent developer, there could be no happier news.

9. Quality YouTube video tutorials and lectures

While most of YouTube’s content is worth relatively less than all of the fart apps in Apple’s App Store, the few videos that are actually useful make up for the rest of the videos. From Google tech talks, to university lectures and courses, to the many quality how-to computer tutorial videos, I just can’t stop being amazed by how much one can learn from those free educational videos.

10. Social Networks

Again, while there are billions of users around the internet, you can’t call quantity quality. But with the many quality social networks available today, it is again such a great opportunity to get involved in very specific, qualified communities where you can grow and meet people that you can share so much with. Yes, Facebook helps me know what my mom is up to all the time, but in my opinion, the greatest value added by today’s social media sites is the subject-specific communities. Plus it breaks down the barriers between the laymen and the high class people. I mean, how else would I know what the great influencers in the industry think about various topics, or what they’re getting into (or out of)? I have had several conversations or brief Q&As with “famous” professors, engineers, and CEO-types through Facebook, Twitter, Google+, LinkedIn, etc., and I can’t see how else I would ever have this opportunity.

11. Dropbox and Google drive

I remember when a free email account was good at 5MB. Then Gmail came out of nowhere, offering a whole gigabyte for free! That was amazing, but in and of itself, not that great. Then the service itself got better and better, and now I can’t imagine the world without it. Likewise, the free storage services. At first they were so limited and clunky. Now they’re so robust and useful. I absolutely love being able to sync my drives on my various local devices, sharing files and folders in many different ways, etc. Plus, when I need to go beyond the free storage, adding more space (which brings with it all the reliability of the service, which is in itself worth 95% of the cost), I only have to pay dimes for it.

12. Stack Overflow

While I do care a little bit about my reputation score in the stack exchange network, I really enjoy getting the very specific feedback it provides, along with the opportunity to help other people out. I remember when I needed a very trivial answer, and it took weeks or months until I was finally able to find it. Now, with Stack Overflow you can get a what, how, and why in a matter of hours in the worst case scenario.

13. Quality teach yourself computer books

While YouTube videos and tutorials are great, there really is nothing quite like a paper book dedicated to a particular subject. And while the For Dummies books had their place, the newer series available today out perform any other teaching resource I know of. Especially when you can get a new copy for free at your local library. Best yet, most authors are reachable through email, or some social network site (see item #10). Again, I can’t count the amount of times I personally wrote an author, and got a thorough, prompt explanation in response.

14. WebGl

With the new HTML5 APIs, web apps keep getting better [at least in theory] because of the many possibilities they allow for. However, nothing quite says “The web is the greatest, and best platform to develop for” like the 3D rendering API exposed through WebGl. The Javascript virtual machines are just about fast enough these days that there is really no reason to put out the most sophisticated pieces of software in a browser… Except for poor rendering capabilities. With WebGL, that rendering limitation is crushed down to nothing. If you don’t believe me, check out some of the WebGL Experiments and tell me I’m dreaming.

15. The Internet

Maybe this is a big filler/summary of the previous 14 items. But try coming up with a consistent list of 15 items without taking too much time to think about it. It’s not as easy as you think! Still, if you think about it, what would we have (or at least, what would my list of things I love be) if we take away the internet as we know it?! No more free information sharing, no more hyper-exponential progress and growth because of the positive spiral that the internet provides. Next Thanksgiving, if you don’t thank the universe for giving us the internet, you should have your mama slap you for being silly and ungrateful. I love the internet!