Software tools

Name Description
Nagios Network monitoring software. Assumes that units are expected to be online all the time and issues warnings if this isn't the case. Handles different kinds of devices to monitor, but not very many parameters. Not good for quantifying other metrics than uptime. Light on resources.
Zenoss Network monitoring software. Like Nagios only more complicated and with good support for measuring and trending stuff. Resource intensive! A good choice for large corporate deployments with hundreds of nodes in different locations.
Cacti Network monitoring software. Pretty much only handles SNMP. Awkward concepts of templates and instances. If you take Nagios, combine it with Cacti and add user-friendly configuration methods, you get Zenoss.
Munin Network monitoring software. Like Cacti, only less prickly(sorry about that). Seems pretty light on resource use. Easy to write plugins but maybe not so much for SNMP. I'll see how it goes.
Splunk Network trending software. Allows for arbitrary queries against historic data collected from various kinds of devices. Resource intensive.
OSSEC Network monitoring software. Mainly intended for security but can also be used as a more generic log monitoring tool. Features active response to protect hosts from intrusion attempts. I try to use it for any servers exposed to the internet.
NetBeans Integrated Development Environment from Oracle. My favorite IDE by far. Incredibly resource intensive though.
Eclipse Integrated Development Environment. Industry standard but nowhere near as polished and coherent as NetBeans. I think "Grab bag" is the description I'm looking for.
Xen Virtualization platform. Feature-rich and efficient but not as versatile as VMware or as easy to use. Paravirtualized Linux guests was always Xen's strong suit.
VirtualBox Virtualization application. Runs any number of virtual machines inside another operating system. Very useful for experimentation, running Windows software on a Linux host(or vice versa) but not generally seen as a suitable server virtualization solution.
VMware vSphere Hypervisor Virtualization platform. Perfect for people like myself who want to run lots of different server configurations. Only drawback is that with bigger deployments, HA, etc you have to pay(and quite a lot!).
Django Web application framework. Python-based framework suitable for simpler kinds of sites. Wasn't even close to Ajax when I used it a few years ago. Still, fast and relatively simple tool with which to build many kinds of web applications. Excellent for learning principles of web application frameworks.
Java Enterprise Edition Enterprise software framework. Think Django only with Java and hundreds of features! Web applications(including Ajax), Object-Relational-Mapping, authentication and many other things are supported by this framework. Not an ideal introduction to web applications or ORM. While I haven't used any of the other candidate systems(SAP and...?) I can't imagine why one wouldn't choose Java EE for building a new enterprise system.
Duplicati Backup software. My new default backup software for people whom I help with their computers. It's slim, versatile, free and transparent. It does lack integration with Windows but that's a small prize to pay to avoid Windows Backup.
Duplicity Backup software. Cross platform and related to Duplicati. I use it to sync data offsite.
Bacula Backup software. Complicated arrangement for databases, storage and management nodes collecting files to back up from nodes throughout a network. But it's free and versatile. I used it for offsite backup in conjunction with my own scripts for encryption and syncing. In this day and age I can't see any real justification for this kind of software except for people(organizations) with tape drives.
Acronis True Image Backup software. Has its flaws but worth its weight in gold! You can snapshot entire hard drives to restore to previous states as well as make backups of files and directories just like other backup solutions.
Clonezilla Backup software. Free variant of Norton Ghost. Allows computer restore via network and other stuff. Would be perfect for schools of some size but I think most organization would do well to pay for the greater ease of use I think you can expect from Norton or other commercial offerings.
SystemRescue-CD System rescue CD... If I'm a computer carpenter SystemRescue-CD is my hammer.
DRBD Distributed Replicated Block Device. Cool shared storage system but I went with version 2.7.2-1.16 on OpenSuse 11.1 which was seriously flawed so we didn't get along well.
Blender Open source 3D animation software. Not bad but back in the day it wasn't very good at mechanical engineering.
Rhino Commercial CAD software but no built-in animation software.
Java SE Since I include programming languages in my list of interesting technologies, so I should include them here too. Java SE is an object oriented programming language with an extensive standard library. Ask me what language should be used for project X - without telling me what X is - I will default to recommending Java.
Java EE Java Enterprise Edition is Java SE with lots of bells and whistles added. It takes time to learn(I'm still learning) but provides an excellent framework for writing enterprise applications that can be extended as the underlying business evolves.
Perl Awful quasi-scipting language that (unfortunately) is the reigning champion of regular expression and text operations.
Python Multi-paradigm programming/scripting language with indentation-based syntax. It lacks proper threads, has no static type-checking and a confusing definition of what a Class is. Despite this I frequently end up using Python for various tasks.
C For most intents and purposes, C is the mother of all programming languages. In my book it is only suitable for writing hardware-oriented code and operating systems.
C++ Not just C with object orientation but more like C dead and brought back to life by Doctor Frankenstein. Dangerous and tricky.
C# Java according to Microsoft? Not quite, but close. Less picky exception handling, much better data hiding but unfortunately idiotic reinterpretation of polymorphism, inherited from C++.
Haskell A pure functional programming language that looks beautiful but thinks much too highly of itself. Mainly used in academia.
Scala I'm going to delve deeper into this language because it's quite nice, but so far my impression is that Scala is Java with functional programming ideas, less verbosity and language-level design patters. While I have only the briefest experience with F# I think of Scala as being to Java what F# is to C#
Erlang The only functional programming language I've come across that I didn't actively hate(Scala isn't properly functional). It was made by clever people to solve real problems and has seen much actual use(unlike Haskell which was made by clever people to look nice on paper). Beware: it is a hard core backend language that holds availability as the highest virtue of all.
JavaScript As a programming language it is abhorrent. As a basis for jQuery it tolerable. As a highly advanced form of byte code it is quite good. Only if you understand what these three sentences mean should you write production code in JavaScript.
ZFS File system by Sun Microsystems(now Oracle) that constituted a quantum leap in data storage for us techies. Netapp must have turned white when they saw what ZFS brought to the masses.
Subversion Second generation Code Versioning Software. Brilliant for working on text documents thanks to locking functionality. Slightly awkward for small projects.
Git State of the art CVS. Complicated but easy to use for many common scenarios. Bad GUI on offer. Practice using it before relying on it for proper use.
MongoDB JavaScript-inspired NoSQL database written in C++ that seems to scale very well. Used it in an Express/Node web app with great ease. What I don't know about its entire functionality could fill a warehouse.
Node.js/Express Server-side JavaScript library. I'm no fan of JavaScript but in Node.js it works quite well and Express is one very useful starting point for making web apps on this foundation. For me Express is the web app framework of choice.
RADOS/Ceph Scalable storage system suitable for cloud solutions(read about it in Admin Network & Security, issue 09). I have made some simple tests of it and I'm impressed. I may well come to use RADOS/Ceph for my next NAS system, if I can somehow use ZFS or Btrfs on top of it by then.
Chef Tool for keeping configurations in sync. Can be used with Vagrant for quickly creating development environments.
Tomoyo Linux Easy to use method of restricting applications in Linux according to certain rule sets. Can also be used to analyze relationships between applications and their behaviour.
AngularJS Client side web application framework that automates much of the hassle of updating the DOM of a web page when changes occur. Nice link to Restful web services as well. Has a severe learning curve though.
Jongo Brilliant ORM for MongoDB in Java. Mainly plug-n-play.
Solaris 11 Trusted Extensions/Trusted Desktop This is sort of like SELinux/MLS but for Solaris 11 and it's the most readily available Compartment Mode Workstation(CMW). It's easy to install and I've even been able to change the setting to allow for moving information via clipboard from low security levels to high(the opposite wouldn't be very good). It also offers IPsec integration.
OpenLDAP An server providing information via the popular LDAP protocol. Kind of tricky to get running but can then be interfaced with lots of other services. LDAP and Kerberos is a powerful combination and essentially the heart of Active Directory. Apache Directory Studio is a good tool for tinkering with a running LDAP server.
VMware Workstation 10 I thought I had a firm grip on virtualization technology. Xen 2 and Xen 3, VirtualBox, VMware Player, VMware vSphere Hypervisor, Solaris Zones etc. But VMware Workstation 10 showed me something new. Accelerated 3D graphics inside a virtual machine! I could play Homeworld Cataclysm more smoothly inside a Windows XP VM with VMware Workstation 10 than on Windows 7 itself. It is supposedly able to run other virtualization solutions inside it!
Kerberos It seems like Kerberos is the only Single-Sign-On solution going but does it well, albeit in an archaic way. If OAuth wants to get on the list of SSO solutions it can offer tie-ins to operating system logins, IMAP authentication and so on.
HAProxy Neat little program that can add SSL to arbitrary connections, split HTTP requests to different ports based on paths and other things. Useful for running both static HTTP and Node JS traffic through a single external port.
Restify Kind of like Express only no rendering. I let AngularJS handle the client end and restify does the backend work.
Fiddler proxy A proxy for debugging HTTP and even HTTPS traffic. Very useful for debugging HTTPS-only software.
Jenkins Build server for Java projects initially but now used for various continuous integration purposes. Kind of a pain. Not sure that sets it apart from other build servers...
Windows Server The standard for user administration(Active Directory), e-mail messaging(Exchange) and more for organizations of virtually any size. Not my preferred choice for hosting services accessible to the public. But I have come to like how I can write a module for IIS targeting it's integration with AD in C# without having to deal with how IIS and AD integrate. Apache+LDAP+Kerberos integration is murder by comparison and in absolute terms. So I think I could be happy in a Windows Server world. Kind of how I think I could be happy if large parts of my brain were destroyed and I was left counting clouds all day.
Let's Encrypt Automatic free SSL certificates. Soon unprotected HTTP transport will be a curiousity.