I’m really starting to get addicted to Google Chrome’s ability to auto-resize it’s windows when dragged and dropped into the right spots. It’s a feature of some unix window managers that I’ve rarely used, that’s starting to make me wish it was built into Windows XP, instead of being a trick of the Chromium trade 8=).

At long last

My forum account on www.sasclan.org is finally ready op! It was unsuspended a few days ago, once WIZ completed the usual procedures. Kicking the bigger system into obedience, +1 for [SAS] admin power. Last time, I had to respond to a chit chat post via private e-mail.

One thing that I do not miss about being in [SAS], is having to deal with the ‘magic’ behind it, any more than it takes to make a forum post. Although I know my way around blindfolded in spots… I ain’t never gonna miss that code base.

SWAT 4 at it’s finest

When you creep up behind a suspect and punch him in the back of the head.
Then you suddenly bounce off the floor like you’ve been hit by a grand piano right in the kisser, because he just shot out his backside ;).

What exactly, ‘is’ my development environment?

I reckon this is something rather confusing these days, in most cases among younger folks, it will likely mean an Integrated Development Environment. To me, it just means the environment in which one develops stuff ;).

Being a lower level polyglot in terms of languages and tools, I generally keep a ‘pallet’ associated with each of my main languages, keeping things quite simple to work with:

  • Build Tools:
    • Some viable form of Make is required, generally I’ll use local brew if an extension is needed. I prefer GNU Make over BSD PMake, as I find it more reliably cross-platofrom.
    • CMake, while often little more than a poorly strung together bother, many projects now use CMake based build systems. It is actually a good tool but I don’t favour it for use outside of a single OS family.
    • SCons: powerful and effective, but often irksome to get a portable build. It’s usually worth having available.
    • Ant: you never know when you’re gonna need it.
    • Local brew of IDE and their background stuff, for example Visiual Studio for the vcbuild/msbuild modules and/or Code::Blocks. If I had a Mac, I’d likely have XCode handy.
  • Documentation Tools
    • Unix: troff/nroff and the usual macro packages. I actually like it.
    • DocBook and XML/XSLT processing utilities. LibXSLT comes in handy.
    • ReSTructured text and company
    • Any local language related tools (e.g. for Java, Perl, Python, and C#)
    • Doxygen: a multi-lingual documentation generator.
    • Exuberant CTags: improved and vastly multi-lingual upgrade over ctags.
    • TeX and LaTeX setups. I like TeXLive.
  • Source Code Management / Version Control Systems
    • Git — must have!
    • Anything I need to be handy with:
      • CVS
      • Subversion/SVN
      • Bazaar/BZR
      • Mercurial/HG
  • C/C++
    • I generally setup and maintain several compilers, multiple versions being welcomed. Generally I try to hang onto a member of the GCC 3 and 4 branches, and a fairly recent version of Microsoft Visual C++. Under unix-like and Windows systems respectively, I also tend to carry about a copy of PCC and Watcom.
  • Java
    • A suitable JDK, or a complete software development kit where appropriate.
    • The GNU Compiler for Java can be useful.
  • C#
    • Mono and preferably the full stack of technology.
    • Under Windows: several versions of the .NET framework and at least a workable version of Microsoft Visual C#.
  • Python
    • A copy of CPython, preferably both modern versions of 2.x and 3.x releases.
    • The usual parts of CPython that some distrios strip out, like SQLite3 or Tk bindings.
    • Another implementation for testing (e.g. IronPython) is appreciable.
  • Perl
    • A standard perl distribution, preferably the current major version or the one before it.
    • Common perl modules one is actually likely to use someday.
  • Lisp
    • CLISP for general use, i.e. common lisp
    • Armed Bear Common Lisp (ABCL) in case it eases deployment issues
    • GNU Guile: my normal way to use scheme.
    • Bigloo: a scheme compiler that’s worth poking around
    • Some other readily available Scheme implementation available, preferably one that is at least moderately R5RS compliant
  • PHP
    • Fairly recent version of PHP setup with
      • Command line interp.
      • Suitable Apache modules
      • The CGI/FastCGI friendly thingy
  • Ruby
    • Current local-main line version.
    • Rake build tool.
    • A collection of handy modules
  • UNIX shell scripting
    • Something fairly portable, ash/dash based is nice.
    • GNU BASH.
    • Real and public domain versions of the Korn Shell.
    • ZSH, my favourite.
  • Go
    • Standard distribution compiled from source.
GUI and Console versions of Vi IMproved being a very obvious requirement ;). I also tend to keep versions of Emacs, some flavour of MicroEMACS, and SciTE available in a pinch.  I like having ed available.
Generally some form of webserver, be it a quick tester (ala Python) or dedicated (I like nginx and Apache), is usually required: plus a decent web browser with javascript support.
Profiling, code generation, analysis, and debugging tools are almost universally welcome. I in particular like to keep Valgrind and GDB handy for a rainy day.
Like wise I prefer having certain libraries fully integrated into that stack, i.e. where appropriate having interfaces the common GNU/Gnome libraries (GTK+/cie), Qt3 and Qt4 libraries, bindings for SQLite3 and a major player (MySQL, MSSQL, etc), OpenGL, and so on and so forth. I tend to leverage both languages and tools whenever possible.
Someday I’ll likely incorporate Lua, and dialects of Forth and ML into the mixture. Like wise I prefer a reasonably NAWK friendly version of AWK to be available. I also have interests in picking up Prolog, Haskell, Erlang, Ada, and a few lesser known languages, but just don’t have the time to screw with such things a lot these days :'(. 
Simply put, where I go, a whole freaking lot of development tools go with me!

A fact of real life

The only opinion among those on earth, that truly matters, is your own.
Anyone that matters, can try to understand or just agree to disagree and be at peace.
If anyone matters to you, you will do like wise when necessary.
For the rest: they can stand aside or they can be left behind.

Fedora Vs Debian Vs Slackware

Now  having less need of maintaining a Windows XP install, last night I began more thorough computations about setting up a GNU/Linux distribution on my desktop. I would certainly like to see how the SWAT 4 support has come since my last outing, and this time I intend to use regular WINE.

As always, the real question is which distribution to use? Arguably the least trouble would be to setup Ubuntu 10.04, but I’m more familiar with Debian and Slack’ based systems as it is. This time, I was thinking about going with Fedora: I’m not fond of Red Hat Linux and it’s modern relations, but it would be a fresh change.

The main thing that concerns me with Fedora, is the stability and upgrade path, mostly the amount of time needed to abuse things. Ubuntu is fairly painless, at least when you run Long Term Support (LTS) releases on your stable systems. My only gripe with Debian, being it can be a chore to get reasonably up to date debs, and sometimes (for example with Pidgin) it can be preferable to be ready op on that. Although I’ve no big qualms about building from source, when the developers actually knew wtf they were doing about getting it building in the first place.

I’m more of the OpenBSD type, but Linux as a “For the masses” system, is much easier to live with for me, then Windows XP. With 350~360 gigs of disk space free, running full development environments in twins won’t make a dent either.