Languages

C Programming Language

I have written C programs, and also called C programs from within Java using JNI. But this experience is very slight, and except for saying that I can and have done it, and might could do so in a pinch with enough time, I could not call myself a C programmer.
 
On the other hand, C programming syntax is not so terribly differnent than Java, and I would feel comfortable taking most any program written in C and converting it to Java, perhaps excluding external library calls.

HTML

I have been actively maintaining web sites and web applications using HTML since 1999.
 
It is not something an programmer points to with pride, HTML is the kind of work that one typically tries to hand off to novices and graphic designers. Sadly, I probably have hundreds of hours with HTML over the years.
 
I also use CSS and javascript as required, but am not brilliant at either. Mostly I just modify work written by others.

Java

Full time java developer since 2000, have done just about everything from Swing applications to automation to full blown j2EE applications.
 
It is interesting that I do not consider myself a brilliant Java programmer, despite being regarded with somewhat elevated status by those who I work with on a daily basis. Feels to me like I'm just getting good :)
 
I am fast, and relatively facile with heavy refactoring and other such tasks which make less seasoned developers cringe with caution.
 
Also see J2EE, Java User Groups link below

J2EE

Especially between the years 2001 - 2004, web appplcations were my entire focus, full time. Starting with my first app written in servlets in 2000, and quickly migrating to the Expresso framework and then to purs Struts apps, I have worked almost exclusively with apps running on the Tomcat app server.
If you read the automation section, I tell there were I wrote a web application that writes web applications, and published some 30 generated applications into the public domain.
An early proponent of frameworks within the local user's groups, I introduced many to both Expresso and later Keel as they began to roll out.
I have also used WebSphere, BEA[?] JBoss, app servers.
j2EE is NOT my favorite approach for writing apps, as of the fall of 2004. With WebStart and Swing, or any other combination of WebStart and desktop apps such as SWT, it is possible to offer much more functionality than with a browser based app, even compared to all the latest buzz about AJAX.
I have not used EJBs, as have always used other forms to accomplish same task. See O/R tools, IOC.

JavaScript

I am not a great javascript programmer, that might be the most generous way of expressing this capability.
 
Enough of my user-group buddies and presenters have kept me filled in on this area to have some moderate degree of exposure to the differences between this programming paradigm and my more comfortable Java paradigm. Mostly it keeps me educated enough to stay away from it in any serious efforts, but I can also maintain small quantities of it when written as a part of an application I am maintaining.

PHP

I have written a minimal amount of PHP and maintained a bit more than that, but not much. I found it a very easy language to learn and use.
 
On the other hand, I have been using various open source LAMP (Linux Apache Mysql PHP) applications for years and have found them extremely easy to work with. I am able and willing to modify them as required, but have rarely found that necessary.

Shell Scripts - Unix, DOS

I have been writing shell scripts for years. Nothing complex but enough to get my work done. This is rarely done from memory, I usually look up sample scripts I wrote in previous years, and modify accordingly.
 
Until recently my skills stayed about even with dos and unix variants, but in the last year I moved to unix entirely even on windows, running it under cygwin. So my dos hasn't been exercised very well for over half a decade.
 
In unix I have always used the bash shell.

Visual Basic

1995 - 2000 wrote several visual basic programs and some Microsoft Office appliations to support my work as administrator,  and also to provide departmental size user groups with common interfaces to databases and files.
 
As of 2009 this is not an active skill set, I would have to re-learn some of the syntax and interfaces.
 
For the record - I remember my years writing VB fondly. It seems quite self-destructive for Microsoft to have held it back as much as they had, if it went cross platform and sustained enterprise development practices, it would have killed Java.

XML and XML Variants

Have created and/or parsed thousands of xml files (see automation for explanation on why so many) using combination of jdom, dom4j, xerces, xslt/xpath.
 
My two current favorites are dom4j and xslt/xpath, using a combination of these two technologies I have found it extremely fast to do just about anything I need to do with xml.
 
I am a member of the XML-haters club which tends to be found at the periphery of IT everywhere.
 
To clarify my experience with the xml variants see pages linked below:

XPath

 If you user XML much beyond simple configuration files, walking the tree quickly and easily can be an important part of your daily work cycle.
 
The two things which I have learned in many such assignments are that.

  1. JDom and it's bigger cousin Dom4J are verbose but always the fastest way for me to do anything light but programmatical.
  2. When you have even just a little bit more to do, XPath absolutely rocks, especially in concert with Dom4J

The reason for the "little bit more to do" requirement in number 2 above is because XPath has all the ease of Regular Expressions :)
 
So you really need to have enough work to get over the afternoon or so of fumbling through sample code until you re-learn the syntax that makes everything so easy. But once you've got it, it's really sweet. Recommended.
 
Not recommended, however, is doing super complex programming via XPath and xml transformations, not unless you've got enough work to keep you going for a couple months or more. Your first couple weeks of super complex transforms can be harrowingly unproductive, even if you are God's gift to programming. It's just a cranky combination of languages.
 
Also see XSLT
 
 
 

XSL Schemas

 I've probably spent less than 80 hours working with XSL schemas over my career, but that's probably OK because with modern IDE's there's not a whole lot of stuff you really have to memorize or understand about XSL to get it to do what you need to do.
 
Specifically, both the JEE version of Eclipse and the latest JDevelopers offer somewhat facile wizards to handle the basics.
 
I don't even have an XSL book, despite my propensity to buy books at the drop of a hat. That would point to how straightforward it can be for the common developer.
 
One of the more fun tasks I have taken on was to reverse engineer xsl from existing xml, which in turn I had reverse engineered from java, which in turn I had reverse engineered from database tables. Making 2 way round-tripping work was actually a quite enjoyable experience, and a lot less heartache than I expected. The business case found it extremely useful as well.
 
 

XSLT

 XSLT is not for sissies. 
 
See also sister page on XPath, same notes there apply.
 
I have done more than my fair share of XSLT, enough to know not to ever do it again except for larger projects where it's worth the re-learning curve.
 
When used in the appropriate place, it is an incredibly powerful and helpful way to get certain tasks done. Recommended for those use cases.
 
That does not include the occassional small project, or at least, not for me. It has all the charm of Regular Expressions, coupled with the added complexity of whatever custom XML variants you are engaging with.