Punch-Out

May 20th, 2007

Problem: Dead

Purchased a Punch-Out in dead condition.  Got it home, still dead.  Rocking the game and/or whacking the sides a bit got a brief flash of light on it so I went in and reconnected all connectors.  Game then came up right after that.

A little adjustment to the micro-switch arms and the game is playing nicely.  Still need to rebuild the joystick as it is stiff and sticks a bit.

Solution: Re-tighten/reattach all (power?) connectors

A death close to home…

April 24th, 2007

This past Sunday evening (04/22/07) a teacher at my child’s daycare died from a stroke.  Her name was Klara S. and she was a very nice woman and a kind soul. 

While on a prior contract, I had arranged to spend some time once a week with my kid while at daycare.  Klara was one of the teachers that was taking care of my daughter during that time.  I found her to be an excellent teacher for the room as she was very attentive and had great kid-sense, meaning that she was able to keep her eyes on everything while still getting things done.

To my knowledge, she is survived by a husband, a daughter, a son and one grandchild.

All of our best wishes for her family and friends.

Amazing thing with Test Driven Design (TDD)

April 2nd, 2007

At my current place of employment, we had someone come in to talk about some Agile development processes.  One of them was Test Driven Development.  As an example, the presenter explained how scoring works in bowling and then asked the audience to create the code used to implement the scoring.

To make a long story short, both he and the audience started with a brief design phase(!) to design something to do something as simple as keeping score.  I thought this was very interesting, even when hearing some of the other developers as they started to design a multi-level hierarchical design for KEEPING SCORE!

I was reminded of an older idea/post that I had regarding the problems when you combine too much formal education with too little practical experience and throw the resulting person into a production-level software project.  Just like when you give a small child a hammer, everything looks like a nail.  When you give a lesser-experienced developer the task of designing something, you are more likely to get an over-design of something that does not reflect reality and tries to attain perfection instead of practicality.

(That post can be found here:
http://www.jrtwine.com/blog/?m=200407.)

What scares me is that some of the developers that were helping along this heavyweight, over-engineered design may now be responsible for new development efforts. I have always thought that you need to be a coder before you are a developer.  That you need to understand how and why things work in order to make better use of them.  As such, I shudder at the thought of having a group of lesser-experienced developers hitting everything they see with the same design hammer.  Especially having seen first hand what they are capable of with something as simple as a scoring system!

And people wonder why I believe that managed environments contribute to the dumbing-down of the modern software developer…

What is “good software”?

March 28th, 2007

As I am reading a thread on WorseThanFailure (Our Dirty Little Secret), I see a post by “VGR” that states that companies do not recognize “good software”, but rather “finished” or “not finished.”  This is an interesting point.

But a question I would like answered is this – what exactly is good software?  How does one decide that this bit of software is good and that one is bad?  More to the point, since software starts with source code, how do you decide that this code is good and that code is bad?

I have grappled with this question myself, as I am sure others have as well.  I believe I know what good code is.  My education, experience and wisdom are my guides.  But what I believe to be good code is different from what another developer believes to be good code.  Another less seasoned developer may think something else, just as a more seasoned developer might.  So who is correct?

I believe that part of the problem with software today is that there are no common (or otherwise shared) standards for what constitutes good software (or good code which is where good software starts), excluding obvious things like “does not crash” or “does not corrupt data.”

So what exactly makes good code?  Is it…

  • Code that just works, or code that works well?  And what is the difference, if any?
  • Code that is Declarative, Imperative/Procedural, or just well commented?  Is it a combination of the two or all three?  And to that point, what exactly does “well commented” mean, anyway?
  • Code that uses encapsulation as much as possible, because (of course) encapsulation is “a good thing”, or is it code that selectively decides when it is advantageous to do so?
  • ??? What else?  I am sure that many other developers have other criteria…

For each of the items above, you can find developers that will argue for one thing or the other.  Worse, you can also find academics with relatively little to no real-world development experience doing the same, cultivating other future developers with the same thoughts!  This is good or bad depending on your point of view.

So how do we solve the problem?  I am not sure that it can be solved.  Software development is both art and science, and that art part is the killer.  Art is very subjective, and one person’s Picasso is another person’s misaligned jigsaw puzzle.  We may have to learn to all just get along here.

Why Performance is Important

January 20th, 2007

When discussing topics like optimization and performance, there are far too many developers that either believe that performance is not important(!) or that the things taken to optimize the performance of something somehow magically results in making that system less robust.

For the first point, I can not image any developer that has ever uttered the words Damn, this thing is slow regarding their computer or a particular software application running on it, ever thinking that performance is not important. By the fact that you are complaining about somethings performance, that means that performance is important. Or at least, important enough to complain about.

For the second, there are lots of ways to optimize something, and none of them have to directly result in reduced robustness. One of my favorite examples, which is to prefer stack memory over heap memory, can actually improve the robustness of software – it reduces the possible places where exceptions can be raised and thus lessens the chance for exception mis-management to cause problems.

One of the things to remember before opening your mouth to say that performance is not important is to remember that your compiler still optimizes things to the best of its ability. Newer generations of compilers often offer more and better optimization capability as well. Why is this? It is because performance is NOT important, and the compiler writers wanted to just waste time?

When a new processor architecture is made available, manuals that detail that architecture are produced that often specify the best way to utilize that new architecture. Cache utilization, multiple execution engines, out-of-order execution, register allocation, store/load stall scenarios, etc are usually covered in great detail so that all of the capability of that new architecture can be used to its fullest potential.

Again, was that material written just to waste time, or does someone out there know something that you do not – that again, performance is important.

One of the things that today’s developers may often forget is that while their software is running on better hardware, it is also running along with other software applications. For you Windows users, have a quick look at your Task Bar, and SNA area (often mistakenly called the tray). How many applications are you running? Have a look at the process list in Task Manager and see how many processes are really running.

Now compare that value to how many applications you were running simultaneously on previous versions of Windows – 2000, NT, 9x, or even Windows 3.1. As our hardware gets better, we expect to be able to do more with it. But when that many applications are competing for shared resources (CPU, memory, etc.), the specter of performance once again rears its ugly head.

Just like writing device drivers takes a different discipline than writing desktop applications, writing software that has to execute in a shared environment is different than writing software that runs in a dedicated environment. The average desktop developer cannot forget that their software will not be running in an ideal environment, and that just because it works great on the clean demo system, or the developer’s multi-CPU box with 4GB of memory does not mean that its performance is good enough when it hits the target user’s system.

Premature Optimization may not be premature…

January 16th, 2007

There is an interesting thing I am noticing with younger developers – anytime someone mentions optimization, the first words out of their mouths is something about how how the optimization is premature optimization, and is only going to cause more harm than good.

These developers lack a certain wisdom that comes with years of varied experience – once you have experienced something that inefficient, you know how to spot it in the future.

Optimization is about simplicity. Think about it – whenever something is considered optimal, it is usually simplified somewhat from its original incarnation. An optimized interface is usually a simplified one. Optimized code usually takes less steps to do something, and thus is usually less complex; hence – simplified.

From the first Computer Science (or programming) class, the KISS philosophy is hammered in. Keep It Simple, Stupid. The art of optimization is the ultimate application of the KISS philosophy.

Never underestimate or disregard the benefit of simplification, of which is nothing but a better word for optimization. Simple is easier to use, understand and modify in the future. What could possibly be wrong with that?

I want to meet the developer(s) of Sybase SQL Advantage…

December 5th, 2006

Version: 12.5.0.3/EBF 10752 IR/P/NT (IX86)/OS 4.0/Wed Jan 15 12:59:30 2003

Why? Because I want to ask them why it takes SQL Advantage ~16 seconds to process a query that returns 674 rows of ~70 columns each and display them in Grid or Text output, when I have written an application that goes through two additional API layers above the CT libraries, and can do the same thing (even in a Grid) in less than 2 seconds?

You actually have to go out of your way and TRY to write code that slow – that kind of lousy performance does not happen automatically. That is the kind of stupidity that has to be cultivated through bad practices.

I just want to know how someone could write such an app, and consider it suitable for release to the public. I need to know the mindset behind that, so I know what questions to ask potential employees during an interview so that they can be weeded out. I do not even want to sit next to someone like this, for fear of them making be dumber via osmosis.

I can only hope that the GUI developers are not the same ones that implement the underlying libraries or the RDBMS itself…

Just not getting it…

December 5th, 2006

I came across a poster some time ago (I think on /.) that had an interesting signature. It read something along the lines of:

When someone says: Lead, follow or get out of the way, get in the way!

I remember thinking at the time that the poster could likely use some more experience in the real world and that (s)he suffered from a fundamental misunderstanding of how the world works. I was thinking that if you are ever in the above situation where something important is going on, or there is an emergency, getting in the way is the absolute last thing that you should do. I felt that situations like that are perfect times to apply the Universal Assumptionassume that they know something that you do not.

Now, it is a year or so later, and I have concluded… That I was exactly right. There is no reason why anyone in their right mind, when faced with a Lead, follow or get out of the way scenario, would assume that becoming an impediment would be the right thing to do.

Now, there are times when you should get in the way. But the prerequisite for that is actually knowing what is going on, knowing a better solution, and having a means to implement the solution. Otherwise, getting in the way is a sure way to get knocked on your ass.

Best WTF Moments – Correcting the Test’s Answers

November 6th, 2006

In talking with a friend I was reminded of one of my favorite WTF moments – correcting the answers on an interviewer’s tech questions. Once, while taking an interview for a position, the interviewer was going over my answers for the tech questions and happened to mention that one (or two?) of them were incorrect.

When I asked about them it turns out to have been questions regarding the size of C++ objects that have no data members. For example:

class CEmpty { };
class CEmpty2 { public:  void MyFunc( void ) { return; } }; 
class CEmpty3 { public: virtual void MyFunc( void ) { return; } };

So what is the size of CEmpty, CEmpty2 and CEmpty3? My answer was that it was basically implementation defined. The interviewer’s answers said that CEmpty and CEmpty2 had a size of zero, and that CEmpty3 had a non-zero size.

I had answered that CEmpty and CEmpty2 will have a implementation-specific/defined size (IME, a size of 1) and that CEmpty3 will have a size due to the vtbl that will be added to the class, and added that the size of the vtbl will not be added to the implementation-specific/defined size given to otherwise empty objects. (In other words, if the size of the vtbl pointer is 4 bytes, the object size will be 4, not 5.)

The interviewer, being a/the senior developer that I would have been working with or for, did not agree and we ended up with some code snippets being compiled and executed in the VC++ 6.0 IDE. Wanna take a guess who was correct?

It turns out that the company’s CTO decided not to accept me for the position. I was never told why (I otherwise aced the interview, of course), but I was told that the CTO created the interview questions (and answers). Go figure…!

More Stupid Code…

November 3rd, 2006

Here is another example of code that demonstrates a complete misunderstanding of how things work, or at least of MFC and/or the RTL…

char value[256];
::GetPrivateProfileString("section","ValueName", "OFF", value, 256, INI_PATH);
CString temp(value);
temp.MakeUpper();
if (temp != "OFF")
{ ... }

Now, I can understand the need to do a case-insensitive compare of an INI file value.  But we have functions designed to do that!  Never heard of stricmp(…) and its variants?  OK – even if you do not know about the available RTL functions and all you know is CString, never heard of CString::CompareNoCase(…)?

Code like this just demonstrates ignorance, plain and simple.  Oh, and how goes that exception handling for situations where CString fails to allocate memory?  Oh, yeah…  THERE IS NONE!

Yet another real-world example of useless allocation.

Worst… Spam… Ever…

October 28th, 2006

So while browsing through my spam-basket I came across an interesting message that was caught by SpamAssassin.  The headers from that message follow (edited slightly to remove addresses and to emphasise details):

Subject: §Ú¬O¤@­Ó·Å¬Xªº¨Ä¨Ä¤k«Ä.·Q´M§ä¨ë¿Eªº­ô­ô±z³ßÅw¶Ü?¡ð20·³
X-Spam-Status: Yes, score=63.4 required=5.0 tests=BAYES_99, DATE_IN_FUTURE_96_XX, FORGED_MUA_EUDORA, FORGED_QUALCOMM_TAGS, FROM_ILLEGAL_CHARS, HEAD_ILLEGAL_CHARS, HTML_30_40, HTML_IMAGE_ONLY_08, HTML_MESSAGE, HTML_MIME_NO_HTML_TAG, HTML_SHORT_LINK_IMG_1, MIME_BOUND_DD_DIGITS, MIME_HTML_ONLY, MIME_HTML_ONLY_MULTI, MISSING_MIMEOLE, MSGID_SPAM_CAPS, NORMAL_HTTP_TO_IP, RCVD_DOUBLE_IP_SPAM, RCVD_IN_BL_SPAMCOP_NET, RCVD_NUMERIC_HELO, REPTO_QUOTE_QUALCOMM, REPTO_QUOTE_YAHOO, SUBJ_ILLEGAL_CHARS, UNPARSEABLE_RELAY, URIBL_JP_SURBL, URIBL_OB_SURBL, URIBL_SBL, URIBL_SC_SURBL, URIBL_WS_SURBL, X_IP, X_PRIORITY_HIGH autolearn=spam version=3.1.7
Date: Tue, 19 Jan 2038 11:14:07 +0800
X-Spam-Flag: YES
X-Spam-Level: **************************************************
From xxxx.xxxxxxxx@xxxxxx.com.br Tue Oct 24 16: 43:51 2006
X-Spam-Checker-Version: SpamAssassin 3.1.7 (2006-10-05) on xxxxxx.xxxxxx.com
Message-Id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: multipart/mixed; boundary="----------=_453E7B09.452041D8"
To: support@xxxxxxx.com.tw
From: mailto:¼ÐÃD¡G¡m¥¨¨Å°Ï¡n·s¼W¡m»a¤«ªÅ¡n±j¥´·s¤ù¡A¤ù¤¤¦³¦o¸g¨åªº¼é§jÃèÀY¡I³ôºÙ¥L§@«~¤ºªº¤W¤W¤§¿ï%20(¡m¥¨¨Å°Ï¡n·s¼W¥i·Rµ£ÃCÄ_¨©¡m»a¤«)

I can honestly say – that has got to be the worst message I ever received.  Most of my spam emails never get above a spam-score of 20!  What gets me is that the sender of the message somehow managed to completely mess it up.  So this is an example of the fourth (I think) rule of software development – always test what you are doing (or trying to do)!

I mean, come on now… If you are stupid enough to construct a message that sets off that many spam-traps, you really are an idiot!  It is things like this that give me hope that we will eventually win the war on spam.  Hell, look at the kinds of people we are fighting! 🙂

Some people just do not get it…

May 30th, 2006

While looking for additional backup hardware, I came across an item that displayed an image that had some red text across it stating “YOU STOLE THIS IMAGE FROM XXXXXX XXXXXXXX XXXXXXXXX” (company name changed to protect the stupid). Now, anyone that has been on eBay for at least a few years has seen images that have been switched or show a hotlink warning because the seller was pointing to someone else’s image instead of their own copy.

Being the nice guy that I am, I sent a little note to the seller telling them that it appeared as if they were using a “stolen” image. Here is the email exchange (with edited headers and content):


>>>> Question from xxxxxx
>>>>>
>>>>> Item: COMPAQ / HP STORAGE SHELF xxx XXXX / XXX / XXX / XXX XX
>>>>> (xxxxxxxxxx)
>>>>> This message was sent while the listing was active.
>>>>> xxxxxx is a potential buyer.
>>>>> -------------------------------------------------------
>>>>> Might want to check the image you are using (tip: view it
>>>>> from ebay as a buyer would).
>>>> From: Jay X. Xxxxxxx [mailto:xxxxxxxx@xxxnet.com]
>>>>
>>>> Yeah, and what is the problem?

>>> From: xxxxxx
>>>
>>> Well, if you actually take a look at it, it has the following text on it: “YOU STOLE
>>> THIS IMAGE FROM MODERN COMPUTER SOLUTIONS”
>>>
>>> -Which does not exactly inspire confidence in a seller…

>> From: Jay X. Xxxxxxx [mailto:xxxxxxxx@xxxnet.com]
>>
>> Well *GENIOUS* My Seller name is *Xxxxxx Xxxxxxxx Xxxxxxxxx* This is for the idiots
>> who STEAL my images because they are too lazy to take their own pictures! Are you new
>> to eBay? I remember my first time!

> From: xxxxxx
>
> Mind yourself!
>
> Have your hosting provider implement “hotlink prevention” to help deter theft of images.
> A quick view of this eBay account will show how long it has been active (slightly longer
> than yours with this particular ID).
>
> Again, my observation was that it appears that the image used in your listing was stolen,
> not that you are trying to prevent theft. It was the only thing (up to this point, at least) that
> stopped me from taking a serious interest in the item. A semi-transparent watermark
> with “Xxxxxx Xxxxxxxx Xxxxxxxxx” would be a better way to go, IMHO.
> Take it or leave it – but save the attitude.
>
> Lastly, the word you were looking for is genius, not GENIOUS. First time speller, perhaps? 🙂

From: Jay X. Xxxxxxx [mailto:xxxxxxxx@xxxnet.com]

Well I really do not invest much time in worthless FUCKS, did I spell that right? Like you wasting my time none the less you can not afford the 10 dollar item any way. Not to mention you are blocked from buying any thing from me just on principal. And Genious was a joke; GENE-E-US enunciated you know like moron!

Well folks, that is the kind of talent you can get from Bellbrook, Ohio these days… Tip for the locals – be careful who you work with. Getting involved with amateurs like this guy will only cause problems in the long run.

Take the Advice you are Paying for

May 3rd, 2006

After you have been doing something well for a number of years, you begin to gain experience and wisdom regarding it. Generally, this translates to a higher salary and/or rate, as it should of course.

Companies pay this higher salary/rate because of that experience and wisdom. But it makes no sense to have that wisdom ignored by the people you work for. When that happens, it is nothing but a waste of your time, their money, and is demonstrative of complete ignorance of your experience.

And as usually the case, when other people come from a position of ignorance, they tend to inflict the problems it causes on others, instead if correcting their own problem (i.e. their ignorance) first.

The moral – if you are paying someone $167K (or more) a year, you are paying for their knowledge, experience, wisdom, and advice. Time to start getting your money’s worth – take the advice you are paying for; do not unnecessarily question it, and realize that despite your age and position, this person might know something that you do not.


Oh, and to clear it up, this is my point of view on the differences between knowledge, experience and wisdom:

  • Knowledge is what you get from schools and books, magazines, articles, training, self-study, etc. (e.g. learning C++, VB, COM and Java)
  • Experience is gain you get by applying that knowledge in real-life situations (e.g. using C++, VB and Java to solve particular problems)
  • Wisdom is what is learned from the results of the experience (e.g. learning when to use C++ over Java, Java over VB, and what things should and should not be a COM object, etc.)

Dumbass Masshole Driver

February 22nd, 2006

   OK – here is a little tip to drivers out there that have not yet figured this out: WHEN BRAKE LIGHTS COME ON, IT GENERALLY MEANS THAT THE VEHICLE IS SLOWING DOWN!

If you are behind said vehicle, it means that YOU will likely have to slow down as well. RIGHT NOW.


Today while driving in in I93 Northbound, a male Masshole in an SUV (which was much too big for him, BTW) rear-ended a pickup truck in front of him. It was light impact; looked something like a 20MPH difference to me.

The Stupid Masshole part is that this accident was completely avoidable. Traffic was coming to a stop, and the woman driving the truck was coming to a stop due to the other vehicles stopping in front of her. Pretty simple idea, huh?

However, the dumbass in the SUV, who could clearly see the brakelights in front of him (both on the truck and the other vehicles in front of that truck), seemed to be completely ignorant of the fact that brakelights generally mean STOP!

This Masshole, true to sterotypical form, continued to close on the truck until it was too late and then *BAM*!

So here is your little tip for the day. Generally, the further you are from an object, the harder it is to detect that you are closing in on it. As such, if you see brakelights on, SLOW THE PHUCK DOWN! Better to come to a stop a couple of car-lengths too soon than to end up in someone’s trunk.

Sometimes getting your options is not so great…

February 8th, 2006

One of the downsides of getting your company acquired by another larger one is that you may find yourself in a new culture and/or process model that conflicts with your way of life.

A new dress code, new time tracking for everything, new and more complicated ways of doing simple things like parking expenses…

It is kind of like death by a thousand tiny annoyances

Agile Alliance

February 3rd, 2006

Agile Alliance :: Article Library

Site about agile dev processes.

Agile Alliance

February 3rd, 2006

Agile Alliance :: Article Library

Site about agile dev processes.

Agile Alliance :: Article Library

February 3rd, 2006

Agile Alliance :: Article Library

Page that includes some info on SCRUM.

Carrie Skipper and Siouxsie And The Banshees

January 19th, 2006

As I surf around the channels available on Sirius before and after Howard Stern is on, I am finding all kinds of new artists that I might be able to get into. For example, Carrie Skipper’s Time Goes By and Siouxsie And The Banshees’ Peek-A-Boo all have something that interests me. So I will be buying some of their CDs shortly…

Goindol

November 21st, 2005

Problem: Board boots but does not complete POST. Halts with some on screen garbage displaying BAD ROM 5 on more often than not. ROMs were clearly marked on the board, so I yanked ROM 5, read it and ran it through ROMCMP. It came up as unknown. Sounds bad to me!

Located a replacement ROM image and burned to a new EPROM (uh, after finding a replacement EPROM that would erase and burn correctly – that took a good hour and change). Verified the new EPROM was correct, loaded it into the game and…

BAD ROM 5

OK… I pull the board and start a visual inspection. Notice a section of the board with about 5 or 6 scratched traces. Two of them are broken (no continuity). Jumped them with some wire-wrap wire and the board comes right up! I do not yet have a way to test inputs yet, though…

Solution: Reburned ROM 5, jumped two broken traces. (Inputs unknown.)

Finger Injury

October 7th, 2005

While cutting carrots with my favorite knife (serrated and sharp as hell), I cleanly sliced off a small part of my index finger on my left hand! It did not hurt too bad – anyone that has cut themselves with something really sharp (or been cut by something really sharp) can understand. It is a strange feeling, not really painful. The pain… well, that comes after.

The bleeding was not severe, but I could not stem it after applying pressure for several minutes, so I had to revert to a little silver nitrate (looks a little like a matchstick). Now, that effing hurt! Never felt anything like THAT before.

Anyway… I had to keep my finger wrapped up for a few days, and one of the things I got used to rather quickly was typing without it. Now that it is almost healed over, I am trying to start typing with it again, and it takes conscious effort to do so! I type with it for a little while, and then I start keeping it lifted and hitting its usual keys with my middle finger!

Amazing how quickly our bodies and/or minds adapt to things like this…

Political Correctness is wrong – yer feelings do NOT matter!

August 23rd, 2005

As I write a post on Code Project Here, I think about how being PC has turned many of us into a bunch of wimps.

These days, you cannot even finish telling a joke without someone interrupting saying that they are offended by what you are saying, and after acknowledging them and then trying to finish the joke, they continue to interrupt you: “I don’t think I am comfortable with the content of this joke.

Well then… If the problem is that you are not comfortable with the content, then the problem is that you are not comfortable with the content, and you (not everybody else) should maybe do something about it… Like… Oh, I dunno, maybe

LEAVE!

-And leave the grown-ups alone so that the joke can be finished and someone can get a laugh from it? It is completely OK if you cannot take the joke. And for the most part, other people will be comfortable with your limitation(s), as well. However, it is inappropriate to steal the enjoyment of the joke just because you cannot take it.

Here is a little fact: it is OK to be offended! Really! If you are walking down the street and see a billboard for a movie that shows a little too much skin for your taste and you get offended, all you have to do is BE OFFENDED, stop looking at the billboard, and just keep walking down the street minding your own business. No need to call a press conference to bitch about it. Something on the radio or TV that you do not like? Fine, STOP LISTENING, WATCHING, or just get off your butt and change the channel/station. You will be OK… The world will go on. Really. Trust me. It is OK if you cannot handle anything, but try not to involve others in your limitations.


IMHO, Political Correctness is based on a flawed assumption: everyone’s feelings matter. Why is this a flawed assumption? Because it fails to take into account one very simple and all-too-true concept: some people are just too sensitive. Sometimes, you just have to learn to deal with it, and not expect the rest of the world to change for you.

Parents of small children understand this. Just because your son took a toy from his big sister is not a reason for her to start screaming and crying. It is not that big of a deal, and it does not require all that drama. So while we correct the son so that he learns not to steal things, we also teach the daughter that some things are just not worth crying about. The old saying about not crying over spilled milk comes to mind. As the daughter grows up, we hope she learns which things are worth crying over and which are not.

If your child got upset and started crying each time someone spilled something on the table, would you go out to a restaurant and instruct all patrons sitting next to your family not to spill anything while your daughter is around? Of course not! You would teach her that spilling (or having something spilled) it is not a big deal, and not worth crying over. Political Correctness does the opposite – it not only requests, but REQUIRES that no one spill anything while your daughter is around! Does that not sound a little stupid to you?

Here is a little-known fact – I am generally offended by organized religion. Actually, I find most forms of religion greatly offensive. But I do not go around work demanding that people stop wearing crosses and/or remove pictures of Jesus from their workspaces. Trust me – if I can handle seeing crucifixes and the Jesus Fish everywhere, YOU can handle the crude joke!

The worst thing about the concept of PC is that far too many people are naive enough to believe that bring PC is the same as being professional. This is just plain stupid. Here is a small example – assume you have someone suffers from mental retardation. You can refer to them them in a few different ways:

  • As ‘Tard
  • As special
  • As Mentally Retarded

Calling someone that suffers from this condition “‘Tard” is not professional, nor PC, nor even close to correct. In fact, it is idiotic. That much we can agree on. Moving on.

“Special” is the PC or nice way to put it. But as far trying to provide proper assistance to this person, it does nothing! Why? Because it fails to correctly identify the condition that the person has. And if you do not know exactly what is wrong, you cannot render proper assistance.

“Mentally Retarded” is the professional way to put it. It does not sugar-coat the truth, nor does it obfuscate the underlying problem. As such, it puts the problem right out in the open, where it can then be addressed correctly.

You do nothing for this person by calling them special. If anything, you only do something for yourself by making yourself feel better about how you address that person’s problem. That is a bit selfish, if you ask me. Additionally, you actually might end up hurting them by doing so, because they may not get the assistance they require. Imagine having a school called Foster’s Institute for the Special. If you had one child that suffered from Asperger Syndrome and another that suffered from mental retardation, can you tell if that school is able to help either or both of your children?

Now, some people with limited facilities actually consider it derogatory to identify someone that is mentally retarded as “Mentally Retarded”, or someone that has autism “Autistic”. Where does it end? Does short become “vertically challenged“? Do those that are bullies become “nice challenged“? If you cannot type, are you then “keyboard impaired“?

This is not the fault of the words themselves, it is the fault of those that would use them in a derogatory fashion, and those that are too sensitive to handle it. But as is the case with many things, the solution is education, so that these people better fit into the world. Not trying to change the world to accommodate those people. After all, it is a great big world out there.

Short People and Big Cars

August 22nd, 2005

Having driven a decent amount of miles for my age, in a variety of vehicles ranging from motorcycles to my mom’s double-cab dually with a six-horse gooseneck trailer, I can truthfully say that one of the most scary things out there are people driving vehicles that are way to big for them.

In general, I have always believed that you should never drive a vehicle that is taller than you are unless you have a real reason for doing so. For example, if you have to haul a fully loaded four-horse trailer, you are likely not going to be pulling it with a Neon! Likewise, if you have to (read: it is your job to) drive a bunch of kids to and from school, a school bus fits the bill. If hauling large amounts of cattle, a semi/tractor-trailer is appropriate. Got three kids? The Dodge Grand Caravan makes for a safer bet than a Navigator, and is easier to park, especially when all you are doing is bringing the kids to and from Chuck-E-Cheese’s.

However, if simply taking your little 5’2″ ass on an all-blacktop 20 minute drive to and from work, you do not need to be driving an Escalade, H2, or Land Rover. If you are driving an SUV that is taller than you, and the most off-roading you have ever done was pull it into the backyard to drop off bags of mulch, or the most camping you do is when you are taking a nap in the backyard, you are likely in the wrong vehicle.

Nothing is scarier than driving at 75+ MPH on the highway and seeing someone closing in on you who can barely see over the steering wheel let alone over the side of their car when doing a lane change. That is real fear. At nighttime, when it is already hard enough to correctly gauge distance, the last thing you need is some dumbass on your tail illuminating your interior due to the height of their headlights.

Have we gotten so stupid that everyone needs to be driving a surrogate penis now? Even when their travel is so limited that nobody of any significance will see it? Oh, and how is that fuel bill treating you these days?

Geeze…

You know you are fat when…

August 22nd, 2005

If you are one of those people that deep-down really knows that they are fat, but still kinda hope that you are not as fat as you think, or worse yet, you are one of those people that really is fat, but you do not think that you are, here is a real simple acid test to try:

Casually mention to someone that you know that you are starting a diet. They are likely to respond in one of two ways:

  1. “Hey, that’s great!”
  2. “Diet? What do you need a diet for?”

If you get the first response… Well, you already know what that means.

Nothing like the shattering of denial to brighten yer day!

NULL != NUL

August 17th, 2005

I continue to find it rather amusing that even (so-called) experienced developers will use fundamentally different concepts interchangeably, even after doing this for so long.

For example, I have seen documentation by developers that mention nul values in a database table, or worse yet, NULL-terminated strings, and NUL pointers.

Now, some that simply miss the point will be saying something like: “In C++, NULL is zero, and the NUL ASCII code has a value of zero, so they are the same thing!”

Wrong.
Read the rest of this entry »

Resources

August 8th, 2005

Arcade Repair-Related Resources

PAC-MAN Information (similar hardware) http://www.csh.rit.edu/~jerry/arcade/pacman/
Arcade Game Over http://www.arcadegameover.com/board_repair.html
Coin Operated Video Game Conversions http://www.marvin3m.com/video/
Pac Man Info (very detailed and very technical) http://users.erols.com/mowerman/pacfile.htm
Pac-Man Hacks http://www.purecope.com/pacman/index.htm
Romident http://www.system16.com/romident.html

Read the rest of this entry »

Unknown Atari Kangaroo Board

August 5th, 2005

I bought two or three sets of unknown/untested/bad boards sometime last year. I have recently started going through them to determine the severity of their problem(s). (This is taking a surprisingly long amount of time due to the time it takes to create a JAMMA adapters for each unique interface! :/ )

Anyhoo, I came across a complete, intact Kangaroo board last weekend! After creating a minimal adapter (Power and Video), the board came right up! I tried its self-test and it passed. After watching the attract mode for a little bit (~30 seconds), the game started to show some visual artifacts on the RHS of the screen. They were horizontal blurbs that looked like multicolor static. However, each of the blurbs, while in a random vertical location, were identical.

Read the rest of this entry »

Non-NYC Taxicabs…

June 6th, 2005

Well, I had to get thee minivan repaired (the AC died), and I had to call a cab to bring me back to the home office so I could get stuff done.

What I miss about living in The City (NYC, as opposed to A City, like Boston), is the ability to hail a cab on the street. I also miss being able to estimate rates by reading the side of the cab.
Read the rest of this entry »

Top of the Food Chain, Baby!

May 26th, 2005

Something that has always bothered me… I have always considered Software Developers to be pretty much at the top of the food chain when present in a software company. And that is not just because I happen to be one! Please allow me to explain…

If you are a software company, then your whole business is about software. Hence, your most valuable asset is your group of software developers! Yet many software companies treat their developers as disposable items, when they should be treated as the least disposable asset.

Another thing: software developers are generally the only ones present within an organization that can be fully productive (and make money) on their own, taking on the roles of almost all other members of an organization. For example, a single software developer can start their own company, do market research and design, architect, develop, test, manage, package (for deployment), and market a software product. They can also do their own user support. Now, of course, they may not be at good at marketing, as a large organization’s marketing group, but they at least CAN do it to some degree. Can people in the marketing group do that? How about the H.R. or Sales groups?

On the other hand, almost all other people/groups present within a software organization need the presence of a software product (hence, duh, the software developers) to do their jobs. Without a product, the marketing department has nothing to sell. The QA department has nothing to test. Project/Product management have nothing to manage. And without all that, the CEO has no company to lead. It all starts with the developers!

Using the above example about how a developer can successfully take on all those other roles in the organization, when is the last time you met someone in marketing that can do all that? Or in support? Or QA? Or any levels of senior management or executives?

Also, when is the last time you saw a corporate announcement (from a software company) that seems to credit/mention all other groups in the company except for software development? Dunno about you, but I sure see that shit a whole lot more than I should. Developers do not ask for much; we expect to get recognized for doing our part, and expect to get rewarded accordingly. Sounds pretty simple, huh?

Writing code for 8+ hours a day takes a bit more work and brain power than cold-calling someone, taking a client out to lunch, or bitching at developers about missing a milestone after you “adjusted” their estimates without their permission or guidance!

Something for managers/executives to think about the next time they are tying to figure out how to spend their budget or distribute the allocated raise/bonus money:

Never Forget Where Your Bread Gets buttered!

7th-Day Laws…

May 20th, 2005

One of the things I never understood were the so-called “7th-day laws”, at least from the religious side of things. Now, I am by no means a fan of (US) organized religion, but if you believe that God created man in His own image, then would He not want man to grow? To accomplish greater and greater things and thus become more like Him?

If so, then how more like God could we be than to create life ourselves?

Or maybe I just do not get it – anyone want to clear it up for me?

Just a thought…