PERSONAL CODING BACKGROUND
Coding
As well as writing PERL, JavaScript, JSP, PHP, ASP (VBScript and JScript), XML & shell script, I have also developed applications and applets in Java - for desktop applications and for smartcards and PDA applications. I have also programmed sporadically in C, C++ and C-shell, on UNIX operating systems, since the start of the 1990's, (mainly using cc and gcc). I am also now using Java for some numerical modelling software I have been developing for astrophysics, quantum mechanics and rocket science (previously, I was using C++, but I infinitely prefer Java). I also speak some SQL (on Oracle, MySQL and SQL Server).
Perl
Perl is really my main language of choice though. There's little that can't be done with Perl, and although somewhat arcane at times, it's rarely that you don't find a Perl module on CPAN that's been written to do exactly what you want. Using Perl with modules such as CGI and DBI is a dream - DBI especially, makes talking to databases such as Oracle or MySQL a breeze. I'd be the first to admit though, that I'm no Perl guru (much though I would like to be) - my regular expressions are just not creative enough to start with! My main background with Perl is in using Perl with web applications with Perl modules such as DBI and CGI. I'm currently undertaking the following Perl code projects:
- Developing a Perl GIS application to read in GPS strings from a GPS unit connected to an RS-232 port, and then plot the GPS position data on screen on a map in real time using Perl and Tk, and to overlay various layers of spatial information - a clear demonstration that it can be used for a lot more than just CGI/Internet programming.
- Developing a Perl application to apply Kalman filtering to a number of empirical datasets.
- Developing a Perl application to communicate with a data logger via the RS-232 port, and to parse the data from the data logger.
If you want a look at some cool Perl code, a good place to start is The London Perl Mongers
I use Perl on both Linux (Red Hat 5 to 7, with the 2.2 Kernel), and the ActiveState port to Windows (Windows 2000 and Windows 98). On both the GNU Linux and Windows versions, I use Perl 5.6, although I'll probably move to 5.8 at some point, and eventually, Perl 6 (a much anticipated event). Yes, I use strict and the -w flag, as well as trying to document my code in POD. In fact I tend towards the viewpoint that anyone who puts out Perl code with lots of warning messages being displayed, or without internal documentation, should be shot! or the managers who force developers to follow these practices should be shot!
ASP (Active Server Pages)
Professionally, I've used ASP a fair bit too (Both using VBScript and JScript). ASP's really nice, it's straightforward (a heck of a lot more straightforward than Perl), and working with ADO is really useful from a speed of development point of view, but it's biggest downpoint is that it can be a pain to debug compared to Perl. With Perl you're much closer to the metal so to speak, whereas ASP is abstracted quite a bit.
C and C++
My C and C++ are pretty rusty. I only ever really use C now for interfacing with hardware via the RS-232 port. Real low level stuff. I used to use it for some really quite involved code for space missions, developing various algorithms to scan images of the surface of planets (Earth and Mars mainly) and similar - this was interesting. It involved some unusual experiences such as sitting in a computer lab in Russia with a bunch of Russian space scientists, not being able to speak to each other in English or Russian, but being able to communicate in a computing common language - C! More recently, I've had to dust off my C++ for an open source application I'm working on using KDE on GNU Linux however.
Shell
Where I've used Shell scripts, I've tended to use C-Shell. I have used Bourne Shell and Korn Shell for some scripts interfacing to an Oracle database, but I replaced those with Perl at the first opportunity because Perl is so much more powerful. Likewise for the likes of sed and awk/gawk/nawk I tend to use Perl for any development that would ordinarily use shell scripts. It's very rare you don't get Perl installed on a Unix or GNU Linux box alongside shell, so I've gravitated towards Perl.
Unix / GNU Linux
I see Unix as just a tool, as I do GNU Linux. It's just the robust OS that I write my Perl, C and Java code on and where I configure Apache. When I used to have my SysAdmin hat on I invariably used Perl as much as possible for maintenance rather than shell. I wouldn't say I'm ever going to be a UNIX guru, more a case of I sort of know my way around UNIX (hopefully). I've used a fair few flavours of Unix, from AIX, through HP/UX, ULTRIX, Solaris, BSD and GNU Linux.
Databases
Database wise, I've used everything from dBase in the 1980's through Access and FoxPro to Oracle, MySQL and SQL Server. The use of SQL makes moving between modern Relational databases fairly painless, so I just take databases as they come. The use of the DBI.pm Perl module also makes database use through Perl mostly a straightforward process, and ADO with ASP is a similarly relatively painless process. I tend to use SQL in my main code, with maybe some triggers, or small stored procedures. I tend not to write enormous stored procedures (in the case of Oracle and SQL Server), and through circumstance, have found myself more often than not building simple databases from the command line, rather than through the use of TOAD or phpMyAdmin.
Development
I've set up an office, which has become referred to as "The Batcave" mainly due to the quantity of kit filling it. When working from the Batcave, I use both Sun Workstations and intel machines. Generally, my development tools have been:
Language |
Development Tool |
Platform |
Operating System |
Java | Sun Java Development kit | Sun | Solaris |
Sun Java Development kit | Intel | Windows |
Sun Java Development kit | Apple | Macintosh |
Symantec Visual Cafe | Intel | Windows |
IBM Visual Age | Intel | Windows |
Tcl/Tk | None, hand hacked in vi | Sun | Solaris |
None, hand hacked in notepad | Intel | Windows |
PERL | None, hand hacked in vi | Sun | Solaris |
None, hand hacked in vi and gnotepad | Intel | GNU Linux |
None, hand hacked in notepad | Intel | Windows |
ASP | Microsoft Visual Interdev | Intel | Windows |
Notepad | Intel | Windows |
C/C++ | cc / gcc / g++ | Sun | Solaris |
| Intel | GNU Linux |
Borland C++ | Intel | Windows |
PIC Assembler | | Intel | DOS |
| Intel | GNU Linux |
One day, I may even write a GNU Linux device driver. I just keep getting side tracked with rockets, electronics and just about anything that has electrons flowing through it.