Stack Overflow DevDays 2011–Sydney
Posted by Simon Hartcher on June 29, 2011 at 10:19 am | Last modified: June 29, 2011 10:28 amStack Overflow DevDays is back in 2011 and they’re coming to Sydney! Joel Spolsky announced this today on his and Stack Overflow’s blog, and Joel himself is in the agenda for the Sydney event. Whether this means that he will be there in person is yet to be seen. I am imagining a recorded welcome message of some sort, but I hope he will be there.
When the 2009 DevDays was announced I was pretty excited but unfortunately there was no Sydney event, so I am super pumped that they are coming to Australia this time round. Work might even be covering the cost for me.
What’s being covered and the full lineup of speakers isn’t fully decided yet but here’s what the event page currently says:
Stack Overflow DevDays this 25-26 October in Sydney. This 2-day conference will feature technical programming talks and networking with your fellow Stack Overflow users.
The 2009 Stack Overflow DevDays received rave reviews, featuring all the latest programming topics like Python, Android, jQuery, iPhone, FogBugz, QT and ASP.net MVC. The speakers at 2009′s Stack Overflow DevDays included Joel Spolsky, Jeff Atwood, Scott Hanselman, James Yum, Mark Harrison, Daniel Rocha, Yehuda Katz, Cody Lindley, Dan Sanderson, Steve Seitz, Ted Leung, Dan Pilone, Ned Batchelder, Patrick Hynds, Chris Bowen, John Resig, Miguel De Icaza, Eric Jones, Travis Oliphant, Jonathan Johnson, Peter Mourfield, Jonathan Sharm, Damien Katz and Jason Cohen.
I can’t wait!
Proun–Pay What You Want!
Posted by Simon Hartcher on June 28, 2011 at 1:22 pm | Last modified: June 28, 2011 2:26 pmWhat Is Proun?
Proun is a strange racing game in a world of geometric objects and large coloured surfaces. You avoid obstacles by rotating around a cable in order to gain as much speed as possible. There is no up or down; there is only the cable to which you are attached.
Proun is a mix between a racing game and abstract art, pitting you against bots, ghosts of yourself (your previous bests) and countless players online. I found the art style quite pleasing and it really compliments the game mechanics. Having all these different shapes and colours trying to foil your racing line is both aesthetically pleasing and mechanically challenging. There are also user-made tracks which will no doubt increase the longevity of the game once there are more to choose from.
How Much Does It Cost?
The most interesting thing is that Proun employs the pay-what-you-want model that more indie games seem to be embracing. My first foray into this was Radiohead’s In Rainbows, which despite being a happy accident for the band, is now an ever getting more popular for indie games developers such as Frozenbyte with their now finished but successful Humble Bundle.
Personally, I paid $10USD for the game, but as the model implies, you can pay whatever you want. This includes nothing. There are benefits to paying, as all paying customers receive a bonus map. For me, $10 seems to be the sweet spot for these kind of games. They don’t take forever to make but they are filled with love, and if everyone who played gave them 10 bucks, I’m sure their next game will have just as much love. They might even make enough to feed their kids.
The Future…
It is really sad that a lot of these gems are missed by the majority of gamers just because they aren’t AAA. There are nostalgic games for the 20-30’s age bracket like the bullet-hell game Jamestown, which is totally new to the teens of today who missed out on the games of old.
I am a big supporter of indie games and I buy just about all of them that come on Steam. Valve are great supporters of indie games and I would love to see Proun on there. Maybe one day Valve might even implement a pay-what-you-want system of their own, where the greater gaming community will see more of these kind of games in a pricing model that really works for them.
Multiple CPU’s overkill?
Posted by Simon Hartcher on June 27, 2011 at 9:21 pm | Last modified: June 27, 2011 9:22 pmI love my Phenom II 1100T Black Edition, but a lot of people wonder when anyone would need six cores. Well, according to the image below…
…verifying, repairing and extracting a series of new downloads from Usenet seems to be a good answer.
Dropbox, Secure Passwords & Screen Grabbing
Posted by Simon Hartcher on June 21, 2011 at 9:42 pm | Last modified: June 22, 2011 1:08 pmThe Cloud
Use Dropbox? You should! There’s not an easier way to store your files in the cloud. Sure, Dropbox has had some bumps along the way but you shouldn’t really have your credit card or banking details in there anyway. If there is something in there that requires utmost care, since it is just a directory on your computer, it can store any type of file, like a TrueCrypt partition…
Password Security
I don’t need anything like that right now, but I do store all my passwords in Dropbox using 1Password.

Imagine never having to remember more than 1 Password, and all of your logins are secure! Even if someone got the password to your favourite gaming forum, they wouldn’t be able to get into anything else (like your online banking). 1Password is not free, but the user interface is great, it integrates with almost every browser you’d ever want to use and it runs on Windows, Mac, Android and iOS. Store it right in Dropbox and you’ve got your passwords on all your everyday devices (home, work, tablet or phone).
If you are looking for a free alternative you can always try KeePass, but do try out 1Password as it comes with a 30 day trial.
Sharing is Caring
If you’ve ever wanted to share a screengrab with a buddy or co-worker you probably had to go through some grueling manual process:
- Press PrintScn (or Alt + PrintScn) to take the shot
- Paste into your image editor of choice
- Save to a suitable format
- Upload to some image host
- Find the direct link
- Send to your buddy/co-worker
I don’t know about you but I wanted a better way!
Well, Dropbox Screen Grabber is the answer. I’m not sure who Tomaž Muraus is (either a Dropbox developer or community member), but this thing is cool! It doesn’t have an installer, just a binary zip with the required files to run. When running, it just sits in your tray unobtrusively, and all you need to do is use the hotkey you set to get it to work. 
As you can see from the image above, you can set two hotkeys:
- A full screen screenshot
- A screenshot of the active window
I will probably stray away from the default hotkeys as some programs I use utilise those keys but for now the defaults should suffice. Below is an image of the notification you receive when the grab is successful. There’s also an option to copy the link straight to your clipboard, just right click the tray icon to access all the options.

It has a few things I would improve (such as fullscreen application support such as games) but it serves well as a handy work tool removing one of the manual processes we could do without. One thing to check if you are having issues is that the Public folder does exist in your Dropbox. If it doesn’t the program will not work, and it will give you no indication that there’s a problem (apart from the lack of notification).
Happy grabbing! (that’s not creepy at all)
Serious Sam HD – Kleer Skeleton Surfing
Posted by Simon Hartcher on January 27, 2010 at 11:04 am | Last modified: January 27, 2010 11:04 amSomething funny I discovered while playing Serious Sam HD – The First Encounter. A bit of a bug I guess.
Image Caching for a WPF Desktop Application
Posted by Simon Hartcher on December 12, 2009 at 9:49 pm | Last modified: June 29, 2011 11:11 amWPF is a great technology and in my opinion is miles better than WinForms. Unfortunately, like any technology there are always going to be shortfalls that you have to work around yourself. My company is presently developing a WPF Desktop Application that fetches images from a web server. One of the shortfalls of WPF is that client side caching is not implemented, but you can do it yourself using custom bindings.
Consider the following code where the binding ImageAddress points to an image on some web server (www.someserver.com/image.jpg):
<Image Source="{Binding ImageAddress}"/>
Each time the Window in which this code resides is loaded the image will be fetched from the web server.
Every time you say?! Every time…¦
Considering the application we are working on will be displaying a lot of images, this is just not acceptable. I kept thinking that there has to be a way to turn on caching, but after Googling (the good kind) until my hands were sore I discovered there was no switch I could just turn on. I asked a question on StackOverflow and it was suggested that I just save the images to a local directory. Unfortunately that was all he said.
After some searching I discovered that using the Binding.Converter attribute I could pass the value of the Source attribute to a Converter and then back again. To create a converter you create a class that implements IValueConverter. IValueConverter requires that you implement two methods:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
Convert will be used to convert the data you pass to it into the desired format to display on the form. ConvertBack is the reverse, where any changes the user makes to the data displayed on the form may need to be converted back to a format that you require for processing (eg. to send to a database). Here is an example as provided on msdn:
The following example shows the implementation of a date converter that converts the date value passed in so that it only shows the year, the month, and the day. When implementing the IValueConverter interface, it is a good practice to decorate the implementation with a ValueConversionAttribute attribute to indicate to development tools the data types involved in the conversion, as in the following example:
[ValueConversion(typeof(DateTime), typeof(String))]
public class DateConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
DateTime date = (DateTime)value;
return date.ToShortDateString();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
string strValue = value as string;
DateTime resultDateTime;
if (DateTime.TryParse(strValue, out resultDateTime))
{
return resultDateTime;
}
return DependencyProperty.UnsetValue;
}
}
As you can see, in Convert value is cast to a DateTime object and then returned as a string using ToShortDateString(). Then in ConvertBack (which will be passed a string from the form) the string is parsed into a date using DateTime.TryParse() and then returned if it completes successfully.
So, onto the specific problem of caching an image on the local machine. I start with an empty class called ImageCacher implementing stub methods from IValueConverter. As we are grabbing the web address from a database, we are not interested in sending the local address back to the database, so we can simply complete ConvertBack returning a null value.
//Not needed – return null
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
We then add the ValueConversionAttribute to indicate to development tools the data types involved in the conversion. This is not compulsory, but I think it also makes understanding what the converter is doing easier in a single glance. Our goal is to grab the string from the Source attribute and then pass one back with the updated image location (after we save it locally). So in this case, we are converting from a string to a string.
[ValueConversion(typeof(string), typeof(string))]
class ImageCacher : IValueConverter
{
Let us define where our images will be saved.
static private readonly string AppDataDirectory = String.Format(“{0}/ImageCacher/”, Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
Here we use the Environment class to return the path to the Application Data folder on the local machine via the GetFolderPath method with the SpecialFolder.ApplicationData enum. I have simply appended that directory with the directory ImageCacher, as that is where we will store our images.
First thing in Convert is to check to see if our directory already exists, and create it if it doesn’t.
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
//Check to see if the directory in AppData has been created
if (!Directory.Exists(AppDataDirectory))
{
//Create it
Directory.CreateDirectory(AppDataDirectory);
}
Since we are working with a web address, we will create a Uri from our string. Once we have that, we can use the Segments property of the Uri class to grab the name of the image in the web address, and we’ll use that to define the local path where the image will be stored (or is already stored, if it has been downloaded before).
//Cast the string into a Uri so we can access the image name without regex
var uri = new Uri((String)value);
//The full path of the image on the local computer
var localFile = String.Format(“{0}{1}”, AppDataDirectory, uri.Segments[uri.Segments.Length-1]);
Next, we check to see if the image has been stored locally already, and if not, we fetch it using a HttpWebRequest and grab the response using HttpWebResponse.
if (!File.Exists(localFile))
{
var request = HttpWebRequest.Create(uri);
var response = (HttpWebResponse)request.GetResponse();
Because we used the HttpWebResponse class, we can check the ContentType of the response to make sure that we are in fact fetching an image. If it isn’t, we throw an exception.
//check the content type to assert that the file in the uri is an image
if (!response.ContentType.StartsWith(“image”))
{
throw new FileFormatException(uri, String.Format(“Uri passed to ImageCacher does not return an image. Content is of type {0}.”, response.ContentType));
}
Now that we have asserted that the response is actually an image, we can load it from GetResponseStream into the Image class (System.Drawing) and then save it to the path we defined earlier.
//load the image from the stream var image = Image.FromStream(response.GetResponseStream()); //save it image.Save(localFile); }
Finally, return the path to the local file.
return localFile; }
Then in XAML, reference our converter using an xmlns tag and add our converter in the resources area.
<Window x:Class=”MyImageCacher.Window1″ xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” xmlns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2006″ xmlns:d=”http://schemas.microsoft.com/expression/blend/2008″ xmlns:con=”clr-namespace:MyImageCacher.ImageCacher”> <Window.Resources> <con:ImageCacher x:Key=”imageCacher”/>
Then we add the Converter attribute to the Binding of our original Image control.
<Image Source=”{Binding ImageAddress, Converter={StaticResource imageCacher}}“/>
And its as simple as that. Each time an address is passed to the control, it will run it through the converter first. It will check to see if the image exists locally, and download it if it hasn’t been. The solution could be more polished but this is working for us right now.
GrabIt – A Good Free Binary Newsreader
Posted by Simon Hartcher on September 23, 2009 at 2:03 pm | Last modified: September 23, 2009 2:11 pmI recently started using Usenet through Astraweb which has been great. Its a great way to get files…FAST! The problem was I couldn’t find a decent client that was free, supported binary downloads and had auto repair (PAR support).
I had been using a trial of Newsbin Pro which was great but I thought there surely must be a free alternative out there. After a bit of searching I found GrabIt – A free binary newsreader with all the features I mentioned above. Simply download and install! No bloatware to be found. The only advertising is a menu item (shown below) which opens browser links to Shemes.com Usenet Services.

They provide Usenet Search subscriptions which I guess seem like pretty good value but I find Newzleech to be more than sufficient. There are also Sheme Usenet Server subscriptions but Astraweb is much better value.
The only tinkering I needed to do after installation was increase the number of server connections.![]()
- Right-Click Default Server under Subscribed groups
- Click server properties
- Move the slider bar under Maximum allowed connections to the right to increase the value (up to a maximum of 32 connections)
- Click Ok
Any downloaded files will automatically extract (and repair if needed) to a directory which you can specify in Preferences under Edit. GrabIt comes with nzb support and association, so the steps to downloading a file is simple:
- Start a Usenet search at Newzleech
- Download and open the nzb file for the desired file(s)
Have fun!
HOWTO: Query MSSQL And Send HTML Email Using Powershell
Posted by Simon Hartcher on August 13, 2009 at 11:31 am | Last modified: June 29, 2011 5:33 pmBefore I start this tutorial I must preface this with a warning: The amount of coding in this tutorial is so minimal it is almost sexually exciting. I have found that Powershell is such a powerful scripting tool that you can accomplish tasks that would take 100′s of lines in a lot less. This tutorial is an amalgamation of several different tutorials I found online when I wanted to have a crack at emailing a report to a client. As it turned out it is now run daily as part of our scheduled tasks.
Powershell is what you would call the successor of Command Prompt but more is akin to a *nix command line tool like bash. As it seems that everything is going .NET these days it should be no surprise that Powershell also leverages the .NET Framework. If you have used C# or VB.NET before the kind of objects you will be working with will be quite familiar. I am running Powershell 2.0 on the Windows 7 RTM (which comes preinstalled) but Powershell 1.0 will also work with this tutorial.
Getting A Working Connection String
The first thing we want to do is form our SQL query which will be the data that we will email to our client. To do that in Powershell we are going to need a connection string. A handy little tool that I use to grab a connection string is the Data Link Properties file. You can just create a new file somewhere called:
Test.udl
You will need to be able to see all file extensions to create the file. Open the file using Windows Explorer and go to the Provider tab. Once there you need to select “Microsoft OLE DB Provider for SQL Serverâ€.![]()
Once that has been completed we need to go to the Connection tab and enter our server details. If you have entered the correct details (Server Name, User and Password) you should now be able to click the “Select the database on the server†checkbox which will show a dropdown list of available databases. For the purpose of this tutorial I have chosen the AdventureWorks database.
Please also note that I have checked “Allow saving password†that will make it so we don’t have to enter it manually later. In my case, since the script is sitting on a work server there is no risk in leaving the password as plain text in the file.
Once you have completed all of the above, click Ok. You will get a warning about saving the password to which you can just click yes. Obviously in a less secure environment on a production server you may want to consider other options for storing your password, but that is beyond the scope of this tutorial.
Now that the file (Test.udl) is saved if you open it in your favourite text editor you will see something like this (I have removed my server password for obvious reasons):
[oledb] ; Everything after this line is an OLE DB initstring Provider=SQLOLEDB.1;Password=*******;Persist Security Info=True;User ID=sa;Initial Catalog=AdventureWorks;Data Source=DEEVUS-PC\SQLEXPRESS
All we actually need is the text on line 3 excluding the first segment “Provider=SQLOLEDB.1;†which gives us our working connection string!
"Password=*******;Persist Security Info=True;User ID=sa;Initial Catalog=AdventureWorks;Data Source=DEEVUS-PC\SQLEXPRESS"
Querying SQL Using Powershell
Now that we have a working connection string, we can begin coding our Powershell script. The first thing we need to do is create our connection object:
#Connection Object
$cn = New-Object System.Data.SqlClient.SqlConnection(
"Password=********;Persist Security Info=True;User ID=sa;Initial Catalog=AdventureWorks;Data Source=DEEVUS-PC\SQLEXPRESS"
)
Then we create our query string:
$q = "SELECT TOP 50 * FROM HumanResources.vEmployee ORDER BY LastName"
We also need an Adapter and a DataSet to gather and hold our data. Once you have gathered the data using the SqlDataAdapter you put the results into the DataSet:
#Data Adapter which will gather the data using our query $da = New-Object System.Data.SqlClient.SqlDataAdapter($q, $cn) #DataSet which will hold the data we have gathered $ds = New-Object System.Data.DataSet #Out-Null is used so the number of affected rows isn't printed $da.Fill($ds) | Out-Null #Close the database connection $cn.Close()
Creating The HTML Email
So now we have the data that we want to email we need to format it into HTML. Powershell has an inbuilt function called ConvertTo-HTML which automagically turns data into HTML! It is really quite simple:
$emailbody = $ds.Tables[0] |
Select-Object LastName, FirstName, JobTitle, Phone, EmailAddress, AddressLine1, City, PostalCode |
ConvertTo-HTML
Select-Object will simply grab the members from the DataSet that we need. As you can see in the above snippet we have grabbed some general information about the employees at AdventureWorks. If you’ve gotten to this point and want to see what the outcome might look like, you can add Out-File test.html to the end of the last line so that it looks like this:
ConvertTo-HTML | Out-File test.html
This will save the results to a html file which you can freely view in your preferred browser.
As you can see from your html file (or the screenshot provided) it is not the prettiest markup on the internet. However, there are ways to improve the look and feel of the generated html via the –head parameter of ConvertTo-HTML. The head parameter will essential pass whatever you give it to the <head> tags of the HTML. The head of a HTML markup can be used to shape the look and feel of the body of the document, so this way we can pass it some information to make it look nicer.
#HTML Email Styles
$style = "<style type='text/css'>"
$style = $style + "BODY{background-color:#FFFFFF;font-family:Verdana;}"
$style = $style + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;font-size:12px;}"
$style = $style + "TH{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:#D3D3D3 }"
$style = $style + "TD{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:#FFFFFF }"
$style = $style + "</style>"
And then the last line will look like this to implement the styles we just created:
ConvertTo-HTML -head $style | Out-File test.html
Sending The Email
For the final stage of this tutorial we need to actually send the email. First things first we should create all the variables pertaining to sending an email – From, To and the Subject
$emailFrom = "deevus@isp.com.au" $emailTo = "someone@anotherisp.com" $subject = "AdventureWorks - Current Employees"
Now we form the message using the Net.Mail.MailMessage class.
$message = New-Object Net.Mail.MailMessage($emailFrom, $emailTo, $subject, $emailbody) #This is needed to make sure it interprets the email as HTML $message.IsBodyHTML = $true
And the SMTP server using the Net.Mail.SmtpClient class.
$smtpServer = "smtp.isp.com.au" $smtp = New-Object Net.Mail.SmtpClient($smtpServer)
Finally, like magic, we send the email!
$smtp.Send($message)
Before we run the script, make sure you remove or comment out | Out-File test.html, otherwise the email will be blank.
ConvertTo-HTML -head $style #| Out-File test.html
Then all you need to do is run the script from the Powershell console.
If all is well, your recipient should receive a nicely formatted email sent using Powershell with data from SQL.
Great Success!
Here is the Powershell script in its entirety:
#Connection Object
$cn = New-Object System.Data.SqlClient.SqlConnection(
"Password=********;Persist Security Info=True;User ID=sa;Initial Catalog=AdventureWorks;Data Source=DEEVUS-PC\SQLEXPRESS"
)
$q = "SELECT TOP 50 * FROM HumanResources.vEmployee ORDER BY LastName"
#Data Adapter which will gather the data using our query
$da = New-Object System.Data.SqlClient.SqlDataAdapter($q, $cn)
#DataSet which will hold the data we have gathered
$ds = New-Object System.Data.DataSet
#Out-Null is used so the number of affected rows isn't printed
$da.Fill($ds) | Out-Null
#Close the database connection
$cn.Close()
#HTML Email Styles
$style = "<style type='text/css'>"
$style = $style + "BODY{background-color:#FFFFFF;font-family:Verdana;}"
$style = $style + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;font-size:12px;}"
$style = $style + "TH{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:#D3D3D3 }"
$style = $style + "TD{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:#FFFFFF }"
$style = $style + "</style>"
$emailbody = $ds.Tables[0] |
Select-Object LastName, FirstName, JobTitle, Phone, EmailAddress, AddressLine1, City, PostalCode |
ConvertTo-HTML -head $style #| Out-File test.html
$emailFrom = "deevus@isp.com.au"
$emailTo = "someone@anotherisp.com"
$subject = "AdventureWorks - Current Employees"
$message = New-Object Net.Mail.MailMessage($emailFrom, $emailTo, $subject, $emailbody)
#This is needed to make sure it interprets the email as HTML
$message.IsBodyHTML = $true
$smtpServer = "smtp.isp.com.au"
$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($message)
The Windows 7 Upgrade Path
Posted by Simon Hartcher on August 11, 2009 at 11:02 am | Last modified: August 11, 2009 11:13 amAs part of my daily news crawl I came across a post on iTNews by Iain Thomson regarding the Windows 7 Upgrade Path:
Data released from Microsoft on the upgrade methods for Windows XP and Vista users makes it look as though users will have a tough time installing the new operating system.
A chart released to the Wall Street Journal shows that very few of the upgrade option open to users will be possible without serious changes.
Most, in fact, will require the complete wiping of the hard drive and an installation from scratch.
To paraphrase my comment on that post:
To be perfectly honest I don’t feel like Microsoft SHOULD provide an easy upgrade path from XP (a 10 year old OS!).
The amount of crap that would be accumulated over time on a PC running XP since its inception would be ridiculous. Anyone who knows anything about Windows XP would have done periodic clean installs anyway to get the best out of the operating system. They would have to be used to a backup scheme anyway, except now Microsoft will make it easier with [Windows Easy Transfer].
So what if people will have to do a clean install to move to Windows 7? As said above, unless you do regular clean installs with Windows XP you’re not getting the most out of it. It does not take long (6 months is usually the magic number) for slow boot times and visual performance issues to appear. ![]()
I am currently running the Windows 7 RTM which I upgraded on two of my home machines from Vista Ultimate and clean installed on my Home Theatre PC. The in-place upgrade process was quite simple and in the case of my laptop and HTPC I installed from a flash drive. Upgrading does take considerably longer than a clean install (about an hour in total on a fast machine compared to 30 minutes for a clean install) but all your programs, settings and documents are carried across in the upgrade. In all cases I have had only minor issues with program compatibility pertaining to image mounting software which can be solved by installing the latest version.
One thing I’m really excited about with Windows 7 is the performance on a lowspec machine like a netbook. A close friend of mine purchased a very competitively priced netbook that came with linux preinstalled. As much as I would be happy to use linux on a netbook due to my previous experience with it, my friend was not enjoying it as much as he should due to “Office Envyâ€. I helped him install Windows 7 on it using a flash drive (as his netbook does not have a DVD drive) and after failing the first time with the x64 version (he doesn’t have the hardware) we got 7 installed successfully in x86. It was really surprising (and gratifying) to see how well it ran on such a lowspec machine. The difference in boot and general reaction time between the netbook and my main machine at home was negligible. A job well done and a happy friend.
If you have stumbled here and want some help “upgrading†to Windows 7 from XP, take a look at this post on Scott Hanselman’s blog called Step-By-Step: How To "Upgrade" from Windows XP to Windows 7.
Google Reader in Firefox Sidebar
Posted by Simon Hartcher on May 28, 2009 at 8:59 pm | Last modified: June 1, 2009 11:29 amI really love Google Reader. For me it is to the Naughties (2000′s) as The News was to the Nineties (1990′s). I love reading my news items in the morning, and they’re all items I actually want to read.
There’s a couple of ways that you can use Google Reader other than the regular site. Google have provided a ‘goodie’ bookmarklet which brings up each unread item sequentially but within the context of the item. That is, it takes you to the actual item on the parent site. Recently, Google have released a brand new Google Reader for iPhone. Their intention was to give a better experience on mobile browsers, but since its just a webpage, you can access it from any browser (at least for the moment).
To get Google Reader in your Firefox sidebar, simply do the following:
- Open Bookmarks -> Organise Bookmarks (Ctrl+Shift+B)
- Right Click “Bookmarks Toolbar” -> New Bookmark (You don’t have to put it in your toolbar but it seemed the logical choice for me)
- Create a bookmark with the address – http://www.google.com/reader/i/
-
Tick “Load this bookmark in the sidebar”
And you’re done. Its as simple as clicking the bookmark which will open Google Reader in your sidebar.

