Blogger to dasBlog Redirect Hack

Using the following Blogger.com template, I have been able to redirect all the traffic hitting my old Blogger.com generated pages to the new pages hosted under DasBlog.  If you want to try this, change the dasblog_root variables, paste into your Blogger.com template, and then republish your blog.  It’s probably a good idea to backup your old template first.  No warranties or guarantees, use at your own risk!


For information on porting your content over, see my previous post.



<html>
<Blogger>
<MainOrArchivePage>
<script language=”javascript”>
var dasblog_root=”
http://blobservations.net/dasblog/“;


document.location.href=dasblog_root;
</script>
</MainOrArchivePage>
<ItemPage>
<script language=”javascript”>
var dasblog_root=”
http://blobservations.net/dasblog/“;
var newpage=dasblog_root;
var oldstring=”<$BlogItemTitle$>”;
var newstring=””;
var toreplace=[‘-‘,”’,’!’,’ ‘,’:’,’;’,’,’,’.’,’+’,’!’];
for (i=0; i<toreplace.length; ++i) {
 oldstring=oldstring.replace(toreplace[i],””);
 while(newstring!=oldstring)
 {
  newstring=oldstring;
  oldstring=oldstring.replace(toreplace[i],””);
 }
}


newpage+=oldstring+”.aspx”;


newpage=newpage.toLowerCase();


document.location.href=newpage;
</script>
</ItemPage>
</Blogger>
</html>

How I Ported My Content from Blogger to DasBlog

I finally got DasBLog up and running on Blobservations and decided that I wanted to import all of my old content from Blogger.com.  I figured that this challenge had to have been overcome in the past, so I hit MSN Search and Google with keywords like: Import Export DasBlog Blogger.  I located a few half-baked tools (as-in, not quite ready for prime-time). Some didn’t support titles, other wouldn’t grab the links.  Most of them could easily blame their failings on the fact that they were attempting to use the underpowered Blogger API.


I hacked around a little, trying to implement a simple ATOM API client in C#, and to do a fully automated conversion tool, but eventually I decided to drop back and punt.  I only needed to do this one time, so a little manual intervention would be acceptable.


I ended up following these steps:


1.  Change Blogger.com settings, under “Formatting” tell it to show 999 days on the front page.  DO NOT PUBLISH


2.  Modify your blogger template to:



<?xml encoding=”utf-8″ ?>
<entries>
<Blogger>
<bi_url><![CDATA[<$BlogItemURL$>]]></bi_url>
<bi_title><![CDATA[<$BlogItemTitle$>]]></bi_title>
<bi_body><![CDATA[<$BlogItemBody$>]]></bi_body>
<bi_author><![CDATA[<$BlogItemAuthorNickname$>]]></bi_author>
<bi_date><![CDATA[<$BlogItemDateTime$>]]></bi_date>
</Blogger>
</entries>


3.  DO NOT PUBLISH, instead hit the “Preview” button


4.  In the resulting screen, you’ll see a bunch of unformatted text.  Select “View Source” and then copy everything from the opening <? xml ?> tag down to the closing <entries> tag.  Paste that text into notepad and save as archive.xml.  On the edit screen, hit the “Discard Edits” button.  Go back and restore the settings from step 1.


5.  Warning, very rough C# code ahead.  The following is snipped from the C# program I threw together to convert from the raw xml to Dasblog.  It uses some classes from the DasBlog engine, so you’ll have to add a reference to the newtelligence.DasBlog.Runtime.dll file if you want to try this yourself.  Before running, make sure that the directory c:content exists.



{
DataSet ds = new DataSet(“archive”);
ds.ReadXml(@”{insert directory to archive.xml file}archive.xml”);


string title=””;
string body=””;
string link=””;
string date=””;
string auth=””;


DateTime dt_post;


newtelligence.DasBlog.Runtime.IBlogDataService das_ds = newtelligence.DasBlog.Runtime.BlogDataServiceFactory.GetService(@”c:content”, null);


foreach(DataRow r in ds.Tables[0].Rows)
{
title=(string)r[“bi_title”];
body=(string)r[“bi_body”];
link=(string)r[“bi_url”];
date=(string)r[“bi_date”];
auth=(string)r[“bi_author”];
dt_post=DateTime.Parse(date);
Entry post = new Entry();
post.Author = auth;


post.Content = body;
post.Description = “”;
post.Title = title;
post.CreatedLocalTime = dt_post;
post.CreatedUtc = dt_post.ToUniversalTime();
post.ModifiedLocalTime = dt_post;
post.ModifiedUtc = dt_post.ToUniversalTime();
post.EntryId = Guid.NewGuid().ToString();
das_ds.SaveEntry(post);


}
}


6.  After running, you should have a bunch of xml file in the directory c:content.  Just upload or copy these to DasBlog’s “content” directory and the posts should show up under DasBlog.  I think I may have had to create and delete a new post to make them show up.


If you have any questions, feel free to email. 


Update 6/16/2005: Ryan Jones has implemented a dotText to DasBlog and Livejournal to DasBlog content conversion using similar code. 


Update 7/13/2005: Ben Scheirman emailed me about some difficulties he was having, and we figured out that you have to have the Timestamp Format configured a certain way for the blogger template to work.  This image shows the relevent setting:



Ben is also putting together a GUI to assist with the conversion. I’ll post a link when he finishes it up.

A New Media Model

An entire industry has sprung up to fill a gap between the the current content producers, their archaic distribution models, and the way consumers want to use content with modern technology.

What would happen if a major network decided that they were going to cut out the middle-men, and go straight to the consumer. I’m thinking WB, TBS, FOX, or maybe even Mark Cuban’s HDNet.

Here’s how it works.

1. Take every show you run on your network, including the commercials, and digitize them to a variety of bitrates and formats (WMA, MOV, Etc.).

2. Host an RSS feed for each show, allowing users to subscribe (using Doppler or similar programs) to different feeds for each show. Publish each show to the feed concurrent with it airing by traditional means.

3. Talk to your advertisers. Remind them that your goal here is to put their commercials in front of as many eyes as possible, at the lowest cost you can manage. Since this new model eliminates many layers, you should be able to distribute content this way at a lower cost. If bandwidth is a concern, utilize bittorent or other peer-to-peer technology.

4. Develop metrics that allow you to quantify “circulation” of your shows, instead of focusing on numbers of viewers. Maybe talk to Arbitron or Neilson about developing some sort of authoritative advertiser-friendly metrics for electronic media distribution.

5. Aggressively pursue anyone who tries to chop commercials and redistribute content. Use technological measures to discourage this, and lawyers to enforce it. Gradually move away from disruptive advertising, and focus more on product placements, and content relevent advertising.

6. Consider offering unique RSS feeds with different advertising for different demographics. In general, people would rather have ads that are relevent. Give them control and they would choose to view more relevant ads. Use this to sell the advertising.

Would this work?

How-To: Add Blogpulse Hyperthreads to Your Blog

Blogpulse has an interesting feature called a Conversation Tracker. Basically this tool can take a permalink, and build a web showing the various blog entries that link to it, and the blogs that link to those, and so on.

If you use Blogger, you can add a link to Blogpulse by adding the following:

<a href=”http://showcase.blogpulse.com/conversation?link=<$BlogItemPermalinkUrl$>&max_results=50&start_date=20041229&#8243; alt=”Blogpulse Hyperthread for this Post”<{{Blogpulse Hyperthread}}</a>


anywhere in between the <blogger> and </blogger> tags. I added this to my blog template right after the <$BlogItemControl$> tag in my customized template. I’m sure that this should be pretty easy to implement with other blog engines as well.

This post carries no warrantees, since Blogpulse can change their interface whenever they want, but for now it produces some pretty interesting results!

Update: Just for a more interesting example, here’s a link to a hyperthread for Robert Scoble’s Crossfader teaser from last month…

Roll Call!

Is anybody listening?

Just a quick post to see if there’s anybody out there. The logs show that there are at least a few people reading. I’m looking for feedback on Blobservations.

What posts have you liked?
What posts would you have rather not seen?
What would you like to see more of?
Any other suggestions?

Feel free to email me at rick.hallihan (at) gmail.com or leave a comment.

Dell Axim X50v First Impressions

A recent birthday made me the proud owner of a Dell Axim X50v (Thanks Mom, Steve, & Matt!). Although my free-time has been limited, I figured I’d post my first impressions.


The screen is beautiful! 480 x 640 may not seem like much, but when you cram it onto a 3.7 inch screen, the pixels almost disappear. My last PocketPC was an Axim X5 and the difference in the screens is night and day.


Wi-fi is pretty great too. This is the biggest difference I see between the X50v and my last handheld. The fact that I can be connected at the kitchen table, out in the yard, wherever, makes a PocketPC so much more usable. With my old X5 I had lots of Avantgo channels setup, but the real-time browsing is just so much cooler. The range rivals that of our Laptop with a Netgear 802.11b card.


Next steps will include:



  • Buy a high quality screen protector. Suggestions are welcome!
  • Try out Skype.
  • Save up for a 512MB SD card.
  • Save up for a CompactFlash GPS receiver to be paired with Pocket Streets 2005.
  • Set up Ipodder, Doppler Radio, or some other software to download podcasts.
  • Figure out a good way to use the handheld for reading my RSS feeds.