Thursday, March 30, 2006

An aside....

I know you're expecting part #3 of the "Love" section.... and I am working on that.

However, I got invited to a meeting today that has me more excited about something than I think I’ve been in a very long time.

This project involves using ‘mapping’ type technology, think “Google Earth”, “MapQuest” etc… to assist in disaster preparations, response, recovery etc… for the transportation infrastructure.

Think about it, a hurricane is bearing down on an area, like Katrina did last year on the Gulf Coast, and allowing an industry to reroute all traffic that could be potentially at risk, in a proactive manner, remotely, from outside the area that is expected to suffer an impact. Then, as the storm progresses, shifts, eventually makes landfall and moves on… to again, actively, in a realtime fashion, adjust that routing appropriately!

Some of the data I’ve been managing, cleansing etc… for about a year and a half now is integral to this proposed application, as is much of the research I’ve been doing into ‘locating’ many of the sites within the GPS system (think Latitude/Longitude) .

I love solving puzzles, and while much of the raw information is available, the granular details are still in many, disparate sources and locations. That I’m being selected to aid in this process just has me stoked…. And… pretty focused on mechanisms to bring it together, smoothly and in the next 3 or 4 months.

So stay tuned… I’ll let you know how things develop.

In that same meeting, it also became pretty clear I’ll be on this gig through the end of 2006 as well… It’s always nice to hear that, especially when you’re still a contractor!

All in all… not a bad “Day at the office”.

Tuesday, March 28, 2006

All You Need Is Love… sort of. . .(Part#2)

After a fairly short night’s sleep, the following morning I met John Love for our ‘pre-meeting’ breakfast meeting. I wrote a little about that first meeting in my “Reflections” post back in September. In addition to learning a bit about one another, John gave me the low down on their situation.

They’d hired a local consultant, who’d previously written an application for them successfully, to, in essence, rewrite the small application she’d done, and take everything to the ‘next level’.

It was now, eight or ten months, and $50K (as I recall) later, and they had no idea where she was, or even if what she’d already done was in line with their needs. Although, he continued, they ’suspected’ it was, and all they needed was a plan to get to the finish line.

I’m not sure why, but by the time we’d finished breakfast and had made plans for me to meet the “Data Processing” committee at around 10am, he’d all but convinced me I’d been wrong in my initial assessment.

Four hours later I was hustling to make an earlier flight back to Nashville, with a pad full of notes, and about a hundred suggestions I was weighing over for their situation.

I wrote up about half of my assessment on the plane, and finished it that evening back in my Brentwood “Studio Plus” apartment.

In short, I recommended they devote one internal staff person 2.5 days a week to the project, keep the original consultant for her knowledge and understanding of what had been done so far, and bring in one full time contractor to meet their self-imposed 90 day timeline to completion.

I faxed it all off to Bill Patton in Greensboro (a PC fax was just the ‘stuff’ back then!!), along with my bill for time and expenses, and a reiteration of my inability to be available for any of this future project work.

However, that didn’t dissuade neither Bill, nor John, from deciding they just had to have me for the job. I remember telling Bill that the gig I’d lined up in Florida was just too sweet to pass on, I was already committed, and, for a lot more money. His last words to me on that call were “Well, how much would it take, if, your other client would agree to wait 3 months to start their project?” (for the record, bad, bad question to ask a mercenary!) Me, I added 50% to the other client’s rate, and tossed the number at him.

Well, he choked on it a bit… and while he was doing that, I added that I would not even talk to my client, until his had agreed to the rate. We hung up and I was confident I’d successfully priced myself out of the running.

It had been fun though (I was feeling like quite the 'star' and all), I went back to NDC recharged, continued to crank out the bug fixes, and even got a chance to work with their database admins a bit on some changes I’d proposed to simplify coding, and improve the overall speed of the application. I really was on a roll and feeling pretty good in general!

That following Wednesday I heard from Bill again, he’d called to tell me his client (that insurance operation) had agreed to the rate, and not only wanted me to start ASAP, but, they’d like me to make another weekend trip ot two to get some more information, and meet with the current consultant. “So, when do you want to set this up for?” he said. I reminded him that I still had to talk to my guys in Naples, and I wasn’t too optimistic about their willingness to wait. I agreed to call them the next day, and to let him know what the outcome was the next evening.

To make this long story shorter, the guys in Naples thought January was a better time frame for them anyway, and I agreed to take on the Burlington project at W.E Love & Associates.

I know… I’d said I’d never work for a Doctor, Lawyer or Insurance operation again, but, cash talks as they say, and I was listening.

It was about this time, I started referring to myself as a "Coder of Fortune”, a programmatic mercenary, coding for the highest bidder… it got a lot of laughs, but it also wasn’t far from the truth!

The project at NDC wrapped up without incident, during the next two trips to Burlington I found a one bedroom, furnished apartment (for about half of what I’d been paying in Brentwood) with a 90 day lease… things were coming together nicely.

Too nicely, if what you’ve read so far hasn’t already shown you, whenever things go too well for me, the universe tosses me a little curve, just to keep me on my toes.

Next… the “Love project” gets underway. . . and it's a rocky start. . .

As always, I appreciate you stopping in, and the love you show me by leaving a comment!!

Technorati Tags: - - -
-IceRocket Tags: - - -

Sunday, March 26, 2006

All You Need Is Love… Sort of. . .(Part#1)

Ok, so there I was in the end stages of my project at NDC, having turned down a permanent position and trying to set up a ‘Winter gig’ somewhere South of the Mason-Dixon. You see I’d decided I wanted to move to a warmer area, and that definitely meant moving South.

I had a tentative project with the folks in Naples, and honestly, that was looking very promising. Winter in Florida, work maybe 30 hours a week, make an additional $10/hour over the Nashville gig.. Yep, Naples was looking like the deal for me.

Then Bill Patton called me. He was the manager of the Greensboro, NC office of Metro Information Services, the folks I was working through in Nashville (by the way their office and the job were all actually in “Brentwood” which is a suburb of Nashville).

Seems Bill had a client, in Burlington, NC who was in trouble with a project and the word with the Metro folks was that if it was FoxPro, I was the guy. He wanted me to hop on a plane, fly to Greensboro and look the job over.

We talked about the situation some and it turned out this was an insurance oriented operation, family owned and Metro was trying to ‘help the client out’. All three of those things were instant ‘red flags’ for me!

I’d found over the past decade that there are several things that should warn you ‘off’ a potential client. Among the list were these three. I know, you’re wondering ‘why’, I considered these particular three, red flags.

First, Insurance companies, I’d signed on with several as clients over the years and the one thing they all had in common was they didn’t really know, how they did what they did. They’d use phrases like “We always do it like this”, or, “We never, ever, do that” when I’d ask about the rules surrounding the project. Later, after development was underway I’d find what they really meant was:
  • “We always do it like this, except when we don’t”
or, the even more popular
  • “We never, ever, do that, except when we have to.”
For those of you not in software development, telling a designer that something is not even a possibility is pretty much the same as telling the architect designing your home you never, ever, have use for a bathroom. Then, once the plans are approved and construction has begun during the first walk through asking where the bathroom is. When informed you specifically said you had no need for one, replying, well, “I only use one, when I need to”.

Second, family owned, I’ve chronicled my experiences there over the past several weeks. While not a major flag, it remained a flag.

Third, “help the client out”… this is probably the biggest flag of all, a virtual show stopper for me. It means several things to me when I hear it.
  • The current project is not being, and has not been, properly managed.
  • Whoever laid out the project must have left out some key components.
  • There’s no one, internal to the company who understands the development process.
  • No one internal to the company has a vested, (as in it’s their job) interest in the project.
  • There’s a money issue, either the costs were under estimated, or the company over estimated their ability to fund the project.
There are more, but I think you’re getting the drift, a lot of bad things potentially going on, and little or no ‘company’ oversight of the process.

Signing on the ‘help out’ is tantamount to becoming their ‘white knight’ and fraught with all the pitfalls that entails. I’ve participated in plenty of ‘crisis management’, ‘project intervention’ and ‘project recovery’ contracts, none were fun, all were far more work than the money could compensate for, and in every single case, when the ‘miracle had been pulled off, the client was still complaining about the time, the effort, the money or all three. In short a classic ‘no win’ situation for a developer, especially a contract developer.

I tried to beg off the ‘look over’ but, Metro made it pretty attractive, 20 hours billable for the weekend, I fly in Friday night, fly back on Sunday, all expenses paid… I was looking at sitting in my (tiny) apartment, staring at 4 walls and earning nothing, or, doing this little favor for Metro and making some fast cash… I went for the cash.

I know, with everything I said about red flags, I still went for the cash. However, before I agreed, I also made it very clear to Bill that I could not possibly “do” the job, I was only available to look at the situation and provide my best guess at what it would take to get the project back on track, and completed.

I remember Bill and I talking for some time about this project. How important it was to Metro to help the client out, how they needed a guy like me in the Greensboro office, how he was sure I’d like North Carolina even more than I’d liked Tennessee…. He was giving me the full package sales approach… appealing to every need he perceived I had, but I remained committed to the Naples gig (even though it wasn’t a fully done deal).

A week later I hopped a commuter flight, an “American Eagle” turbo prop as I recall, from Nashville, to Greensboro. It was, without a doubt the single worst flight I’ve ever been on…. And, for a guy who dislikes flying, on the best of days, that’s saying something!

There was a major storm moving from Tennessee, over the Appalachian Mountains and into North Carolina… of course, we had to fly right through it… Turbulence barely describes that flight… stuff was falling from the overhead… lightning was all around us… the only highlight was that the stewardess picked the seat next to me to ride the storm out in, and talked to me for nearly the entire flight… that, at least, kept my mind occupied.

Once I got to the airport, the rental car that was supposed to be waiting, wasn’t. After checking all the agencies and calling Bill (at like midnight), I found that they’d forgotten about it… fortunately, I was able to rent one.

As I was wrapping up the transaction, I asked the attendant what the best way to get to Burlington, from the airport was. Her answer was to follow the signs for I-85 North.

I know I must have looked confused when I asked, “But, isn’t Burlington due East of here?”

She responded, in a very matter of fact manner, “Yep”.

With that I headed out to find my car, and drive north, to go due east. Oh, and remember that storm I mentioned we flew through? Well it had arrived. It was raining, and I mean raining, a real downpour. I found I-85, and the Eastbound on ramp, and proceeded to head (I hoped) to Burlington, where I’d been assured the hotel reservation had indeed been made.

All but about 2 miles of I-85 between Greensboro and Burlington was under construction, no shoulders, “K” barriers were the ‘out of bounds’ markers and there was the rain, total darkness and the traffic was incredible (to me) at this late hour… eventually though, I did make it to Burlington, found the Hampton Inn, where there was, in fact a reservation, and got checked in.

As the desk clerk and I were wrapping things up she said: “Oh, there’s a message for you!” and handed me an envelope. In it was the name, and phone number of the man I was supposed to meet with the following day, John Love, and his home phone number. Also in the note it asked for me to call him when I got in, regardless of the time.

It was close to 1:00am, and I seriously considered not calling until morning, but, after all he did ask and he was paying the bill!! So, I called, he was asleep, but once I established who I was, we made arrangements to meet at 8:00am the following morning for breakfast, before meeting with his “Data processing Committee” later in the morning.

With that, we hung up, and I crashed for the evening, still wondering what tomorrow would bring.

Next, in part two of “All you need is Love”, I’ll tell you about our meetings and what happened after I returned to Nashville.

Technorati Tags: - - -
-IceRocket Tags: - - -

Saturday, March 25, 2006

NDC and beyond. . .

It’s taken me some time to write this next part as it’s dredged up some fairly painful memories. That’s all they are though... memories. As I’ve thought about it, lamented what might have been, could have been… in the end, it is, what it is. I didn’t get where I’d thought I was going, however, in the final analysis, I’ve discovered I got exactly where I needed to go…

Cryptic enough?? Ok… here’s what happened.

Early in 1993, January I believe, I got a call from some folks in Nashville about a project there that someone had told them I’d be perfect for. At the time, it was not exactly an unusual thing for me to get this kind of call, after all I was on Microsoft’s original FoxPro beta team, had been on Ashton-Tate’s dealer advisory board, and most folks in the ‘xBase’ world had either heard of me, of my company.

They were offering a fairly sweet deal for me to come to Nashville and join the team on a commercial software package project. I thought long and hard about it, went through all the technical interviews and so on, but, when they offered the gig to me I just wasn’t ready to give up on the business yet. I was still holding out hope we’d reach “critical mass” any day now.

Three, maybe four months later, I was nearly out of money and we were no closer to the prize than we’d ever been. I’d cut Ken from the payroll, cut overall expenses to the bone, even taken some out of town onsite client work to make ends meet, but, things were still sliding downhill, and faster, rather than slower.

I built an estimator for a shutter company in Naples Florida that was about the slickest thing I’d ever done. I’d placed all the rules (and there are some fairly rigid rules in shutter manufacturing) in a database and applied the rules based on the measurements, style and appearance selection the sales person entered.

This application could be used in the field to give a customer a quote, that same quote once accepted became the full work order for the shop floor…. Right down to defining the spacing for the holes the slats would fit in… the paint, assembly times, material lists… It was very cool for 1993.

Once that job ended however, and I’d wrapped up another couple small ones in Miami and Ft. Meyers, it was back to the office, and the cash outflow, rather than inflow.

In late June, the contract house called again… this time they were offering more money an hour and a better ‘perdeim’ package as well. Once again I talked it over, thought about it, and eventually, decided I’d just go ahead and give it a shot. Hell, it was a 40 hour per week guarantee, for 3 full months at nearly what I was billing clients on my own. It seemed perfect!

I remember the morning I left to drive to Nashville, I was an emotional wreck, I was leaving everything ‘comfortable’ behind, my wife, my company my entire support structure and heading off into the unknown. I had more than a little self doubt, what if… sort of stuff.. what if I wasn’t as good as I thought I was? What if their team was stellar, and I was just average? What if… What if… What if…

By the time I got within an hour or so of Nashville, I’d pretty much resigned myself to letting things just work out, however they worked out… I think I stopped for the night in “Elizabeth” Kentucky for the night figuring I could find a motel, a steak and a beer, and head out fresh in the morning, rather than hitting Nashville in the dark and trying to find a place to stay.

I got a hotel room, and the recommendation of the desk clerk for a great steak restaurant and headed out for dinner.

Imagine my surprise, when as I told the waitress I wanted their best steak and a nice cold draft beer, she looked at me as though I’d said something profane! In short, I’d stopped for the night in a ‘dry county’. Hell, I didn’t know such a thing still existed in the good old USA… so, instead of a beer, I had an ‘unsweetened’ iced tea with that steak, which respite the absence of the beer was still quite good!!

The next morning I headed into Nashville, found the contract shop, got acquainted, filled out forms and headed off to the client site. “Network Data Corporation”, or NDC, was involved in writing a commercial application for convenience stores (C-stores), as I recall their biggest backers were “Hess” and “Circle-K” stores.

This place was a programmer’s dream shop. There were close to 50 programmers there, 15 or 20 in the FoxPro group alone. They were using source code control, scheduled builds, formal testing, bug reporting and tracking… all the stuff the “big guys” had always done… and here I was, in the middle of it!

I should mention here, that up until this very day, my actual exposure to “FoxPro” had been to install it, and launch it a few times. I was definitely an xBase guru… dBase, FoxBASE+, Clipper, FoxBASE MAC… I was the go to guy… this shop however, had just moved to FoxPro 2.0 and the entire team had been to George Goley’s seminar and training classes… in all honesty, I was in way over my head.

Luck however, despite what I’d been thinking, was still with me.

I turned out that they’d brought myself, and another fellow from Richmond in to do ‘bug fixing’. You see, I can ‘fix’ almost anything, regardless of the language it’s written in, as long as I have a few basic tools. What NDC provided was far beyond basic… it was a full on tool chest!

They showed me my cubical, and there in the in box was a three, maybe four, inch stack of bug reports. My job, as it was explained to me, was not to develop anything “new”, but instead to track down the ‘bugs’ and eradicate them. I was now, officially a highly paid exterminator.

The work went well, I was knocking the bugs down faster than they were arriving, my stack was shrinking, and, best of all, none of my fixes were causing problems in any other areas. I was doing so well, that when they decided they only needed one of us (me or the fellow from Richmond, Mike) they chose to keep me!

I remember feeling bad for Mike, as we’d become fairly good friends, fairly quickly. We’d more often than not, go out after work; catch a sandwich and a cold beer at the “Cross Corner Tavern” before retiring to our separate apartments for the night.

The Cross Corner was an interesting place. A mix of locals of all sorts, from the unemployed, to record industry executives. It was there I met Paul Lucks, former head of Mercury records, a couple of dozen aspiring singer/songwriter types, and a wide assortment of colorful characters.

Paul and I had some common interests, and many evenings we’d sit and chat about life, work, and about everything in between. I had no knowledge, or interest, in the music business… he knew nothing about what I did, just two guys passing the time, it made what would have been pretty lonely evenings, enjoyable.

The work, well it was rockin.. I felt almost sad knowing it would have to come to a close at the end of October.

NDC made me a job offer in early September, even paid to fly my wife in so she could see Nashville for herself. I turned them down though, as they were offering quite a bit less than the contract money, and for whatever reason, I thought I’d land something at the end of the contract.

I did, and contract will bee the next part of the story!

Technorati Tags: - - -
-IceRocket Tags: - - -

Wednesday, March 22, 2006

When Constants, aren’t. . .

Thanks to a comment from Rick, I decided to publish my utility for extracting the ‘constants’ from an OLB file. That’s an “Office Object Library” file and each Office application (and they can be different for different versions) has one. This utility was taken from Microsoft’s knowledgebase, commented and adjusted slightly for my needs and formatted with my 'Prg2Html' utility for posting here.

Note: This code utilizes objects that are included in the Tlbinf32.dll file. This dynamic-link library (.dll) file ships with Microsoft Visual Studio 98 Service Pack 4. If the file is not present and properly registered on your computer, the code below will fail.

So without further talk… here’s the code! I hope you find it as useful as I do.

*-----------------------------------*



*--------------------------------------------------*
* Program: bldConstant *
* Purpose: Load an OLB file and extract the *
* Constant definitions *
* Parameters: None *
* Returns: Nothing *
*--------------------------------------------------*
*-//- Note: *
* It places the resulting constant file in the *
* location specified by the user *
*--------------------------------------------------*
PUBLIC oGetConstant

oGetConstant=NEWOBJECT("GetConstant")
oGetConstant.SHOW

RETURN


*--Define the Form and its objects
DEFINE CLASS GetConstant AS FORM

HEIGHT = 550
WIDTH = 573
DOCREATE = .T.
AUTOCENTER = .T.
BORDERSTYLE = 1
CAPTION = ".OLB Constant Define Extractor"
MAXBUTTON = .F.
MINBUTTON = .F.
NAME = "GetConstant"

*--TextBox for the OLB file and path
ADD OBJECT txtOlbFileName AS ;
TEXTBOX WITH ;
HEIGHT = 27, ;
LEFT = 65, ;
READONLY = .T., ;
TABINDEX = 2, ;
TOP = 6, ;
WIDTH = 458, ;
fontname = "Courier New", ;
FontSize = 9, ;
NAME = "txtOlbFileName"

*--Label for the FileName
ADD OBJECT lblFileName AS ;
LABEL WITH ;
AUTOSIZE = .T., ;
CAPTION = ".\<OLB File:", ;
HEIGHT = 17, ;
LEFT = 4, ;
TOP = 11, ;
WIDTH = 55, ;
TABINDEX = 1, ;
NAME = "lblFileName"

*--Button to find/locate the file
ADD OBJECT cmdFindFile AS ;
COMMANDBUTTON WITH ;
TOP = 6, ;
LEFT = 533, ;
HEIGHT = 27, ;
WIDTH = 26, ;
CAPTION = "...", ;
TABINDEX = 3, ;
NAME = "cmdFindFile"

*--Editbox to hold the extracted constants
ADD OBJECT edbShowConstants AS ;
EDITBOX WITH ;
HEIGHT = 473, ;
LEFT = 6, ;
READONLY = .T., ;
TABINDEX = 4, ;
TOP = 42, ;
WIDTH = 563, ;
FONTNAME = "Courier New", ;
FONTSIZE = 9, ;
NAME = "edbShowConstants"

*--Button to Extract the Constant definitions
ADD OBJECT cmdLoadConstants AS ;
COMMANDBUTTON WITH ;
TOP = 520, ;
LEFT = 288, ;
HEIGHT = 27, ;
WIDTH = 112, ;
CAPTION = "\<Extract Constants", ;
ENABLED = .F., ;
TABINDEX = 5, ;
NAME = "cmdLoadConstants"

*--Button to save the generated file
ADD OBJECT cmdSave2Hfile AS ;
COMMANDBUTTON WITH ;
TOP = 520, ;
LEFT = 400, ;
HEIGHT = 27, ;
WIDTH = 84, ;
CAPTION = "\<Save to .h", ;
ENABLED = .F., ;
TABINDEX = 6, ;
NAME = "cmdSave2Hfile"

*--Button to Exit the Form
ADD OBJECT cmdExitForm AS ;
COMMANDBUTTON WITH ;
TOP = 520, ;
LEFT = 484, ;
HEIGHT = 27, ;
WIDTH = 84, ;
CAPTION = "\<Quit", ;
TABINDEX = 7, ;
NAME = "cmdExitForm"

*--------------------------------------*
* -- Local Procedures and Functions -- *
*--------------------------------------*
PROCEDURE cmdFindFile.CLICK
*--Find the OLB file to Process
LOCAL cOlbFileName, lRetVal
lRetVal = .F.

cOlbFileName = GETFILE("OLB","OLB File","Open")
IF !EMPTY(cOlbFileName)
IF UPPER(RIGHT(cOlbFileName,3)) = "OLB"
lRetVal = .T.
THISFORM.txtOlbFileName.VALUE = cOlbFileName
*--Now that we have a filename,
* enable the Load Button
THISFORM.cmdLoadConstants.ENABLED= .T.
ELSE
MESSAGEBOX(cOlbFileName + ;
" Is not an OLB file!",0)
ENDIF
ENDIF
RETURN (lRetVal)
ENDPROC

*--------------------------------------*

PROCEDURE cmdLoadConstants.CLICK
*--Load constants from the OLB into the editbox
WAIT WINDOW "Processing..." NOCLEAR NOWAIT
LOCAL cTypeLibInfo, oConstants, ;
cConstantStr, Obj, MEMBER
#DEFINE CRLF CHR(13) + CHR(10)

cTypeLibInfo = CREATEOBJECT("tli.typelibinfo")
cTypeLibInfo.ContainingFile = ;
(THISFORM.txtOlbFileName.VALUE)
oConstants = cTypeLibInfo.Constants

cConstantStr = ""
FOR EACH Obj IN cTypeLibInfo.Constants
cConstantStr = cConstantStr + ;
CRLF + "* " + Obj.NAME + CRLF
FOR EACH MEMBER IN Obj.Members
cConstantStr = cConstantStr + ;
"#DEFINE " + MEMBER.NAME + " " + ;
TRANSFORM(MEMBER.VALUE) + CRLF
NEXT MEMBER
NEXT Obj

THISFORM.edbShowConstants.VALUE=cConstantStr
THISFORM.cmdSave2Hfile.ENABLED= .T.
WAIT CLEAR
MESSAGEBOX("Done. . .",0,"Extract Constants")
RETURN

ENDPROC

*--------------------------------------*

PROCEDURE cmdSave2Hfile.CLICK
*--Save the Constants to the file specified by
* the user, with a ".H" extension
STRTOFILE(THISFORM.edbShowConstants.VALUE, ;
PUTFILE("Header File", ;
JUSTSTEM(THISFORM.txtOlbFileName.VALUE) + ;
".h",".h"))
RETURN

ENDPROC

*--------------------------------------*

PROCEDURE cmdExitForm.CLICK
*--Exit the form
THISFORM.RELEASE
ENDPROC

ENDDEFINE
****************END CODE****************


*-----------------------------------*


So there you have it... Over the next few days, I'll be posting what I've been working on for the next step of the career journey, as well as some VB/VFP code translations for those of you who might be interested in what they look like.

The ability to 'drive' Microsoft Office, from within other applications, like Visual FoxPro, allows you to accomplish some very professional looking reports, spreadsheets, charts and graphs. Not to mention you can choose to 'show' your work, as in let the office application be visible, or, place it behind the scenes, and just show off your finished results. If you're not working on it yet, you should at least give it a try.

As always, thanks for stopping by!!

Technorati Tags: - - -
-IceRocket Tags: - - -

Tuesday, March 21, 2006

I didn't forget. . .

I'm working on the next installment of the career journey, but today was just one very busy day!

I wonder, at times like this, why Microsoft, with all of their money, research, time and expense, has made automating their “Office” suite such a nightmare.

Oh they have a completely documented object model, if, and only if, you want to automate it using Visual Basic, or VB.Net. Pick any other language, even another Microsoft language and you’ll find yourself spending more time deciphering some cryptic implementation of the model and immersing yourself in minute details you’d think would be handled in a more straightforward manner.

Parameters are the bane of my day, at least right now. You see, in the Office Object model, parameters are passed as ‘Named’ parameters, and the order that they’re placed, due to the fact that they’re named, is irrelevant. However, when you’re using, say Microsoft Visual FoxPro, which (at least in version 8) does NOT allow for passing Named parameters to the ‘object’, you not only have to get the order right, you also need to extract the ‘constants’ from the model so you can decipher the correct vales to pass.

Sometimes, I wonder if we’re really moving forward, or sideways… or really backwards.

On the other hand, when this little app I’m building fires… it’s going to be off the hook cool to see it build in about 60 seconds what was taking a person an entire day to do!!

That’s why I do it… for those ‘crazy cool’ moments when every little thing is finally in place… I flip the switch… and the magic happens!!

More on the journey in the next day or so!!

Technorati Tags: - - -
-IceRocket Tags: - - -

Monday, March 20, 2006

BlogMad. . .

**Update**

BlogMad will be going public on the 20th... so this will roll off tomorrow!
*--------------------*


You might be hearing the buzz about 'BlogMad'.. I signed up and the 'counts' are definitely going up, unfortunately, it doesn't seem like the actual readership is growing, as it's just you faithful readers who're posting comments (which I appreciate more than you could know!)...

However, BlogMad is currently in 'invite only' mode. If you'd like an invite, drop me an email and I'll send you one as soon as I can.

Technorati Tags: - - -
-IceRocket Tags: - - -

Sunday, March 19, 2006

Micro Applications rises from the ashes once again. . .

In the previous story about our ‘merger’ with Goguen Industries, I failed to mention meeting Greg Gusse.

I was out in California, Sausalito to be specific, at an SBT dealer seminar, where our sales rep, Jack “heart attack” Cutin got me on the phone with Greg. It turned out Greg had acquired a small development operation in New York City, and was looking for someone to help him bring some of their projects to fruition.

Jack had told him that I (and my company) were writing more customizations, and doing more installations with the SBT product that anyone else, and that geographically we were only about 90 miles apart.

Greg and I had a conversation that day, and several more over the next week or two, which culminated in my taking a day trip down to Nichols, NY to meet face to face with Greg and see what kind of plan we could come up with.

As I recall, we started our relationship with a couple of contract assignments where Ken and I did some bug fixing, and feature completion and Greg paid us for that work.

That was the plan, but the deal at Goguen had put a crimp in our style.. as my focus at that moment was survival.

So, here I was in March of 1991, having taken back the business from Goguen, losing my nice comfortable regular income stream and now having not one, but two guys on the payroll (besides myself).

It was a tough sell to my wife, who’d been down this road before, she knew full well this meant long hours with me huddled over a keyboard and less ‘at home’ time. But, in all reality it looked like the only real shot we had at me earning the kind of money we’d become used to me earning.

I struck a deal with Goguen, where we’d continue to maintain their internal systems, in exchange for use being able to continue to use the office space, and secretarial services, we had at no charge.

Shortly after that Greg and I formed a loose partnership, where Micro Applications would develop the software, and his company “Computer Services” would be the sales arm. He’d find the clients, close the deals, and we’d simply build the products. (Eventually we formalized that partnership and created Computer Services/Micro Applications, or CSMA.)

In the beginning at least, things went along pretty smoothly. Our phone traffic began to pick back up, but slowly. Our regular clients eventually had needs they couldn’t put off and we started earning again, all which allowed me to make payroll for Ken and Rich. Unfortunately, there was not much left over for me, but, personal finance-wise I was getting by.

We had a client, in North Syracuse, Lachut Electrical, who had just moved into a building they’d purchased and renovated. They were one of our larger Xenix clients, Rich had forged a decent personal relationship with them, and they needed a client for the downstairs of their building.

Rich lobbied pretty hard for the move, for several weeks, before I eventually decided it was the right thing to do. In retrospect, it was the wrong decision. We didn’t have the money, or the cash flow, at the time to support our taking on that additional monthly ‘nut’. We did it anyway.

I have to admit, it felt good to move out of the Goguen building, if for no other reason than there were some mixed emotions, in all of us, over what had happened. The rental agreement was a ‘sweet deal’ at Goguen, but everyday we were reminded that we’d effectively been ‘shut down’ simply because we’d had a couple of bad months.

Also, the Lachut building was really nice, everything was like brand new. We built cubicles, strung wiring, and in short order got down to work….

The timeline that follows, is a little shaky for me, I’m not sure I remember everything in exactly the ‘right order’, but it’s what happened all the same.

At some point after the move to the Lachut building, Rich became more and more adamant that he wanted, and deserved, to be a partner with me in the business. I tried to explain to him, that from the beginning, he’d wanted to be an employee, to get paid every week and that was the path he chose. That if he wanted to be a partner, he’d have to buy in, not simply demand I ‘give’ him half ownership simply because he worked for me.

The arguments got pretty heated at times… but I stood my ground.

Ken on the other hand, simply was there everyday, busted his butt to get work out the door, and, rarely shipped anything that wasn’t nearly perfect when it went out the door. He and I used to joke that we were like that wine company… but our slogan would be:

“We’ll ship no software, before its time”

Eventually, and in my mind, unfortunately, things came to a head with Rich and I. He’d decided to start his own business, and he did that. I say unfortunately because, well, things transpired that ruined, what I’d considered, a decent friendship.

In the end though... it was all, really for the best.

Ken and I moved back to “Goguen-ville”, renting some office space in their ‘Building #2’ that had previously been occupied by their custom hydraulics group (also now defunct). The relationship with Bruce was repaired, and Ken and I were back in a groove.

We were focused on development again and really developing some new, and very innovative products.

We built several large ‘add-on’ products for SBT, among them our “LazerPrn” product that used, what’s become the model for many other applications over the years, a true data-driven process, where all of the intelligence (business rule) was contained in the database. Essentially, we had an application, that produced Laser printed Invoices, from within SBT, without the need for custom printed forms.

You might remember, that in 1991. 1992 the PC world was still very much a “DOS” environment, Windows had been released, but as yet had not made significant inroads. This product was pretty well received.

Greg anticipated we’d sell 5,000 or more of them in the first 12 months… I remember thinking we were on the edge of our big breakthrough.

Ken and I also built the product we’d code named ‘Kona’, an intelligent inventory handler, which would make predictive purchasing suggestions, based on orders, sales trends, and economic order quantities.

This project was one more that I saw a lot of potential in. When a customer placed an order, it looked not only at the actual ‘on hand’ inventory, but what had previously been ‘promised’ in other orders, what was already on order but hadn’t yet arrived, as well as the sales trend of the past 30, 90 and 180 days, it would then ‘suggest’, what needed to be ordered each day and could place the orders automatically once they’d been reviewed and approved. Pretty slick stuff to PC based accounting/sales software in the early 90’s.

I’d hoped it would prove to be our ‘killer application’.

While Greg and I managed to build a solid based of nearly 700 SBT dealers (in addition to our 1,100 or 1,200 retail clients), who bought and installed our add-on software for their clients, the actual sales numbers we’d hoped for, planned and counted upon, however, never actually materialized.

Ken and I coded away, day and night, I don’t think I took a weekend off for over a year, trying to just ‘make it happen’, I remember I was convinced if I just kept at it, it would all work out… Despite everyone’s best efforts I ran out of money in early 1993. I (or at least the company) was broke, I had enough money to make payroll for a few more weeks, but that was about it.

I had to let Ken go. It remains, to this day, one of the single most difficult things I’ve ever had to do. Ken was, and remains to this day, far more to me than a business associate. Facing the fact that I’d somehow failed to manage things in such a way that we could continue to work together was crushing to me.

Many folks have told me that it was just, ‘one of those things’… but to me, in my heart, I know that had I done something, anything, different along the way, the results too would have been different.

I don’t know however, that they would have been ‘better’, just different. I blamed a lot of it, at the time, at least internally, on Greg not actually selling what we’d built. In my mind, he always had an ‘excuse’, one more feature it needed, a small screen change he felt was required, something, anything, that meant he didn’t have to sell it.

In the end though, I think it was the result of a lot of factors, most of which were beyond, Greg, Ken, or my control that kept us from the ‘brass ring’.

Shortly after I laid Ken off, in June of 1993, I took a contract gig in Nashville, TN. I worked all day at the gig, and cranked out code for Greg and my company at night…

The CSMA and NDC story… next!

Technorati Tags: - - -
-IceRocket Tags: - - -

Saturday, March 18, 2006

Micro Applications… Reborn. . .

So, when I got home that afternoon after leaving APA, I sat around the house wondering.

Wondering; what I was going to tell my wife, what I was going to do next, why I had gotten myself into another bad situation, and on, and on.

After a few hours, I’d decided to just ‘go it on my own’, explain to my wife that APA just wasn’t right for me, and by doing it on my own, no one else would be in my way, except me.

We had the space where the original kitchen had been, it was plenty big enough for an office, and we’d been trying to decide how to utilize it, so, I went to work. During the day, I’d write code, answer the phone and work on building the business. In the evenings, I thrashed on the rennovations for my "new office".

Things actually progressed pretty well and fairly quickly. I was starting to get close to the money I’d been earning at Omnifax, and the phone was beginning to ring pretty regularly. I’d taken my Novell certification, signed up for an SBT dealership, and started selling a little hardware and I was picking up about one new client a month. In fact, it was beginning to get difficult to get everything I needed to get done, done.

About that same time, I wrote a project specification for a small company in East Syracuse to automate their accounting office (being a former Accounting instructor helps in these situations) and they’d accepted the proposal.

There was just one problem… I’d specified an operating system (OS) called ‘Xenix’, from the SCO Company. It’s a Unix variant, but SBT, utilizing FoxBase+ would run on it, and, it would save about 50% on the hardware portion of the system. Xenix utilized terminals, instead of PC’s for the desktops and it had the added bonus of providing one central repository for the company’s data, making it difficult for employees to ‘walk away’ with proprietary company information

The problem was, I had no, (none, nada, zilch) experience with this OS, installing it, maintaining it or doing anything else with it. I was fairly well known locally as a Novell guru back then… this Zenix stuff was an entirely new world. But, my ‘bravado was still intact and like everything else, I had no doubt as to my ability to figure things out as I went.

Interestingly enough, I didn’t have to. The day after the company accepted and signed off on my proposal, I got a phone call from a fellow named ‘Rich Jeran’. How he’d gotten my name escapes me at the moment, (maybe he’ll Google himself, see this and remind me) but while I hadn’t been even considering hiring anyone, here’s this guy, with exactly the background I need calling me out of the blue. We agreed to me the following day at a Denny’s near Carrier Circle in Syracuse.

I remember that, at the time, I was on crutches, in a leg cast with a broken ankle. You see I’d been helping the North Bay VFD put a new roof on the Fire Barn and landed wrong as I hopped off the back of a flat bed. Not very glamorous I know, but I remember telling him I’d probably be the only 6”2 guy on crutches, with a leg cast and a full beard!

We met and went over the proposal. He spotted a couple problems with my configuration, made some suggestions for better (more reliable) equipment that would cost about the same as what I’d spec’d, and, in short, convinced me that he was exactly the guy I needed to help me with this project.

Rich and I went on to do not only that project, but several more. However, after the first project, he became an employee, instead of a sub-contractor. We added a Xenix server to the office, in addition to the Novell server, another desktop or two and kept adding clients, both Novell and Xenix at the rate of about 2 a month.

Soon, we’d all but out grown that ‘old kitchen’ space and I started pondering renting office space, or adding space to the house.

I knew from previous experience that in order to work out of the house, and not have work take over my life (as it was doing at the moment) I had to create some separation between myself and the ‘work environment”.

I had, and still have, a problem walking away from unfinished ‘work’. If it’s just in the next room, it sort of ‘calls’ to me, I’ll have a thought, and instead of holding on to it, or writing it down, I’ll just walk into that next room and try it out. “Just for a few minutes”, becomes my battle cry and before I know it, it’s 2:30am I’ve missed enjoying the evening with my wife, and I’ll be running on empty the next day.

To create that space, I decided to turn the basement into my office. I had all the cabinets I’d taken out of the original kitchen and decided I could turn that into the ‘coffee/break’ area, and I could turn the space below our living room into a large office, complete with a fireplace. The guy who’d built the house had actually built a working basement fireplace into the masonry for the upstairs fireplace and the furnace.

Once again I began working days in the old kitchen, and nights in the ‘old kitchen’ area. I say *I but in reality, it was *we many nights… if we finished the important stuff early, Rich and I would head downstairs and hit the renovations until he had to leave, some days that was between 5 and 6pm… other nights it would be well past 9:30 or 10:00pm before he’d take off.

In fairly short order we were moving everything downstairs into “dBASEment” as I liked to call it. We added a phone line, got some multi-line phones and set out to ramp up even further. I also hired a ‘runner’ who worked part time and would answer phones, pick up broken PC’s, printers etc.. and bring them back so Rich and I could fix them. He’d then deliver them back to the customers. Rich and I attempted to do as much configuration as possible before we ever left the office.

I felt the time we spent traveling was ‘lost’ time, it was virtually unbillable and every hour I couldn’t bill of his, or my time was money out of my pocket. Oh the fun we could have had, had there been an internet, and broadband access back then!!

Well things were progressing, the company was doing a little better every month, I was always able to pay Rich, and slowly, I was also getting to the point where I was able to pay myself again too. I was a long way from what I’d been making when I hired him, but, I was seeing everything moving in the right direction and in a nice steady manner as well.

I should probably mention here, that at this point, I’d never lost a customer. Every client I had, even the ones I picked up from Omnifax, had all stayed with me. So by picking up a couple of new clients every month, we kept up the volume with new installations, and our residuals continued to grow as well. Things were, in short, going about as well as I had hoped.

I’d inked a deal with the “Sears Business Centers”, Omnifax, Syracuse Computer Store and several other operations locally, we were doing all of their Unix/Zenix work, as well as a large portion of their Novell work. They’d sell the hardware, we’d provide software, installation and ongoing maintenance, it was a great deal and, the business continued to grow.

Speaking of Omnifax… One of my customers was a woman who ran her small business on Apple Macintosh’s. I’d install the SBT accounting system and had it running on FoxBASE MAC. All was fine until her hard drive began to act up, when I determined the problem, I suggested she take it back to Omnifax and let their crew get it right. She did just that. A week or so later, she called me and asked if I knew what was going on with Omnifax, which had become CSC after the sale, as when she’d gone by to check on her Mac, the place wasn’t open.

I got on the phone, no one answered, no message, very strange. I had to meet that afternoon with a client less than a mile from the place, so I decided to stop by. Imagine my surprise, not only was the place not open, the doors were chained and padlocked!! No note in the window, and, when I peered inside, the place was totally empty!! I mean empty… everything, except the walls and carpet was gone.

Over the course of the next several days, I heard from some of the old crew and discovered that CSC had emptied the place out, in the middle of the night. The employees arrived for work to find the place locked and empty, not even a notice of any sort!

Somewhere, back in that place they call the ‘reptilian’ brain, I suddenly felt justified in splitting when I did, that it was all somehow “in the plan”. You see, it had only been six, maybe eight, months ago that I had left.

Most of the folks from Omnifax landed at the other stores, and continued to call us. Things were definitely on the right track.

Until the day that Bruce Goguen called. You, my loyal, long term readers, will remember my post about that period. If you haven’t read it, or you’ve forgotten, a good part of my days as a “Madman” are posted here. I’ve got some additional memories to add to that, and I hope to have those posted tomorrow!

Feel free to drop me a comment, let me know what you’re thinking. Honestly, reading your words helps me, find mine!

Technorati Tags: - - -
-IceRocket Tags: - - -

Thursday, March 16, 2006

APA, a short, but interesting step. . .

So, here I was, once again packing my life into banker’s boxes, putting those boxes in the back of my truck and heading for a “new home”, professionally anyway. I was now the Director of Application Development, in a real development house…

I recall starting off at APA (which stood for “Application Programming Associates”) with great hopes. Chuck took me around the shop that first day and introduced me to the team.

It was an eclectic bunch, comprised of graduate students from Syracuse University, some regular programmer type folks, varied experience levels, along with varied business and academic exposure as well.

Clark and Chuck (Gronsbell), really had gathered a very good mix of talent, a group that had all the makings of a powerhouse development team.

The first few days, I spent most of my time getting settled in my office, becoming familiar with the projects APA was working on and getting a list of the ‘punch lists’ from Chuck for all the projects.

I personally took over a rework of an inventory management project they’d done for Agway (a large farmer’s cooperative). Most of the work involved performance testing and addressing coding issues that were negatively affecting the applications performance.

Most of the rest of the team was in the middle of a project for “West Coast Life”. They were developing a system that was intended to be distributed to the company’s agents to assist them in providing information to the agents in the sales process.

It was to be called “PEP”… the Producer’s Electronic Partner. It had very progressive features, and the company wanted the application to be as ‘state of the art’ as possible, within their budget.

One of the first meetings I held with the developers centered around some design, what today we’d call UI (or User Interface), issues. In that meeting I sketched out an idea I had for how the agent would interact with their prospect list.

In short, the idea involved a ‘file folder’ appearance on the screen, which would allow the agents to ‘flip’ through the folders much like they would through the folders in a file cabinet. There was a lot of discussion about the amount of effort, the problems, the hurdles that building an interface like this would present. The meeting ended however, with one of the guys saying he’d take a shot at it.

As I remember, that meeting ended around 10:30 in the morning.
As I was preparing to go to a lunch meeting, that same guy called me to his desk. As I walked up behind him he keyed in a command or two, looked at me and asked: “Was this what you had in mind?”.

There, on the screen, as though I’d coded it myself was the idea I’d sketched out in the meeting. A little less than an hour and a half later… it’s a reality! Obviously, everything wasn’t done, but the ‘graphic’ portion (the part that had been complained about) was, and it looked, and felt, exactly as I’d envisioned it.

The guy, well that was Ken Sheldon. I’ve mentioned Ken here before; we’re about a year short of knowing each other 20 years now. Ken remains one of the single best programmers I’ve ever known. In all the time I’ve known him, there hasn’t been a single project thrown at us we haven’t been able to do. No feature we couldn’t build, every innovation requirement we’ve been handed, we’ve met. If for no other reason, meeting Ken made my stay at APA worth it!

You see, I realized that day, that for whatever reason, Ken and I have some sort of ‘sync’ mentally. He and I found we had an almost innate ability to understand each other at not only a conceptual level, but that we formed similar ‘mental pictures’ from words. Let me tell you folks, in my world it’s a fairly rare occurrence!

So, things progressed at APA, over the next several weeks, I put the Agway piece to bed and began to focus on pulling the team together and setting goals, delivery schedules and so on.

In doing so I had several discussions with Chuck where he agreed with my direction, and assured me he wanted me to run the development show.

One Monday morning, after one of those discussions the previous Friday, I got to work and had about half of the developers show up for work. I tried calling them to no avail, and when I asked the receptionist if she had additional ‘contact’ information for the guys who were MIA, she informed me that Chuck had taken them all to see the client (West Coast Life) in California, and they’d left on Sunday.

I was pretty upset, here I’d been charged with getting the development effort on track, and half the team was gone, and Chuck hadn’t even felt like it was important to let me know what was going on, but, he had let the receptionist know.

I waited until they all got back, and had yet another discussion with Chuck, where I explained that I understood the need to make the trip, bring the ‘dog & pony show’ to the client, make a show of force and all that, but, that if he wanted me to take responsibility for hitting the deadlines, he simply couldn’t do that, especially without letting me know.

In the end, Chuck agreed, and promised to keep me in the loop with respect to this sort of thing and I reaffirmed my commitment to him, and the company.

Imagine my surprise, when, a couple of Mondays later I get to work, and once again, about half of the team is missing.

The process pretty much was repeated, except this time, when the receptionist told me where everyone was, I said: “When Chuck calls in, you can tell him he’s going to have to find someone else to run this show.”

With that, I packed my stuff up, loaded my truck once again, and headed home, no job but a list of clients. I was fairly sure I could “make eats”.

The APA saga is one of those, “what could have been” things in my life. Ken and I have talked about it often.

Chuck had the ‘sales gift’, and he was technical enough to understand the complexities, time and value involved in developing large scale applications. He had the ability to not only find, but to close, very big development deals. He would have made a perfect counterpart to my ability to bring project to product.

In a different time, had I not been fresh off a ‘burn’ at Omnifax, I might have stayed and worked things out with Chuck. I mentioned before, in an earlier post, that he and I were a lot alike, and we were. We were both very much ‘take charge’ guys, and neither of us had much flex when we made up our minds. If we had, or maybe if “I” had, things might have turned out differently for both of us.

Next… Micro Applications is ‘reborn’. . .

Technorati Tags: - - -
-IceRocket Tags: - - -

Monday, March 13, 2006

Omnifax Days (Part #2). . .

Omnifax Days (Part #2). . .

So, things were changing, yet again, and this time I wasn’t moving forward in a design or development way, but getting a chance to stretch my management ‘chops’.

The first thing I did was start reviewing the financial state of the company. Up until this point, I had no access to, nor interest in, Omnifax’s financial state of affairs. I’d been very happy, coming to work, doing what I loved to do, and, getting paid, what I felt was, well, to do so.

Imagine my surprise, when on ‘running the numbers’ I discovered that all the accepted financial ratios, things like:

current ratio = current assets / current liabilities
Quick ratio = (Current Assets - Inventory) / Current Liabilities
NWC = Current Assets - Current Liabilities
Debt Ratio = Total Liabilities / Total Assets
GPM = ( Sales - Cost of Goods Sold )/ Sales

Were each far below, or even inverted in some cases, from what you’d expect from a healthy company. (go here if you want to lean more about these ratios).

I asked Rick to go to lunch with me so we could “discuss some things”. Over lunch I explained that I was very concerned about the financial state of affairs, and that I believed if we didn’t do something, and quickly, we’d be unable to meet payroll in less than 60 days.

He tried to play it off, but I hung to my beliefs and in the end he agreed to let me do what I felt needed to be done. He also informed me, at that same lunch meeting, that he’d like to sell the company and if I helped him get it back on stable financial footing so he could, he’d “take care” of me, for doing so.

There was a lot that needed doing, and I was not very popular for the next several months. There were two things in particular that would be crucial to our success, or failure.

First, I secured the inventory room and installed a person in the ‘cage’ and made it his sole purpose in life to make sure that every single item that left that room, had an invoice already issued for it. You se, we had an inventory “mysterious disappearance” issue, inventory would come in, and go out, but, in some cases it was gone and there was no record of what had happened.

I truly believe it was more a ‘screw-up’ issue than theft. These were very busy times, many days the sales reps would actually load PC’s into their car or truck to drop off while they made a sales call. It was deliver, or die. If you could get that PC, on the desk first, you were most likely to get the sale. Unfortunately, in their haste to be on time, be first, they would often plan on invoicing everything at the end of the day… and humans, being human, would sometimes forget to do so.

The second item required me to get on the phone with our bank, and our major creditors (like IBM) and secure arrangements to not get our inventory supplies cut off, or our credit line halted while we worked to get out of this situation.

The bank was fairly easy, IBM however was a bit of a stretch even for a ‘talker’, ex-salesman like me. I remembered though some things my Dad had taught me during the “tight money” times at National Auto, and that was, that all suppliers simply want to sell their products, and, get paid. If you appeal to these two basic facts, and present a plan that’s feasible, you’ve got a shot.

In the end, I proposed to send IBM a check, every week, which would chip away at any existing debt, and, also pay toward any additional shipments. The goal being, that at the end of six months, we’d be 100% current with them again. In short, they bought in. Our ability to order product was restored, and we had a chance.

Things were moving forward, each week our financial numbers improved and our ‘draw down’ on the credit line got a little smaller.

About 60 days into all of this, the bank demanded a meeting with us. Rick and I headed out to Rochester and took that meeting. In short, the bank demanded we hire a ‘controller’ and that they would let that person know what they wanted to see each week. We agreed, what else could we do? If we hadn’t agreed, the bank would have called the credit line, and the game would have been over.

The controller we hired was competent, very much so in fact. She made short work of compiling not only the numbers for the bank, but also the numbers I wanted to see, and handling the payment agreements with our suppliers. I was happy with our choice as it freed me up to go “make some money” and finally spend less time crunching numbers.

Things were looking up, and I really felt like I could see the light at the end of the tunnel.

The whole Omnifax period went from late 1984 through mid 1987 (I believe), some additional points of interest…

I developed applications for The Carrier Corporation, Mutual of New York, The Pillsbury Corporation and a large HairCrafter’s franchise (Sevco)

I was also appointed to the Ashton-Tate (dBASE) dealer advisory board in 1987. I recall that being a huge, personal, event for me. That this company, who’s product I used to make a living, would appoint me to their advisory board, was, in a word, well, flattering!

It was also a nice feather for the cap, and a bullet I could pull out when asked “why” a company should think I was the best for the job, “Is my competitor on Ashton-Tate’s dealer Advisory board?” ended a lot of “who is better” types of discussions.

I’d also begun to incorporate both FoxBASE and a product called ‘Clipper’ into my xBASE tool box. The product ‘dBASE’ was beginning to show its age; Fox and Clipper were taking direct aim at developers looking for 100% compatibility and additional speed. Fox had great speed and the advantage of working in DOS, Unix/Xenix and on Mac’s, Clipper had the added advantage of the blazing speed and source code protection of a compiled application.

The toolkit and client base were growing, as were the troubles within Omnifax.

One evening, while my wife and I were hosting a little ‘get together’ at our house, the phone rang.

It was Rick, calling from “Hutchings Psychiatric Center” in Syracuse. He started explaining how his wife, and Chris (remember Chris from earlier in the story?) were having an affair and had conspired to have him committed. He was asking me to come and sign him out. I told him I’d be there as soon as possible and we hung up.

Now this was way before ‘portable phones’ and our phone was smack dab in the middle of the living room… There was no playing this off as everyone there had seen the look of concern, bewilderment and shock on my face.

As I started to explain what was going on, the phone rang again. This time it was Rick’s wife, who explained that Rick had a long history of paranoid schizophrenia, that he’d stopped taking his medications and this short hospital stay was needed, and ordered by his Doctor. She also gave me the doc’s name and number so I could call and check out her story.

I did that. In addition, some other events of the past 10 days began to become clear. Rick had said some extremely strange things in conversation, and one of two of the employees had asked if he was ok as he’d had strange talks with them as well.

So, Monday morning is coming and we’ll have to tell the employees something. Rick’s wife and I agreed to just say he was in the hospital. However, when she came in to address the troops, she told them all, the entire story, in great detail… so much for the ‘plan’ we’d discussed on Sunday.

Things happened more quickly after that (if you can believe it). Rick found a buyer; they dropped in a fairly large cash injection and ended our financial woes, at least short term, and began making plans for the transition.

I was offered, and accepted a management role going forward with the new company, so I felt secure and even a little bit optimistic as these folks sure talked a good game.

The sale went through, but Rick never came up with the “take care of Bill” package he’d promised, stating that he hadn’t been able to get as much for the company as he’d hoped. (Note to myself, get it all in writing in the future!!)

Then, about 4 or 6 weeks after the sake was complete, a local development house started calling me and “courting me” to come to work for them as their application development director. I kept turning them down, they kept up the talk. In the process I actually came to like the two brothers, Chuck and Clark Gronsbell, we had a number of lunches and dinners together. They’d explain their vision, how they intended to achieve it and why they felt I was a big piece of their plan, in the end I promised them that if I changed my mind I’d let them know.

Two weeks later something happened to change my mind for me.

My paycheck arrived, and when I checked the totals, I was shocked. My commission earnings were “zero”! I knew I’d booked at least enough to have close to a grand due me, and, I figured it was some sort of oversight. Imagine my surprise when I called the front office (they were in Buffalo, NY about 6 hours from Syracuse) and the president informed me that they’d decided that my ‘package’ was too generous, and were eliminating my commission structure.

A rather heated discussion followed, where I informed them that they could not, change the contract terms of my employment, without my agreeing to the new terms. In short, I got the money they owed me, but, the commission piece of my compensation package was history.

I picked up the phone, called Chuck at APA and made arrangements to make the move to his company. We agreed on money, and a start date a little over two weeks in the future.

When I went back to work, I took Rick aside and explained my decision to him. He told me he fully understood, and that he was surprised I’d waited this long. Rick called the front office to give them the news.

That afternoon, the big guy himself called to tell me he’d be at our place in the morning as he didn’t want me to make a hasty decision. I told him it hadn’t been hasty, but well thought out, and to save himself a trip as my mind was made up.

I can remember his response like it happened today. “Bill, my friend, nothing is irrevocable.” I also remember mine… “First, you and I are not friends, second, if we were, you’d know that when I make up my mind, it *is* irrevocable!”

He made the drive anyway, he didn’t change my mind, he discovered that some things are irrevocable and further, that when you run your mouth too much, a two week notice turns into 2 minutes!

As I bring the Omnifax story to a close, I should also note that it was this same turmoil, the seeming chaos I lived in then, that also helped me understand the ‘hole’ I mentioned earlier.

That hole, was the place my Dad used to ‘fill up’, when he died I remember feeling that hole open up but sort of forgot about the source until it began to nag at me. Once I identified it, I spent a long time ‘soul’ searching for the reason I felt so empty inside, along with this ‘directionless’ feeling that seemed to go everywhere I went.

I know some of you are thinking, damn, he sure got a lot done, was blessed, or finding some other adjective to describe what was going on in my career… the stone truth is, I had no clue, no plan, I felt like a leaf in the wind most days.

As I prepared to leave Omnifax, and had one of those “I should call Dad” kind of thoughts, when it all hit me like a brick. I’d been living my life, up to and including that very instant, with but one purpose, to hear my Dad say, to me, just once, that he was proud of something, anything, I’d accomplished.

He died before he ever did, that he never did still causes me to get emotional, even when just typing it as I am now my eyes will blur up with tears. The sad truth is, I do know he was proud of me. At his funeral his friends all told me how he used to ‘brag on me’ to them, and they all knew most every detail of my “accomplishments”. Later, in discussions with my siblings, we’ve all shared that Dad would tell us, individually, about the accomplishments of the others, but never tell us directly.

I’m glad I figured that out, and that it didn’t take years of therapy… But, I’d give up virtually everything I’ve done, to have just heard those words “I’m proud of you son” just once, from his lips.

The realization however, really changed my views on many things. Most importantly, now I had an even tougher audience, myself. Instead of working towards some elusive, unobtainable target, I now had immediate feedback from “me”… Trust me, being proud of myself (pride being one of the seven deadly sins and all) was (and is) a much tougher goal than ‘hoping’ someone else would be proud of me,

The lesson here, if there is one, is that, if you’re proud of a loved one, tell them. Tell them sooner, rather than later, you may not get a later. They however will get to live a lifetime with, or without, the memory of your sweet words.

APA-land is next!!

Technorati Tags: - - -
-IceRocket Tags: - - -

Sunday, March 12, 2006

Ominfax Days (Part #1). . .

I remember like it was yesterday that first day at Omnifax. I was just one huge bundle of nerves and emotions, excited and anxious all at the same time.

You see, about six months prior to this all happening, my wife (by the way, the ‘wife’ at this time was my 1st wife, not Maryan, Maryan and I have only been together since 1999) and I were having dinner at “Captain Ahab’s” and the Omnifax building was across the street. That night as I looked out the window, at that building, I thought, out loud, that working there would be like a dream come true.

Now here I was, just a few months later, walking in the door as the newest employee and with a ‘sweet deal’ salary, bonus and benefits wise as well. Like I said, I was very excited, and yet incredibly anxious I wouldn’t be able to live up to my own reputation. Strange I know, but that’s how I felt all the same.

The first thing that happened, once I’d gotten the nickel tour, shown where my office was (yes I had an actual office!!) was that Chris, the president, and I sat down and devised an advertising campaign to fill up the classroom and begin earning us all some money.

The basic deal we’d struck about me coming th work there was that; I’d bring my customer list with me (and take it with me if I left) and do work for Omnifax customers as well, that work would primarily involve training (Lotus was the big package at the time and everyone wanted to learn how to use it), and developing applications in both dBASE and Lotus for those customers who needed and could afford it. I would also help the sales staff make appropriate hardware recommendations when required, but that was a very small part of the job.

I was to be paid a base salary of about twice what I’d been earning as a business school instructor (around $30K/year as I recall), and, would get 25% of the gross billing for the classes and custom programming. If all went well, the way I figured it I’d be earning about $50K/year, receive health, medical and paid time off type benefits, along with wonderful working conditions, including the latest and greatest computers to work on.

Things went very, very, well in the beginning. I remember spending about a month and a half,, every day, 5 days a week at Mutual of New York (MONY) training their executives in Lotus. Some classes would only have 2 or 3 folks in them, and that was because no executive wanted to be in a class with anyone except other execs at identically the same level on the corporate ladder. Sounds silly I know, but that was how things were, there, at that time.

So for six weeks or so, for $750/day, instead of “going to the office” I went to the MONY towers and spent the day training their upper echelon in the finer points of spreadsheet usage (keep in mind that 25% of day rate, a little over $185/day, was my ‘commission’ in addition to my salary!)

I was in heaven economically. I was finally earning like I’d heard you could earn in the IT/IS business… I was really feeling like I’d arrived. I wasn’t spending Sunday mornings reading the want ads and dreaming of earning $30K or more a year, I was living it! Life was good!

We used the money wisely as well. We paid off debts, fixed things around the homestead that had gone wanting for lack of funding, removed ‘patches’ and either properly repaired, or replaced things. I was finally feeling like things were coming together for me.

Yet, despite all the great things that were happening, I still felt this ‘hole’, an emptiness that I didn’t know how to fill. It seemed (to me) that the better things went, the bigger the hole grew.

I got up every day though; I was always the first one in the building in the morning, and almost always the last to leave. The only other guy there, who was ‘cranking it’ like I was, was Phil Roberts, the service manager. He and I became pretty good friends during the time I spent at Omnifax, often combining our talents to resolve customer issues quickly and effectively.

He taught me more about hardware, I showed him things about software, and we had fun, and were making money… how great is that?

Phil and I became two of the first Novell (one of the first networking applications for PC’s) certified guys in the NorthEast, and with the arrival of IBM’s new ‘PC-AT’ in 1984, networks were to begin playing a big role in the future of not only PC’s, but the software we wrote for them. Phil and I got Omnifax set up as a Novell authorized reseller (the first in Syracuse) and the very first network we put in place was at Omnifax itself.

We were all having fun, making money and working a huge number of hours. I remember though that with as much fun as we were having, no one was watching the clock.

Too much fun as it turned out.

Chris, well he got accused of ‘harassment’ by one of the women that worked there, and Rick summarily fired him. For what it’s worth, I never understood the ‘charge’ as there was plenty of ‘harassment’ going on from all sides, hell the girls would pinch my ass when I bent over the file cabinet! It was all in good fun, or so we all thought until this happened.

The next day, as Rick was explaining to me what had happened, and telling me his plans for a replacement for Chris, I looked him in the eye and said: “Well, I better start looking for another job now, if that’s your plan”

As I recall, Rick looked at me and said something to the effect that he’d wanted me for the role, but, he didn’t think I’d accept it. We talked some more, I told him I didn’t really want the job, but, if I wanted to continue having a job (I really didn’t think the other guy could do the job) I didn’t see any other choice.

So with that, I went from “Business Consultant” to became the “Director of Operations” for Omnifax. . .

What I discovered, and happened over the next few months next was beyond anything I could have imagined . . .

Technorati Tags: - - -
-IceRocket Tags: - - -

Saturday, March 11, 2006

A slow but steady start. . .

Over the course of the next year, I continued to crank out work for Beck’s at around 20 hours a week, well below his $2K monthly threshold, yet high enough to make an actual difference in the household budget, as well as to keep Glenda (and therefore Bill) happy with the speed with which her ‘wish list’ was getting filled.

I also picked up 4 or five additional clients, the Pillsbury Corporation, a Waterbed Chain store (Master Bedroom), and started sub-contracting for at least three of the local computer stores for their smaller projects. My expertise with dBASE, and my reputation as a consultant who delivered, was growing.

Things were going well at school too, I’d started teaching an evening class every semester on the nights I wasn’t going to MBA classes and had become pretty good friends with the “Evening Dean”, Gary McGinnis. He and I would go out after work on the nights I taught, have a beer or two and plot our futures.

Me, I was having dreams of my own software ‘empire’, and Gary wanted a nice comfortable ‘corporate slot’ to fill.

In January of 1984, things really started to change, and quickly. Gary left for a job as a trainer at “Omnifax” a local computer store; I was appointed Evening Dean in his place along with a nice salary bump (a couple thousand a year as I recall).

I had a run in with an instructor from my undergrad days that was now teaching (as a side job) in the grad program I was in… It seems that when he found out I was “Evening Dean” it ruffled his feathers in the wrong direction, or, at least that’s what I thought at the time. It became obvious, and he admitted to it, that he was expecting more from me, than from the other students… and to me, it seemed no matter how hard I tried, it wasn’t enough. I dropped his class, and decided to put the graduate degree ‘on hold’ for a semester.

Despite the set back in the grad program, things were still very busy. My phone was ringing at least twice a week with someone wanting me to meet with them and discuss writing an application or two, and I was usually too busy with my existing customers to even think about taking on more work.

Then, in early May of ’84 I got a surprising phone call from Rick Davis. Gary had left the training position at Omnifax, and had suggested to Rick (the owner) that I might be someone he should talk to.

So we talked on the phone a couple of times and agreed to meet the following Tuesday and see if we could find a mutually beneficial way for us to work together.

You see I remember it was a Tuesday, because on that morning, as I was getting ready for what I saw as the single most important interview of my life, I got “the” call.

It was my brother Jim, and my initial joy at hearing his voice quickly faded as the first words out of his mouth after “Hi” were: “Bill, Dad died last night.”

I remember I literally sank to the floor, all the strength gone from my legs, and heard myself asking “How, what, this isn’t funny!” and a hundred other inarticulate syllables.. as I tried to hang on to my sanity. Dad hadn’t been ill, he’d just had a physical, I’d talked to him Sunday night… everything was fine… and now it wasn’t.

I hung up the phone, booked the first flight I could get out of Syracuse to Chicago, called Omnifax and left a message that I wouldn’t be in for the interview, that there had been a death in the family, that they should just go ahead and do whatever they had to do. I also called the school, claimed some personal time, packed for the trip and then called my wife.

I explained what had happened, that I needed to get to Chicago and help Mom sort out her financial affairs ASAP, and then bring her home for the wake and funeral. She offered to meet me at the airport and go, but, I felt this was one of those things I needed to do, alone.

The next week, maybe 10 days was a blur. I flew to Chicago, we got her financial affairs in order, then we drove back to Ilion for the funeral, and then we drove back to Chicago (Schaumberg actually) after the funeral so she could wrap up whatever else she needed to wrap up, get the house on the market, and so on.

I drove a rent-a-car back to Syracuse, as she’d given me so many of my Dad’s suits (we were virtually identical in size) that it was just simpler to drive. I may have driven home regardless, as I didn’t really want to be around people then; I wanted solitude, some time to just let it all sink in. Twelve hours pounding an interstate slab is just the ticket for me, when I’m feeling like that.

I got home, went back to work and just struggled to get through the day. When I was able I called Omnifax to follow up, but, Rick was out and I had to leave yet another message. I was feeling defeated, like a ship that had lost its sail or, maybe more to the point, its rudder… I was adrift…

A day or two later, when I got home from work, there was a message from Rick that said, essentially: “The job is yours if you want it, stop in any time tomorrow and we’ll talk details”

Three weeks later I moved myself, my clients, and what I thought was my future, into Omnifax Computer Stores. I was officially their “Systems Consultant”, me, who four years prior was making a living turning a wrench, was now an 'on-board' consultant for the largest, and fastest growing, computer store in the area!

Like most things in my life. . . it didn’t turn out exactly like I’d envisioned it would.

More on the Omnifax days… tomorrow.

Technorati Tags: - - -
-IceRocket Tags: - - -

Thursday, March 09, 2006

The Journey continues. . .

Well, I got a hold of the new PC, a printer and that copy of dBASE II, that fellow teacher of mine "Nick" (that I mentioned yesterday) brought it all to school, and we swapped it from his car to mine in the parking lot.

I already had a small ‘computer room’ set up at the house in a spare bedroom that was home to my Commodore 64, but, with the room I was going to need for the new equipment I set up some new space in what, up until this point had been a breezeway between the house and the garage.

As I recall I had everything set up, and ready for me to get down to work, over a couple of long weekend days.

I’d like to tell you I had some sort of innate, or intuitive sense for dBASE II. Or possibly that I was some sort of instant dBASE prodigy, it would have made this story a little more interesting I think. However, that was not the case, reality in fact, was quite the opposite.

I’d spent a couple of years, writing programs in BASIC, COBOL, Assembler and RPG, the one thing all of these languages had in common, was that if you wanted to open a data file, and ‘read’ the contents you had to tell the program what the file looked like, inside.

In COBOL for example, you have to do something similar to:
COBOL Sample

01 StudentDetail.
02 Student_Id PIC 9(7).
02 Student_Name.
03 First_Name PIC X(10).
03 Surname PIC X(15).
03 Middle_Initial PIC X.
02 Date_Of_Birth.
03 Birth_Day PIC 99.
03 Birth_Month PIC 99.
03 Year_Of_Birth PIC 9(4).
02 Course_ID PIC X(4).

I’m almost embarrassed to admit it, but after two solid days of scouring the manual for a way to describe the file, I remember thinking, “Could it be this simple?”

It was, to open the “StudentDetail” dBASE table (data file) all it took in the language was:

USE StudentDetail

That was it, the file was open, and miraculously, to me, somehow the computer knew what each of the pieces of data in the file were; what they contained, and how to allow, or not allow, me to process that same data.

So folks, that’s where it all started, me sitting in my “breezeway turned computer center” drinking coffee, smoking cigarettes into the wee hours of the mornings as I struggled to understand enough about this new language, and all of it’s ‘high tech’ features to actually deliver, what I’d promised to deliver.

Something else worth mentioning here, is that I’m doing all of this learning on my new customer’s computer. The idea today, that any sort of programmer would ‘need’ your specific computer to program it for you is beyond funny. The odd thing is, back then, it was almost expected that all the programming would be completed, and installed, before things were delivered.

So, for the next three weeks or so I was a virtual hermit. I’d get home from teaching school and hit the project. I’d take a break when my wife got home from work, we’d have dinner, talk a little and then I’d utter the infamous words of virtually every computer nerd/geek I’ve ever known “I’ll be back in a second, I just want to try out this idea I have”.

The next thing I’d know, it would be 2:00 or 3:00am, my wife has been asleep for hours, I need to get up for work in a couple of hours and am desperately needing sleep.

That was my life, for about three weeks. At the end of that time, I had a working invoicing system, that did everything the client said it needed to do, and, that I hadn’t been able to ‘break’ in three nights of trying. I was ‘ready’, or as ready as I was ever going to be, to deliver my first ever customer project.

I went to bed, visions of a “big money” future dancing in my head. The next morning I called Beck’s from a coffee shop and set up to deliver the system the next day, a Friday. I don’t remember why now, but it was not a school day, so I was able to get in there fairly early in the morning around 10:00am I think.

When I arrived, computer, printer, monitor etc in tow, Glenda had cleared a space for everything, and I proceeded to set it all up. While I was doing that, she went on to tell me that Mr. Beck had told her NOT to do any invoicing manually, that since I was bringing the new computer system, why do everything twice… Nice, no pressure in that little statement.

Then again, for whatever reason, I don’t remember being at all concerned at the time, I was certain I had all the bases covered.

I didn’t.

The first hour that Glenda and I worked on entering the weeks invoices, I spent more time making changes, and ‘fixing’ problems than we spent actually entering anything. In the second hour things went a little better, the mix was about 50/50, and for the next two hours things continued to improve until in the fifth hour she entered invoicing information for a full 60 minutes and all I did was watch.

Eventually Glenda announced she was finished entering all the runs for the trucks for the week and we now needed to print the invoices.

I remember, as they were printing out, that Bill Beck walked in. He looked at the first few pages, and then asked Glenda what she thought. I know I was thinking that she was going to really complain about all the ‘extra’ work she’d had to do as I worked on the program in between entries… but, instead she said: “This is great, it only took us 5 hours!!”

Bill smiled, looked at me, shook my hand and said “You work with Glenda, get her what ever she tells you she needs, just keep your bill to me under $2K a month”.

He looked at Glenda and said: “Write him a check for every thing we owe him, including today”.

He thanked me one more time, and with that he was gone.

Glenda wrote me that check, for all of the equipment, 90 hours of my time at $20/hour, and handed me a folder with the details for what she wanted to do next.

I was driving back home 10 minutes later, in some sort of daze. I couldn’t believe what was happening; I had checks in my hand for nearly $6,000!! A little over $2,500 of which was MINE, after all the expenses had been paid!!

It may not sound like a lot now, but to a guy who was making $16K a year, this, was the “big time”. Not only that, but, from what he’d just told me, I’d be making somewhere in the vicinity of $24,000 with them in the next 12 months!!

When I got home I did two things, first, I called my PC connection (Nick) and ordered myself one of those PC’s exactly like the one I’d sold Beck’s, second I called our favorite local restaurant and made dinner reservations!

It never occurred to me that Beck’s would ever want someone else doing their computer work, I know now, in retrospect, that I was naive, that the odds of ‘losing’ a client are much higher than keeping one. At the time though, it just never even entered my mind.

I continued to do work for Beck’s for the next 11 or 12 years, in fact, if I was still there and Bill Beck hadn’t retired and closed up shop, I’m as certain as I can be, we’d still be doing business together.

Oh, one last thing... The computer in question was a "Corona", 64K of memory, 2 360K 'floppy' drives (back when floppy meant it actually 'flopped' when you waved it around), a 'high tech' 13" amber monitor and MS-DOS, I still remember we used to keep the programming on Drive "A" and ALL of the data on drive "B".

The next leg of the journey… Micro Applications begins to grow

Technorati Tags: - - -
-IceRocket Tags: - - -