Tools of the Trade

Learning all this new software development stuff is all well and good, but at some point you actually have to develop something.  And developing a computer program of any size, like any engineering trade, requires some tools and some planning.

One of my main applications of what I’m learning is to a database that I maintain at work.  This is currently running on a Windows server with MS SQL as the database and MS IIS (Internet Information Service?) as the web server.

This is all well and good, but it’s not an environment I can easily and cheaply re-create for testing and development purposes, and some of my code is not portable between databases.  (I’ve made a good attempt at adding a database abstraction layer, but it’s not QUITE there).

So, the natural thing to do is to migrate to Unix, Apache and MySQL, which I can freely and easily deploy pretty much anywhere.  And that’s what I’ve been up to this week.

I LIKE Windows?

I do link Unix.  It’s a much better server OS than Windows, in my opinon.  But I’m also a user – even as a developer – and Windows IS much more user friendly.

For example, I’ve been using NotePad++ as my text editor, which has syntax-highlighting, auto-indentation, auto-completion of words, good handling of multiple files, and a whole host of other lovely things.

Moving to Unix means moving to Vi or EMACS.  Tools which are great but not simple to learn (do I HAVE to learn to use another tool to do this?!).

Don’t get me wrong, I like vi, in a massochistic sort of way, but not for writing a complex software project!

Keeping Track

I’m also vaguely aware that this sort of project would be good to have under version control (which I won’t explain here – ask if you want to know).

I used to use CVS in my old job and it was a great help.  If I’m setting up a development system, making significant code changes, and migrating to a new platform, then a version control system would be a great help.

Considering My Options

So I need some of the following:

  • a nice Unix text editor for my command line/terminal
  • a GUI for my Unix system (with a nice GUI text editor)
  • a version control system

Asking around, the text editor of choice with Unix boffins is…vi!  But I’m not happy with that.  vim has been suggested as it has syntax-highlighting, split screens, and stuff like that.  Maybe it’s a nice half-way house.

I’ve been playing with getting the X Windowing System to work.  There’s a free, open source X server called “X Ming” which does the job and works prett seamlessly over ssh tunnels, but I’ve found setting up the client side (which is actually on the server!) a bit difficult.  Too complicated.  And I’d probably only end up using xvim, which would probably only be a three-quarters-way house.

Sublime Subversion

Version control has been a boon though!  I quickly read the important bits of the Subversion book and  realised what I’d been missing.  My vague rememberance of CVS should have spurred me on sooner – this is REALLY important stuff!

In minutes (well, OK, hours, but not many) I had a SVN server accessible locally and over SVN and SSH protocols, with my production code on it and with all my development areas, in both Windows and Unix land, using checked-out, version-controlled copies.  Woo hoo!!  I was genuinely excitied – in a geeky sort of way.

Where now?

Well, I’m mostly happy with the set up.  I’ll probably miss my Windows editors for a while, but I’m generally content.

I have a Linux production server, running open-source tools, which I’ve nearly migrated to.  I have easy and safe access to the code from multiple locations.  I have a reasonably good text editor, with scope for GUI access in the future.  I can bring my code home to develop.  And I can easily and cheaply set up a test or development environment if I need to.

It’s a whole world better than the old Microsoft one!  And I’ve learned some good stuff along the way.

Now…the tools are in place…time to apply my new HTML, JavaScript, CSS, PHP, W3C DOM, Apache and MySQL skills to the task!

Amazingly, I’m not feeling very confused by this.  Are you?

[polldaddy poll=1264157]