Opera’s MAMA analyses the spread and use of web technologies

The Opera guys have created a project called MAMA – “Metadata Analysis and Mining Application”. It is designed to trawl the web and analyse what technologies and techniques are actually being used in web pages.

Their intial study results are in, taken from 3 and a half million URLs.

Interestingly, tables are still right up there with most popular tags, suggesting there are still a lot of people using tables for layouts, particularly when you see this quote:

“Tables: TABLE, TR, and TD all used. Tables typically nested 3 levels deep.”

Font tags are also still very popular.

It’s hard to tell at this point if this is because those pages are old, or if new sites are still using this style of markup.

Some more findings:

  • A little over 4% of the pages passed W3C HTML validation
  • A third of the URLs used Flash. The lowest regional use of Flash is 25%, meaning at least 1 in 4 pages use Flash.
  • Nearly 3/4 of the URLs used javascript in one form or another

Main article: http://dev.opera.com/articles/view/mama/
Key Findings: http://dev.opera.com/articles/view/mama-key-findings/
The average web page: http://dev.opera.com/articles/view/mama-the-average-web-page/

Returning to New Zealand in December

Talking to the flatties, everyone’s quite keen to come back to New Zealand a few months earlier than our visa expiration.

Aaron and Renee want to get back for a wedding and their legendary gran’s birthday.

This suits me, as I’m broke, and won’t achieve anything staying here much longer.

I will settle on a date soon so I can book the flight. I’d like to come back for xmas for sure.

As far as short and mid-term plans go, that’s as far as I’ve gotten for now.

To be honest I’m really looking forward to seeing everyone again and enjoying the Auckland summer.

I’m not sure where I will be staying when I come back. My mum is still well outside Auckland so I won’t be able to stay there for long (not to mention no Internet). I have a friend with a spare room on the ‘Shore, so I’ll probably end up there temporarily.

I can’t wait to see everyone again!

P.S. someone please save me a packet of Snifters.

Finding duplicate rows in the database

NOTE: This post has been re-visited in Finding duplicated data across one or more columns in a database table

Information gleaned from Microsoft KB article: How to remove duplicate rows from a table in SQL Server

When you allow duplicated rows in a database that aren’t expected and shouldn’t be allowed, it’s a flag saying that you need a unique index on the table to prevent duplicate rows to be added in the first place.

The first step to fixing the problem is to find and fix the duplicated rows.

The second step is to add an index once the existing duplicate rows have been dealt with, so that the problem won’t occur in the future.

If you have a “Users” table, which has an “Email” column, you will likely want that Email to have a unique index. You can find the duplicated Emails (and the number of times each email occurs) using this query:

SELECT Email, COUNT(Email) AS NumberOfDuplicates FROM `Users` GROUP BY Email HAVING ( COUNT(Email) > 1 )

Which may return something like this:

Email NumberOfDuplicates
joe@bloggs.com 3
spammer@spamilicious.com 13
etc

Now you can go about carefully resolving the duplicates, then adding the constraints to that column to prevent duplicates occurring again.

Microsoft ASP.NET MVC goes to Beta

I’m currently using ASP.NET MVC to build the next-gen version of my CMS/App Framework Orange.

I’ve been using CodePlex community builds, but MVC has finally gone to Beta. I’m just now in the process of fixing my code to go with the minor breaking changes in the beta.

I’m really liking many things about MVC so far, but a review of MVC is another blog post for the future.

Download ASP.NET MVC Beta

System.BadImageFormatException

I’m currently build the new Overclockers New Zealand website in .NET

I have a nice continuous integration server going smoothly, but my most recent check-in threw up a strange error when running the Unit Tests:

System.BadImageFormatException : Could not load file or assembly ‘Overclockers.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null’ or one of its dependencies. The module was expected to contain an assembly manifest.

The server is actually a VMWare instance, but is running a 32-bit version of Windows Server 2003 EE.

After some troubleshooting and searching, I decided to first try to explicitly build for x86 first anyway. This is done in the Project Properties dialog in Visual Studio.

When changing this, make sure you make the change for both Debug and Release configurations.

This seemed to fix the problem.

I suspect this could be because I have some Shell32 interop in one of my shared libraries, and this may have caused problems, and/or the fact I’m running the instance on VMWare.

A new Jean-Claude Van Damme movie worth seeing?

Jean-Claude Van Damme playing himself in an action comedy? The trailer actually looks half good, and it has positive reviews so far.

Jean-Claude finds himself out of money, fighting for custody of his daughter and losing every good action role to Steven Seagal. In an attempt to escape, the aging star walks away from his shrinking spotlight and returns home to his native Brussels. But when he is thrown into a real-life hostage situation, everyone sees a side of Van Damme they’ve never seen before as he takes on the police, battles the perpetrators and creates a media firestorm that captures the attention of the world

Digg Reel presents the best viral videos of the week

The Digg Reel is a show over at “Internet Television” site Revision 3.

They find the most popular videos posted on digg.com and package them together in a little hosted show. They even pick out some of the choicest user comments on the videos, reference other videos, and occasionally some pretty terrible but funny special effects and gags of their own.

While you might already have seen some of the videos during the week if you haven’t been hiding under a rock, you’ll at least be sure you’re not missing out on any of the viral videos of the moment.

It’s nice to be able to sit back with some food and drink and get someone to show you all the videos without lifting a finger. Now if only it could be a bit longer.

Redmine beats the pants off Trac

Trac is an extremely popular free issue tracker / wiki with source control integration. Many open source projects are using it.

I’ve been using Trac for a long time now, and while it used to be very good, it’s too stagnant and is lacking in too many ways.

It doesn’t support multiple projects, the ticket workflow is cumbersome, the security and roles are rudimentary at best, and call my superficial, but I just don’t like how it looks.

While I got pretty good at setting Trac up with configuration and plugins to work nicely, having to go through this process for every single project is frustrating.

Coming back to do some work for dG and trying to set up a cross-continent project workflow, I had the opportunity to actually have a re-evaluation of Trac and any alternatives.

It turns out that there’s a “new” kid on the block which provides all that Trac does (with very similar layout and features) while addressing the big lacking points.

Multiple project support (even nested projects), role and user management, calendars, files, documents and more – on top of the expected source control integration, wiki, issue management etc.

The project is called Redmine. I’m surprised it hasn’t received a bit more buzz, as I think it’s superior to the pervasive Trac in nearly every way.

It’s written using Ruby on Rails (which I think is also a good point; I’d prefer this over Python for if I find the need to write hacks or plugins).

The downside to this is that it didn’t prove very easy to integrate with Apache, so we’re letting Apache proxy to the ruby server, which while being very slow, isn’t noticeable (at least for me, thousands of kilometres away).

So far it’s been good to use. Here’s hoping the creators keep the ball rolling on it and don’t allow moss to gather.