Skip Navigation

Michael Scheper

Software Engineer
View my profile on LinkedIn

Tools

This hastily thrown-together page shows some of the tools of the trade I use, and one or two that I've written recently.

Vim

I use Vim as an editor, and I use it for pretty much everything, including as a command interpreter. (It's easy, assuming you're using a Unix-like operating system: just create a file in your home directory called .inputrc and type set editing-mode vi into it. This will make things like Esc j work in Bash, PostgreSQL and Python's command interpreters, and more!) However, I'm not hardcare enough to use the Vĩmperator FireFox plugin.

Since I don't want to perpetuate any religious war, I'll state now that I don't think Vim is necessarily better than Emacs, or any other serious editor for that matter. I've just been using Vim for so long that it would take years to become as proficient with anything else, negating any alleged benefit. I do note, however, that a lot of my Emacs friends have switched to Vim in recent years.

Equally important as the editor itself are the plugins I use:

There are a couple more little ones, including self-made ones like autovariable, and my vimrc file has also evolved with a lot of shortcuts over the years. After I've installed Vim on a machine, I get up and running quickly by downloading and extracting this zip file, copying either .vimrc or _vimrc to my new home directory, and modifying just one line in it. More details are in the vimrc file itself (without the period or underscore).

Java Coding

Even though I do most of my coding using Vim, a good IDE can make refactoring and debugging easier. The two big ones, of course, are IntelliJ Idea and Eclipse, and I'm comfortable with both.

As you would expect, the first plug-ins I install are either IdeaVim or VIMPlugin, so I can keep using Vim keystrokes. IdeaVim provides better Vim emulation and IntelliJ generally has better support for quickly loading a file in the real Vim, so for this reason I prefer IntelliJ. But the slowness of any IDE, and the tendency for them to crash at the worst possible moment, makes me only use these when I need to.

A nice plug-in for Eclipse is Modelistic; I find it helpful for getting to know a new Java codebase.

Web Development

It's hardly news that FireBug has made web development a hundred times easier, and the Yahoo utility YSlow adds even more functionality. The Web Developer add-on compliments FireBug nicely.

Then there's Internet Explorer. No, this is not a recommendation, but an acknowledgement of the reality we software engineers have to live with. To make my reality easier, I use Multiple IE, which allows me test my web work on multiple versions of IE on one Windows box. That way, I'm at least more likely to find IE-related bugs myself, instead of waiting to hear about them from QA or an end user.

A good AJAX framework abstracts a lot of browser-specific JavaScript issues away, and I've come to feel quite at home with jQuery. I'm not really into the fancy-pants concatenations of functions, though; I find the more traditional line-at-a-time JavaScript style easier to read and maintain. And speaking of JavaScript maintainability, JSDoc allows me to compile JavaDocs from my JavaScript.

Python

I'm still pretty new to Python, but I use it for pretty much everything these days. It really lives up to its promise of more compact code, and there are so many libraries for it that writing anything is a breeze. It takes me less than half the time to write a Python script than a comparable bash script, and it even measures up against Java, a language I've had an in-depth knowledge of for years.

As an example, refer to this podcast receiver I recently wrote. (You'll need these utility classes.)