Archive for the ‘rants’ Category

Search Engine Optimization

Friday, August 28th, 2009

I think one of the BIG problems is that people GIVE UP on an “SEO project” because it will “take too much time” because they have been given a scary laundry list by an “SEO Expert” and they are unaware that SEO is incremental, and that it can be gradually accomplished, if there is not enough engineering bandwidth.

It may be optimum to roll out everything at once, but it is often not realistic. For some strange reason people may put off a simple fix “because it is part of a larger SEO project” and they don’t get their URLs aging.

To an extent I think this is a product of SEO-mystification, as consultants want to have the biggest project possible.

No wonder they put animals on the covers of O’Reilly Books

Friday, July 17th, 2009

the name has been suppressed to protect the guilty
Job seeking is not all grim.
Sometimes we are supplied with unintentional entertainment.

This is a Lead position accountable for all the responsibilities of developing systems that meet the objectives of new or modified products being developed by the organization, while organizing team members to deliver re-usable well architected solutions. Ideally this individual will have Java, Ruby on Tails and PHP skills in addition to be being proficient in ASP.NET.

No wonder they put animals on the covers of O’Reilly Books!

Sweet Dreams

Wednesday, June 17th, 2009

sweet dreams are made of these
This song keeps going through my head. Everybody is looking for something. It seems that way on the Internet. Don’t know why but my blog posts are seeming to get a lot of attention from the ladies of the night, usually with a .ru domain.

starting to get a lot of these.
For example (deleting the links so nobody gets a virus):
Welcome, Wish to spend quality time with sophisticated young Kiev lady?. Kiev lady. Young Kiev lady will be able to entertain you in her Kiev apartment in the center or visit you anywhere in Kiev. ….

More on adjacency matrices

Tuesday, May 5th, 2009

oddball
So, one of the oddball things about this way of thinking is that essentially you are multiplying two graphs together!.

zero fill
If you have two graphs, one with N points and one with M points (N>M) you can express each graph as a matrix, but zero fill the MXM matrix with extra columns and rows of zeros. This also presupposes that you have chosen a particular one to one correspondence between M of your points.

trivial example
Let there be three points p0, p1, p2 as vertices where the graph looks like this:
p0—p1—p2

OK I said this was a pretty trivial graph. (you didn’t believe me?)

Now we can express this as:

| 0 1 0 |
| 1 0 1 |
| 0 1 0 |

Squaring this gives
| 1 0 1 |
| 0 2 0 |
| 1 0 1 |

mutant graph
Which would be interpreted as a new topology and weighting: putting a self-loop on each point, but with a weight of 2 on p1, and connecting p0 to p2 and bypassing p1!
(Sorry there is no way to draw this easily to with ASCII art, and I am too lazy to do more.)

Now this appears to be more complicated, so we would expect that if we obtained the cube of this simple matrix, it would get even weirder.

surprise
Instead, cubing the original matrix reverts to the original but with weights of 2 on the edges!
| 0 2 0 |
| 2 0 2 |
| 0 2 0 |

            2     2
         p0---p1---p2


And a little computation reveals that alternate odd and even powers alternate, but keep doubling their magnitude. Now this is pretty trivial as far as matrix math is concerned, but it is a really interesting way to interpret the results graphically.

exercise!
The lazy textbook writer commonly ends at this point by copping out with the rest is left as an exercise for the student.

Of course I am extremely lazy but I will note the interesting generalization that many graphs follow this pattern when raised to powers, alternately breaking edges between vertices
and attaching vertices that were not connected on one power, reverting to a multiple of the original matrix on the other, alternate, power.

So for example, a simple tree with root at p0,
p0
/ \
p1 p2

where p0 is connected to p1 and p2 will create the loops and detach p0 but attach p1 to p2.

And a four point generalization for like the above case
p0—p1—p2–p3
will attach the unattached pairs (p0,p2) and (p1,p3) put self-loops on each of then with different weights, and on alternate powers revert to the original matrix (except for scale)!

OK, confirmation is left as an exercise for the student. Heh.

Moral Hazard

Friday, April 24th, 2009

preliminary noises

Much discussion has gone into the concept of “moral hazard” in the present dismal economic downturn.  For those of you whose minds are virginal on this subject, it went something like this:  “They got a loan on a house they couldn’t afford.  Now they are in trouble and they want to be bailed out.  What about me?  I have mine.  Why should they be rewarded?”  the obvious rejoinder being, when all your neighbors are foreclosed, what happens to your property values.

moral hazard 2.0

Since that early phase we are seeing the magnum sized version rating-agencies-insurance-companies-derivatives-credit-default-swaps-CEOs who want to be immune from any accountability.  That is a story, and an interesting one at that, but that is not my story.

dire developments

So that got me thinking, what are the aspects of moral hazard in the development arenaArena is a rather threatening word, redolent of the Colosseum and bloodthirsty crowds and unwilling victims so let’s go with that.  First of all, let’s talk about technology debt.

big ideas

Now I guess we are all familiar with the normal kind:  buy now and pay later.  The same idea can happen in the development arena. The plumbing, the infrastructure, the documentation, the component versions (gems, jars, JVM versions, OS, whatever) can all go to Hades in a leaky barely Styx-crossing boat because there is a BIG THING THAT HAS TO BE ACCOMPLISHED RIGHT AWAY WITHOUT DEFINING WHAT IT IS OR HOW IT CAN BE ACCOMPLISHED.

yuck

Down the road not less well traveled a bunch of half digested projects hit the calendar in a vomitous splat.

Now the conventional wisdom is that the engineers are complete idiots and don’t know what they are doing.  Typically they are not agile enough and not seriously committed to the sprint.

And, like much of conventional wisdom it may even be true.

primordial soup

Of course, this is often produced by barely mulitcellular managers who think that hazy and ill defined tasks that they have initiated are clear if they talk really fast can be accomplished by bargain code monkeys (I find the more open ended and poorly defined a task the more sophistication and initiative (and usually salary) that is required.)

Does this sound familiar?  It is kind of like the previously mentioned system, where somebody who defaults on a half million dollar house is seen as equally responsible as somebody who has lost billions.

dr-evil

At this point the management hazily lifts up its nictating membranes and its collectively reptilian brain slowly absorbs the fact that is in a train wreck that may very well bust up its terrarium.

avoiding blame

Of course their mantra is get it up and going fast and don’t bother about the technical details and please don’t document anything!

the failure of moral authority

Which avoids the problem:  if you do a quick back of the envelope specification you will expose the fact there are logical contradictions in your idea that means that it cannot be accomplished without modification.

Please note that these types talk very very fast.

Another bad sign is that they have listened to the audio book of Agile for Dummies and use the terminology without understanding  a word of it.

grinch_santa

rewards and punishments

To really launch such a situation all you have to do is set the conditions of punishment and reward incorrectly.  This will provide temporary cover to reap the rewards of borrowing against the future, and may insulate you against future consequences.

disclaimer

As this would never happen in real life, this blog post is a work of fiction and bears no resemblance to any persons living or dead.