MODELLING AND SIMULATION, WEB ENGINEERING, USER INTERFACES
May 20th, 2009

Primitive Tooling

I don’t know that I’m such a big fan of IDE’s. They seem to run counter to the Unix Philosophy, which is to have a large number of small tools that do one specific thing, and do it very well. These small tools are all bound together through dead simple, absolutely standard and rock-solid message-passing interfaces (stdin, stdout, stderr; all parameters are Strings). A big IDE that attempts to do everything and the kitchen sink often just feels like the wrong level at which to be working. Certainly, for my current project, being strongly bound to Eclipse for development has so far been counterproductive. This is because the GWT-Eclipse tooling is not yet matured… which is to say that the GWT module concept is really very different from the basic Java package concept, and this is a gap that the current tooling does not yet bridge. The result, for me at least, has been a great deal of confusion. Then again, I’m attempting to use GWT for things for which it was never intended to be used ;)

In any case, it has felt very good to ditch the IDE for a while and return to my humble yet powerful development tools: GNU Screen, Vim, Bash and Ant. I won’t describe here what these tools are or how to use them; this is covered very well in other places. But I will post a nice screenshot of my current desktop, which I feel is very close to complete User Interface zen:

One component currently missing from my toolbox is a good, preferably console-based file managers. I don’t really have very strong preferences with regard to file managers, but I really should, because there are many times when I could really use some powerful features. I just haven’t quite figured out what those are yet. Vi keybindings are a major plus, though. That rules out the famous midnight commander, unfortunately, as its keybindings are not configurable. Really, it only leaves two options: vifm, and a Vim plugin called VimExplorer. vifm was quite nice, a nice solid little file manager with vi-like keybindings. Unfortunately, it had some trouble installing on Ubuntu Hardy, and it was just different enough to what I was used to with a proper Vim instance to be annoying. That left me VimExplorer. I was a bit wary of this, because it hadn’t been updated since 2007, and the last update was to fix a critical bug that could cause data loss. But I installed it, tried it out, and found it to be quite good. It gives you a small file manager instance that lives right inside of vim. All of your vim skills then can be applied to managing files, including: regular expression search, macros, manipulating vim windows and buffers, and using “!” to trigger shell scripts. There’s something really great about being about to just say “yy” and then “p” to copy and paste a file. Same for move and delete.

Unfortunately, I still feel like this tool is lacking. 90% of what I do when developing is in done in just a few files and directories. What I want is to be able to just type the name of a file on my filesystem (e.g. “Accessibility.gwt.xml”), and immediately have an editor up for that file. The system should behave intelligently when there are naming collisions. I believe that GNOME-Do might actually be able to do this, and I should look into that. For the most part though, I think most of this could be accomplished by just tagging certain files or directories as favorites, and maintaining a simple hash to map short variable names to long paths. In any case, I’m continuing to iterate on this component of my set of simple tools.

  • Joris

    It does not sound that you prefer IDE above editors. It sounds more that IDE's are missing some strong editor features VIM has and some parts of an IDE are not 100% completed.
    Basically, you made your own IDE.

    I still the best of both worlds. For a big project a use a good IDE that has been adapted to my needs. Eclipse with some proper plug-ins. So that my focus is only in writing code and the others (like debugging, version control, quality tools) is done with one click.
    So that I can stay in one screen all the time.

    Small applications, I will always use the comfort of a good editor like VIM.

  • adesh

    Can you teach me how to make the eclipse transluscent like yours

    I too use eclipse with ubuntu .

  • admin

    Hi,
    That’s not Eclipse in the screenshot, but Vim running inside of GNU Screen, inside a translucent gnome-terminal.

  • http://tommymedia.ca tom

    After years of using Dreamweaver, Transmit and sometimes bbEdit, I thought Aptana was total crap. I gave it an honest months try. And it is bloated. Everybody on stack overflow reccomended it which generally that community gives good advice, but I prefer a Zen environment for coding in. I don’t think Dreamweaver is the best tool either, though Transmit seems to be the best FTP program I have used and it is so simple.

    Things as simple as no wordwrap in Aptana 3.0 or the file permissions getting screwed up everytime I saved a file were enough to make me move Aptana to the trash and go back to a simpler method. Also their support is basically like “Word wrap is not a priority”.

    Such simple features to me are important.

  • admin

    Hi Tom,

    Transmit looks like a nice application. In GNU/Linux world, I typically use network-transparent filesystems which make use of the FUSE library, e.g. sshfs for ssh, ftpfs for ftp. These tools allow one to mount a remote filesystem via a specific protocal to a local directory. This is quite versatile – for example, I’ve been able to stream music using sshfs and mplayer (some buffering is required, though). Unfortunately, I haven’t found a good Webdav client for GNU/Linux, so there’s some work to be done there.

    I’m still using Vim as my primary editor, and I’ve added some new tooling for developing js:

    http://www.javascriptlint.com/
    http://www.vim.org/scripts/script.php?script_id=2578

    This is lightweight, unobtrusive, complements my workflow, and is overall great. Plugins to integrate JavaScript Lint exist for many different environments, so this might be something to investigate for Dreamweaver/bbedit.

    I’ve also started using Git from the command line for version control and mirroring. You can create a local Git repository, and then set up a mirror over ssh – you then push only the changes you made since last commit:

    https://gist.github.com/569530

    I use this for backing up projects I haven’t released, but I suspect it might also be useful for deploying websites.

This work is licensed under GPL - 2009 | Powered by Wordpress using the theme aav1