08 January, 2012

Theorising vs. Doing

Over the past many years I've found myself slowly moving (in my personal projects) from the realm of actually implementing code about which I've been curious to spending my overwhelming majority of my free time to theorising about various concepts and/or interests, primarily in the field of human language parsing, simulation and simplification of generic real-world object modelling.  Several of these have been mentioned and explored in previous posts over the last 7 years.  

I believe a great reason for this change in focus is partially age, and primarily due to the extent that my days are focused on building the next great startup application.  We recently (as of the New Year) pushed the past eleven months worth of work into existence as our new primary (Python/Django) product replacing the previous multiple iterations of our legacy (Java) product.  The focus and scope of the project limited my ability to go off on tangents wherein I could code my personal projects freely.  This was by no legal hand binding, it was simply a matter of wanting to focus my writing to building our product to the level it needs to be, to the high standards we require (and rightfully so).  

This leave one (me, namely) with little actual time to thunk down in front of my primary workstation to commit theory to codebase, hence I've found myself working it out on handheld whiteboards, sketchpads,  napkins, chalk on the ground whilst playing with my daughter or even simply working these theories out in my head.  While I would like in many cases to put my thoughts into actual runnable logic, I've found that the exercise of stepping through theoretical code in my mind has kept me sharper regarding my thought processes.  True, I cannot share this as easily with friends afar, but given that many of my personal friends are also senior level engineers, discussing (when we do) casually my theories and ideas, they get the gist quickly.  

The point I'm trying to get across here is that while today is perceived as one wherein a bunch of 20 year olds either in or fresh-out-of college spend an obscene amount of hours in incubators or at startups killing themselves churning out ridiculous amounts of code, there is most definitely no slow down in the thinking processes of the more senior of us out there.  We just don't find a necessity it raw churning out of code as it is the concepts that drive the field and aid in future innovation.  Let those who wish to "do" continue to run their path, but lets not overlook the value of those who've moved their focus (whether by situation or by intention) to the more abstract realm of theory as the two are inextricably bound.  We need ensure that these two distinct groups of people are in contact with one another because it will ultimately lead to the newer advances, bettering our field for all involved.

24 March, 2011

New environments (mentally) as it were... (a.k.a. something old, something new)

Since my last update made a little over a month and a half ago, much has changed.  I've accepted a position as Lead Software Engineer for Yorn, LLC located in Conshohocken, PA.  I haven't abandoned my prior position with the publishing house in NYC, merely time-shifted those hours elsewhere.  Taking this new venture (on top of my previous work, plus the other tech-startup of which I'm a co-founder, Ecquire has proven to be a necessity for my sanity.

Working primarily for the past many years as the sole Software Engineer for a half dozen magazines in a Django/Python/Javascript/CSS/HTML/FreeBSD Unix environment whilst also wearing the SysAdmin hat has been...  draining.  This wasn't due to having nothing to do, this was more to do with having very little room for innovation as the end product wasn't the new SaaS website or Outlook plugin, it was simply repetition with the only real variances being that as dictated by wet-behind the ears designers and graphic artists whose concerns about a given site was more about look than UX.  Don't get me wrong, some of the designs have been gorgeous, but not without the pendantic whining common with individuals who only knowing Adobe Photoshop aren't happy when you explain to them that there is a different methodology at work in producing like-layouts im a web framework.

Either way, back on topic.  I feel for the first time in quite a while that not only am I solving real problems that pertain to a large scale of individuals and companies (as opposed to readership by fashion and/or tattooing enthusiasts) but I am finally in a position in which I have a cohort in crime, a partner, a colleague. Best of all, he's brilliant.  A proper individual for the field, something when I've been trying to find for ages.  A PhD in computer science and a quarter century in the field along with all of the traditionally odd hobbies and sense of humour found more commonly in those with very intellectual professions.  Even though we've only met face to face on three occasions, we've shared many phone calls and Skype sessions whilst working out our designs and product development and it has simply been a breath of fresh air for me.  I have someone off of whom I can bounce complex ideas knowing full well that I'm understood, as well as presenting me the opportunity to expand my own learning horizons.

Excitement stirs ones involvement in a given project and considering that this is what has (and is) happening to me, it is paying off in not only a clearer mind and what I believe are more robust ideas emminating from my thoughts but it has reduced my stress allowing me to be more productive all around whether in the publishing work, my own startup and more importantly in my family life.  It all comes back to ensuring that whatever one does, they need to sometimes step of a comfort zone in pursuit of that which provides incentive and drive in ones given interests and/or profession(s).  I was too conservative earlier on in my professional career and I believe I would've benefited greatly had I stepped out of my cocoon years earlier rather than (as most introverted engineering types do) not think highly enough of myself to be worth more than an abysmal income and working environments to which I was subjected for over seven years.

Times have changed and the future is looking brighter and brighter.  Ecquire & Yorn have paved the way to a better future.  I stepped past my initial nervous/worried leanings and jumped into the world of proper tech startups finding that the grass truly has shown to indeed be greener on the other side.  Now, onto another exciting and challenging day of practising my craft.

03 February, 2011

2011 and my prospects...

    Having recently entered the new year, I find it fitting to share some recent happenings and thoughts on how they might apply to not only my situation but those of others with a penchant for software engineering and/or administrative careers.

    The past year has been one of making connections.  I have met some great people including several combinations of Angel Investors, Venture Capitalists, Software Engineers and Computer Scientists.   My experiences with our startup, Ecquire (http://www.ecquire.com) has proven quite enlightening as well as fun.  In fact it was through my co-founders I was introduced to so many others in the field, such as Rick Rasansky and Trip Denton of Yorn (yorn.com), and Gabriel Weinberg of the amazing search engine DuckDuckGo (duckduckgo.com) which protects our privacy.

    What I have come to realise is that while I have been working with software behind the scenes of a considerable number of websites on their various frameworks, the technology doesn't challenge me and has proven to be quite repetitive.  There are still some challenges, but there is far more aesthetic issues than technical ingenuity involved.   The issue of technical seclusion is also an issue at hand.  With my primary client for whom I have a special relationship due to past employment in the earlier half of the previous decade, there is a loneliness on two levels.  

    The first being that I am not only the only Software Engineer, but the only technical person period.  I wear many hats including CTO and Systems admin.  I handle all technical contracts for servers and what not, at least related to any only presence.  I'm more than capable of handling these roles though it can be rather isolated and not because I'm physically in a different location.

    Which leads me to the second reason, that being one of no technical peers with whom I can discuss, debate and/or share views on projects.  The owner of the various entities is more understand on technical issues that many with whom I've dealt over the years but there are still limitations of understanding.  Again, I do highly commend him for intelligence, trust and understanding though there are limits of which no one other than a peer would quite grasp simply because it is something that needs to be experienced for commiserating to be legitimate. 

    As a means of striving for more in not only personal life, but my professional one as the combination of both affect my happiness and general stress levels, I've been partaking a re-design/porting job with a technical group which is more up my alley.  I am still delivering the service and quality to which I have committed myself with my primary clientele, let that be stated for the record.  It is just that I need this to keep my mind from atrophying.  I need to be challenged in my field, not to mention be given the opportunity to innovate without having to wear every hat and focus so much on outward aesthetics.  I like  beautiful design and beautiful code, much so less visuals as that is truly the realm of designers. 

    Where I'm coming to for the sake of others is the following:  Push to keep yourself challenged and happy in your field.  For a long time we allow ourselves (especially as we have more people depending upon us in our personal lives such as our families) to become complacent with the idea of security and daily consistencies in our work.  The problem with this is that we start to stress over the rut in which we find ourselves.  We internalise the urge to snap at others when for the millionth time (exaggeration of course) we painfully banal question or task is asked of us.  Though inside, we die just a little bit more each time, in spirit at least.

    The solution (or at least one solution) is to not let fear or complacency hold a firm grasp on us.  It is one thing to allow for short term bursts of such ideals for the sake of a greater good but to allow it to trap us long term in what is almost definitely a downward spiral is unbecoming of our abilities and intelligences both as individuals and collectively as the technical backbone of our industries respectively. Push to find new challenges and if they are drying up as a lake in a newfound desert, look elsewhere over the horizon as our abilities only go so far when our outlook and prospects of change seemingly whither into nothingness which ultimately leave us a shell of our former glorious selves. 

    I'm not taking this new year lying down.  I'm feeling reinvigorated with new purpose, prospects and challenges not only for the betterment of my familial situation but for my peace of mind now and into the foreseeable future.  I wish the same to all of you whom finding yourself in a similar situation might find my words useful and/or inspirational.

27 September, 2010

Romanticisation, Research & Reality

As I've now hit that point in my mid-late 30's, I've had some internal conflicts recently see resolution.  This won't be one my traditionally long winded/verbose entries, though it won't be short enough for a micro-blog post either but here it goes...

Over roughly the past two decades I've been torn by issue of not attending university, especially one such as MIT, Stanford, Virginia Tech or UC Berkeley in pursuit of a Masters/PhD in computer science.  I feel that I missed out on the social aspect (aside from the excellent environment for furthering myself in a group setting in my field of interest/passion/expertise.   This is simply a recurring romanticised view I have over my regret.  I only envision the good parts, not the tedious drawn out study periods, the painfully boring pre-requisite programs/classes and lecture in mundane subjects solely to satisfy the higher education machine.  I am an autodidact and a fairly effective one at that.  University would have most likely quickly become the bane of my existence.  I experimented with higher education and within the first semester found the pace horribly slow and in the case of required classes, a horrible waste of my time and money (I paid the tuition with my own cold hard cash).   I opted to leave before wasting any additional money and simply continue to do what I had always done, educate myself for a variety or sources, as well as getting my hands dirty in my field of interest (amongst others for well-roundedness).

This brings me to one of the reasons which fed the romanticised ideal as prescribed in the previous paragraph(s); my research in the field of immersive virtual environments.  I have spent a considerable amount of time since my childhood in the areas of researching virtual environment simulations (e.g. simulations of real-world objects and scenarios).  This could entail human interaction with every day objects to be used for gaming or habit studies or to simulate atoms at the molecular level or even the macroscopic planets, interstellar bodies and galaxies in our and other places of the universe.  This is the kind of research which would have either lent itself towards achievement of my PhD or conversely, the focus of my post-doctoral research under a grant.

Finally, the reality (hint: it isn't all that bad).  Working in an academic environment in professorial/research dual/split roles would've been a wonderful way to go, though it wouldn't allow me the flexibility I currently have in terms of working from my home whilst raising a toddler, and being home for my elementary school aged child as well.  Do I get funding to pay for my personal pursuit/continuance researching simulations and their many facets?  No.  Do I have a surplus of time to allow me to pursue said interests after my family and work related endeavours are satisfied?  Not much at this point in time.  Do I feel that the overall balance of what could have been versus what truly is and what still may come my way is reasonable, fair and not worth feelings of regret?  Yes.  I'm rather happy with where I am as a Software Engineer for the past 15+ years and while I'd still love grant money to further fund my research, I can't say that I don't  enjoy some of the daily challenges of my already existing present-time workload.

Just because we might find ourselves in a situation that isn't exactly as we'd initially thought we would want doesn't mean that there aren't equivalent outcomes that still satisfy our initial hopes and aspirations.  I suggest that those of you who have dealt with the aforementioned conundrum, take a good long look at how you might still achieve the equivalent that fits best into your existing life plan and stop worrying so much about such exactness in realisation of ones dreams, otherwise they might never materialise in any recognisable form.

13 August, 2010

The Usefulness & Addictive Nature of Multiple Displays

It seems to be a divisive issue when dealing with developers, engineers and programmers alike... The usefulness or annoyance of multiple displays.  Recently having upgraded to my fifth display, I felt it was about time that I weigh in on the issue/share my opinions.

Five displays : One 1920x1080, Two 1920x1200, One 1280x1024 and One 480x800 :: 8.4 Mega Pixels in All
Back in 2001 at an interview with Health Market Science in Conshohocken, PA (now in King of Prussia, PA I believe), I had witnessed a key benefit of new up and coming startups for their developers...  multiple displays for each workstation/desktop.  Flash forward a few more years and one Mac Book Pro later and I find that ever company at which I would work, I would attach a secondary display so as to provide more desktop real estate.  Whether this was to provide a shell or two in which to run emacs while accessing a db frontend or browser preview window, it proved beneficial in terms of productivity with less switching between screens, windows and what not.

Ever since my first exposure to such setups (which were astronomical in price to setup back in the 90's and the beginning of the newest millennium), I was rather enamoured by them.  Now in 2010 I find myself working not on laptops, but full blown 64 bit Unix workstations.  A major benefit of such setups is the ability to run a considerable number of graphic cards and their associated displays.  Some wonder what could I possibly have running that dictates so many displays.

I personally like to keep a web browser open at all times so using the picture above, I will explain as best as possible.  So, as I was stating in the previous line, the left most display is running a full height copy of Google Chrome, flanked by three separate terminal windows running a mix of local and remote shells on  various servers.  The middle large display is running my current favourite IDE for python development in fullscreen (in this case, NetBeans 6.8).  The right hand most screen is used for additional remote shells used more so for large rsync'ing and process monitoring.  The upper left screen (a great displaylink/USB powered 480x800 (or 800x480) from Mimo) is used for Skype & Adium (and both are pinned to all spaces/virtual desktops due to content), and the upper rightmost monitor is a free for all to display whatever is needed in addition to all of the aforementioned items (pdf viewing, techtalk viewing, the occasional movie, db schemas or gui, etc.).

The biggest issue I currently have with the setup is physical layout.  A table roughly 144 cm (60 in) wide can only handle three widescreen displays (between 23" & 24" diagonally) when in a concave configuration.  Having to position the additional displays above the lower displays does cause the occasional confusion regarding pointer location.  A better layout would be an array of identical displays, preferably with VESA mounts in a 5 wide portrait layout or a two rows of three in landscape layout.

I highly recommend that others who haven't had the opportunity to work in multiple display setups to try it out as soon as possible.  Those simple keyboard shortcuts used to swap from window to window and/or virtual desktop to other virtual desktop do take up time and can interrupt one's flow.  Is it really worth it when displays are so cheap these days?

Caveat emptor:  The use of multiple displays causes varying ranges of discomfort when penned/cornered/shackled into a single screen machine, not to mention there is desire to acquire more screens after getting acclimated to the first addition, second addition, etc.

Till next time...

16 April, 2010

The Romanticism of Internet Startups. My experiences, part I.

I wasn't sure what drove me to this point, that of writing about startups (of all things).  I believe it has much to do with the recent launch of the newest startup of which I am a founder as well as the Software Engineer behind the technology in said venture, Ecquire.  In the past months during which the project has progressed to our recent launch at the end of March, my own fascination with startups and my own experience in dealing with them came back into focus.

Back during the dot com boom in 2000, I was starting my 6th year as the lead developer for a manufacturing firm in Philadelphia, Pennsylvania.  The realisation that I was growing rather weary at what I felt would become a dead end job well below my desires and capabilities would later come true for the individual(s) that came later to replace me once I'd left.  I recently found out via a visit, the software I had authored in the 20th century for said company is still being utilised during every one of their 6 production days a week, year round.  I figured authoring a critical application that as been running for over 10 years a full production environment without failure is one point of pride I happily take away from that point in my professional career.

Moving on, both with this post and what I was getting at after all of those years at what was becoming a job with no real future, unless I wanted a full frontal lobotomy.  I started to look around at my potential opportunities and having at the time been rather conservative in the kinds of companies in which I would  allow myself to envision employment, only one of which I was aware of it being a startup.  I had interviewed in a new industry as an attempt at something new with a company at the time located in a new office complex in Conshohocken, Pennsylvania, called Health+Market+Science.  It was the epitome of dot com culture from the very casual attire, dual flat screens (15"-17"ers at the time) to the fully stocked kitchen with both Mountain Dew and Jolt colas and of course the obligatory ridiculous hours kept by the early twenty-somethings.

I ended up not taking that job as the hours just weren't conducive to me, having been married with a home to which I preferred to return to during daylight hours.  I did however find myself in an awkward situation as a friend happened to be working for a financial startup as a contractor and try as he may, they never offered him a salaried position.  After suggesting the position for which I interviewed to him, he found it a more compatible match both in terms of age range, distance from his rented home and preferred environment.  He gave appropriate notice at his soon-to-be-former contract and suggested to the CTO to have me in for an interview.  To make a really long story short, I interviewed and was offered a full time position at a considerable increase over my previous place of employ for the prior seven years.

The new environment was definitely a relief from the previous mid-size company dynamic, though it didn't come without its own oddities and personalities. The projects cam quickly and were fairly varied.  Our niche in the market and in terms of financial companies was breaking new ground in an area of the industry that was too new to have many established competitors or applications which could simply be purchased and utilised for daily goings on.  The environment code wise was simple, replace the existing PHP documents with something better, and at that time and in that case, perl was the solution.

I'm not going into the whole rundown of the years at the company and its daily goings on however I was state that true to its nature we worked some late evenings, the odd weekend and had a blast all the while. It ultimately changed as the company grew and due to certain situations with some of the legacy code's lack of efficiency with our increased activity (i.e. it wasn't scaling), my boss (the CTO) was removed and I took his place.  It would be several more years that I would be at this company which would end six months after the new owners completely destroyed the client relationships and staff morale.  I ended with the obligatory hire-a-thug escorting me from the facility (though I am a considerably larger individual and therefore felt no threat), and a decent severance package.  The new CEO hated me from day one because while promising to continue to provide the high quality of work my team and I output on a regular basis, I also made it clear that we were not 'yes men', nor would I or any of my team kiss anyones ass because of self-imposed importance via titles or roles.   You earned respect, you never gained it by your business card or past.  He was never understanding of that mindset and as such I was given a nice severance pay while other people were just thrown to the street.

Ultimately my first foray into an internet based startup was a fun adventure that definitely provided lots of learning opportunities and allowed me the environment to grow and expand my comfort zone.  All in all, I wasn't unemployed for more than thirty or so minutes as on my way away from the office on that fateful friday afternoon for the last time, I made a phone call and found myself employed starting the upcoming week... at another startup.  More about that in another post!

19 March, 2010

What's In Your Dead-Tree-Format Library?

Whilst cleaning and reorganising my home office, I came to the realisation that I have accumulated quite a decent amount of books on the various topics in my trade & hobby, software engineering.  After placing my various titles properly in groups on the shelves, I took a photo and it is shown below.  What follows is a breakdown on each book, my thoughts and the source of how it was attained (where remembered/applicable).  Note: Not included are three books currently in transit via Amazon.  One is on ajax, and two are FreeBSD server administration related.


Top shelf first, going left to right:

The Linux Database Bible :: This was a $50.00 book received as a freebie when I attended Linuxworld 2002 at the Jacob Javits Center in NYC.  I can't say that I've used this book much for anything other than the occasional reading fodder when nothing else was within reach.  I'm sure it would be of more use to newbies to both Linux and databases, even now.

Python Essential Reference, 2nd Edition :: I picked this up back in 2003 whilst doing work for a financial company at which I was both senior developer as well as newly appointed (reluctant) CTO.  This is a David Beazley book, and I highly recommend any version of it (there are several newer than my copy) as he is clearly full of expert level knowledge on all things Pythonic.

Python Cookbook :: This was another 2003 or 2004 purchase mainly out of curiosity to see what crafty, yet elegant solutions other Pythonistas has designed and/or implemented.  Definitely a wealth of information on a multitude of topics be it recursively traversing b trees or working with simple CSV files.

Python Pocket Reference :: A simple reference mostly useful for the "batteries included" libraries.

Python Programming Patterns :: This book has shown me why we generally don't rely heavily upon patterns such as those overly used in Java software.  I purchased this along with the Python Cookbook, and quite frankly if I had only acquired this book, my disappointment would have be far greater as I would've had nothing to take my mind off of it.

Perl to Python Migration :: Picked this up at the Micro Center in St. Davids, PA in the early 2000's when I started to migrate some of our perl applications over to Python in the financial world.  Highly recommended, especially for heavy, long-term perl hackers.

Pro Django :: Picked this up in early 2009 as further reference and idea material for the 4 websites I write and maintain for a series of internationally published magazines.  I'm torn on the value of this book, but at least it goes beyond beginner level.

The Definitive Guide to Django, 1st Edition :: Purchased as a reference as soon as it came out, references version .96 of the framework, so if a person is using v1.xx or higher, there are going to be quite a few caveats in the examples, otherwise a wonderful reference, especially when it comes to the appendices.

Practical Django Projects :: A bit of a disappointment as it focuses on blog creation for which a series of examples of this ilk already can be found online for free, not to mention in the Pinax project.

PHP and MySQL Web Development :: I just received this book from a business partner and whist I generally avoid PHP like the plague, I am glad to have references which are a bit more current these days for when I do need to venture into such environments.

Setting up LAMP :: Same as above.

PHP Solutions :: Ditto for this book as well.

Pro Drupal Development :: ibid on this one too.   I don't think I'll ever end up using Drupal, but at least I have a reference if I ever need tit.

Programming PHP :: I inherited this from the previous CTO at the financial firm at which I worked back in 2002/2003 and it has served me well as a reference book.

PHP Pocket Reference :: This also was provided to me with the Programming PHP book.

Programming Ruby, 1st Edition :: The Pick Axe book as it is more fondly referenced by Rubyists.  I picked this book up in 2007 so as to further my own understanding of perl's successor.  I was, in fact, reading it early this evening, though I still find it considerably less useful professionally for me than Python and other solutions.

Programmers at Work, 1st Edition :: This was left to me by a business associate from Ecquire prior to relocated elsewhere.  It is the predecessor of "Coder's at Work", and contains some early Apple, Microsoft, Adobe, Xerox and HP developers and views on the industry.

HTML 3 :: Truth be told, this was bequeathed to me by the surviving relatives of my ex-wife when her younger brother died in an untimely manner.  It is rather outdated, though kept solely as a remembrance of a young life that had potential in several areas of his life.

The Pragmatic Programmer :: I might not like a lot of the most recently branched out Pragmatic series be it books or podcasts, but this book is gold in my eyes.  I made this a company purchased, required reading for all developers from Junior to Senior level everywhere I've worked.  It most recently was recommended to an Intern I mentored during the 2009 summer season.  It has also proven valuable to other associates, even those not directly involved in the Software Engineering field(s).

OOP Demystified :: I purchased this book as a means of helping to teach others the basics of Object Oriented Programming.  It is a rather basic book, and uses the transitional OOP examples cases of registering for a class and doing payroll, like umpteen other books on the topic.

Middle shelf second, again from left to right:

Open Source Development with CVS :: Picked this book up on an departmental outing back in 2000 when moving into the Lead Developer role at a Manufacturing company which didnt have an existing source control system in place, and it wasn't yet time to use Subversion and the company was too cheap to acquire Perforce licensing.

Practical C Programming :: Every developer has at least one reference book for C, many have more.  I'm not a big C guy myself, though I find this O'Reilly reference book a wonderful additional to any library, maybe short of the K&R tome.

Teach Yourself C++ :: This book by Al Stevens was something I'd picked up as the desire to torture myself with C++ a.k.a. Bjarne's plague upon the coding world.  I sooner should've picked up a book on Smalltalk or Objective-C.  Note, the book is written well, my comments are mainly aimed at the abomination which is C++.

Learning Java :: I didn't buy this book as a Java reference in as much as I did for its first four chapters, which by and far the single best example laden object oriented chapters of any book, bar none.  Oh, and they are quite humorous as well.

Head First Java :: When recently wanting to get back into the Java world a bit more than in the past (with my playful experimenting), this was ordered on the recommendation of a good long term friend of mine, himself a Senior Software Engineer focused heavily in Java environments.

Java in a Nutshell :: Standard fare O'Reilly reference book, though drier than others and while laid out clearly, something felt amiss.

Core Java :: Sun's own sanctioned Java tome.  Massive, and packed full of information (and for the price is had to be).  Heavy examples on applets and AWT, which as of this writing is a decade out of date.  Makes a great bookend due to its size.

Java2 : A Beginner's Guide :: Probably one of the nicest Java2 introductory manuals.  This one has been loaned out to newbies to Java more than any other Java book in my library.  Clearly written and never dull.

Javascript, The Missing Manual :: Recently purchased and while full of information spends too much effort on jQuery, so much to the point that the book might've been more aptly named "jQuery", and subtitled "with a chapter or two on non-jQuery javascript".

Linux Programming :: Also bequeathed by my ex-wife's famliy.

Linux in 10 Minutes :: ibid.  See above.

Turbo Pascal, 3rd Edition :: Pascal, while originally a teaching language is also an imperative, procedural language good for systems programming much like C and only slighly slower.  Having moved to Pascal from various versions of Basic and ML, I was happy to take this off of my wife's friend after he completed his Pascal course at university.  The section on algorithms is still one which I reference routinely, hence the reason isn't packed away in a box.

Perl 5 Programmer's Reference :: A $4.99 special at a Banes & Noble in Abington, PA back in 2001.  Only covered version 5.004 of perl, but was so well laid out that it beat anything that O'Reilly could muster for perl references.  Quite possibly out of circulation/print as of this article's writing.

Learning Perl Object, References and Modules :: Essential reading for any non-purely functional code to get written when subjected to perl environments.

Programming with CGI.pm :: Nothing says well engineered than written by an engineer at Jet Propulsion Laboratories.

Programming the Perl DBI :: Anyone doing anything with databases in perl,  will benfit from this thin yes most definitely useful book.

Perl Best Practices  :: I pick this up after reviewing another copy at an Internet Hosting firm for which I did someork..

Object Oriented Perl :: Damien Conway's opus for Perl and Object Orientation.  Explains limitations and information for making robust Django.

Practical PostgreSQL :: Acquired when the original plans for some of my publishers dontnet

Bottom shelf lastly, contains my spoken language reference library which contains books on:

Dutch, French, Japanese, Welsh, German, Korean, Russian and Spanish.  The majority being in Dutch including several novels and grammer books, followed in a distant second by Welsh grammar books (mostly picked up in Waterstones in London surprisingly), then in a close third, Japanese.  I like languages and I do not limit myself to simply one or two.  Anyone who follows looks at the list of people whom I follow on twitter will easily see all of the above languages utilised, sans Welsh (quick, somebody contact Alan Cox!).

Bonus:  Some of my die-cast cars including my highly favoured Peugeot 206 WRC model that I picked up for £2.99 at Hamley's in London back in '03.  I collect the occasional model car here and there, mainly German, French, English and Italian based, but that is fodder for another blog.