Here are a bunch of links to software which I believe is, or will soon be, indispensable. I use most of it regularly. Consider this to be an extended list of "Powered By" buttons, without the annoying banners. Note that these aren't in any particular order. For instance, Apache may be at the top of the list, and while it drives my web site, I don't have much to do with it, and neither does the technology interest me much. One thing I should point out here is that If you're curious, here's a very old page on the same topic. It is interesting, to me at least, to see which technologies have survived the times. Quite a bit, actually, but here's a page describing what I dropped, and why. If links or descriptions are missing, try a Google search. I'm probably still working on the page.
Platform Independant Technologies
These are technologies which are cross-platform compatable. They are either specifications, or software that is available on more than one platform.
-
XXE. XML word processor. It is all I use anymore for document and web page editing. It needs some more features before it is ready for casual users, but if you've got a rough handle on XML and XSL, it is a great, powerful tool.
-
Xalan-J, which I use to turn XML into other stuff via XSL
-
Jitterbug, which is the bug tracking system I use. It is very simple to install, use, and extend, and I cherish simplicity.
-
rdoc, a Ruby Javadoc analog. It is a very clean API-to-HTML documentation generator that does a pretty good job and is in active development.
-
FOP, which I use to turn XML into PDF via XSL
-
DocBook, which is really convenient due the the existance of a well defined (and what some might call "bloated") DTD, and XSL and CSS stylesheets for almost every imaginable medium. I do use a lot of my own DTDs, though.
-
Batik. Vector graphics (SVG) viewer. A truely excellent SVG renderer. I use this a lot when editing my SVGs.
-
Subversion. SCM software. I used CVS for several years, and it is a good SCM. However, it has a number of failings. Subversion is intended to be a replacement for CVS, solving the problems that CVS suffered from and being easy for CVS users to learn. It succeeds, for the most part. Getting a server running isn't for the faint of heart, at least in the pre-1.0 release. While the installation is fairly easy, the number of non-standard dependancies is rather large, and some members of the development team have short tempers. There are also a lot of good people on the development team, and Subversion is going in the right direction. Keep an eye on it.
-
PNG. Portable Network Graphics. The only time I touch GIFs anymore is when I'm forced to download them and convert them to PNGs. PNG is more compact and more powerful than GIF, it is now widely supported, and it doesn't have any patent restrictions.
-
blosxom. This is a new one for me; I'm not much of a diary writer. However, a blog seems to be a requirement these days, and this one is the best. It is extremely simple. Even better, there's a Ruby version (but I have to credit the original, perl version).
-
SVG. Vector graphics. This is the best thing since PNG. Better than PNG, really. Words can't describe the pure Goodness of SVG. If God had a favorite graphics format, it would be SVG. SVG is, like most things I like, simple, elegant, efficient, beautiful, and hand-editable. It is also coming on strong, so watch out for it. Adobe makes a plugin; Mozilla has a sub-project -- that isn't quite ready -- for native SVG support; KDE should have native SVG support by 3.1; if MS doesn't have native SVG support in IE fairly soon, I'd be surprised.
-
XML. eXtensible Markup Language. This is the basis of a much of what I'm interested in. I wrote the first pure-Java XSLT processor (now superceded by Xalan) and an XML processor for Ruby. I use XML in nearly every non-trivial app I write, from IPC to data storage. XML isn't appropriate for everything, but it is appropriate for most things.
-
XSL. eXtensible Stylesheet Language.
-
Ogg. Sound compression. MP3 was nice, but it suffers from not being an open specification. IE, somebody owns it, and if they someday decide to make you pay a royaly for your MP3s, you'll have to. Ogg is (arguably) better than MP3, for both compression and quality, and it is unencumbered by patents.
-
Jabber. What instant messaging should be. Again, open source, easily extensible, powerful, and yet simple. My current favorite Jabber client is Psi.
-
Ruby. Programming language. My current love. This is such a beautiful language, words fail me. Everybody should learn this language, even non-programmers. It is easy, clean, intuitive, and powerful.
-
Unicode. I was right about this one. It is coming, slowly. Having authored an XML application and having to deal with character encodings -- by request of my users -- I'm even more of a Unicode proponent.
-
Java. Programming language. What can I say? I'm not as rabid as I once was about Java, but it pays the bills, and it still is one of the best languages out there.
-
GPG. Gnu Privacy Guard. This has replaced PGP in my book. GPG is to PGP as VIM is to VI: backward compatible, but once you use the extended version, you won't go back.
-
XMLRPC. XML-based RPC mechanism. "Why not SOAP," you ask? Because Microsoft got their hands on SOAP, and (almost) anything Microsoft touches gets polluted with bloated stupidity. The XMLRPC spec is one page long, and does practically everything SOAP does. The SOAP spec is 20 pages of incomprehensible garbage. You can telent into an XMLRPC server and issue commands by hand; SOAP servers need an Enigma machine to do translations. SOAP and XMLRPC illustrate perfectly what I hate and like most in technology: SOAP is unnecessarily obtuse and bloated, like most MS software, whereas XMLRPC is minimalist, efficient, simple, and effective.
-
Pyx. Simplified XML.
-
WebDAV. This is one of those things which I don't use a ton right now, but I expect that it will become increasingly important.
-
Unison. A, no -- THE, file synchronization tool. I keep everything in synch with this.
Linux Stuff
Software that only works on Linux, BSD, or Unix. Actually, some of this stuff can also be run on Windows, but is more popularly thought of in relation to Unixish OSes.
-
KDE. KDE is the only desktop environment I, or Monika, use any more. It is stable, feature-rich, and application-rich. I predominantly use KDE apps because they load quickly and blend with the rest of the environment, supporting drag-and-drop and docking, as well as good look-and-feel conformity. This isn't to say I don't use non-KDE apps -- I'm writing this on XXE, a pure-Java XML word processor, for instance -- but when I need something, I tend to use the KDE version if one exists. I have gripes about KDE, but none that I don't have with other GUI environments, and fewer really aggravating ones.
-
Mandrake. I don't know if its the best Linux distribution; I've only used Redhat and Mandrake heavily, and my contact with the other distributions is old and brief. However, Mandrake has held me in good stead; it installs on everything I've tried to install it on, with minimum fuss, and they usually have up-to-date RPMs. My only beef with them is that they've got some strange ideas about system configuration. What's up with their menus??
-
zsh. I still use this! I had switched to csh for a while after I thought a peculiarity in zsh allowed me to easily make a mistake and delete my entire $HOME directory -- 'rm -rf ~*' rather than 'rm -rf *~'... it was something I could have done in any shell, but I didn't know it at the time -- but I eventually switched back to zsh, and have been here happily ever since.
-
VIM. I simply couldn't function without VIM. First of all, vi exists on every single Unix installation, so you only ever have to learn one editor, because if you know VIM you can get around in vi. Secondly, (Warning: Exaggeration Mode Enabled) it doesn't consume an entire partition of my hard drive, or take an hour to start up, like emacs does. Thirdly, it is fast and powerful, and after you get over the initial learning curve hump, the commands are pretty easy to remember. Fourthly, like EMACS, you can do /everything/ in vi without having to touch a mouse. You'd be amazed at how much faster editing is without the mouse.
-
Apache. I have to say, web servers are like sewage drain fields: very useful, but really very boring.
-
ImageMagick. Still something I use almost every day, certainly every week.
-
PostgreSQL. One of the best databases currently available. Why not MySQL? Because I've encountered too many MySQL websites that were broken, or reported some error with the database. Frankly, I don't believe MySQL is enterprise ready.
Non-technology, or Other Stuff
Why is any of this stuff on the technology page, anyway?
-
PalmOS. Small, fast, functional, intuitive. Everything I like about technologies. I'm in lust with the Sony Clie line, at the moment. I can do without color, but give me real estate, battery longevity, and a really small unit!
-
Esperanto. Esperanto is one really nice language, and I encourage everybody I know to learn it. Esperanto is one of those things that gets better the more people who know it. On top of that, it's a great learning experience, and it is as easy as pie.
-
Google. Another thing i use many, many times, every day.
-
Slashdot. The first place I browse every day. I get nearly all of my information from NPR and Slashdot. Well, I read Linux Journal and Popular Science as well, but that's just for entertainment.
-
rpmfind.net. Software comes from here, sort of like how the stork brings babies.
-
FreshMeat. I browse freshmeat every day, too. It is amazing what you find on freshmeat.