Black Belt Coder


The total somethingness of Handles.

Posted in development by Kris Gray on the August 30th, 2007

From that wonderful movie Hackers:

GILL (grimly)
Get me arrest warrants on Kate Libby, alias
Acid Burn, Emmanuel Goldstein, alias Cereal
Killer, Dade Murphy, alias Crash Override,
also known as Zero Cool, and Paul Cook, alias
Lord Nikon. We pick them up tomorrow morning
at nine o’clock.

Now, besides all the other ridiculousnesses of this movie, nobody questions this dude on why he is providing the Hacker Aliases of these teenagers? This movie combined with the Matrix, are the two instances in my life where I’ve looked at a bunch of dudes and questioned why nobody called each other out.

This practice is as geeky as it gets, there isn’t a woman in the world that would think its hot to be called Lord Nikon, and your parents would probably feel insulted that your just to good for the name they picked up.

Yet. I still find it incredibly awesome.

I hope if I get issued an arrest warrant for excessive awesomeness, they say Kris Gray, alias Justise. (Just pick me up after lunch please)

Thankfully, most of us accumulate handles as nicknames in our different social environments. We have a guys here at eProject labeled, Tommy Spice, Lynch, Lenny, To Tall, and even BoBo. I’m sure a bunch of you out there have similar labels, and I’m genuinely curious as to what those are.

Make you a deal, the coolest handle out there gets their handle as an easter egg in eProject’s Javascript Library.

The rarest programmer skill of all. Communication Skills.

Posted in development by Kris Gray on the August 30th, 2007

I know I could sit here and list about 50 different skills needed to be a great developer, yet I don’t think anyone would really put communication in the top 10 of those skills. If a programmer was ranking all 50 of those skills, I bet communication would follow something like playing XBox well, and preceed (just slightly) knowing how to conduct a Japanese Tea Ceremony.

We obviously know why its rare, computer programmers don’t need to talk to anyone. They can get a written spec, use MSN to ask questions, and browse the bug list of corrections. Walla, a perfect product.

In fact, when I tell people I’m a programmer, they say they couldn’t do it, they don’t have the patience to sit at a computer all day. (Ahh, I’ve got another idea for an article…) Which has nothing to do with the actual sitting, nor the computer as these same people would gladly play 10 hours of WoW if they could, but more with the type of zone or lack of one a programmer goes into while he orchestrates his masterpiece.

So why is communication important? The greatest area of latency between conception, production and release is communication. How do we think this should be implemented? (Product Management) How do you guys think this should be implemented? (Dev) Did you guys mean to implement it this way? REALLY? (Test).

This is really part of why Agile is (atleast was) the big new thing. Its orchestrated so that you have this cycle that I just outlined (minus the second part of the tester) preferably every day, at least every iteration. Any outstanding issues are made sure they are important, and then worked on the next chance there is. The faster you can prevent developers from producing throwaway code, the more you can accomplish.

Sure you can just micromanage a developer to ensure communication is present to the point where you know they spend 20 minutes a day in the bathroom, but how is their efforts being maximized by you interacting with them in such a way? Is your time worth so little you can be refined to a walking talking task tracking application?

You can have developers who don’t talk, but they won’t be leaders. In Karate, its a big thing for us to make you tell, as I train over by the Microsoft Campus, we get a lot of programmers, and we are constantly trying to make them speak louder, because as their voice level increases so too does their confidence.

Say it Loud! Say it Proud!

I was told there would be Punch and Pie

Posted in Blogroll by Kris Gray on the August 29th, 2007

southpark-topten.jpg

So as I stated in  a rather self promoting post titled Jason Haley you Suck! that I would add everyone who posted a comment to my daily blog reading list (OPML — What the hell does that stand for?). So I thought I’d let everyone know I backed up the goods.

 Added:

Gray’s Matter - http://graysmatter.codivation.com/

Coding in an Igloo - http://igloocoder.com/default.aspx

Seeing no reason to deny a random passerby, I decided to add

The Coding Humanist - http://www.thecodinghumanist.com/Blog/

Who am I to buck tradition? Punch and Pie for all!

Language Independence

Posted in development by Kris Gray on the August 29th, 2007

I was reading this article today, and was a little bit peeved at myself for not writing about this sooner. The weight of the article is questioning whether a web developer should try to learn other languages? or if they should become really proficient at one in particular.

My stance on the subject is that I learn things that help me with my work. As I am in a .NET environment, I try to learn about the new .NET technologies and particularly C# applicable advances.  My basis for this strategy is that I will never become proficient at a language unless I am using it. Constantly. And then in regards to something like C# it will become very hard for me to become proficient at that, unless I dedicate a substantial amount of energy to research, prototyping, and debugging.

Now besides that, I also of course have to focus on bettering myself with HTML, XML, SQL, Javascript and CSS. So I don’t get to focus on just one language, but I certainly don’t have time to be playing with Ruby while I’m not tip top shape in all of the former technologies.

This doesn’t necessary solve the problem of the linked blog article being that if you only know one language and aren’t keeping up with the times, your becoming legacy. That is solved in putting yourself in a position where a language is just a language. There’s some Dynamic ones, and Static ones, and ones that are more abstract then others, but how long will it take you to learn how to concatenate a string in the new language?  There are no languages like C++ to learn anymore, C#, Java, PHP, Javascript, Ruby, its all syntax now.

Once you have that base language to be able to call yourself a coder, you need to develop the skills to graduate you to developer. (Ahh see what I did there Mike? Didja?) Methodologies, such as Scrum and especially Agile will do more for you then adding another language to your toolbox ever would. (Except to recruiters of course, yet SCRUM, AJAX whats the difference to them?) Once you know how to do Test Driven Development, Refactoring, and utilizing Code Smells to the fullest, you will be a true master of your art, and while there may be different forms to learn, you will have the foundation where learning another language is as far away as a trip to the book store.

CSS Layout is bad. Oh so its not just me?

Posted in development by Kris Gray on the August 21st, 2007

After reading Dion Almaer’s post at Ajaxian (http://ajaxian.com/archives/the-future-of-css-and-the-end-of-30) he states under the Undercover Elephant section…

CSS is great for simple web style. CSS is awful for layout. Rich Ajax apps need layout. You spend the majority of your time trying to get CSS working correctly!

Short, sweet, to the point, and very liberating to realize I’m not making something harder then it has to be, its just kinda wrong.

When thinking about this, I was wondering how we came up with this model of floats, pixel precision, and a total lack of good expansion support. Didn’t we have a model to work off of from windows forms? CSS isn’t really awful for layout, its just lacking a few features (Dock, Fill), which if you think about usability, and what a lot of the business applications out there really need, then its a big deal.

So can we get someone out there to focus on creating a model that works in the most dynamic of circumstances? I would really appreciate it, k thx bye.

Beware Classitis

Posted in web standards by Kris Gray on the August 18th, 2007

The quick and dirty of classitis is that its caused by the abundance of classes, way beyond reason. I know you have all experienced this before. You open the style sheet, to try to figure out how to style the element you just added to the page, and you are confronted with thousands of different classes, all of the flavor
.tabListItem
.roundedTabListItem
.blackListItem
.joesListItem
.listItemMain

How are you supposed to know which to use? What if what you need isn’t exactly right for your situation? Both problems are caused by classitis.

We want to separate style from structure, so when we are building the HTML to be output to the page, we really don’t want to worry about which particular class goes where. We should a logical structure, identify it based on its purpose, then CSS can take over from there.

For example, we have the HTML as follows


<ul>
<li>Tab 1</li>
<li>Tab 2</li>
<li>More Tab</li>
</ul>

with this structure we could be inflicted with classitis and result in the following HTML.


<ul class=”mainPageTabsList”>
<li class=”roundedTab”>Tab 1</li>
<li class=”roundedTab”>Tab 2</li>
<li class=”moreRoundedTab roundedTab”>More Tab</li>
</ul>

So in this situation we’ve labeled all the elements with a marker so that we can apply some pre-defined styles to the target element. This doesn’t seem to bad, we have a way to style each element, what more can we ask for? And what if we have another <UL> element set that needs to be styled differently? We really do need some way to style them differently. So what could we have done to avoid this?

<ul id="header">
<li>Tab 1</li>
<li>Tab 2</li>
<li id=”headerMore”>More Tab</li>
</ul>

Well you don’t really need all the classes at all, once you’ve identified the list and defined its function, you can specify the styles from there without worry that your styles will leak to other elements, be used improperly (unless someone does it pretty knowingly) or having developers determine which class to apply to the element.

How does the CSS look afflicted and un-affected by classitis? Lets look.

.mainPageTabsList { background-color: wheat; /* One of my favorite colors by the way */ }
.roundedTab { color: navy; }
.moreRoundedTab { background-color: black; }

Not tooo bad, but lets look at the alternative.


#header { background-color: wheat; }
#header LI { color:navy; }
#header LI#headerMore { background-color: black }

Look at that, we’ve got the same amount of lines of CSS, boy do I feel stupid. Yet we ended up less HTML to render, we don’t need to have anyone worry about what styles to add to the <LI> elements when they add them to the list, and we know the CSS applies to strictly header elements, and even more specific the header <LI> elements.

Some questions for ya

Posted in Uncategorized by Kris Gray on the August 1st, 2007

So I performed an interview today (well, when I wrote this I did), and am full of question, some relevant to the position, some not, so I thought I’d ask the void and maybe I’ll get an answer. Never hurts to ask (or does it?).

Prototype? or jQuery?

How do you measure the quality 0f a developer?

Should we use code metrics?

In a company strapped for developers, how can you promote one to a position where they don’t code?

How hard is it going to be to switch to Semantic markup?

Will everyone notice the speed benefits in the next release of eProject?

Anyway, back to programming.