Saturday, August 18, 2007

Mandatory Reading

These are the blogs and articles that have shaped my thinking as a software engineer, and helped influence my professional values and attitudes. I think they should be compulsory reading for any neophyte hackers to get a solid grounding in the Tao of hacking...

MS Junkies will notice that this list is heavily biased towards all things *nix. this is not an accident and I don't apologise.

#1 - Joel on Software
the original. I was reading joel when i was still at uni. it took me a *long* time to get through his archive, but i finally did it, and it worth it. You should too. This gives you solid software design plus insight into some of the ways software companies (should) work, and treat their geeks.

#2 - Rands in Repose
ditto, but less on the engineering side, and more on the management side. lots of good stuff here that will serve you in good stead if you work for a bunch of soulless suits.

#3 - The Art of Unix Programming
Years before XP had a name, unix hackers were already doing it. may need to filter some of the rhetoric but.

#4 - The cathedral & the bazaar
ditto.

#5 - How to ask questions the smart way
this should actually be higher in the list. If you ever want to post a question on a forum or a mailing list, then you *need* to read this, in detail. then apply it. or be prepared to get STFW & RTFM'd.

#6 - How to become a Hacker
This is your pathway to technical development. I'm not talking about keeping up with maven, or spring, or GRails or the latest fad. I mean the solid things that will make you a fundamentally better programmer, regardless of your toolset. coming back to this after a few years I can recognise it's fundamental truth. you need to learn a few different languages, so that you can appreciate the essence of solving a problem abstracted from the details of your particular language or tool. At the very least you'll learn how to learn, which will help when Java & .Net get made obsolete by the Next Big Thing, and we all have to learn how to write code in FORTRAN 3000.
Interesting sidebar here, I read a while back that all modern programming languages were slowly evolving to become more like lisp. at the time I mocked this, but slowly I'm seeing it be more and more true. Compare Java to Ruby, then compare both to lisp, and the progression is obvious.

#7 - Positive Sharing
And after all that hardcore techo stuff, finally be happy & passionate about what you do, otherwise everything else is just chasing after the wind. The signal-to-noise on this one is a bit higher than the average, but if you start at the popular posts and work out, then you'll do well.



ps - Rootless Root and the Tao of Programming, it's just fun!

Development tools I'm currently using...

unlike the previous three lists, the status of these items is fragile and depends solely on the fact that at the moment they fill a niche, but they're not compelling. These are the tools that roll up the building blocks into something that I can use.

#1 - IntelliJ
Apparently it's the nicest IDE around, but it doesn't seem that smart to me. Good enough.

#2 - TOra - Toolkit for Oracle
Free Open-Source. GUI PL/SQL client for oracle. Extremely fast (written in C++), uses QT Library by Trolltech. Only shame is that it's still buggy in some area's (some instability, BLOB & error handling poor), otherwise very full-featured and *quick*! Unfortunately not actively maintained currently...

#3 - Oracle SQL Developer
When Tora runs out of horsepower, you can always trust SQL Developer to come through. It's often fast enough, but as it's written in Java it's a big memory hog, which I often prefer to avoid.

Firefox and Thunderbird extensions I can't live without...

this list isn't as big as my utils list, as FF2.0 & TB2.0 are pretty good out-of-the-box.

Firefox:

#0 - MR Tech disable XPI delay
one extension to rule them all!

#1 - Adblock plus
The web without ads, it's like a breath of fresh air...

#2 - Gmail notifier
the integration is nice, very unobtrusive.

#3 - Restart Firefox
"hmm, FF is over 300mb of ram, time for a re-start..."

#4 - Plain Text To Link
I got so sick of ctrl-c,ctrl-t,ctrl-v. this does it in 2 clicks.

#5 - LastTab
Firefox should work this way in the first place

#6 - DOM Inspector (default, but still...)

#7 - Web Developer Toolbar
Indispensible for hacking websites. However I'm being rapidly seduced by Firebug...


Thunderbird:
#1 - miniBird theme
oh yeah, test out your vision with this 5x5 icon set...;-p min to the max!

#2 - Display Mail User Agent Extension
hmmm, what mail client are you using?

#3 - English (au) dictionary
(sigh) I love the way americans assume everyone uses US english.

#4 - Signature switch
only use that crappy corporate signature when you *absolutely* have to!

Tools I can't live without...

I'm talking software here. The tools of the trade that I use everyday to make life easier for me to write code, administer servers & generally hack about. Note these aren't specifically dev tools, and in fact most of them aren't. The few that can be used that way are highly generic (textpad).

Having composed this list, I notice that the common theme among most of these tools is that most of the time they work so well I don't even notice that I'm using them. they just work. I'm not constantly stressing because they annoy me, they just do what i ask, then they get out of the way. Bright, patient design as rands would say...

Granted there's always a learning curve, and sometimes a bit of config'ing, but once that's done I don't have to think about it again, unless I want to change something. When things work well enough, you shouldn't even be aware of how well they work.

#1 - Firefox.
ok! I admit it! I can't live without Firefox!!! I tried (see opera post), but I keep coming back to some plugin I need or website that just won't work in opera, and I come back to FF. ok it's got some problems (=memory hog), but regular restarts and an extension diet can fix that. Firefox rules!

#2 - Thunderbird
I've tried Outlook, I've tried Lotus notes, I've tried Evolution, and nothing compares to TB. it just works. It's got a few rough edges, and the calender still sucks, but for what it's designed to do (read email). It's faster & simpler than anything else that can compete on features. TB rocks!

#3 - Launchy
Wow. what else can I say? Launchy is a breed apart, it's freed me from the start menu, and decreased the cost of context-switching. It's so good I actually paid for it!! (and this is FREE software!) and I regularly want to pay more for it, it's that good. Download it, use it, love it.

#4 - Process Explorer
Whenever some crappy app dies and goes unresponsive, or I need to see what's saoking all my resources, ProcExp is indispensible. I also use autoruns & Filemon, but not nearly so much. If ProcExp isn't running then I just don't feel safe. Need to kill-restart explorer? ProcExp is your friend. kudos to Mark Russinovich for being such a legend, and continuing to be legend despite being beamed aboard the Mother Ship.

#5 - BBLean
This is an Explorer Shell Replacement, and really in a category of it's own. I don't use it directly, but it allows me to fully distance myself from MS's cruddy & crufty shell as it completely replaces explorer.exe as your shell. this saves me from having to go through all the pain of explorer freezing out on me, and the painfully slow start menu. Now when I have to use the start menu (which i rarely have to use, thanks to Launchy!), it's blazingly fast, instead of painfully slow. the benefit of bblean is indirect, in that you never notice it saving you time, until you use a PC that still has the windows shell and you remember how painful it was.

#6 - Generic File manager
I can't recommend a specific tool here, there are so many and no really shine. However all of them aren't Windows Explorer the file manager, so they all get a big plus! They all have extra functionality lacking from WE (multiple panes, tabs etc), and aren't as prone to random freezing. They still use the windows components behind the scenes, so this is a marginal improvement. I'm currently using XPlorer2, and before that I was using Ultra Explorer.

#7 - Console CLI shell
the interface to CMD.exe suxx0rs. Console just makes it nice, I love that it's now easy to highlight select-copy/paste text, and resizing is just a breeze! plus tabs are nice...;-p

#8 - Textpad
though I'm being swayed by Notepad++, textpad is fast & just works. Ol' reliable. Also, being able to open 100MB log files without chugging out is a big plus!

#9 - 7zip
First winzip, then winRar, now 7zip. open source, clean, fast. nuff' said.

#10 - Keepass Password Safe
I need access to a lot of servers/databases/applications/web sites etc, keepass makes keeping all that info forever securely just a breeaze. No more lost passwords, no more security worries#1

#11 - TortoiseSVN
simple & easy to use SVN client. low impact.

#11a - Winmerge
the diff/merge tool par excellence. and open-source too. tortoise + winmerge is muy bueno!

#12 - Gadwin Printscreen
about a million times a day I need to grab a quick screeny of something, or measure the width of a html field. Printscreen is perfect for this. It replaces the standard windows functionality, so all I notice is that taking screenshots is a *lot* easier!

#13 - Sequoia View
"Where's all my disk space gone!?! oh, there it is..."

#14 - FoxIt PDF Reader
"hmm, lets open this tiny little 20k pdf.. oh no Acrobat Reader is loading every plugin known to man, it's gonna take a hour to start!". you can either fight Reader, or just ignore it. FoxIt is fast, and only loads the plugins you need, when you need them.

#15 - Unix Utils for windows
added to a directory in the PATH, this makes simple things even easier, and allows a consistent *nix-y feel to the CLI even on windoze...

#16 - UltraVNC
only the best implementation of VNC client/server that runs on the windows platform. much more reliable than TightVNC I've found.

#17 - Putty
The unsung hero of the network admin & DBA. Half the internet would stop without putty. Muchos Gracias Simon Tatham!

#18 - WinSCP
For a generic, user-friendly ftp/sftp/scp gui client that *just works*, winscp is the bomb. nuff said.