Programming Languages, Markup, Software I Know

One tricky part of writing a resume is guessing how much detail to give. By definition, it's a "resume" - a summary - so i aim to keep it to one or two pages. I'm one of those hyphenated people, so i can easily add a lot of detail, but don't want to cut it short by lopping off major areas of talent and experience.

Keeping my current resume shorter means i can't list in detail *all* the computer programming languages, markup languages, software tools, techniques, etc that i know. So i put them here.

A detailed list like this doesn't belong on a resume, not just to keep the resume brief, but because no one really cares. Once someone has learned four or five programming languages, the next few are easy. Some languages i know are archaic or very specialized; no reason to bother 98% of my resume readers (potential clients and employers) with such stuff. Of course, if relevant to particular project, these can be mentioned in a cover letter.

This page lists every programming language, markup language, software tool, etc, that i know anything about, including ones i've studied but not used for everyday purposes. This page does not cover physics, electronics, art, photography or other areas.

UNFINISHED! Work in progress....

Programming Languages

C++
Expert, experienced. learned back around 1991. I like it overall, but it does have a few ugly spots. I often avoid the fancier features like templates and dynamic casting that turn out to cause more problems than they solve. You could say i'm programming in "C+" where i take advantage of half of its features, but avoid the others.
D
Interested, but inexpert. A new and improved C++ from Walter Bright Compiler, documentation, forums available at Digital Mars Mostly it looks like it truly is better than C++, with the ugly legacy compatibility junk lost, and anything you might want to do in practice easier to code. I haven't worked on any major software projects in a long time, only small-scale stuff, and for those i've been using Ruby, Python and maybe C++. But there are a few projects growing in my idea garden i'd like to use D for. BTW, i know nothing about another proposed future-of-C++ language, C++0x, other than with a name like that it's doomed. read more at InformIT, or watch a video presentation by Bjarne Stroustrup. Comparing to D, i prefer the loss of backward compatibility for a cleaner language, and i strongly prefer the more sophisticated features built into the language and compiler rather than entirely through macros/templates/libraries. Reasons are explained in the overview and other pages at DM
Java
Barely competent - I can't write "Hello World" without a cheat sheet. But i have studied the language, considered it for some past projects (at employers, not for personal projects), and have actually modified or fixed bugs in existing mission-critical Java software. It is an important language every software engineer should have some knowledge of, just because it's all over the place, even in high energy physics. For my own work, it just doesn't have any advantage over any of several other languages. Good place to visit: Java Ranch
Python
Competent at basics, mystified by the edgier esoterica. First learned the basics in 1995 or 96 when i was trying Linux the first time, reading about technology jobs in astronomy, and found that astronomers, some of them at least, really liked Python. At first i liked the indentation, but now i find it a bother, since it makes cutting and pasting code difficult, especially to past a short snippet of code into an interactive session. Also, when writing OO code you've got to explicitly state "self." everywhere, as if there were no concept of being inside the context of a object. Overall, a well-designed language for casual programmers, powerful enough for real work, not feeling too fuzzy-mitten to professionals but easily within reach of rank beginners and occasional programmers. A few annoying blemishes aren't showstoppers, just Pythonic thinkinig, and don't spoil the overall pleasure of programming in the language. Good book: The Quick Python Book - is good to learn Python if you already know a language or two, and retains usefulness as a reference for the following years. I use python for a short while, then ignore it for a few months, so i'm always needing to refresh my knowledge. This book is perfect for that.
Ruby
Fairly competent but unseasoned - i hardly know all the tricks yet. A very appealing languages with only a few basic concepts yet so powerful. OO at its finest. Matz, the inventor, took ideas from perl, smalltalk, python and others and made a nicely conceived language. Main complaints others have about it are it's weak in libraries (but no longer true; beware old comments!) and that it's slow - but it's so easy to write extensions (DLLs or Shared Objects) in C/C++ to crunch the numbers or pixels fast. Already used Ruby at work to fetch image data from our databases, and it turned out to be amazingly easy, once i got past certain obstacles having more to do with my ignorance of databases than with Ruby. Ruby is catching on among scientists, is used at JPL, and is getting attention in many field, even finance. There's a local group meeting here in Boulder, but haven't been to a meeting yet (as of this writing)
Pascal
Expert but rusty. Turbo Pascal, Delphi. I once used the "official" Pascal on a DEC machine, long long ago, and it sucked long and hard. Pascal was designed as a teaching language, for in class use only, training wheels, but at the time structured programming was the "in" thing, the "object oriented" of its day, and caught on everywhere. But the mainstream version was lacking in many ways, and made limiting assumptions about how it would be used and what kinds of files users would read and write. Borland bent it into better shape when they came out with Turbo, which i used a lot for projects ranging from site radiation monitoring to ray tracing around black holes. Now it is dead and gone. Last time i used Delphi was in 2001.
IDL
Expert at language, never used some of the fancier features. The Interactive Data Language from ITT-VIS (used to be RSI), popular in science and engineering. I use it heavily every day to calibrate and enhance Cassini images. First contact was back in the 90's when i studied the syntax, but not actually using it beyond tiny sample code, along with MATLAB and other interactive languages when designing a new language for a project. IDL, with all the varied extra tools, has something for every kind of scientist and engineer, but no one individual is likely to use even 1/2 of it all.
Assembly/Machine
Expert/genius, sorta. x86, Motorola 6800, and 6502. Oh yeah, and the old RCA 1802 chip. Maybe others. My first programming language ever, not counting a certain paper toy, was binary machine code for the 6800. Memorized the whole set of opcodes, thanks to its nice orthogonality. I know so well the actual electronics and register -level functioning of CPUs, it's the infrastructure of my thought even when working with Java, Ruby, IDL, etc. I know what's really a pointer to a virtual method table, and see it all clearly in my mind as i grok the high-level language's concepts. A good understaning of assembly code in the 1970'-1990's does not translate into a good understanding now, with SIMD and register renaming and multiple pipelines, branch prediction and other funny stuff (and i mention only technologies that have been around already 7+ years) - all the old rules must be replaced with new ones about best ways of optimizing assembly code. Fun stuff, but in practice i rarely find anyone willing to pay for that kind of work.
Actionscript
The language used to create Flash files. I haven't used the actual Flash creation application, but have been using mtasc which compiles Actionscript 2. (The new cutting edge version is Actionscript 3)

Specialized

These may or may not count as programming languages.

Makefile
As experienced as any C++ programmer. Seemed like a great idea back in the 1980s. Most makefiles now are generated automatically by strange tools and are unreadable by Humans. I write Makefiles by hand and keep them simple, to the point. Well, i used to - now i use only Rakefiles (see next) Specific makefile variants i've used include Borland's make, Microsoft's make, and GNU make. I assume Zortech had a make program too, but i don't remember much about it. Or the others.
Rakefile
Becoming expert. Like make, but includes a real language - with for, if, arrays, and everything. It's really a Ruby program with some extra syntax to describe dependencies and rules for updating.
Cook
Competent but not a genius, and out of practice. From Peter Miller, a replacement for Make with a nicer syntax, more power, and just simply works for most everyday tasks - so few people ask questions online, making it appear less popular than Make and other systems that are harder to use. Sometimes good tools fade away because the lack of problems leads to a lack of websites to help people get around the problems... but i digress. Cook files used to be my normal build system, but now i'm flirting heavily with Rakefiles. I may resume using Cook for larger projects as they come up, or work on things that don't involve Ruby. Info on Cook at Peter Miller's page.

Markup

Funny codes one stick into text files, so that some interpreter can know how to display the content.

TeX
Popular with the physicists. invented by Don Knuth, one of the great and original minds in computer science. Invented a long time ago, when memory was small, CPUs slow, and deeper thoughts on programming languages and markup yet to form. An amazing work, written in Pascal by the way, and certainly better than the only similar sort of thing one had before: troff (or groff for us open-sourcers) I used it a bit in the past but have abandoned it for the slicker Lout system.
Lout
Invented by another great mind of computer science, Jeffrey Kingston, as an improvement over TeX with some other good ideas mixed in. Is much easier to learn, less cryptic, capable of more complex layouts than TeX, easier to add custom keywords, so on and so forth, praise gush praise, on and on.... This is what i used to write printable documentation for clients, explanatory blurps for artworks, flyers, covers for notebooks, anything else that can be dealt with by a markup language like this.
Postscript
Expert except for esoteric features and the latest version. This is really a full-blown programming language, not a markup, but belongs here because it's used mostly for creating pages to print out. Easy language to learn, with the only stumbling block being the stack-oriented operation, which may seem weird to most coders today, but i had already written my own version of a Forth-like language. I don't use Postscript much, but on occasion i find it easier than using a vector illustrating app to make electronic diagrams or technical plots, where a "for" loop makes quick a task i'd hate to do point-and-click by hand. I designed a multi-scale ruler using a hand-written postscript program - no way would i want to place all those tic marks by hand!

Graphics - 3D

I'm interested mostly in ray-tracing and radiosity techniques. Almost never do old-fashioned scan-line rendering or OpenGL, but know about such things.

POV-Ray
Expert. Excellent ray tracer, though these days overgrown, having accreted features over the years. Several years ago i added the color dispersion feature. Know the source code quite well, have looked at all of it. I write POV-Ray scene files by hand and sometimes parts of complex scenes generated from Python or Ruby programs.
Blender
Started toying with this 3D modeller back in 1999 or 2000, when it was a BeOS app.

Graphics - 2D

Inkscape
Moderately skilled but not pro. Freeware vector drawing app. Similar to Corel Draw, Adobe Illustrator, etc. Used for one or two of the images released by CICLOPS, to mark arrows etc on images. I haven't used it much more, this past year ignoring 2D in favor photography and 3D artwork. When i do need to make a 2D drawing, Inkscape does great, and i've tried nearly every feature at least for experimental toying around purposes.

Audio & Music

Jamin
For mastering audio before burning to CD or other final form. Excellent, full of features. I'm not a professional mastering engineer, but certainly i can use this to accomplish what i need as an amateur. Compressors to mush those peaks in different frequency ranges, equalizer, etc. When i'm done with other projects and get back to something involving music or sound effects, i look forward to putting Jamin to the test. (Linux/unix only, requires JACK system)
Audacity
Have used on occasion. not expert. Audio editor, multiple tracks, effects bus and all the usual you'd expect to find in, say, Sonar, just not quite a slick polished or as many specialized filters and effects. But, as a linux programmer, i could write my own plug-ins as needed, should i need any. A basic tool any audio hacker using Linux should have, because it is widely used if not the best available.
Ardour
I like this audio editor better. Relies on the JACK system for you incorporate filters and special processing modules in your edit/mix process. It took me a while to grok JACK but once i did, it made tremendous good sense. I drool at the prospect of doing some serious audio work in the future, but i've got plenty of software, photography, and graphics projects for now. Ardour's GUI seemed better than Audacity. I've not done much with it due to discovering it some time later than Audacity.
Rosegardent
Drooling at, not expert. Nice-looking and easy to use editor for MIDI. Couldn't get MIDI to make sounds on my main machine, so i don't use it much. Looks great, though...

Operating Systems

BeOS
Excellent OS from Be Inc. I was impressed with how easy it was to install, get all the essentials running. Started with the version 4 demo disk, quickly upgraded to version 5. Be Inc went downhill rapidly when they decided to focus on "internet appliances" and software for them. Yellow Tab and OpenBeOS (who have change their name) carried on the flame, but by now there's no great reason to use these.
Linux/GNU
Using Ubuntu at home now, have used or tried for more than an hour: Fedora, Slackware, Gobo, Knoppix, and Linux from Scratch and maybe some others i found on freebie CDs that came with magazines.
Microsoft Windows
Since 3.0, or actually the version just before that, whatever it was called. Learned programming on Windows from Petzold's book. Very limited, slow, and crashy. Most recently used: earlier today, if you want to count running Windows programs in WINE. For real: just a few days ago, fiddling with Sonar to get it to hear the Alesis Multimix.

Some Computer Programming Links

Having not much to do with the above, but no where else better into which to put...