Blogroll
A great source of information for Lotus Domino administrators
Jeff Potts' excellent ECM/Portal blog
Lots of very useful Alfresco articles
| 10 Things to Learn Next Year |
|
|
|
| Written by Nathan McMinn |
| Monday, 20 December 2010 13:15 |
|
It's almost the end of the year, which means that the usual flood of "Top 10", "Year in review" and other backward-looking articles are here. Retrospectives can be a lot of fun and even occaisionally insightful, but in my opinion they are looking in the wrong direction. So, in the spirit of looking forward to a new year, here's my top 10 list. Not things that happened in 2010, but things I want to learn in 2011. Some of these I have already started using but want to master, others are mysterious new toys that have grabbed my attention if not my time.
10. HTML5. The importance of HTML5 cannot be overstated, IMHO. With support for the Canvas object, video, geolocation, etc, etc, HTML5 is already changing the web in surprising and innovative ways. The best part? It's not a new language. All the tags I know and love are still there. There is still a lot to learn, but I don't have to start from scratch. In some ways (like the doctype), HTML5 is even simpler than earlier versions, a refreshing reversal of the usual cruft of complexity that builds up on a language over time.
9. Groovy. Groovy is one of a slew of new(ish) languages that run on the venerable and performant Java Virtual Machine. Groovy borrows heavily from Java's own syntax, flattening out the learning curve for developers that already know Java. So, it runs on the JVM, and it looks a lot like Java. What's the big deal with Groovy? Well, proper closures, for one. A great console, for another. One of the things I LOVE about coding in Python is that if I want to play around with some code I can just start up a Python console and go to work. Java's edit -> compile -> debug cycle seems positively crippling by comparison. Add in the fact that apps written in Groovy can leverage Java's gigantic library of existing components and you have a language that I have to add to my toolbox this year. Oh, and don't forget Grails. I've built a couple simple apps with it and I think I'm in love.
8. The ins and outs of cross-platform mobile development. Compared to the whole of computing, mobile applications are still in their infancy. Without getting into the growing pains this market is going through (Apple's walled garden, Verizon Android crapware, etc), there is one big challenge as a developer. What platforms do you support? What language(s) do you develop in? Is it worth it to build both Android and iOS apps? Do you even have the resources to do so? Companies like Appcelerator aim to make this easier by creating cross-platform dev tools for popular mobile device platforms. I want to make my apps available to as broad an audience as possible without the headache of maintaining several codebases. This is a space to watch.
7. A NoSQL database. Most of the platforms I work with rely on relational databases. They work. MySQL / Oracle ( the two I work with most frequently) are mature, stable and perform well enough when properly tuned. But, like any tool, RDBMSs aren't the right solution for every problem. They can be expensive to scale quickly, and frankly I don't always need a well defined schema. Sometimes I just need a persistent store for some simple objects. Now that CouchDB is available as a client-side DB for Android, I can see quite a few interesting applications for this technology. If iOS support comes through then we have another choice for cross-platform data stores.
6. Arduino. What the heck is an embedded processor doing on a top 10 list for a web / mobile developer? Well, the Arduino is simply one of the coolest things I have ever seen. It's open source. It's cheap. It's easy to program. It's capable of surprising feats. I have an Arduino Mega sitting on my desk just begging for the right project. I had originally intended to use it as the brains behind an automated bottling line for my homebrew, but decided that kegging was much more practical :-). Right now it is hooked up to a 2 line LCD display and a couple of blinkenlights, just waiting for inspiration to strike.
5. GIMP. This is one of those tools that I already use constantly but wish I had a better handle on. The GIMP is a great image editor for the price (free), and I use it all the time for creating iPhone buttons, logos, splash screens, etc. If you just need to slice and dice some PNGs for the web it is a great option. In the next year I want to hone my design skills and GIMP-fu.
4. Tropo. Tropo is a telephony platform that runs in the cloud. If you want to add SMS or voice functionality to a web application, Tropo takes all the guesswork out. They build the infrastructure and provide the APIs, you build the cool stuff on top of it in your choice of Ruby, Python, JavaScript, PHP or Groovy or your language of choice by calling their REST API. Oh, and did I mention that it is free for developers?
3. Django. This is another one of those tools that I have worked with occasionally but haven't ever really mastered. In particular I want to use Django running on the Google App Engine to build some simple scalable web services. I haven't ever implemented a REST API in Django, but need to learn.
2. Alfresco. I use Alfresco constantly. It's a big part of my day job and I have even written / contributed to a few open-source components that exist in the Alfresco ecosystem. However, it's a huge product. It provides so much functionality that I feel like I only know / use 10% of what it is capable of. Maybe with another year of hard work I can bump that to 20%.
1. Time Management. As evidenced by the list above, I have more ambitions than time. To get all of this done I will need to focus on what is, in my opinion, the single most important tool that any developer or engineer can learn. This is one of those critical life skills that almost everybody has room to improve. If I only get one thing done next year, this should be it.
So that's my list. 10 things that I want to focus on in 2011. What are yours? |
| Last Updated on Tuesday, 21 December 2010 10:00 |
About Me

My name is Nathan McMinn. I'm a software engineer, beer geek, wannabe adventurer and genuinely curious guy. Find me on Facebook, Linkedin or Twitter
Latest Comments
- Storing and Retrieving Images ...
Hi, Thanks for your tutorial. it suggestion really... - Alfresco PDF Toolkit - Digital...
It will be very useful, if at one go I can digital... - Integrating Alfresco Content i...
Hola estoy trabajando con el módulo de drupal CMIS... - Integrating Alfresco Content i...
Hola estoy trabajando con el módulo de drupal CMIS... - Calling Web Services from the ...
Nvm - resolved it - needed to restart browser for ...



Comments
I agree, time management is the one to learn!
There are so many things I want to take a deeper look into. Just looking at someone else's list gives some direction!
CSS (CSS3)
HTML5
Composing Joomla extensions
some NoSQL db
Arduino & Processing
AJAX
Ruby
Nginx
node.js
Develop for Android
Time & Priority Management
Christina, I started with Applesoft Basic, but the first language doesn't really matter. If you are looking for a suggestion, I like Python as a learning language. Learn the fundamentals. Get "The Art of Computer Programming" by Knuth and read it to comprehension. Most importantly, pick a small starter project and learn by doing.
Chris,
Node.js is a Javascript component that can do network IO and looks promising for creating high performance network services using HTTP or other transports.
@anyone What is node.js anyways? I still don't get it. I looked on their website but I dont understand how it works, why I'd use it, and for what I'd use it for... what is node.js!? the curiosity is killing me!
1. Haskell
2. F#
3. SQL Modeling Framework (from Microsoft, it's a new framework which used a language called M)
4. Learn to use BI (Business Intelligence)
5. Silver Light (it will be used for Cloud Computing. A Cloud for a business, not public, doesn't need SEO, so HTML5 is just useless). It could be used for ERP web app, voice conference...etc...
5 things are just too enough for a year.
Can I ask where/what languages did you first learn? And what are the basics you suggest learning really well before a person goes crazy with 11 in 2011 :)? I know it can depend on interest as well, but curious!
I wish I had taken that software engineering degree, instead I did business/systems analysis, and I'm stuck writing VBA as often as I can and doing many SQL queries,lol... My goal is strong basics,so I can move on a bit!..I work in visual studio at home and I'd love to try out I-phone app development.
Thanks!
- Some mocking/stubbing framework. Surely Moq.
- GIMP/Photoshop: Photoshop is widely used on my company, however not being a designer, I think I'll go for Gimp since it is open source.
- Some of the open source DI/IOC frameworks out there, instead of rolling my own when I need one. Surely StructureMap.
- Improve my knowledge/skills with 3D designing and 3D engines.
- I'd like to start getting involved in conferences and teaching students.
- Improve my knowledge with Flex/Flash Catalyst.
- Improve my knowledge with WPF/Silverlight/Expression Blend.
- Get an Android phone, and start developing for it.
- Maybe learn some more about web developing. I'm mainly a desktop developer, but I've worked in the past with HTML/CSS/JS/ASP/PHP... I'm a bit rusted and would be nice to be up to day.
RSS feed for comments to this post.