How To Create 3D Text (The Glasses Kind) With CSS

Recently, I wanted to create some Red/Blue 3D text. After a great deal of searching on the internet, I discovered that very few people have actually done this, and those that have seemed to rely on creating a duplicate of the content. Creating a duplicate copy of the text wouldn’t work for me, since my text used a great deal of formatting.

Through hours of trial and error, I found something that seems to work pretty well. Here are the caveats:

  1. It does not work in Internet Explorer
  2. It requires CSS3
  3. It uses alpha colors, which means it’s a bit more CPU-intensive than text normally is.

Otherwise, it seems like a good solution. This works in Firefox for Linux and Mac and Chrome for Linux and Mac. It does not work in IE at all, and it doesn’t work in Safari (last time I checked).

Here it is:

This should be in 3D!

Continue reading ‘How To Create 3D Text (The Glasses Kind) With CSS’ »


Certifications Aren’t “Bad” (They Just Aren’t “Good,” Either)

I’ve been disturbed by a few posts made by James Shore lately. Though I greatly respect Shore and immensely enjoyed his book, one particular post of his really irked me: “Your Certification Is Meaningless.”

In the post, Shore basically argues that certifications, particular those relating to Agile software development, have no value. In fact, he goes on to argue that they offer counter-value, that some employers are LESS likely to hire someone with a certification.

The thing is, the main reason this bothers me is that I have a few certifications from Sun (pre-Oracle days), and the process I went through to acquire these certifications is one I found immensely useful. It’s hard for me to see something as meaningless when it holds so much value to me.

Continue reading ‘Certifications Aren’t “Bad” (They Just Aren’t “Good,” Either)’ »


Avoiding The Big Design Interview Question

There is one common type of question that I think sets up both the candidate and the interviewer for failure. I’ve seen it asked by my interviewers, my co-interviewers, and even by me. The question takes this format:

Sketch out the object model for a x

Generally this question is asked to feel out someone’s OO skills. Do they understand inheritance, polymorphism, abstraction, etc? Can they describe the relationship between a plant, flower, and petal (a flower is-a plant, and has-a petal)?

I used to ask this question myself when I was first starting out doing interviews. I would ask the candidate to describe the object model for a Chicken. I was expecting the candidate to sketch something resembling the following:

Now, I wouldn’t expect it to be perfect UML or anything like that, but I wanted to see the basic idea that the candidate knew that a Chicken was probably a Animal or a Bird, and maybe Bird is an Animal, and maybe Chickens have Feathers or Beaks, or maybe those belong to Bird, etc. I thought this was a great question for gauging a candidate’s comfort with Object Oriented Programming.

I was wrong.

Continue reading ‘Avoiding The Big Design Interview Question’ »


You Have To Buy It Twice Before It’s Cheap

This entry crossposted from The Rally Software Engineering Blog.

One of the most common sources of tension between product owners and developers is when product owners are surprised at how high an estimate for a story might be. Usually this tension is easy to resolve by reiterating that the product owners really have no concept of how much something should cost. However, there is one scenario I see over and over again: when a product owner protests the estimate of a story because it seems, to the PO, like it’s simply re-using an aspect of the system somewhere else.

“I already paid for that!” he or she might say, quite correctly. A simple example recently for us here was our column picker. Our grids allow you to select which columns you wish to see on any given grid. Later on, we created the ability to have grids inside of panels on user dashboards. Our product owner wanted to put the column picker on the settings pane of a grid panel. To him, this was simply reusing the column picker that had already been created for an earlier story. He was quite shocked when our estimate for the effort was just as high as it was the first time.

His frustration is completely understandable. How is this possible? Why isn’t it easy to just drop that component into another place and have it work? After all, if we were good engineers, wouldn’t we have written that component to be reusable?

Actually, no. It’s because we were good engineers that it wasn’t written in that way. This is one of the hardest things for product owners to understand, and I hope to explain it in this post.

Continue reading ‘You Have To Buy It Twice Before It’s Cheap’ »

Quantitatively Evaluating Test-Driven Development

The thesis for my Master’s degree in Software Engineering is finished.

It’s the result of many months of research, I hope others may find it interesting and informative.

Abstract

Test-Driven Development is a Software Engineering practice gaining increasing popularity within the software industry. Many studies have been done to determine the effectiveness of Test-Driven Development, but most of them evaluate effectiveness according to a reduction in defects. This kind of evaluation ignores one of the primary claimed benefits of Test-Driven Development: that it improves the design of code. To evaluate this claim of Test-Driven Development advocates, it is important to evaluate the effect of Test-Driven Development upon object-oriented metrics that measure the quality of the code itself. Some studies have measured code in this manner, but they generally have not worked with real-world code written in a natural, industrial setting. Thus, this work utilizes Open Source Software as a sample for evaluation, separating Open Source projects that were written using Test-Driven Development from those that were not. These projects are then evaluated according to various object-oriented metrics to determine the overall effectiveness of Test-Driven Development as a practice for improving the quality of code. This study finds that Test-Driven Development provides a substantial improvement in code quality in the categories of cohesion, coupling, and code complexity.

Download

If you’d like to read it, you can download it here:

Quantitatively Evaluating Test-Driven Development by Applying Object-Oriented Quality Metrics to Open Source Projects