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!
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.
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.
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.
Amazingly, I’m not feeling very confused by this. Are you?