Skills

Being a geek (even though self proclaimed) I know (quite) a bit about computers (to be humble - at least I think I do). When I lay down the languages and technologies I've worked with (given that I have been an engineer only for 3 years) it even amazes me to see the list. I also believe in the philosophy of learning, specially the advice 'Learn at least one new language a year' which came from a good friend - Glen Daniels. Glen may not be the one that came up with it but he is the one that put it in a way that hit me (and a few of my friends)
So here is the interesting bit. I've decided to make a list of the stuff I know, including programming languages, technologies and tools. May be I will even write some tutorials

  • Languages
    • Java - This is probably the language that I've worked with the most. I had my first taste of Java as an undergrad student and got hooked into it. Most of my industrial work has been done with Java and a mix of other technologies. My work in Apache has also been primarily in Java. it is the language that had the most profound effect on my life so far!
    • Ruby - This is a recent addiction and all my recent projects are written in Ruby on Rails. My work during the summers of 2007 and 2009  consisted of diving deep into the Ruby territory and all my recent work has been done with more Ruby than in Java.
    • Javascript / Jquery - Several script related Websites inspired me to work with Javascript and some of my recent work included a significant amount of Javascript , written with Jquery.
    • PHP - I maintain (and support to maintain) several Websites powered by PHP. I've written some simple (private) plugin for mediawiki and some drupal stuff and so on.
    • BASIC - GWBASIC to be exact! it is the first ever programming language I learnt from ground up. I did have a small encounter with Atari ST BASIC some time before (believe it or not - on a 8Mhz Atari computer which used an old B&W tv set as the monitor) but GWBASIC was the one that lead the way. I did some long programs, the most notables being a graphics program that could draw images and also a simple shoot'em up game. One of the recent encounters with GWBASIC has been while trying to program a XR3 series Rhino robot arm where the old user manuals had the code in GWBASIC!
    • Visual Basic - Visual basic has been somewhat easier for me to learn due to the knowledge in BASIC. It is the first(and only) languages I tried from the Microsoft visual studio language suite. I did some toy applications in VB, the most memorable is a sliding puzzle with customizable pictures that was enjoyed even by my friends. The primary work I did during my training period (working as a trainee software engineer) was also with a VB application, this one quite large and enterprise type!
    • Action Script - Action scripts has been an old addiction. I used to work with Flash (when it was owned by Macromedia), specifically Macromedia Flash 4 and Macromedia Flash 5. Now I think it is hugely improved but I enjoyed writing scripts and creating animations, sometimes small games even. I did a number of animated movie clips for certain occasions while I was back in college.
    • C++ - Not one of my strong ones even though I've done some small programs.I guess I slid straight into Java from C without a lot of interaction with C++. 
    • ASP - Did one major web site (for the Department of Defense In Sri Lanka) but it never went online (not due to technology but the politics :))! However it gave me and a few of my friends a first hand experience to learn the stuff.

      My philosophy with new languages is quite open. I simply have no fear in learning a new language and diving down - a mindset formed by many of my friendly geeks.

  • Technologies and Frameworks
    • XML/XSL/XMLSchema - These are few of the technologies I got to know very well, primarily due to my work in the web services engine.
      Due to the specific areas I worked with, specially the work with ADB (Axis Data Binding) I managed to acquire a significant knowledge in XMLSchema. The code generator engine was written using XSLT templates which gave me first hand chance to work with XSLT also (In fact I did play a significant part in architecting and building the XSLT based code generator engine in Axis2. I am happy to see that it turned out to be a better approach for the code generator than the previous one so that the same infrastructure was indeed used to generate code for multiple languages as expected)
    • Web Services - As an Apache committer who worked to build an open source SOAP framework from scratch (We did learn a lot from the previous efforts but very little code was shared. In fact most of the components were written from ground up) I do have a significant knowledge of Web Services. I did a lot of documentation for Axis2 and also a few articles on web services related concepts and techniques that can be found here.
    • Ruby on Rails - A more recent encounter but I've acquired significant experience in Rails over the last two years or so. I've worked with Rails at many different levels,  the last Rails project involved the non-typical use of pumping javascript code to be executed in the browser rather than typical HTML content.
  • Other
    • SQL - As a developer/software engineer there was a time in my career where I had to span my work across many tiers of an application starting from the database and all the way up to the user interface. What happened as a result was that I had the opportunity to write SQLs , sometimes very complex ones in Oracle, DB2, MSSQL and MySQL. Those days are long gone but it did gave me the chance to learn and dive into SQL in a very hands on manner, specially a unique experience in migrating between major database engines.

Well this is not an exhaustive list but I am getting tired! Its amazing how many technologies has emerged and improved upon for the past few years. Also due to this I have a special respect to all the older engineering folks who've probably worked with a much larger volume of technologies :)