Sunday, April 29, 2007
One question that arises regularly with my blogging is the update dilemma - what should to do with those little scraps of information that pertain to an earlier post? This article outlines an approach to dealing with this common issue.
When I'm following a breaking news story or there's delayed developments or even a random thought occurs, I want to inform my readers in the most convenient way. If it's big enough, a whole new post may be warranted (with a link back to the earlier post). Otherwise, I ask myself: should it be done with a comment or with a manual update to the bottom of the original post? Thanks to Hearsay (and other recent comments hacks), a comment will have visibility across all blog pages, informing all visitors (but not subscribers). If there's a lot of comments on a particular post or a high rate of commenting on the blog, important updates can get lost. Alternatively, appending an update (or follow-up, postscript, addendum, errata or correction) to the post may not get out to subscribers and visitors who are interested.
I've tried to get the best of both worlds by using Yahoo Pipes to automatically generate an update feed for my blog. This feed consists of the most recent updates (to any post on my blog) and can be offered to subscribers, much like a regular post or comment feed. It can also be combined with Hearsay to produce a friendly sidebar panel to display the most recent updates to your site visitors.
The rest of this article introduces the Blogger Update Extractor pipe, explains its operation and how you can use it in your blog. I conclude with some possible alternative uses and pointers on future developments.
First of all, to get a clearer idea about the problem I'm talking about (and my solution), have a look at this post about a court case I was following. As you can see, there were five updates (each about two paragraphs) over the twelve months after the original post. This is fairly common with my posts - perhaps a quarter of them feature one or more updates like this.
I have long adopted the convention of using *** UPDATE *** to indicate that the subsequent text has been appended to the original post. I also use a named anchor (eg <a name="update1"> ... </a>) on each update heading. Why? Two reasons. Firstly, it gives me a unique URL for each update (ie http://...#update1) in case someone wishes to bookmark it. Secondly, my Blog-Nav system picks up anchors so that users can jump up and down the page (use the up/down arrow in the top right to see).
What the Update Extractor pipe does is gather my blog's RSS feed (not Atom - see below) and parse out the updates, returning a new RSS feed that consists of just the most recent updates. This works because of handy feature in Blogger's RSS feed that is not present in Atom: when you update any post it automatically goes to the top of your RSS feed. The rest is just straightforward regular expressions in Yahoo's Pipes.
With this new feed, you can offer it to readers (perhaps after burning it through FeedBurner for stats) and/or display it in your blog's sidebar to let all readers know. The links will point to the actual update, not just the post (eg http://...#update1)
Now, the latest Blogger has support for displaying arbitrary RSS feeds: you can simply use that. Or, you can create a "special" feed that will work with the Hearsay hack to give you a bit more control over presentation.
If you want an RSS feed of your recent updates, use this URL:
http://pipes.yahoo.com/pipes/pipe.run?BlogID=xxxxxxxx&_id=pAQ35A322xGwxdeMouNLYQ&_run=1&_render=rss
(replace xxxxxxxx with your blog's Blogger ID)
If you want a Hearsay-style sidebar panel of your recent updates, insert this code into your Blogger template sidebar:
<div id="recent-updates" ><center><br/><br/><br/>Please wait ... <br/>loading updates.<br/><br/><img src="http://ghill.customer.netspace.net.au/snake_transparent.gif"/></center></div>
<script type="text/javascript" src="http://ghill.customer.netspace.net.au/hearsay/hearsay-v01c.js"></script>
<script type="text/javascript">
hearsay("http://pipes.yahoo.com/pipes/pipe.run?BlogID=xxxxxxxx&_id=Ik9FeAz22xGZT18tqWIyXQ&_run=1&_render=json", "recent-updates", true);
</script>
(Again, where xxxxxxxx is your blog's Blogger ID.)
The Update Extractor comes in three flavours: "Full" grabs all the text following an update (ie to the end of the post); "Partial" grabs just the next (substantial) paragraph and "Hearsay" grabs the partial feed but prepares it for display by the Hearsay script. Please feel free to clone and modify the pipes as needed; I'd appreciate it if you could put a comment here so I can have a look.
NB: Using more Pipes, your blog's update feed can be merged easily with your blog's comment feed if that would make more sense for your blog.
One downside of this solution is when there are multiple updates to a post: it will only "see" the most recent (ie physically last) update. This is okay for low-frequency updates but completely inadequate if you put your updates at the top of the blog.
The problem is that the feed doesn't contain any information about the time of all the updates, just the first publication timestamp and the most-recent update timestamp. To deal with this, I'm now using a new convention whereby instead of naming my anchors "update1", "update2" etc I'm using a timestamp "update1177829961000". Future versions of the pipe will be able to see this and handle multiple updates per post intelligently.
Rather than typing all that in each time, I've made a bookmarklet to help out. (See below for code.) The automatically generated update heading looks like this:
<center><a title="Sunday, 29 April 2007 04:59:21 PM" name="update1177829961000"><span style="font-weight:bold;">*** UPDATE ***</span></a></center>
This same basic approach - mark out content with an anchor, process the RSS feed through Pipes and display via JSON - can apply to other content too. For example, I quote heavily from newspapers in my blog posts, so I could create a feed just of quotes. You could also make a feed for hat-tips, code, links, images, citations, headings or pretty much anything else.
So there you have it: blog update feeds for your subscribers and visitors. As usual, comments, criticisms and suggestions are most welcome.
Timestamp Anchor Bookmarklet Code:javascript:var insert_date= new Date(); insert_timestamp=Date.parse(insert_date); insert_html='<center><a title=%22'+insert_date.toLocaleString()+'%22 name=%22update'+insert_timestamp+'%22><span style=%22font-weight:bold;%22>*** UPDATE ***</span></a></center>'; document.forms.stuffform.htmlPostBody.value+=insert_html; void(0);
It occurs to me that maybe a live working example on this page might help. This is what I mean by an update - some content added some hours laters. If you mouseover the update heading thingy above, you'll note that it gives you the time of update. At the risk of inducing recursive madness, here's Freshblog's update feed. Note that the embedded link in the feed doesn't just point to this post, it points to this update (via the named anchor).
After noticing "something screwy" going on, I've modified this Yahoo Pipe to append the now-required orderby=updated to the feed fetch module. Props to Phydeaux3 for the explanation and syntax.
Filed in: blogtech, blogger-hacks, feeds, how-to
Wednesday, April 25, 2007
In my ceaseless quest for content to clutter up my blog's sidebar, I have found a rich new source: reader search queries, or "buzz". BuzzFlux allows you to retrieve and display these search queries in near-real-time, right in your sidebar, for the amazement of your readership. It also signals my return to blog-hacking after a six month hiatus.
Should I Do This?
First things first: is it a good idea to display your readers "live" search queries on your blog? On the plus side, it gives readers a good idea about what kinds of content your blog has (at least, as far as search engines and their users are concerned). In that sense, search queries may be considered as micro-content, a bit like tags. It may also help keep readers on your page, especially if coupled to your built-in blog search (see below).
On the downside, it may disturb some readers to see their recent queries displayed like this and some may be sensitive to the privacy side of things. Also, you have no control over what readers type into search engines, so you may be displaying potentially defamatory, profane or otherwise inappropriate content on your blog.
I'd be interested in Freshblog's readers' views on this one, so please chime in with your own thoughts on this question.
How Does BuzzFlux Work?
Most blogs worth their salt employ some sort of web stats service. Typically, you put a bit of code into your template that "phones home" to a central server every time a page is hit. Among other things collected is the referring URL, which contains the search query if the reader used a search engine to find your blog.
I think all stats services report on search queries. I use BlogFlux for some of my web reporting. They make some (though not all) of their stats available via RSS, which is handy for hacking. Unfortunately, the search queries page isn't one of them. To get the search page info in a useful form, I made a simple Dapp to retrieve the target page. (Here's the Dapp.) Once the contents are returned as a JSON object (an array of the top search queries), the BuzzFlux script just formats the results for display in the sidebar.
If there are more search queries than space permits, BuzzFlux "rotates" the queries every few seconds. (That is, it swaps in other queries at random).
As a nice add-on, readers can click on a search query of interest and my sidebar searching hack will scour your blog for that query, displaying the results in your sidebar too. By showing readers other people's queries and the results on the page, it's hoped that it will help readers find relevant content without leaving your site. (NB: This extension requires you to install the Recursive Backlinker hack.)
Check out the magic in action on The Speccy (scroll down to "Catch the Buzz" in the sidebar).
How Do I Install BuzzFlux?
First, go and register with BlogFlux and install their stats counter on your blog. (This hack doesn't have to rely on BlogFlux, but that's how it is at the moment.)
Next, put this in the header of your blog template:
<script type="text/javascript">
// BuzzFlux
Buzz = {"divid":"BuzzFlux", "limit":"15", "timer":"2000", "blogid":"1413", "period":"hour", "scan":"", "queries":[]};
</script>
<script type="text/javascript" src= "http://ghill.customer.netspace.net.au/buzzflux/buzzflux.js"></script>
The parameters are as follows:
divid = the ID of the div in your sidebar where all this content will be displayed.
limit = the number of queries to display at any given moment
timer = the delay (in milliseconds) between rotating queries
blogid = the BlogFlux ID number for your blog. Found in the URL of your results pages.
period = the period over which search queries are drawn. Allowable values are month, week and hour. Only use hour for high-traffic blogs since you want a reasonable number of queries to display (ie less than five search hits an hour and it will look a little sparse).
scan = the ID of your in-blog search field. Leave it as "" if you're not using the extension.
Now, edit your blog template to put this in your sidebar:
<div id="BuzzFlux" style="text-align: justify"> ... loading recent search queries ...</div>
Finally, you might consider throwing some CSS styling in. Either add these to your CSS file, or put them in the <style> part of your template header:
.BuzzList{ height: 9em; overflow: hidden; padding: 10px;}
a.BuzzItem{ text-decoration: none;}
a:hover.BuzzItem{ text-decoration: underline;}
Where To Next?
This opens up a range of possibilities. Not least is that FreshTags has for some time supported tag extraction from search queries, providing a means for some sort of query/tag cross-over. Another thought would be to use Yahoo's Pipes to merge, sort and process buzz from other (related? or rival?) blogs too.
As alluded to before, there are also pitfalls too. For example, who owns the copyright on a collection of search queries? Who's liable for publishing them? Of course, it's anonymous - to a degree. Without the aggregation effect of a Google Zeitgeist, it may be more like AOL's search debacle from last year.
Filed in: blogtech, blogger-hacks, search, blogsearch
Saturday, April 21, 2007
Play golf totally in 3D on realistic courses that will take your breath away!
Play along with Vijay Singh in the most realistic golf game on mobile with its unbelievable 3D graphics! Play on golf courses like the famous Harbor Town Link and discover the benefits of golfing in total 3D: new camera angles for high-precision shots, a 3D environment with an ultra-realistic effect on your ball’s trajectory, and more! Get the ball rolling on your pro career and discover all the great features Pro Golf 2007 3D has to offer, including the intuitive shooting system allowing beginners to golf in no time and all the gameplay subtlties that will thrill the most demanding golfers!
Features Pro Golf 2007 3D Feat. Vijay Singh
- Awesome graphics and players in total 3D for maximum realism.
- 3D ground surfaces worthy of a real-life golf course that won’t leave you any room for error.
- Play along with Vijay Singh on a legendary golf course: the Harbor Town Link!
- An intuitive shooting system for beginning and lots of effects to master for the pros!
Compatible Devices
LG : KU800 / KU970
Motorola : RAZR V3xx / RAZR V3xxv / V1100 / V6
Nokia : 3250 / 5300 / 5500 / 6085 / 6125 / 6126 / 6131 / 6136 / 6151 / 6233 / 6234 / 6270 / 6280 / 6282 / 6630 / 6680 / 6681 / 7370 / 7373 / 7390 / E50 / E61 / E62 / E70 / N70 / N71 / N72 / N73 / N75 / N80 / N91
Sagem : my600V / my600X / my800V
Samsung : SGH-P920 / SGH-Z140 / SGH-Z150 / SGH-Z230 / SGH-Z300 / SGH-Z310 / SGH-Z400 / SGH-Z500 / SGH-Z510 / SGH-Z540 / SGH-Z560 / SGH-ZV10 / SGH-ZV30 / SGH-ZV40 / SGH-ZV50
Sony Ericsson : D750i / K310i / K510i / K550i / K600i / K610i / K750i / K790i / K800i / V630i / W200i / W300i / W550i / W610i / W700i / W710i / W800i / W810i / W850i / W880i / Z520i / Z530i / Z550i / Z710i
Tuesday, April 17, 2007
Sorry for the lack of Wii hacks, but the truth is, there is nothing new to report. The hype with the Wii seems to have died down a bit, and no new developments have been made in regards to executing arbitrary code on the Wii console. While I wait in hopes that someone will finally unlock this little white box, there an another little white box in my life now... The Apple TV. And this one is completely hackable
If you have any Wii related hacks that you would like to see featured on this site send an email to liquidice629 at gmail
Sunday, April 15, 2007
The Internet Channel is out of beta, and a new download is available in the Shop Channel.
Nintendo and Opera has unleashed a new version of the beloved internet channel on the Nintendo Wii. It's new features include:- Parental Control support
It sounds like the most useful feature is going to be the option to hide the toolbar. Finally we can watch fullscreen movies on the wii in the browser! I'm upset not to see usb/bluetooth keyboard support in this release, maybe next time? The parental features are useless because kids will find a way around them, but I guess Nintendo has to at least make an attempt.
- Optional Internet content filter provided by Astaro (available soon)
- Improved start-up speed
- Clearer text when zoomed-in
- Improved Wii Remote navigation
- Improved scrolling and zooming
- Built-in search via Yahoo! or Google
- Option to hide Toolbar
- New cursor animations and operation sounds
- Ability to view page security information
- Option to delete cookies
- Built-in support manual
UPDATE: The latest browser breaks some things like playing long flv video files. Developers are searching for workarounds. Check Pimpware.org and WiiCR.org for more info.
Labels: wii browser
Tuesday, April 10, 2007
I'm alive, but not kicking. I'm dead lazy nowadays. Don't ask me why, but I just am into several other things.
Anyway, to break the ice (again), I'll start with a tip for the budding developers out there. Most of the seasoned folks already know about most of these tools. This is just my personal list of essential tools used for my web development.
1. Mozilla Firefox
If you love customizations, Firefox is the browser you want. It is not "the" complete browser around, but its extensibility is enough to make it a clear winner.
As I read somewhere out on the internet, Firefox's secret is the same as Jessica Simpson's: it's chic style is the result of... ahem... extensions.
The single best thing that I love about Firefox is extensions... extensions for any damn thing you can do in the universe (Except, maybe, brewing a cup of coffee :P)
In fact there are so many Firefox extensions around, that your head will spin.
Now the interesting part. Even you can create an extension yourself. You just have to have a basic knowledge of XUL and Javascript, which is so easy to be called a trifle.
Firefox is a much better browser than Internet Explorer (On second thought, a real browser unlike IE, as Aditya once pointed out.)
So what are you waiting for? Just dump Internet Explorer and start using Firefox.
2. Firebug
This was the first extension I looked for after I installed Firefox in my new laptop at office. I cannot live without this extension. This is a very desirable tool for any web developer.
It lets you inspect and edit HTML, change the CSS style on the fly, debugs javascript code and even monitor the loading times of the components in a web page.
I'm particularly impressed with the CSS/HTML editing on the fly, because I can perfect the CSS without the toiling job of saving the page-loading-saving again.
The AJAX debugging capabilities are also too good. I still don't know of any other method to debug AJAX calls.
3. IE Tab
This is for those people who just can't ignore their readers who still use Internet Explorer. Even if I loathe IE, I can't turn a blind eye towards that pathetic software which calls itself a browser.
This Firefox extension adds an option to open in IE Tab in your Status Bar and in the right-click menu.
If you open in IE Tab, it uses the rendering engine of Internet Explorer, so you will get a view just like in IE, without going out of the luxury of Firefox.
This is useful to fix the nasty IE bugs.
4. Ning
Ning calls itself a personal Social Network creator. But it is more than that. It can do a lot of things like hosting server side scripts for free. Of course, I know it is not all that Ning can do.
I myself am not very much aware of the power of Ning, because I haven't ventured into those seas yet. I'm still in a learning phase with Ning.
Several of the PHP scripts of the bleet are hosted in Ning:
a. Wrinks
b. Javascript Minify
c. Native Search Suggest
All I can say is that very few people have usefully tapped Ning's power.
5. Macromedia Dreamweaver
I'm so spoilt by this software that I can't think of anything else to edit my XHTML/CSS/JS code. I don't use it for any pleasure other than proper syntax check and coloring while I code.
6. TidyJSON
Programmers working with JSON feeds encounter a very irritating problem. The feed you get will usually be a one-liner, and it is a toilsome, if not impossible effort to check the objects inside the JSON feed. This is where TidyJSON comes in handy.
It is a commandline utility to read JSON from a file and format it with good coloring and indentation. Working with JSON will never be the same!
7. URI Encoder
You will definitely need this if you are posting some code in your blog. You'll need to convert all those tags to corresponding URIs. There are umpteen number of online tools to do that. This is just one of them.
8. Javascript Compressor
You can always save some valuable load time by compressing your JS code. This basically removes all unnecessary stuff like extra newlines, comments and renames some variables, so that you end up getting a much smaller file size.
For those crazy ones, you can obfuscate the code too. I don't do that. I want my readers to read and understand the code, if they want.
There are umpteen number of static compressors out there. One which needs particular mention is Stephen's JScripts Minify. It is a dynamic Javascript compressor which requires you to just host the original JS file in jscripts.ning.com and access the file with argument ?minify. Check his post for more info.
9. JavaScript Code Improver
This does just the reverse of the previous. This converts compressed or obfuscated code into a more readable format. Very useful in reverse engineering.
10. The Prototype API document
This is a very useful document for people who use Prototype library extensively. Available as a PDF document as well as a sidebar extension for Firefox.
Labels: Thinktank
Sunday, April 1, 2007
Solution for the last hundred yards
For those who haven't seen the news yet, Google has announced TiSP, a free in-home wireless broadband service. It's in BETA, and those wishing to participate must apply TODAY, April 1, 2007.
Installation couldn't be simpler: Remove the spindle of fiber optic cable from the installation kit, activate the patented "GFLush" system which connects the cable to one of thousands of TiSP Access Nodes, where Plumbing Hardware Dispatchers (PHDs) complete the access point connection.
Drawbacks: Google Toolbar must be installed, presumably so Google can serve up their ads on this advertising supported service.
Don't forget, incidentally, that today is Internet Spring Cleaning Day.
Labels: google
