Please help keep this site running by making a small donation.
How much would you like to give?

ObSrv: No Longer For Sale

Thank you for the emails of support and kind donations.

After a few minor changes and exchanges with Google I have managed to rectify the problem relating to inappropriate images on the detail pages.

Because of your kind support, and the resolution of issues with Google, I’ve changed my mind and decided not to sell ObSrv.

I plan to keep it running indefinitely.

If you have any issues, or need support, please leave a message or contact me at:
mail at neilennis dot com

If you’d like to donate to help keep the site running, I’ve added a couple of paypal buttons on the site. is for sale is a web service which provides image feeds for any subject you like.

The content is updated hourly, allowing you to provide high-quality, relevant graphics for any website, or feed reader.

I’ve been able to maintain this site and host it because of the modest income stream I derive from Google ads that appear on the info pages that are displayed when a website visitor clicks on an image.  This has been great because:

  1. Web publishers didn’t need to pay anything.
  2. The ads didn’t intrude on your site – they only displayed when an interested user clicked on an image.
  3. Clicking on the image redirected to an intermediate site which displayed the ad, and allowed the user to proceed to the original site.

I didn’t have any say on what sort of images web publishers displayed – my only request was that web publishers did not use ObSrv to display adult-related images.

That’s not because I am a prude – it’s because Google prohibits ads on these sorts of sites.

Unfortunately, some people ignored this request, Google cancelled ad serving for the ObSrv site, and now it’s not paying me anything.  I can’t afford to keep it running for free.

So I have decided to sell it.

If you’re interested, please make an offer.  No serious offer will be ignored.

I’m sorry for any inconvenience.  I’m willing to be flexibile to help you out:

If you need access to ObSrv prior to it being sold, please email [email protected]  If you’re one of the incredibly generous people who has made a donation to me in the past, or if you would like to make a modest donation, I will send you a temporary URL which will keep images being served to your site until is sold.

If enough people continue to make regular modest donations I won’t sell it.

What’s a reasonable donation?  I’m flexible, but $20-$30 per site per year seems like a reasonable amount.

If you want to buy it, here’s what you get:

1. The domain  A cool five letter dot com domain – imagine what you could do with it!

2. The ASP.NET and MS-SQL Server Source Code.

3. The data.

4. 12 months hosting for the site until you find somewhere else to host it.

5. 12 months tech support for the source code.  I’m not going to over-promise here.  The source code is well documented.  I’ll answer any questions you have.  I’ll even do minor mods for you – but it has to cut both ways, and the level of support depends on the price at which you buy from me.

About me: Do a Google Search on me: “Neil Ennis”.  You’ll soon see I’ve been around a long time, I keep my promises, and I value long-term business relationships.  I won’t let you down.

DNS323 Formatting “stuck” at 94%

DNS-323_sideThe DLINK DNS323 is a network storage device that takes two SATA disk drives,  plugs into your local network, and acts as a file server for media and documents.

We’ve had one for the last 5 years, and it has served us very well.  It’s quick, reliable and easy to use.

We had two 1TB Western Digital “Caviar” drives installed.

Unfortunately, one of those drives failed last night.  I replaced it with a Seagate “Baracuda” 2TB drive.  We’re not running the DNS323 in a “RAID” configuration, so a different type of drive isn’t a problem.

When I booted up the unit with the new drive, the web interface told me it found the new drive, and was it ok to format it?  It assured me my other drive would be ok.

I answered “Yes” and it started formatting the new drive, but it stopped when it got to 94%.

There are a whole lot of articles online about this problem, and people have come up with many and various issues to get around it like using a different browser, clearing out cookes, even formatting the drive on a separate machine.

There was a mcuh simpler solution, however.

A 2TB drive is pretty big.  It takes a long time to format.  It just so happens that on this device, most of the formatting happens when it gets to the 94% mark.

So the easiest solution to this problem is to WAIT. 

Do nothing for an hour.  Eventually it will finish formatting, and everything will be ok.

If you don’t like doing this, feel free to try a different browser, or bury your computer in peat for a couple of hours, or chant incantations for a while.  I assure you whatever you do, if it takes longer than an hour, it will fix the problem.

Well…. it will appear to fix the problem.

Or – just wait.  Let the thing finish formatting.  Then everything will be ok.

DIY iGoogle Upgrade

I’ve upgraded the DIY “iGoogle” start page.

You can see the latest version here:
The previous version is here:
The previous previous version is here:
You can download the source for the page here:

Major items:
1. Each widget has its own “Settings” page which allows you to edit settings. Just click on the “settings” button at the top right of any widget:
Widget Settings Button

2. You can add / edit stocks & shares. If you click on the settings button for the stock widget you get a screen which lets you change the existing stock codes, quantities and buy prices.:
Stock Edit Screen
To delete a stock item, click on the red “X” button.
To move a stock item up a line, click on the blue up-arrow (↑)
To move a stock item down a line, click on the blue down-arrow (↓)
To add a stock item, fill in the blanks and click the green “+” button.
To save changes, click on the “SAVE” button.
To cancel changes or close the edit dialog, click on the [x] button at the top right of the window.

3. You can edit the links in the top-bar by clicking on the “*” to the right of the links in the top bar.

4. You can add / edit / remove widgets by clicking on the “Setup” link in the top bar.
To delete a widget, click on the red “X” button.
To move a widget up a line, click on the blue up-arrow (↑)
To move a widget down a line, click on the blue down-arrow (↓)
To add a widget, fill in the blanks and click the green “+” button.
To save changes, click on the “SAVE” button.
To cancel changes or close the edit dialog, click on the [x] button at the top right of the window.
Click “Factory Reset” to clear all your settings and revert back to the original settings that you downloaded from the website.

5. All settings are stored locally on your hard drive using the HTML5 “localStorage” facility. This is like a cookie, only bigger. The page settings were over 4,000 bytes in size, so would not fit in a cookie which officially can’t be larger than about 4,000 bytes. Local storage can be as large as your hard drive, so there are no storage limits, and the security / privacy settings are the same as for cookies.

You can download the source code here:

If you plan to use the weather widget, please change the “Weather API Key” in the “Setup” screen. Since lots of people are using this start page, the current API key will run out of API calls each day and won’t work. There are instructions on getting your own keys here:

As with all previous versions, you don’t need to load this start page on a web server. It will run fine from a folder on your computer. Just unzip the zip file, and click on index.html.

If you plan to put it on a public web server, you might want to password protect it with a htaccess file to protect your privacy.

Please try it out and let me know how you go.

DIY Replacement for iGoogle.

iGoogle will be gone at the end of this month.

I love iGoogle. It was free, convenient, and worked well. But because it was provided free by Google, it’s their right to pull the pin on it if they want to.

This event made me realize that any free service online may be cancelled. So if you don’t want the inconvenience of losing a free service that you love, you’re best off doing it yourself.

Here’s my modest attempt at writing my own iGoogle replacement page.

You can download the source for the page here:

When you’ve downloaded the zip, you can unzip it to your own hard drive, or put it on a web server somewhere.

Before you start using it, you need two things: A Google API Key, and a Wunderground API Key.

Google API Key

1. Go to
2. If prompted, click on the “Create Project” button
3. Click on the “Services” button and change the status of “Custom Search API” to “ON”. Accept the terms.
4. Click on the “API Access” Link
5. In the “Simple API Access” section, click on “Create new Server key…”
Leave the “IP Address” box blank, and click “Create”
6. Copy the “API key”. This is your “Google Key” that you need to put in your index.html
7. Edit “index.html” and scroll to line 21 or there abouts. It will say something like:

var GoogleKey = “XXaaAaAAaAaAA9A9a9aaaaaAAA99a9aaaaA9AAA“; // Get your Google key here:

8. Replace the red key with your Google API key.
9. Save the index.html file

 Wunderground Key

1. Go to
2. Click on “Sign Up for FREE”
3. Create your free account
4. Activate your membership
5. Login to Wunderground
6. Click on “Explore My Options”.
7. Select “Developer” option ($0) then click “Purchase Key”
8. Complete the questionaire honestly.
9. Click on the “Key Stettings” tab.
10. Copy the “Key ID”. This is your “Weather Key” that you need to put in your index.html
11. Edit “index.html” and scroll to line 23 or there abouts. It will say something like:

var WeatherKey     = “99999999999aaaaa“; // Get your API key here:

12. Replace the red key with your Weather key.
13. Save the index.html file

You might want to change “WeatherCountry” and “WeatherCity” to reflect your home country and city.

ObSrv Bug Fix – Please read

I’ve fixed a bug with ObSrv that was causing empty image feeds to appear.

There is a long term problem that we need to address, and I need your help to sort it out.

The problem is that Google is limiting the number of image searches that ObSrv can do to 100 per day. The problem is that once we exceed this limit, no images are returned and you get a blank feed.

I’ve temporarily fixed this problem by changing the image search provider. I’m not saying which, as I don’t want to cause any more waves.

But eventually they’ll start blocking excessive image searches as well.

So I’m considering changing ObSrv to require you to supply a Google API key. It won’t be hard to do. All yu need to do is go to the Google Code API console, log in (or create an account) and request an API key.

Future versions of ObSrv will require you to enter that API key as part of the Feed URL.

For now, you don’t need to do anything. Everything should be working perfectly. Your images should come through as expected.

I’m just alerting you to what may have to happen, and I’d like your feedback please.

You once might have had a feed URL that was something like:

But I’m suggesting we change that to something like:[your API KEY]

This way, any ObSrv feed requests will be linked to your API KEY and not mine. And (provided you don’t go over 100 requests per day) Google won’t hassle you. This shouldn’t be a problem. Image feeds don’t update that often. Even if you refreshed the feed every hour you’d be able to have four separate feeds and stay under the limit.

If you exceed Google’s limit, they’ll probably want you to open up a commercial account with them and pay them something. This has nothing to do with me. I’m not asking for your money – I’m just explaining how Google deals with people who use their resources in an unusual way.

Please leave a comment, or email me, and let me know your thoughts.

The challenge we face is that Search Engines are a moving target. Writing a web service like ObSrv that keeps up with this target is difficult, but not impossible.

Windows Home Server 2011

I recently upgraded from Windows Home Server (WHS) to Windows Home Server 2011 (WHS2011).  My old WHS machine was dying, and I was attracted to idea that WHS2011 was a 64 bit OS, and would hopefully perform better.  I installed WHS2011 onto a 64 bit VMWare virtual machine with 4GB ram, a 200GB virtual for the OS, 3TB storage on an external USB HDD and a 100 GB virtual disk to backup the OS.

Incidentally, the OS only formatted up a 2GB partition on the 3GB drive, leaving a separate 1TB partition unused.  I formatted this up later and added it to the pool.

I encountered several problems, but have overcome them all, and am very happy with the result.

1. WHS provided Drive Extender Technology, but WHS2011 does not.

A cool feature about the original WHS was that you could add extra storage to the box on the fly, and WHS would allocate it to one large storage pool.  So rather than having a bunch of disparate disks of all different sizes, they’d all appear as one huge drive.

This feature was dropped from WHS2011.

That meant if one of my drives filled up, and I wanted to add more storage, it would appear in the system as a separate drive, and I’d have to alter my backup plans to use the new drive.

I got around this problem by installing DriveBender – a WHS2011 add-in which allows me to dynamically manage the size of my storage pools, provides redundancy, and makes managing a bunch of drives a lot easier.  It only cost me $40, which (even for a tight-wad like me) was money well spent.

2. WHS2011 won’t backup a Windows 2008 Server

While the original WHS happily backed up all my servers, the WHS2011 connector would not install on my Windows 2008 server.

When I tried to install it, I got an error saying that the computer is running a version of the Windows Operating System that is not supported.

I got around this problem by loging into the WHS2011 server, and editing this file:

C:\Program Files\Windows Server\Bin\WebApps\Client\Package\supportedOS.xml

I added the following line to the XML:

<OS Architecture=”9″ RequiredProductType=”3″ RequiredSuite=”" ExcludedSuite=”" SPMinor=”" SPMajor=”2″ Build=”6002″ Minor=”0″ Major=”6″ Name=”Windows Server 2008, AMD64″ id=”7″/>

EDIT (January 2013).

For a Windows Server 2008 (service pack 2) machine, I added this line:

<OS id=”10″ Name=”Windows Server 2008 R2, AMD64″ Major=”6″ Minor=”0″ Build=”6002″ SPMajor=”2″ SPMinor=”" ExcludedSuite=”" RequiredSuite=”" RequiredProductType=”3″ Architecture=”9″/>

You can figure out what numbers to use by running the WinVer utility that comes with windows.  I.e. click on START / RUN and type WINVER [enter]

This will say something like:

Microsoft Windows Server:
Version a.b (build cccc: Service Pack d)

Use “a” as the “Major” parameter.
Use “b” as the “Minor” parameter.
Use “cccc” as the “Build” parameter.
Use “d” as the “SPMajor” parameter.

So my version of “Version 6.0 (Build: 6002: Service Pack 2)” translated to :
Major=”6″ Minor=”0″ Build=”6002″ SPMajor=”2″

After adding this line, and rebooting the server, I was able to install the WHS2011 connector on my server, although I received a warning telling me the OS was not on the list of compatible operating systems.

3. Disk Errors caused backups to fail

After a while, the USB drive started to fail.  WHS 2011 reported that the Windows Server Client Computer Backup Service was not running.  I tried to start it manually, but it failed.  The event log gave the following error:
“ReadHeader File: D:\ServerFolders\Client Computer Backups\Commit.dat Error: Unable to complete the requested operation because of either a catastrophic media failure or a data structure corruption on the disk.”

To get around this problem, I used DriveBender to add a second (2TB) USB drive to the pool. I then used DriveBender to remove the faulty (3TB) UDB drive from the pool.  Removing the faulty drive took about 36 hours.  Basically DriveBender had to check the CRC of every file on the drive before copying it.

After removing the faulty drive, I stil received the same error, so I did a “repair” on the backup database, which fixed the problem.

I was then able to reformat and add the original drive back into the pool.

At the same time, I enabled data redundancy on the pool, so that every file added after that was duplicated on a second drive.

4. I could not connect to WHS2011 with Launchpad from one machine

This was the most annoying error of all and took me days to fix.

I had an old XP machine that refused to connect.

Whenever I tried to sign in I’d get the following error:
The server appears to be offline. Do you want to sign in to offline mode?

This happened, even though I could use Dashboard, and was able to access shares on the server from the old XP machine.

I scoured the web for solutions.  Here’s a few I tried to no avail.

1. Uninstall and reinstall the WHS2011.  As well as uninstalling the connector, I deleted all records of the old XP machine from the WHS2011 catalog.  After reinstalling WHS2011 on the old XP machine Launchpad still would not connect to the server.

2. Uninstall and reinstall the .NET 4.0 framework.  I restarted the machine after uninstalling, and even combined the process with uninstalling / reinstalling WHS2011.  No joy.  I still could not connect.

3. Disable my local firewall.  Disable all inter-computer communication restrictions on my Endian firewall.   Basically I was trying to make sure nothing was blocking communications between the old XP machine and the server.  No success.  I still could not connect.

4. Increase the ServicesPipeTimeout setting in the registry.  The idea behind this was that perhaps it was taking a while for Launchpad to connect with the server.  If I increased the timeout, perhaps it might have a better chance of successfully connecting.  No joy.  I still could not connect.

In desperation, I used the Wireshark packet tracer, as well as my Endian Firewalls log files to trace any packets from the old XP machine to the server.  To my great surprise not a single packet was being transmitted.  There were not even any unsuccessful transmissions.  The workstation didn’t even appear to be trying to communicate.  This led me to think that perhaps there was something wrong with the Winsock component on the client workstation.  I.e. something on the local machine was stopping the communication before it even left the local machine.

So I tried listing all the LSP’s installed on the local machine using this command:

netsh winsock show catalog

This showed up something really interesting.  I noticed that there was an old antivirus system (Comodo Antivirus) installed on the workstation.  It wasn’t being used, but it had installed an LSP which was blocking communication between the old XP machine and the server.

I uninstalled Comodo Antivirus from the workstation, rebooted, and BINGO, Launchpad was able to connect.

I now have a fully functional WHS2011 backup solution.  It has redundancy, scalable storage, and works like a charm.  A couple of weeks ago, one of the local machines failed.  I just rebooted that machine from a WHS2011 recovery CD, and it was up and running again in about 90 minutes.

If you’re having problems with WHS2011, I hope this post helps you sort them out.


ObSrv bug fixed (empty feeds)

Over the last few weeks ObSrv was often returning empty feeds.

I’ve fixed this bug.

If there are any further problems, please let me know.

Big Black Holes

Baby Black Hole by Nasa

This is an open question to anyone who might understand astrophysics better than me (which is probably most of the human race).

Assume there is a really big black hole. So large, in fact, that its event horizon is more than one light-year across. If you do the sums, the gravitational force near the event horizon of such a large black hole would roughly be about 1g – the same as what it is on earth.

Imagine coming close to this event horizon in a spaceship. It would be easy to accellerate away – after all, the gravitational force in the vicinity is only 1g. So any imaginary spaceship capable of escaping the gravity of earth – if it were near the event horizon of this super massive black hole, would be able to escape its gravity.

One of the horrors you normally hear about black holes is the tidal forces that would “tear you apart”. This is caused by the difference in gravitational forces as you move closer to center of gravity of the black hole. The same thing happens near neutron stars. Your head is being pulled with a lesser force than your feet. So you get “stretched”. But in our thought experiment, the centre of gravity of our supermassive black hole is over a light-year away. My head won’t feel any different amount of attraction than my feet would. There would be no noticeable tidal forces to speak of.

So imagine you’re sitting in your late-model spaceship, orbiting just outside the event horizon of this super-massive black hole. You don’t feel any tidal forces, and the black hole is exerting a similar gravitational attraction on your vessel as what you’d experience orbiting the earth.

Apart from the huge black sphere blocking half of the sky, and the strange lense-like effect of light bending as we look across the horizon of the black hole to the numerous stars in the distance, there’s nothing to be afraid of is there?

My point is it would only take a reasonable amount of thrust to move our vessel away from the black hole.

BUT… imagine as we sit near the event horizon, we move slowly towards it until we have moved INSIDE it. What would happen? What would we experience? My meagre understanding of physics leads me to think that the escape velocity just outside the event horizon would be slightly less than the escape velocity just inside the event horizon.

So the burning question then is why couldn’t you escape from this super-massive black hole, having visited the forbidden area just inside the event horizon? The gravitational attraction at this distance would be small enough for our ship to thrust away.

And this leads me to another question. If the gravitational force near this super-massive event horizon is about 1g, why couldn’t light escape from an object just inside the event horizon? And if light could escape, would there even be an event horizon? The “Black Hole” appearance of this thing is based on the assumption that no light can escape from it because the required escape velocity exceeds the velocity of light.

So please help me. I obviously know nothing about black holes. I must be making an incorrect assumption. I don’t mind asking stupid questions, and am hoping that a patient genius will take the time to reply and explain where I’m going wrong.

Thanks in advance :)


Since I know so little about astrophysics I decided to pull together some formulas to demonstrate what I’m talking about.

First of all a few facts about black holes. For any black hole:

  1. The escape velocity at its event horizon is “c” – the velocity of light in a vacuum – about 3 x 10 ^ 8 metres per second.
  2. The radius of its event horizon (known as the “Schwartzchild Radius”) is directly proportional to the mass of the black hole.
  3. The gravitational accelleration at any given distance from its centre is directly proportional to the mass of the black hole but inversely proportional to the square of the distance.

Here are a few formulas:

Schwartzchild Radius, rs = 2Gm / c2, where G is the Gravitational Constant, m is the mass of the black hole, and c is the velocity of light in a vacuum.
Gravitational Acceleration, a = Gm/r2

This means we can work out how big the event horizon of a black hole will be if we know its mass. And we can work out what the gravitational acceleration will be at any given distance from a black hole if we know its mass.

This allows us to ask the question, is there any mass of a black hole at which the gravitational acceleration at the event horizon will be similar to what we experience on earth (10 m/s2)?

I think there is.

Lets assume there’s a galaxy about 50% larger than our Milky Way galaxy. It would have a mass very roughly equal to about 1.5 x 1012 solar masses.

If we squashed this galaxy down into a small enough pile, so that it became a black hole, its Schwartzchild Radius, rs, would be about 4.5 x 1015 metres, or about 1/100th of a light year.

If we stand 1/100th of a light year from this object, what would its gravitational acceleration be? Using the above formula for a,we arrive at 10 m/s2.

The bottom line of all this rambling is that hypothetically I think you can have a black hole where the gravitational acceleration at the event horizon is similar to the acceleration that an object would experience at sea level here on earth.  That black hole would have a mass of 1.5 x 1012 times that of our sun.  And that means the question I raised at the start of the article is a valid one.

ObSrv – Appropriate Images Please

I’ve added a mandatory “Safe Search” filter to all images served up by ObSrv.

To most users, you won’t notice any difference, but the problem was that some people were using ObSrv to generate adult images, which got me in trouble with Google Adsense.

This is a business decision, not a moral one. Using ObSrv to generate adult images would get my Adsense account cancelled. No Adsense income = No ObSrv. Everyone would lose. So the simplest solution I could find was to block anything that didn’t pass the Google “Strict Safe Search” test.

If you find your image feeds aren’t generating images any more, please consider using less adult-related search terms.