Tuesday, October 25, 2011

On Dennis Ritchie Passing

On October 12th, 2011 Dennis Ritchie died. Most of you are too young to remember who he was. To old geezers like me he was a programming geek many of us wanted to be. He invented the C programming language. It has been far too long since i have written a line of C. It is such a wonderfully elegant and powerful language.

Back in the day to be able to say you programmed in C gave you a certain stature among fellow programmers. The raw power and sheer beauty of pointers. The brilliance of the header files in abstracting the machine but still allowing us an intimate experience to use all its power. Being able to wisely know when to use register to create lighting fast stacks. Macros and other preprocessor directives. i could go on and on.

Most modern day block languages can be traced back to C.

Most of us involved in programming plumbing, or working to build higher order code have moved on to using higher level languages. While most still involved in plumbing and infrastructure use C++, it really is C that led the way to where we are today.

SQL, TCP/IP, The modern GUI. They all have roots that can be traced back to C. C freed us from the tedium of assembler. It allowed us to start thinking less about the machine and more about the virtual space that is software that we wanted to dream in.



Dennis Ritchie was a true icon in the programming community and will be missed. His passing is the passing of an era that in digital years seems to these gray temples like ancient history.

Wednesday, July 20, 2011

i forgot why i like developing software

it is easy for me to get caught up in the technology wars, chasing after the silver bullet in technology, the negativity that is associated with having to deal with bad software, bad implementation practices, and much more...

... but, i am getting weary lately of getting bent by all these distractions.

Software is what i want it to be. there may be norms, there may be standard practices, there may be accepted and practiced conventions. But there are no rules. There is only your imagination and your ability to break free of so many of the norms that stifle creativity.

i forgot why i like developing software. i actually do this more times than i care to admit. i do all the bad things i mentioned above. i only have myself to blame when i do this.

i like developing software because there really are no limits or boundaries other than your own imagination and ability. i am talking about developing software as a one person shop, where there are no meetings, no deadlines. A world limited only by your own imagination and skill.

i also, far too often, forget the joy of engaging in an activity where you have total freedom, and total control. kind of like the guys on Swamp people, though probably not as cool as being a gator hunter. i suspect i forget this because i have to spend far too much of my time these days developing things i am just not all that interested in.

work really sucks when you are doing things that are not of much interest. when you have a gig that engages you it is not really work at all. But, with time being scarce and at a premium i still need a development fix that interests me.

i have found a new hobby in hydroponic gardening. i am documentating my experiences and learning. i want to put together a website on the subject. Putting two and two together i just do not want to go the drudgery of yet another website (yaw). I want to try a new user experience for delving into information. i have no idea what that new experience looks like at the moment, but that is half the fun ...

and, like i'm sitting on the beach in the keys with a cold one i have no sense of time or urgency to get anything done :-).

Tuesday, July 19, 2011

When Developers Do Not Work In Production...

...Software suffers.
This will certainly ruffle some feathers. I suspect if I was working in development and did not have any experience with how my stuff worked in production I might take offense.
In defense of developers, it is seldom part of the plan of development leadership to expect their development staff to gain this experience. I am not talking about some afternoon field trip to one of the production customers to be a nuisance looking over their shoulders. I am talking about some real time on the pond. Sitting down with the end-users and asking them what they like and more importantly what they don't like. Getting to know their workflows and how your software facilitates, or more importantly how is impedes their work.
I am not just talking about application development that ends up in the hands of end-users. End consumer of software like Report Writers, Business Rules Engines, BI software also needs some TLC.

For example, years ago I worked with a Report Writer that in the interest of maximal reuse the vendor decoupled the query from the presentation layer. To make matters worse they stored all the queries for every report in a single file. The production systems I deal with can have up to 1500 reports to manage. They might also have as many as 8-10 staff members that write reports. To further compound this the development environment for writing reports is on each report writers individual Windows workstation. The runtime enviroment is on a Posix server. And, workstation and the server had their own, out of sync version, of that one file that held all the queries. Meaning...
  • We (actually, us and our customers) had NO means of keeping that query file in-sync between all the different report writers working on different reports and queries.

  • Further they had no means of getting the queries in-sync with that single file on the server.

As a remedy, we created a special tool that took the query from the workstation query file and appended the query file on the server. In the next two releases of their product that we upgraded to they changed their underlying metacode and broke our tool.
  • This approach made troubleshooting and support very difficult.
For example, if you wanted to share a report, or open a case for a report you were having trouble with here was the process you needed to go through.

  1. Send them the report file (which contained the presentation layer)
  2. Cut-n-paste the query from the other file to send to them. You also had to send them the name of the query (case-sensitive) so they to add it to their environment.
I could go on and on. Needless to say we got them to add functionality that coupled the query with the report. But, the real point I wish to make is that the developers lack of understanding of what it takes to support multiple employees writing reports in an operational environment contributed to what was one of the biggest software fiacos I have witnessed in my 20 years in this game.
While that example is extreme it serves to satisfy the old cliche that "you will never understand until you walk a mile in their shoes."
The #1 problem with software today is the inability to gather bullet proof requirements and translate them into killer apps. While there are many, many reasons for this, one is... that it is hard to communicate effectively with someone that has no experience with the boots you have to walk in.

I do apologize if this offended anyone. Though, it does not change my perspective on this matter one iota.

Saturday, May 7, 2011

RAID Fun and Games - Part 2

My "Mediasonic USB 3.0 & eSATA 3.5-Inch 4-Bay" Raid enclosure came. Seemed like a very solid and well put together device. Newegg had mostly good reviews on it. A few days later my 4 1TB Western Digital hard drives cames from geeks.com. They were $65 each. A helluva deal. Unfortunately they had an outer "caddy" and DID NOT physically fit into the raid enclosure.

I am not exactly destitute, but my outlay was $450 for a 4TB raid setup that I could use for various mucking around. Not exactly chump change. I tried to get some support, but that was a big strikeout. I really did not want to try and remove the caddy. I really had no other options for buying other drives, and did not want to take a chance on desktop hard drives as there were some folks on newegg talking about problems they encountered that made me wary.

The Mediasonic unit had its own raid controller built into the enclosure. Given the fact that the whole device cost only $200 I suspect the raid controller was not doing the raid in hardware as those controllers (the low end ones) tend to cost more than $200 alone. Still, I was just not trusting going with desktop drives given some of the reviews I read on Newegg.

I returned the drives (pained me to do so). Geek.com was really good about taking them back. Will do business with them again. They have some great deals, especially if you do not mind technology that is a little older.

While I like the Mediasonic enclosure I could not find any information (their forum, the general internet, etc...) that definitively stated they were doing software raid. The whole point of this exercise was to be able to play around with various raid configurations. I could live with a software raid setup, but the lack of information on the subject has been dissapointing.

I will continue to research the subject (though not as diligently) and maybe there will one day be a part three to this.

Thursday, April 7, 2011

RAID Fun and Games - Part One

Recently I decided that I wanted to put togther a RAID array at home so I could do some database benchmarking. I wll not bore you with the details. I like to get my hands dirty on things like this from time to time as I feel it enhances my role as a solutions architect.


I did not want to spend a fortune on doing this. I wanted a RAID enclousre that supported at least four drives. Also, my plans were to use an older laptop to interface to the enclosure so I needed the enclosure to have an onboard RAID controller. After looking at reviews on the newegg website I decided that the "Mediasonic HFR2-S3B PRORAID Box 4 Bay Raid Enclosure" was going to be my choice. It has an onboard RAID controller and it supports Firewire, USB 2.0, and eSata. USB will work well with the connecting laptop.


I was a bit puzzled by the reviews for this and other products. They were all over the map, and prompted me to do further research before I do the deal. Turns out there are two classifications of eSata drives:
  1. Desktop Drives
  2. Enterprise Drives
Enterprise drives have TLER, CCTL, ERC (depending on the hard drive manufacterer. Three acronyms for the same thing.). These are, according to Wikipedia, "firmware bugfixes to reduce the amount of time a drive will attempt to recover from an error." Most RAID arrays assume that after 7 seconds that the drive is no longer available to the RAID array and RAID will drop it from the array. The goal of these three techniques is to prevent drives from prematurely falling out of the RAID array.

This is good as rebuilding a disk in a RAID array can take a great deal of time (sometimes measured in days). Given that the general goal of a RAID configuration is performance, availability, and protection of your data, having a good drive fall out of an array would seem to defeat these three goals.


It used to be that one could enable TLER on desktop drives. In fact, for some time Western Digital offered a utility to do this. It no longer does. Additionally, recovery times of todays desktop hard drives can be up to two minutes. This and the fact that you can no longer enable TLER on them make them unsuitable for use in a RAID array.


RAID stands for Redundant Array of Inexpensive Disks. The key word for many of us is inexpensive. Let me put this in perspective for you. A 1TB Western Digital Blue Caviar hard drive is $65.00. This is a desktop disk. A 500mb Western Digital WD5002ABYS costs about $82. This is an enterprise drive. I am using Amazon for my source of pricing - researched on 4/6/2011. So, 1/2 the disk space costs about 25% more.


Apparently enterprise drives are hardier than desktop drives. I am not a hardware guy so I cannot speak to this.


In my research I was able to determine that we used to be able to enable TLER on desktop drives, but no longer can. I was not able to find a reasonable explanation as to why we can no longer enable TLER (or the other listed standards). In other words, those of us that wish to use desktop drives in a RAID array no longer can (at least not safely).


This is not my biggest issue on this matter. In researching this subject the lack of cohesive information as to what drives can be used in a RAID array is hard to come by. Ridiculoulsly and painfully hard to come by.


Also, all of the "all over the map" reviews and vendors forum discussions now make sense to me. Many claim great success using desktop drives in RAID arrays, while others write about their nightmares in using desktop drives in RAID arrays. The people claiming grand success have not yet encountered an error that takes their drive more than 7 seconds to recover from. Those experiencing problems have.


Vendors should be responsible and ...
  1. Provide a list of drives suitable for their RAID enclosures and/or RAID controllers.
  2. Acknowledge and provide better information on this subject
I have spent close to 8 hours researching this subject. I almost dropped $250 on desktop drives that given my luck would have worked like a champ in my RAID array until a day after they went off warranty.

Sunday, March 20, 2011

alchemy 0.95beta Released to SourceForge

i just released version 0.95 of alchemy to SourceForge. Below are the readme.txt notes for this release.

About alchemy
The alchemy framework has been used to create two production systems. One which host a database with over 150 tables and 1 billion rows of data. Another hosting a database with over 225 tables, 15,000 fields, and 4.3 billion rows of data.

New Stuff
Enhanced login module with encryption and multi-salts
  • Document Management Module.
  • Lots of cool new JQuery integration and examples.
  • Enhanced context management.
  • New DataMiner tri-frame module.
  • Hooked up examples in the framework demonstrating functionality.
  • UI Template patterns.
Still Needs Work
  • Documentation needs some TLC and some more depth.
  • Integration of DataMiner login into alchemy login.
  • More examples demonstrating functionality added to framework.

Friday, February 25, 2011

Perl For Windows Admin and Software Build Management

i tend to only do one Perl project a year. This has been the trend for the past few years. But they all have filled some pretty big holes and remind me what a cool and utilitarian language Perl still is. Currently i am working on a tool similar to ant. i just finished coding out the functions that allow me to check a source and target build, doing a two way compare that produces three lists (for analysis and build):
1) files on source that are not on target
2) files on target with newer timestamp than source
3) files on target that are not on the source
Perl is still my #1 language for work like this.

I also pulled two great Perl resources from my bookcase. Win32 Perl Programming - The Standard Extensions by Dave Roth. If you are looking to use Perl with Windows sysadmin this is THE BOOK for the job. Also Network Programming with Perl by Lincoln Stein is a killer reference.

While i spend a great deal of my current life in Php i do enjoy these times when i get to do a Perl gig.

Wednesday, January 12, 2011

In Search of a New UI

As I have been in software engineering over the years I have seen a lot of technologies and technical fads come and go. I have been witness to some pretty incredible growth in bandwidth, capacity, and hardware technology. I have been able to watch open source software, which I first regarded as communism masked as technology change the technical landscape. I have also had the good fortune to become a convert and to be a part of this movement that still has not been fully adopted and embraced by much of the business community.

I have also watched certain hardware and mobile devices, and Apple steer technology back into the land of the proprietary. I think the forces of open source are too strong to let such a shift occur en masse.
What I have not seen in either the internet or the intranet are applications that truly put the technology stacks to their fullest capability. Sorry, but the Facebook UI and the apps leaves me wanting. In the space I live, the electronic medical record (aka: EMR) there is just to lack of imagination as to what is possible in the user experience (UI) and in defining workflows that addresses real business needs, that places healtcare providers more with their patients and less with the computer. In the business application space I cannot say I am all that impressed with ERP and other types of business apps. This criticism is as much leveled at myself as it is at the industry at large. For I fervently believe that real growth and innovation will seed and flourish when you are willing to hold up the mirror in front of you prior to pointing fingers.

Now that I am working in the front-end space I have come to realize just how much norms have stagnated our notion of what an application needs to be. As I am becoming more adept with these technologies I am coming to understand what an application and a workflow can be.

In concert with that last thought it has been my observation over the years that we (myself included) like to blame the shortcomings of technology for our own lack of a) knowledge; b) technical design; and c) functional design. Back in the 90's when I was making low level hWnd calls from VB to do what I thought should be standard UI fare there may have been some truth to these arguments. Though if you asked me back in the day I really did hold a similar position on such matters... just not as strongly formed as my experience then was far less.

As I look over the landscape of the technology stack I currently work with (Php, Javascript, JQuery, CSS, Html) I realize that there really is nothing lacking other than my own ability and imagination. Having prior experience in the Java world I can say the same about that technology stack as well.
Such a realization is empowering as it allows you to really dream and contemplate what is possible. It emboldens me as for every thing I wish to do, I realize that the only impediment I face is my own lack of knowledge and understanding as to how to go about solving the problem. This in itself is very cool as I have always loved to learn.

The freedom of the open source movement and the internet has created an asynchronous development environment and an informal community of developers that are driven by their passion for software and their love of sharing the fruits of their labor with others. This community has created more jobs and revenue than the world of proprietary software. It has created opportunity for those that are economically challenged. It has created a space for learning and sharing that is unprecedented in the history of ones and zeros. If it is comminism, then I, gladly am a commie.
I know firsthand that a real developer would practice their craft for free if they could not do it as a profession. Money is always tangential to the labor of love one gets in being able to play with technology and build things others find value and merit with. Sure, there is some hubris in what we do, but for the most part the business of technology becomes our rubics cube. There are so many of these proverbial cubes in the technology space that we have great choice as to where we want to play... Configuration Management, Database Development, Database Management, Application Development (both backend and frontend), Process Automation, Testing, Scalability. The list goes on and on and on.

Today it is time for me personally to re-think and dream about what an application can be, and to attempt and put those dreams into practice. Whether successful or not the most fun is always to be had in the journey itself.