Pencils Down

This weblog is about my experiences in software development

Wikipedia defines ageism as “stereotyping of and discrimination against individuals or groups because of their age”.   I know we all think we are still the hotshot twenty-something programmer just out of college, but reality is a little different.

There is a programmer on our team that has 20+ years into the company. Unfortunately, most of that time was spent on archaic versions of C on non-standard operating systems. BTW, the system in question is still in use in the field.

The problem came up when she transferred to our team. We are all Java, fairly leading edge type of stuff. She had a very hard time coming up to speed. It got to the point where she has been placed doing non-programming assignments for the team.

I think this has more to do with her age than anything else. I know she is just as much at fault for not keeping up with the industry, even as other projects in the company started to embrace Java. I also think the company is at fault for not pushing her in the corporate direction sooner.

So, now, on the surface, it looks like an older employee is being pushed aside. It sure smells a lot like ageism.

This is a really ugly exception thrown by Oracle from the bowels of Hibernate. In my case I had just added a table to the mapping so I at least had some idea where to look.

Looking at the integer values in the table I went through and verified each as correct in the db, mapping, entity and sequence. No luck there.

Poking around the internet though told me the error probably had nothing to do with a LONG mapping and could be ANY size mapping on any field. It’s a generic sizing error.

Luckily the table I created only had a few fields so I was able to narrow done the problem pretty quickly. In my case a VARCHAR2(4000) was attempted to be stored with much more. So, the String in the Java entity had to be controlled to make sure it was small enough.

It’s not much, but thought I would pass the info along and maybe save you some time.

It occurred to me the other day that a big project is doing the Wrong Thing the Right Way. So, their process is great, but the project is dying off because they are doing the wrong thing, e.g. not meeting performance goals.

You would always like to be on a project doing the Right Thing, the Right Way, but I don’t get the impression that happens very often. I wonder if it’s just a matter of resources. Upper management is in the typical three-point dilemma: time, resources or features and skimps on at least one.

To fill out the matrix you can be on the Right Thing being done the Wrong Way. This would be a good project, but you aren’t following any rules. I think many successful companies work this way: get it out the door, now!

Then there is the worst case: Wrong Thing the Wrong Way. This kind of project is a killer: try as hard as you can and nothing is ever correct. Worse I think such projects put a big scarlet letter on you for the duration of your employment at a company.

Some jerk out there has got a simple HTML frame site.  One of the frames sources different pages within my site.  When the site is displayed it looks like he has got something useful.  I know his site is indexed as having that content (as well as mine).  I am getting the one-way link, but it still bugs me.

I have tried some of the common workarounds, such as forcing the top part of my site to be the same, but given it is written in an old, obscure CMS I am kind of stuck until I get rid of the CMS.  Changing CMS is not easy.

Any ideas?

A couple of years ago I worked with this guy in Boston that was developing a pretty neat application for showcasing new real estate ventures.  I was pretty caught up in the glamour of the work and didn’t realize until sometime later that he had no money and no intention of paying me.  I sent several invoices to him, reported him and eventually wrote off the tax loss.

Today I see another neato programming ad on craigslist looking for expertise in GPS location.  Similar to the first time, I had practical experience in the area and started to make inquiries.  Again, not noticing compensation DOE or stock in the ad.

The guy responds with his full name.  Rings a bell.  I reply back he owes me money.  He says he doesn’t remember.  BS!  Looking around the net other people have similar experiences and someone even went to the trouble of creating a blog assasinating the guys character.  He even tries, lamely, to cover his misdeeds with an obscure yahoo email address – not from a dot com.

I know this guy will end up suckering someone else to the party.  There really is no way to stop him.

Although, I have been more cautious since then.  First couple of assignments are really pro-rated, up-front cash escrow.  This probably turns a bunch of people away, but I really can’t afford to work for free.

We had been developing along in a standard environment for some time.  Near the beginning of a test cycle we started to emulate real user behavior, meaning test over SSL.  Also, for some reason the client has adopted IE.

Surprise, a bug I worked on several years ago was still in the latest version of IE.  Specifically, attempts to download a file as an attachment when working over HTTPS does not work.  You get a flashing dialog box or not depending on the exact version of IE and Windows you are dealing with.

Looking around the internet I saw similar screams of frustration that go back several years complaining about this.  Looking around the Microsoft site you eventually figure out what happened: there are (at least) two parts of IE development.  One part is concerned with things like downloads and another is concerned with security.  The download folks need to stuff the file somewhere before it’s downloaded to the browser.  The security folks say WHOA – there is no place for that file to be stored.  Obviously, this kind of divison of labor does not exist at Mozilla as the operation works as expected.

So, the resolution is to create a share url, stuff the file in the share, then present a dialog box to the user saying something like “Click here to download your file”.  (Ever wonder why most bank downloads work this way?)

Couldn’t an IE lead at Microsoft bang heads until they cry uncle and ‘fix’ the bug?

So, for as long as I have been contracting, I always went on 1099 contract.  I usually have a couple of different clients, so satisfying the IRS rules works.  A primary reason for doing so was the ability to write off expenses.  The largest expense has been and continues to be health insurance.

However, as part of Obama’s health insurance program I think ALL employees must be provided health insurance.  A W2 contractor is an employee by tax law definition.

So, does that mean W2 contracts now come with the automatic assumption of health benefits for the contractor?

We have recently run across a couple of situations that are really batch operations.  You know read N records of type Y or write M records of type Z, all within a nice Hibernate session/transaction of course.

If you do the brain-dead coding looping over calls to object.setX(), object.save(), you are making a round trip from your logic layer all the way to the database (including the cache) for every loop step.

There is also the slight problem that you may run out of memory with a large operation as all of this has to sit in the cache until flushed out.

Looking at some literature points to the Hibernate batch size, but others say this really doesn’t work.

Others are more extreme and point to using raw SQL to perform your batch.

Why aren’t there batch calls sitting in Hibernate?  This is not a new persistence problem.

I was momentarily assigned to a secret project, as in DOD clearance type of work.

While there I was told that the tools being used on the project were classified as secret.  This is interesting.  If notepad.exe is a tool on a secret project, the the name of the tool itself is a secret and falls under the classification of DOD secret and you are in violation if you devulged such information to anyone out of the project.

So, assume you are working on a secret project, using tools x, y an z for the typical contract of 6-12 months.  On your resume you can not state what tools you were working with during that time.

Further lets assume at the end of that period you are looking for another project.  The current environment in the industry is have you had recent (read yesterday) experience using tools x, y and z.  You can not tell anyone that you have.  Therefore you will probably not be hired or even approached about the position as you do not meet the requirements for the position.

Interesting…

In our group we had a very successful round of user group meetings.  The feedback prior to coding made a big difference in the overall acceptance of the product.  Our experience was then used as a role model for other teams.  Sounds pretty vanilla.

We are in the midst of designing the next release of the software.  The expectation is we would be able to get the same kind of user feedback as the first time.  However, management has decided since the human factors budget is limited and our project is doing well, we will not have any user feedback this go around.  Upon further questioning it was learned that if we were in trouble, on fire, behind schedule, etc… we would be the first in line for this funding.

So, think about this: 

- Teams that are horribly mismanaged are rewarded with all kind of funding (not just human factors).  Although you could argue that management involvement at at detail level in your project is not a reward.

- Teams that are managed well and performing well are short-changed.

What kind of message is being sent to the masses?