LMXM

About UTE UTE Maven Plugin Suafe

Personal development days

After working as a freelance developer for the past 8 months I've come to realize that in order to retain my sanity and to stay fresh I have to take the time to improve myself both personally and professionally. This means dedicating some of my time usually allotted for client work to use for my own personal development. For anybody in the software development industry it is a must that you keep up to date with all the new technologies, or you're likely to miss out on new developments. Dedicating your work time towards personal development is a double-edge knife where you potentially lose income, but gain some new knowledge. It's not an easy change for us workaholics!

When I made the leap from full-time office work with part-time contract work to full-time freelancing I found that I both gained a lot of new freedoms and opportunities, but lost a lot as well. I went from working on a large variety of projects that ranged from basic Java console applications to full fledged suites of Java portlet applications, to a single, complex Java application. This ended up keeping me out of the web development world for nearly 8 months. I felt my web-fu getting very rusty and my skill set slipped considerably. I knew this was a possibility when I started freelancing, but I didn't expect it to happen so suddenly and drastically.

The first step in dealing with any issue is to realize and accept that you have a problem. During the past few weeks I've discovered that my problem is that I've let myself slip out of a complex, multi-faceted work environment into an isolated, single-facet environment. That is not the fault of projects that I'm currently taking on, it is my own personal fault in that I didn't push myself to keep up with the world around me and to continue to self-educate. I admit that and want to inform other new freelancers that it is up to them to keep up with technologies. It's a no-brainer that we probably all know already, but like me, I suspect others, may forget as well.

My solution to this problem is to create what I call "personal development days". I'm sure that I'm not the first to use that term, but it's new to my lexicon. A personal development day is a day or part of a day (depending on other priorities) dedicated to personal development and improvement. We all know the areas where are our skills are lacking and those are the areas we should focus upon during these days. Personally, I'm starting to focus on the web development world that seems to have passed me by all of a sudden. I find it personally fulfilling, but keeping up to date with the web world keeps me more marketable.

My focus is on web development and related technologies. I spent of lot of time doing JavaScript development and there has been a lot of improvement and new frameworks that utilize JavaScript. Here is what am currently learning more about over the following weeks:

Jekyll

Jekyll is a Ruby script based, static website builder. Many years ago I wanted to write one of my own static website tool, but for various reasons I was unable to dedicate the time to do it. Thankfully, others saw the need and Jekyll is one of many excellent static website builders. This website used to be run on WordPress, but is now written in Jekyll. I have no regrets moving off WP to Jekyll. There are no more worries about keeping up to date with WP changes just to stay ahead of the spammers.

AngularJS, Backbone.js and Ember.js

These JavaScript web frameworks provide an amazingly simple, yet powerful way of creating websites that rely heavily on JavaScript. It's amazing to see how powerful these frameworks are and with so little developer input. I have a long history of writing web applications using low-level Ajax, and later on using jQuery, which was new at the time. It is refreshing to see that so much of the hard work is no longer needed and developers can focus on writing applications rather than dealing with JavaScript and web browser idiosyncrasies.

Node.js

It's hardly new in the JavaScript world, but in the IT development world node.js is still in my opinion bleeding-edge. Having not reached version 1.0 level yet node is still infantile. That doesn't mean it isn't powerful and worth learning and using. I've always been intrigued by using JavaScript on a server-side application and am yearning to use it in some projects. I'm looking forward to digging into node.js and writing something using it.

Using GitHub for Windows Behind Microsoft ISA Proxy

If you're not familiar with the pain and torture that Microsoft ISA Proxy forces on users consider yourself lucky. As a developer and user that is required to work behind one of these proxy servers I know the pain well. Thankfully, there are other developers out there that have felt the pain and have provided some powerful tools for working around an ISA server. One of the best is CNTLM, which provides a way to reach the internet through an ISA server by silently and automatically authenticating the request first. This is vital for using applications such as the wonderful, new GitHub for Windows.

The first step is to install CNTLM. Make sure to download and install version 0.92 or newer. Older versions of CNTLM have a bug that prevent Git from working properly through CNTLM. You'll need to follow the installation and configuration instructions provided with CNTLM. I won't cover them here.

Next, install GitHub for Windows. Thankfully, the installer works behind the ISA proxy server without issue. I suspect the installer uses the system proxy server settings to download the installation files.

Start GitHub and work your way through the configuration. Assuming you have a GitHub.com account (create one now if not) you will see a list of your repositories. If you try to clone one you'll immediately get an error. This is expected. Shutdown GitHub.

GitHub for Windows uses the standard Git configuration file (.gitconfig) so this is where you'll need to set the proxy server. This file should already exist in your user profile directory. This is denoted by the USERPROFILE environment variable and is usually under C:\Users or C:\Documents and Settings. Add a section named. [http] and set the proxy setting to your local CNTLM server. The default port for CNTLM is 3128.

[http]
    proxy = http://localhost:3128

Start GitHub again and you should now be able to clone your repositories. If you run into issues make sure that you configured CNTLM correctly and that the service is running.