Lindi
A moment of inspiration hit just after I finished up with Mylio and had some time to act on it. I’ve had this idea brewing in the back of my head for three or four years now, and the whole thing came flying out in a nearly non-stop rush. I’m sure I’ll be tweaking it for months to come but it feels pretty good to have built a usable tool in just a couple of weeks.
I’ve posted the code on github:
Lindi, an editor shell for software development
I smashed a directory browser, a pico-inspired text editor, and a simple shell console together inside a terminal-mode window manager to create a kind of lightweight IDE where the current working directory plays the role of the project file.
The immediate problem was that I want to work on a project which has to be compiled on a Mac using Xcode, but I don’t want to be stuck at my desk all the time, and my laptop is a Thinkpad running Ubuntu. I considered VNC, but it’s hilariously insecure, tunneling it over SSL looks like a nuisance, and anyway Xcode feels cramped on the Thinkpad’s 1024×768 screen. In a classic fit of programmer laziness I decided that spending a couple of weeks building a new tool was the easiest solution.
Result: I can ssh into my Mac, run Lindi, and drive everything from a single xterm. Yay!
Lindi is unapologetically idiosyncratic and not at all configurable. Tabs are 4 columns wide, text files are 80, and control-C means “copy”, not “cancel”. The world is awash in editors, and everyone has their favorite; I just thought it’d be nice to build my own, tailored to the way I like to work.
It’s up on github now, though, and I’ll probably post a link on reddit or hackernews once I’ve knocked some more of the rough edges off; I’m curious whether anyone else happens to share my particular taste.
I’d call it maybe 75% baked, but it has enough that I’ve been using it to edit its own code. Long term plans: make the directory browser git/svn aware, beef up the console until it can run lldb/gdb, add syntax highlighting, use syntax highlighting to do project-wide identifier lookup.