Posts archived in Randomness

Got a Kindle? Use it outside the US?  You’re probably better off setting the Kindle Region to the US.

But Wait, you might shout – You’ll pay roaming charges for that!  Yes, that’s true – you’ll pay USD$1.99 for each book downloaded to your kindle over Whispernet while you’re outside the US.

The thing Amazon doesn’t tell you is that the international kindle prices are exactly the same.

Don’t believe me? See for yourself on the Amazon site.

First, set your Kindle Region to (say) Australia.

Kindle Region is Australia

Now, take a look at some book you’re interested in.

Helfort's War Book 2: The Battle of the Hammer Planets. International Kindle Store Price: USD$8.39, includes Whispernet International Delivery

Setting my kindle region to the USA for a moment and refreshing the page shows me the US Kindle Price

Same book, but on the US Kindle Site. Price? USD$6.39.

As you can see, for this book it’s USD$6.39 on the US Kindle Store. Add in USD$1.99 for International Whispernet Delivery, and it comes to USD$8.38  - You make a saving of USD 1c by doing this.

Things are much the same it seems for magazine subscriptions. Although, I’ve only checked the prices for two monthly magazines, the price differences are about the same.

International Kindle Store Price: USD$5.99, with International Whispernet Delivery

US Kindle Store Price: USD$2.99/month

Plus – there is significantly MORE books available on the US Kindle Store than the Australian version.

It’s well worth checking out.

NB: If you have any magazine/newspaper subscriptions, and especially any daily/weekly ones – then read the roaming letter they send you carefully, it includes information about per-item delivery costs.

Edit: Can I use any address in the USA, Or do I need a valid US Billing Address?

Don’t edit your billing address, just your Kindle Region – in the section marked ‘Your Country’. And yes, any address in the USA Works, as long as you have a valid Zip Code.

0 comments

Streaming Twitter API

I’ve been playing with Twitter’s new Streaming API over the last few days.

The old XMPP protocol provided your traditional ‘Following’ stream, plus keyword searching with ‘track’.  All of it being delivered in near-real-time (i.e, immediately after the Tweets were sent).

The new Streaming API uses Comet to deliver a similar set of functionality.

I’ve created a prototype client that uses these functions, so that we can experiment with the new API, the plan being to bring that into MahTweets at some point.

There is some interesting behaviour with the API, particularly with regards to following people.  There was a change to the Web API some months ago, where Twitter disabled the ability to see all tweets your friends make. Basicly they set it so that you can ONLY see the Tweets your friends make, if they’re either Open (not replies), or Replies to someone else you follow.

An example might be that you follow Amy and Barry. It might not be such a big deal for you that you don’t see their tweets to Christine  – but if you, Amy and Barry were discussing something – replies to Christine (even in the same conversation) won’t be seen by you.

Well, the new Streaming API changes that – not only does it bring back that old @replies functionality, it also adds an interesting twist.

Under the Streaming API you also see public @replies to anyone you follow. That is: If Christine were replying to Amy or Bob – you’d see those tweets, even though you don’t follow Christine.

There are some restrictions with the API – you need a reasonably fast and stable connection (Dialup, Satellite, or dodgey wireless connections need not apply), you can’t have more than one streaming connection open per account, and you can’t rapidly change the stream settings.  You also need to explicitly define what keywords and user IDs you want to recieve updates for. That’s currently limited to following 400 users, and/or tracking 200 keywords.

Still… it’s a bunch of fun, and can lead to some interesting scenarios.

Here’s a screencap from the demo client. I’m tracking Aeoth’s UID here, but also getting replies to @aeoth

Test Client - Full Follow Stream

Test Client - Full Follow Stream

A few months ago for some unknown reason the Output pane in Visual Studio stopped displaying output from my application.

I’d get the build notices, exceptions, and thread/process exit information but any calls to Debug or Console to output information wouldn’t display.

tickprogramoutputIt turns out that you can de-select “Program Output” – and somehow it’d become deselected. Even now it still turns itself off, apparently by random.

Right clicking in the Output pane should let you re-select that value.

  • Are you new to Social Media?
  • Are you trying to recruit folks in IT, or related industries?
  • Do you think Twitter might be a great way to get more leads to fill roles?

If you answered yes to the above, then you need to pause for a moment, because Twitter is really not what you think it is.

Think of Twitter more like a 24-7 party where everyone mixes and mingles and interacts however they want – you suddnely turning up and jumping on the Mic demanding attention to pitch people on some “Exciting new Role” is just going to piss people off.

If you’re going to engage with folks, make it PERSONAL – They’re not on Twitter so you can sell them a product, they’re there to interact with other folks.

Spend five minutes or so looking at their profile, their previous tweets, and sites they link to and/or personal site. Interact with them on things that you might have a common interest on, and after you’ve got some sort of relationship (This takes more than 15 minutes) – it might be appropriate to send them a private message about the role.

If they’re not following you, you won’t be able to send them a private message, so that’s probably a good indication they’re Just Not Interested.

Yes, I’ve blogged about this before – but I’m writing it again, because it’s still relevant.

5 comments

Star Trek XI

I got home not too long ago from seeing the Star Trek reboot film by JJ Abrams.

SPOILER WARNING: If you have not seen the film, and you have any intention of doing so – do not continue reading.  The no-spoilers review is: It’s good, go see it.

Read the rest of this entry »

Caprica-1

If, like me, you decided to go installing stuff off the Web Platform Installer 2.0 Beta, you may start getting IIS7 Application Pool lockups, and general non-responsive behaviour.

Digging through the Event Log, I was getting this:

Faulting application w3wp.exe, version 7.0.6001.18000, time stamp 0×47919413, faulting module ntdll.dll, version 6.0.6001.18000, time stamp 0x4791a7a6, exception code 0xc0000374, fault offset 0x000b015d, process id 0xad0, application start time 0x01c9c03e217b6255.

Unfortunately, this doesn’t really give any useful information, and the search results seemed to indicate that it was PHP at fault. I was running PHP, but this happened even when PHP was disabled, and the request was for static files.  PHP was also running just fine under other Application Pools.

After much faffing about, including creating new application pools, even pulling out DebugDiag and getting memory dumps, I was still lost – so I started disabling IIS Modules as a last resort.

I didn’t have to go too far: Removing DynamicIPRestrictionModule caused everything to start working again.

Ironically, this module is supposed to prevent Denial of Service attacks.

Tried reporting this as a bug in Connect, but it doesn’t seem to be supported via there – only via the Security forums on the IIS Site. Keep an eye on this thread to see if there’s a resolution.

Update: Microsoft responded to me, and confirmed it’s a bug in the application, it’s queued for fixing in a later release.

I was away over the Easter long weekend and didn’t get to see the whole ‘amazon fail’ thing happen. Actually, I didn’t even really find out about it until today.

The story goes that sometime on Saturday Amazon suddenly stopped returning pro-lesbian/gay/bi/transgender (LGBT) material in search results – in some cases returning anti-LGBT material instead.

I’ll leave the morality of why this was a bad thing alone – other far more eloquent folks have written about it already – and instead offer my view of just how this can happen.

Some people have commented that they simply cannot believe this was a mistake, and that it must have been a deliberate act by someone at Amazon. Others have said that they cannot believe there isn’t more checks and balances against this sort of thing happening.

I don’t have any special knowledge of the specifics of this situation, but I still believe that it’s within the realm of possibility that this could have been a completely unintentional side-effect of another change.

Here’s a hypothetical situation which could explain what happened.

Let’s suppose that someone doing database administration on the product management side of things for Amazon has the ability to make direct, or semi-direct changes to the data in the database. 

Let’s also suppose that in order to prevent human error, the system that Amazon Employees use has a delay of (say) one hour before changes are sent to the actual production database.  That continual one-hour buffer would have some sort of checks to see if there were unusual behaviour – such as updates to more than some reasonable number of records at any one time.

It’s not unlikely that Amazon have a rather complex categorisation system that allows products to be placed in any number of categories, and that categories can belong to other categories. 

From here it’s but a hop-skip-and-blunder into someone updating a series of categories to ensure they’re marked as adult. A command to mark any category with ‘lesbian’ and ‘sex’ in the title as Adult might seem fairly reasonable if you aren’t careful.  If this is one small series of category updates, it may not trigger any alerts, even though tends of of products are now categorised as Adult by association to those categories. (See Data Normalization Side note below)

Whenever a human is involved in something, there is always a chance for something to go wrong in entirely unexpected ways. The sign of intelligence though is learning from your mistakes and ensuring you do what you can to prevent it from re-occurring.

In Amazon’s case, this might be ensuring that they add a check to see if there is a major difference in the number of Adult products. But no matter how many checks and reviews you have – People will still manage to break things in new and creative ways.

Further Reading:

Side  note: Data Normalization

Because of the nature of computer databases, it’s encouraged (and very efficient) to group common information together, and reduce duplication of data by keeping only a reference to related information.

An example of this might be in a genealogy system – for any particular person, you have information about who the parents are. Instead of storing the Firstname, Lastname, and Date of Birth of each parent – I would instead store the unique identifier for each of the parent’s record.  This act of storing just the unique identifier is part of Normalisation of data. 

When it comes time to display that information about a person’s parents – you look up the record for each parent and retrieve any information needed then. 
This means you also have only one location to update information about any one person – for instance if a person died, you could put the location and date of death on that person’s record. When I then needed information about people who have living parents – I can cross-reference those tables.

0 comments

It’s back

Blog’s back up… on a new server too.

Things are moving around a fair bit.

0 comments

The Beresford Hotel

One of the newer traditions at work is that a bunch of us go for pub lunch together on a Friday – have a few beers, and catch up on what’s been going on. A nice way to spend an hour before the weekend.  Our normal haunting grounds are The Dolphin or Trinity Bar, after we gave up on The Porterhouse‘s extremely variable (and more often than not just plain bad) pub food.

We heard that The Beresford Hotel had re-opened after a major refurbishment, and was getting rave reviews – so, it was decided we’d try it out.  Our first clue that it wasn’t the best idea should have been that we couldn’t get in for a Friday lunch until some time after January.  But hey – it’s popular, and it’s getting good reviews, and they can get us in on a Thursday – close enough is good enough, right?

The second clue should’ve been when we arrived – it’s a *very* nice place, not so much a pub restraunt as a full service five star italian restraunt that just happens to be attached to a pub. 

Anyhow, we booked for eight people,  called back to adjust to nine, then when the group of us turned up there were ten. A pause from the Maitre’d and they set up another table to accomodate us. Then a few more people turned up – over the course of five or so minutes we ended up with 12, but since we were on one of the benches, we just squished up and the staff set some more places and pulled in another chair.

At first, when there were ten, we were given the A-La-Carte menu – a very long menu with a dazzling array of dishes to be had.  When the Maitre’ D noticed the 12th person arrive, (just as the rest of us had decided what we’d like) our menus were taken back, and switched to a more limited (banquet?) menu.  Of course, as we all joked as the menus were swapped – almost none of the things we’d decided on were on the more limited menu.

Then we noticed the fine print – minimum of two courses: $60. We enquired if we could just have a single course – after all, this was lunch, right? We had to get back to work in under an hour.  The Maitre’ D’s somewhat snarky comment was “Well, that’s new”. But back to the a-la-carte menu we go, more decisions again, and we all decided on a mains.  

Of course we didn’t realise that most of the ‘mains’ weren’t what you’d call mains in Australia – they’re going with the traditional Italian catering of a single named item. So, we’d be expected to order perhaps an Entrée, Salad and a Mains – at the very least.

Perhaps this wouldn’t have been a problem had this been explained by the wait-staff, and had mains not been priced at $30-$60 (Roast Pork Belly: $32, Prime Ribeye: $45 [approx 300g], Crab Tortellini (3): ~$45), with each of the additional courses costing usually $15 – $30 each. 

When the food arrived, I must say that it was exquisitely presented – what you’d expect from a five star restaurant, and obviously not a pub restaurant.

It was obviously as we were presented our meals that we realised why the Maitre’ D made the snarky comment, and that an order of ‘Slow Roasted Pork Belly with Peaches’ or ‘Prime Ribeye’ was just that – with little more than decoration on the plate.

I might have been more forgiving if perhaps the pork belly was particularly great – unfortunately mine was somewhat dry and fairly much devoid of any flavour.

I wasn’t the only one a little disappointed – I know at least one person went and got something else to eat on the way back to work. But some of the group did particularly enjoy theirs – the Tagiatelli and Gnocchi was apparently quite good.

So, all up I think there’s equal parts failure on both ends – it was our fault for not realising it’s not a pub restaurant (despite it being a restaurant in a pub) plus having more people than expected turn up. It was also, perhaps, their fault for not providing particularly good information about their style of service up-front. Our question about could we just order a single course should’ve triggered that information to be provided – at the very least.

Would I go back? Perhaps – but I doubt it. At the very least it would have to be for a dinner, and when I was feeling particularly rich. I wouldn’t budget any less than $120 a head for dinner, excluding any drinks. As it was, it came out to roughly $56/head for us.

A solid ‘meh’ and a half out of five.