The end of HD-DVD?

hd-dvd-vs-bdThe
news has been all over the net that Toshiba is finally throwing in the towel for HD-DVD.
This isn’t a terrible surprise given the number of studios that have jumped ship in
2008, and the cancellation of their CES press conference.

Personally, I was backing HD-DVD, yes I am an Xbox and Microsoft guy, so I am biased;
but, the HD-DVD spec was always much more laid out. The features that HD-DVD had that
Blu-ray didn’t were the requirement for a hard drive or flash drive to store updates
on, and an Ethernet connection allowing firmware updates and access to online content.

Both of those features really excited the Nerd within me. The idea of a DVD that isn’t
static and can be updated as new content becomes available was really amazing to me.
Blu-ray has struggled with comparability since its inception. There were several movies
that didn’t work on all players, and the PS3, with its hard drive and net connection
was always the only player that could always play all discs. There are rumours that
the Blu-ray spec is changing, making the Hard drive and net connection a requirement.
But, since it wasn’t always required from the start, these features won’t be widely
used be the discs.

However, I certainly am very glad that the world is moving towards a single format.
This certainly will hasten the price drop of the technology, and help ensure that
your Hi Def disc collection won’t be suddenly a pile of useless plastic. The issue
now is if people will bother upgrading at all, DVDs look quite good on most HD screens.
HD content does look better, but I doubt that the general public really cares about
having the best quality possible. DVD had lots of benefits over VHS, over and above
the picture quality, so it was an easy change to argue for. HD movies, are not as
easy to argue.

Personally, I think that downloadable content will be the winner. There are no stores
that make the argument easy that are around these days, too few people have Set top
boxes that can download content. And the boxes that people do have, only allow you
to rent HD movies, not buy. Once purchasing becomes available, and people have set
top boxes, like the Xbox 360 or Apple TV, I really think that the convenience of getting
movies instantly, and having all of your purchases readily available to you will be
an argument that is hard to pass up.

Only time will tell to see what truly comes out on top. But one thing is abundantly
clear. HD-DVD is definitely not the winner here.

Toshiba
to give up on HD DVD, end format war: source | Technology | Reuters

New Blog Theme

Back in January, I switched this blog to run off of DasBlog,
switching away from the old Drupal based site. And
of course, my old theme style didn’t work any more. Since that time, I’ve been using
one of the default DasBlog themes, which, to put it frankly, was ugly. I just finally
uploaded the new theme that I had been working on for the last couple of weeks.

The two goals of the theme were to make the site easy to use, and to show new visitors
who I am and what I do. There are several new features that you’ll find with this
version.

The first, and most visible additions are my phone number and e-mail address front
and centre. I want to remove any barriers to people contacting me, so I put those
two pieces of information where they would be found right away. They are both in an
image, so spammers shouldn’t be able to contact me. And the number is my Grand Central
number, which lets me filter callers if necessary, right now it will ring my phones
directly.

Next, is the new about me section up at the top. There is both a “Twitter Style” quick
blurb, and for those who want to know more, a new About
Me page
that should satisfy all but the most curious of visitors.

I’ve added the obligatory list of social networks - all coded directly in HTML, I
want to avoid any JavaScript includes as they slow down your browser and don’t always
look so nice.

The other big addition is my Tumblelog, which I have set up to pull in almost everything
that I do on the web including my Twitter
posts
, Flickr photos, Google
Reader Shared Items
, and my del.icio.us bookmarks.
I don’t expect many people to do this, but you can subscribe
to the feed
if you want to see everything I do on the web.

I hope that you like the update. Please post what you think of it in the comments.
Now, to get to actually posting something to read around here.

Barrack Obama Gives the Letterman Top Ten

The title says it all:

Twitter, Reliability and Decentralization

As you may know, I am a big fan of Twitter.
Recently, during Steve Jobs’ Macworld keynote, many Twitter users wanted to share
their thoughts on the keynote as it happened, unfortunately, Twitter was unavailable
for most of the time that Steve was on the stage and for much of the afternoon following.
This is not unusual for Twitter, their servers seem unable to cope with the stress
of high volume events. Of course, developing any website to handle this stress is
difficult, so I cannot fault them. The problem is that the community is locked into
using the same site for all of our Microblogging. It is possible that everyone would
switch to another service such as Pownce,
but as with Twitter, there is no guarantee that the new site would be any more reliable.

Russell Beattie posted a good idea, using
instant messaging clients
as our Microblogging system. He suggested that we have
a bot on our IM list that automatically repeats to our full IM list, all messages
we send to it. There could be multiple services that offer bots that do this, and
if they all support a common IM protocol, there
is nothing stopping us all from using different bots.

This would solve the problem of having all of the conversations muted, when one service
goes down. True, if one bot goes down, its users would be silenced, but they could
move onto another service quite easily.

Now, we have to see if anyone will implement this as a solution to the problem.

OPML File of Canadian Blogs

If you are a Canadian techie you owe it to yourself to add this OPML
file
to your feed reader. It contains over 150 Canadian blogs. I’ve added it myself
and am glad to be reading more local bloggers. Thanks to MapleLeaf
2.0
for putting it together.

Google Charts API

Google just announced a brand new service that
makes it really easy to make charts for use on the web. Take a look at the source
for this image:

To generate that chart, I just created an image, <img src=”http://chart.apis.google.com/chart?cht=v&chd=t:80,149,50,10,25,20,5&chs=400×300&chl=haydar|will|john”>
All of the details for creating the chart are all in the URL. You just have to include
chart type you want, the size of of the chart and the data to be displayed. Really
easy.

I am excited to use this on CastRoller and any
Maplesoft projects that I’ll be working on in the future.

Via information
aesthetics

56 Geeks Poster



56
geeks poster complete
, originally uploaded by ExtraLife.

I just found this great poster via the new Digg Images.
How many of the types of geek do you fit into?

Bubble 2.0

As someone who is working on my own startup, this
was particualy funny. It has already made the blogosphere rounds, but in case you
haven’t seen it yet, enjoy!

>>

Via TechCrunch

Importing Drupal Entries to DasBlog

I certainly see the benefit of posting the code that I used to import my old Drupal entries into DasBlog, this code was heavily inspired by Scott Hanselmann’s example

using System; using newtelligence.DasBlog.Web.Services; using newtelligence.DasBlog.Runtime; using MySql.Data.MySqlClient; using System.Configuration; namespace ImportDrupal
        {     ///
        <summary>     ///
        Summary description for Class1.     ///
        </summary>     class Class1
            {         ///
        <summary>         ///
        The main entry point for the application.         ///
        </summary>         [STAThread]
                static void Main(string[]
        args)         {             IBlogDataService
        dataService =                 BlogDataServiceFactory.GetService(AppDomain.CurrentDomain.BaseDirectory,null);
                    string connStr = ConfigurationSettings.AppSettings["DrupalConnectionString"];
                    string author = ConfigurationSettings.AppSettings["author"];
                    using(MySqlConnection
        conn = new MySqlConnection(connStr))
                    {                 conn.Open();
                        using(MySqlCommand
        newsCmd = new MySqlCommand("SELECT
        DISTINCT * FROM `node_revisions`",conn))                 {
                            using (MySqlDataReader
        reader = newsCmd.ExecuteReader())
                            {
                                while(reader.Read())
                                {
                                    int blogId = reader.GetInt32(0);
                                    int timeStamp = reader.GetInt32(6);
                                    DateTime
        correctDate = ToDateTime(timeStamp);
                                    
                                    
                                    string blogText = reader.GetString(4);
                                    string blogTitle = reader.IsDBNull(3)
        ? String.Empty : reader.GetString(3);                             Entry
        entry = new Entry();
                                    entry.CreatedLocalTime = correctDate;
                                    entry.ModifiedLocalTime = correctDate;
                                    entry.Title =                                 (blogTitle.Length
        > 0 ? blogTitle :                                 blogText.Substring(0,Math.Min(20,blogText.Length)));
                                    entry.Content = blogText.Replace("\r\n","<br>");
                                    entry.EntryId = blogId.ToString();
                                    entry.Categories = GetNodeCategories(
        blogId );                             entry.Author = author;
                                    dataService.SaveEntry(entry);
                                }
                            }
                        }
                        using(MySqlCommand
        newsCmd = new MySqlCommand("select
        * from comments",conn))                 {
                            using (MySqlDataReader
        reader = newsCmd.ExecuteReader())
                            {
                                while(reader.Read())
                                {
                                    int blogId = reader.GetInt32(2);
                                    int timeStamp = reader.GetInt32(7);
                                    DateTime
        date = ToDateTime(timeStamp);
                                    string commentText = reader.GetString(5);
                                    string commentName = reader.GetString(13);
                                    Comment
        comment = new Comment();
                                    comment.CreatedLocalTime = date;
                                    comment.ModifiedLocalTime = date;
                                    comment.TargetEntryId = blogId.ToString();
                                    comment.Author = commentName;
                                    comment.Content = commentText;
                                    dataService.AddComment(comment);
                                }
                            }
                        }
                    }         }
                public static string GetNodeCategories(int nodeId
        )         {             string connStr = ConfigurationSettings.AppSettings["DrupalConnectionString"];
                    string output = "";
                    using(MySqlConnection
        conn = new MySqlConnection(connStr))
                    {                 conn.Open();
                        using(MySqlCommand
        termCmd = new MySqlCommand(@"SELECT
        name                                                                     FROM
        term_data                                                                     INNER
        JOIN term_node ON term_node.tid = term_data.tid                                                                     WHERE
        term_node.nid = ?nid"                             ,conn))
                        {
                            termCmd.Parameters.Add("?nid",
        nodeId );                     using (MySqlDataReader
        reader = termCmd.ExecuteReader())
                            {
                                while(
        reader.Read() )                         {
                                    if(
        output != "" )
                                    {
                                        output
        += ",";
                                    }
                                    output
        += reader.GetString(0);                         }
                            }
                        }
                    }             return output;
                }         private static DateTime
        ToDateTime( int timeStamp
        )         {             //
        First make a System.DateTime equivalent to the UNIX Epoch.             System.DateTime
        dateTime = new System.DateTime(1970,
        1, 1, 0, 0, 0, 0);             //
        Add the number of seconds in UNIX timestamp to be converted.             dateTime = dateTime.AddSeconds(timeStamp);
                    return dateTime;
                }     } } 

Great Driving Trick

I think that I will need to find myself a second steering wheel


Via Rebellious Arab Girl