Looking back over the last posts I realize that I haven’t been talking much about the software and and code that I have been using every day and some of it is really quite interesting.
Python. I use python a lot, it’s my preferred go to language to solve a lot of problems. It has great libraries, an awesome community and the language itself is compact and non verbose. We are using Django heavily in our solutions and its really enjoyable to work with, and I never feel that coding is a chore. Coupled with the fact that we can target Java servers with Jython, .Net with IronPython and have an amazing solution in PyPy for python running on Python I can see the love affair continue.
Eventlet, Gevent and Meinheld. Python networking libraries (actually Meinheld is a WSGI server) that work in an event’d manner, all are really easy to work with, all are really fast. With these libraries its really easy to build highly performant services that scale well on standard architecture. For instance to write a websocket / comet server, I wouldn’t hesitate to use Eventlet or Gevent. Tornado looks like another nice Python alternative but I have never been happy with its lib curl dependancy.
Celery. Asynchronous task queue/job queue written in Python for python that can use message servers such as RabbitMQ. Really easy to build strong reliable services spanning multiple machines.
Hudson. Continuous integration server that is just seamless, I use it for building packages (python and debian), running test frameworks and automatically building documentation which gets uploaded to Dropbox. Can’t recommend it strongly enough.
Linux KVM and Proxmox. Virtualisation has obviously been a part of most deployment and development cycles for some time now , but innovation is still being made. Having used VMWare, VMWare ESX, VirtualBox, Microsoft’s Hyper-V and others I have found what I believe to be the sweet point in Linux KVM – simple extensions to the Linux kernel which allows for running virtual machines on top of a normal linux platform. I have moved my personal servers, and our work servers to KVM as much as possible and an easy integrated way of doing this is to run ProxMox.
Memcached. Memory caching server that I use with my goto web services stack – Nginx – Supervisord – Meinheld – Django – Memcached – Postgres. Simply just works.
Selenium. Automated browser testing, this is a product that no matter how much I use it, I feel that I can use it more than I do. Have been using the RC version to do browser testing against Firefox and IE on Windows.
PostgreSQL. NoSQL is all very well and good, but for most serious projects I tend to turn to Postgres for its fully featured SQL compliance, its rock solid hosting of data and its well proven ability to scale.
RabbitMQ. RabbitMQ is a message queue that I tend to deploy with Python Celery to help perform offline processing of tasks.
Supervisord. Currently used for daemonising a setup.
Git. Distributed version control. I have tried most of the others, and before that been a long time user of SVN but Git installs on everything, has awesome support in GitHub, and I am really enjoying the extending merging and branching.
Redmine. For task tracking and bug fixing, this is the best tool that I have used. Migrated everything from trac to it with no problems, and have also migrated from Redmine backed by MySQL to PostgreSQL with no problems.
Glassfish. My goto Java Application Server. I hope to have more exposure to JBoss in the coming few months, but Glassfish has been good so far.
nginx. Can’t say enough good things about Nginx. Its fast, easy to configure, flexible, lightweight and hosts all our software at Cantemo with little problem.
HAProxy. When I need to load balance nginx or other services (including straight TCP/IP which nginx can’t load balance) I turn to HAProxy.
In fact there are many things that I have left out that I am using everyday but these are some of the technologies, software and libraries that have been making my life easier and the systems that I have built more interesting for the past 18 months or so. I really ought to do a write up on each of them.