In the Basement of the Ivory Tower

I try not to make posts primarily links to articles, but this article about the truth behind America’s “everybody should go to college” mentality is both enveloping and thought-provoking (the author definitely proves his qualifications as a teacher).

Personally, I’m a little split on the subject, though I lean slightly in the direction of the author. On the one hand, I agree that the ideal that everybody should have a college degree is just that, an ideal. Some people are not able to, or have no reason to, obtain a college degree, and encouraging them to do so is a waste of their time, money, and energy.

On the other hand (and this is a tangent “Professor X” doesn’t touch on), I see and interact with people who haven’t had a college education, or have gone to a local community college at night, and it’s often surprisingly difficult. I’m not referring to intellectual differences, but I feel that going away to college gives you a more open view of the world. It not only exposes you to different cultures and ways of thinking, but shoves you into a hot, crowded room with them. It forces you to eat, sleep, and live with them. If that doesn’t broaden your horizons, I don’t know what will. Those who haven’t experienced this part of the education system I find are often much more naive to the world…they see people as more black and white than they really are. I’m not saying that college is the only place where one can learn these shades of gray, but for many who are born, grow up, work, raise a family, and die in the same place all their lives, this is the only opportunity they have to do so.

If it is idealistic to think that everyone should have a college education, it’s downright foolish to think that everyone should go away to college, and while I agree completely, if we don’t work towards ideals and dreams, how else will we make progress?

Wordpress Plugin Installation Hackery

I’m just wrapping up a relatively large project centering around a Wordpress plugin.  I’ve gotten a chance to explore the API in depth, and have discovered a lot of nice things and a lot of not-so-nice things.  One of the not-so-nice things was the way plugin activation is handled…it is assumed that, assuming no fatal errors occur, that a plugin was activated properly every time.  There’s no feedback mechanism, no way to pass back a message saying “woa, something’s wrong here”.  So I wrote my own.

Now, this plugin will be installed on one site, and I will be doing the installation, so realistically there’s not too much of a concern.  But I was slightly worried that the plugin made a lot of tables, and that in the future the plugin may be installed on a system that has a table with the same name.  This may be incredibly unlikely, but it’s good to plan.  With that goal in mind I wrote a neat piece of code (see below for the whole script to put things in context, though this piece is the most interesting):
Read more »

f8 2008

Just got my ticket for f8 2008, I’ll be in San Francisco July 23rd, I’m sure I’ll have some interesting notes to share :) .

Download Day is Awesome

<rant>

Today I ran into an interesting response to Paul’s post on those who dislike the awesome bar (which I decided not to link to).  The post pulls the following quote from the end of Paul’s well thought-out and harmless article:

So just give it a shot and quit complaining. Yes, it is a complete paradigm shift. But it’s not called the Awesome Bar for nothing; it really is awesome once you give it a chance

And proceeded to call Paul an “asshat” and a “discredit to the Mozilla community”.  Really?  One sentence saying “give it a chance” and all of a sudden Paul’s an asshat?

Normally I would ignore this and chalk it up to people seeking out drama for the sake of snagging pageviews, but it made me realize that most media does this.  The Firefox 3 launch was absolutely amazing: we had 8 million people download our software in 24 hours, 12 million in 48.  It’s unreal!  Yet I’ve seen dozens of posts and articles talking about a minor outage and “howls of derision across the blogosphere”.  Are people that desperate for a negative angle to a story?  I’ve yet to hear one negative comment from people in person (granted, I see a lot of Mozilla employees, but I still see/talk to other non-Moz folk).  The execution had a few hiccups, but the overall project went amazingly well.

This is why I like sites like Hacker News.  The community discourages blowing things out of proportion.  For example, I recently commented on a post entitled Firefox 3 smart bar is just too smart, and it led to an intelligent discussion about the merits of the bar.  My post said basically the same thing as Paul’s, but there’s less hostility towards differing opinions, and it results in the ability to actually discuss things instead of pointless name-calling.

So the next time you’re writing a blog post focusing on a tiny negative aspect of a project, think about the big picture, and if it really matters, or is just a rant to spread negative views that only benefit your pageview count.

</rant>

Border Conflict Resolution

Earlier today I was attempting to style a table header when I came across a peculiar part of the CSS 2.1 spec.  Here is what I was trying to create:

I has a table with a number of header elements and I wanted to style it such that each one would have 2px of gray border on the bottom and 2px of space in between each element.  Simple enough, right?

After poking around for a bit with allowing table row elements to have margins, I decided it would be much easier to just put a right border on each element, 2px thick and solid white.  Easy enough, right?  Wrong!  Here’s what I got:

It seems the bottom border would take precedence over the right border.  But why?  How could I override this?  Eventually I stumbled upon the appropriate page of the CSS 2.1 spec, which explained everything (almost):

17.6.2.1 Border conflict resolution

In the collapsing border model, borders at every edge of every cell may be specified by border properties on a variety of elements that meet at that edge (cells, rows, row groups, columns, column groups, and the table itself), and these borders may vary in width, style, and color. The rule of thumb is that at each edge the most “eye catching” border style is chosen, except that any occurrence of the style ‘hidden’ unconditionally turns the border off.

The following rules determine which border style “wins” in case of a conflict:

  1. Borders with the ‘border-style’ of ‘hidden’ take precedence over all other conflicting borders. Any border with this value suppresses all borders at this location.
  2. Borders with a style of ‘none’ have the lowest priority. Only if the border properties of all the elements meeting at this edge are ‘none’ will the border be omitted (but note that ‘none’ is the default value for the border style.)
  3. If none of the styles are ‘hidden’ and at least one of them is not ‘none’, then narrow borders are discarded in favor of wider ones. If several have the same ‘border-width’ then styles are preferred in this order: ‘double’, ’solid’, ‘dashed’, ‘dotted’, ‘ridge’, ‘outset’, ‘groove’, and the lowest: ‘inset’.
  4. If border styles differ only in color, then a style set on a cell wins over one on a row, which wins over a row group, column, column group and, lastly, table. When two elements of the same type conflict, then the one further to the left (if the table’s ‘direction’ is ‘ltr’; right, if it is ‘rtl’) and further to the top wins.

So there we have it…there is an order of precedence for border edges.  While it seems relatively arbitrary, it is at least specified, which I suppose is better than nothing.  This doesn’t exactly fix my problem though, now does it?  In the end I copped out and just made the width in between the cells 3px and as per item 3, the white border took over.

I hope CSS 3 has some kind of mechanism to specify this (The CSS3 table module has yet to have a draft release).  It seems like the ordering is relatively arbitrary and in rare situations where it does matter it’s worth being able to specify.