Sergio and the sigil

Gamers Need Not Apply

Posted by Sergio on 2009-01-08

Recently I came across this forum message where the author describes a conversation he had in Australia with a recruiter who, at some point, said that:

"employers specifically instruct him not to send them World of Warcraft players. He said there is a belief that WoW players cannot give 100% because their focus is elsewhere, their sleeping patterns are often not great, etc."
"He has been specifically asked to avoid WoW players."

This post is not about gaming. I'm not a gamer (just so you know, wink, wink) and I'm not going to attempt to get into behavioral patterns or stereotypes of gamers. I want to understand the rationale behind a request like the quoted one. Replace gamer with audiophile, or sports fanatic, or someone that is too deeply consumed with other activities (e.g. parenting, church, small business on the side, etc) and you get the same issue.

No one needs to be as passionate as you

As much as we would like everyone to be as passionate as we are for our job (I'm assuming you are,) that doesn't represent the real situation in the vast majority of the workplaces.

For many people, arguably most of them, what they do from 9 to 5 is just their job. When they get home, they shut off or, more likely, the better part of their day starts.

I have even talked about Wally before, which represents a much more deteriorated stage.

The following quote from a message posted by Charlie Poole pretty much summarizes how I try to deal with this situation and how to recognize brightness and passion even in someone that doesn't share the same thirst I have, 24h a day.

...
[Kurt]: To me the separation seems to between .net programmers of the type that wouldn't consider letting their job interfere with their leisure time by reading development books and blogs, and taking part in mailing lists and user groups, or programming at home, and those that do who are also likely to follow most alt.net principles and practices (even if they haven't heard of alt.net)
[Charlie]: I used to make that separation. Well, I still do, but without the implied value judgement. IMO, folks have a right to a life outside of the development world and the vast majority of professional programmers don't live and breathe it the way some of us do. Those folks need to be reached as well.

I did a gig a while back with a bunch of mainframe COBOL guys, helping to re-invent agile techniques for their environment. Most of them had families and wanted to go home to them at the end of the day. But during the day, they wanted to learn new things and do the best job possible. I respect their choice - maybe it makes more sense than it does for me to be typing this note in the wee hours of the morning. :-) I think there is room for folks like that - there as to be, since they seem to be the majority. We just have to figure out how to reach them.
...

But it is still your job

Everything has a healthy limit, even gaming.

At the end of the day, you're (hopefully) still earning your pay for the job you perform. If these other activities start taking their toll on your focus and stamina to get your work done, it's a sign you need to exercise some moderation or find a job that allows you keep them or, better yet, make them your job.

Everything has a healthy limit, even the passion for your job.

Moderation applies here too. I'm in a constant struggle to manage my time responsibly. Even if the activities are (somewhat) job-related, many times they are not appropriate during billable time.

Some examples of things I avoid or moderate during work hours — and leave them for before or after work:

  • Twitter - a huge attention whore. I try not to have it on during the day or at least disable the pop-up and minimize it, checking it only when I have or need a break.
  • IM - mine is usually very quiet. I use the busy status when needed
  • Reading tech blogs or news - a few before work. If they pile up I'll catch up at night
  • Writing a blog post - any blog post worth reading takes time to be written. This is my blog, so I'll have to use my time feed it.
  • Mailing lists - I don't actually spend too much time on these. I only monitor a handful of them and only one is fairly active. I check new topics once or twice a day. Only read if sounds interesting.

So, can we hire gamers?

Although I can understand the rationale behind not hiring someone that has an extreme, obsessive compulsion for playing video games, which could prevent him/her from performing the job, I could never agree with the implied blanket statement that all gamers will become bad employees and should be avoided. Again, replace gamers with...

One less diacritical mark to annoy me

Posted by Sergio on 2008-12-26

Being a Portuguese-speaking person living in the US, one of the things you have to get used to is the keyboard physical layout and key mappings. You know, Latin-originated languages tend to have thôse wéìrd chãraçtërs, which are really just diacritical marks applied to regular characters to differentiate words (sometimes it changes the pronunciation, sometimes i doesn't.)

To accommodate the extra characters, many countries define their own standard for physical keyboard layout. In Brazil the standards body is called ABNT and they came up with the layout that you can see below. It's a mild variation from the one used in the US and works well if you type in Portuguese most of the time.

Even when I was living in Brazil, when I started using computers at home and at work, it was easier to find a keyboard with a US layout than one with the ABNT layout (this situation has changed now.) I chose to stick to a keyboard with the US physical layout and, when in Windows — which was most of the time anyway — apply the US-International key mappings.

What happens when you use the US-International it that some keys become dead keys and when you strike them no characters are echoed. The OS waits for the next key(s) to decide what to print. For example, if I type [ " ][ a ][ b ][ c ] without the US-International mapping, I get (unsurprisingly) "abc. With US-International on I get äbc. I'd have to type [ " ][space][ a ][ b ][ c ] to get the intended text. Other dead keys are [ ' ],[ ` ],[ ^ ],[ ~ ].

Of all these dead keys, the ones that hit me the hardest are [ " ] and [ ' ] because I use them all the time when writing source code.

Where am I going with all this?

As of January 1st 2009 all Portuguese-speaking countries will start complying with an agreement that will cause some orthographic changes in the language. One of the new rules is that the umlaut (those two dots above some letters) is being dropped from the language.

I'm so happy with this decision that I simply could not wait until the US-International key mapping gets updated in some Windows update super Tuesday. I decided to take matters on my own hands and yank that nasty thing off my system.

How to create/edit keyboard layouts (mappings)

Microsoft published a cool little tool called Keyboard Layout Creator that allows you to create or edit the keyboard layouts.

It doesn't get much simpler than that. I installed and run this program. Then I loaded the existing US-International layout and saved it as US-International-No-Umlaut. Mousing over the ["] key would reveal that it indeed is marked as dead and show all the available combinations.

From there I just needed to right-click that key and un-check the option that was setting it as a dead key.

The next step is to compile the new layout into a DLL and create the setup package for it. That is done by the menu option Project > Build DLL and Setup Project.

After running the produced setup program, I could just go into the regional settings of my system and select the new layout (mapping) as my default setting.

If you are another Portuguese-speaking programmer and don't feel like going through the same steps, you can just download the setup files I created.

Now I just need to get rid of that muscle memory that I acquired after all these years.

IE8 Readiness and IETester

Posted by Sergio on 2008-12-15

Today I started researching and preparing my application for IE-8, or at least knowing what we would need to take care of before its release sometime next year.

I started by downloading the VPC image with IE8 beta 2 because it seemed much more convenient than setting up a new virtual machine with XP or Vista from scratch. Well, life's not easy, is it?

VPC. Hyper-V. Fight!

I use Hyper-V instead of VPC, so I promptly imported the .VHD file into a new, empty virtual machine and booted it off. It worked! Not so quick... The VM was not recognizing the Hyper-V virtual hardware (Ethernet included) because I needed to install the Hyper-V enhancements (Integration Services Setup). Well, that would require me to first uninstall the VPC's Virtual Machine Additions that came with the VM. No problem, I've done that a few times before. Nope. Cannot uninstall because the "Add or Remove Programs" applet had been intentionally disabled in this VM. I searched a little bit and could not find the password for the admin account so I figured at this point it would be easier to just go ahead and create the whole thing from scratch after all.

UPDATE: The passwords for the VPC image are in the accompanying Readme.txt file, which I had not thought of reading. Blame me.
To enabe the "Add or Remove Programs" again, go to the registry at HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Uninstall find the value named NoAddRemovePrograms and delete it or set it to zero.

IETester

That's when I came across the IETester utility. This little gem allows you to open, side-by-side, IE5.5, IE6, IE7, and IE8 Beta 2.

When I saw this I thought: Nah. They're probably just tweaking the DOCTYPEs and tricking IE8 into rendering under some layout mode equivalent to the other versions. I installed it anyway and it turns out that IETester only needs IE7 to run.

Feeling a little puzzled I went snooping and in its installation directory I saw this.

Holy Moly. They are indeed running the actual rendering engines side-by-side. Note the familiar shdocvw.dll and even the Internet Options applet (inetcpl.cpl) from each browser version. I did not know you could redistribute IE binaries like that. Can you?

Anyway, I'm keeping a copy of this installer just in case Microsoft decides to make one of those unhelpful moves and demands that it is taken down. It will certainly help me in the coming months.

Trying out a Randori

Posted by Sergio on 2008-12-08

Tonight's meeting of the Software Craftsmanship Group was led by Uncle Bob Martin.

This time around we tried a Randori-style coding dojo. The task was to build a clock and, although we fell short of the original goal of having a GUI, there was plenty to be learned in this process.

I felt it was an interesting way to learn about your own performance under a moderate amount of pressure. More importantly, at least for me, was getting exposure to BDD and pairing with other developers that are a few step ahead of me on that particular road.

Once again, because I'm not a Ruby developer by day, I felt a little bit uneasy taking my turn and going up there to code a little bit. But I would not pass the experience, otherwise why even bother showing up for the event at all.

The whole thing was captured on tape. Hopefully the video will be made available and I'll come back and link to it here.

UPDATE: Doug has put some videos up.


Software Craftsmanship - Coding Dojo - Kata


Software Craftsmanship - Coding Dojo - Randori

Please open my .aspx fast

Posted by Sergio on 2008-11-22

Still in the topic of performance, I'll throw a little freebie. Visual Studio seems to take an inordinate amount of time to open .aspx files for the first time. I noticed that the status bar read "Initializing toolbox..." for a long time. I'm mentioning .aspx but it really applies to any other webforms markup like .ascx and .master as well.

Heck, I don't even have the toolbox loaded, docked, or hidden in my IDE. I don't use the toolbox at all for web develoment. I'm more of a source view kind of programmer. So why should I be penalized like that?

I shouldn't. Here's what I did to speed that up:

  • Show the toolbox
  • Right-click and select "Choose Items..."
  • Uncheck every item that the namespace contains "Web" (I also unchecked controls that I can't stand, like the database connections and data sources.)
  • Click OK to save that, close the toolbox again and enjoy your precious stolen time again.