Currency Exchange Rate Comparison Charts

Since moving to London a couple of months ago I’ve been taking a strong interest in foreign exchange rates, because I’m now always either spending Australian pesos dollars hand over fist and doing a quick mental calculation every time I see a price tag (then having a minor panic attack at paying nearly $20 AUD for a cup of coffee and a snack) or I’m gleefully calculating my effective hourly rate in Australian dollars.

graphs of currency exchange rates

My currency exchange rates charts page

In my travels I found that foreign exchange traders OzForex (aka UKForex) have charts on their site that you can hotlink to. I thought it’d be interesting to have a view of lots of different currency rates all together so you can compare visually their trends against one another, so I created this page that shows the US Dollar, Australian Dollar, UK Pound Sterling and the Euro on charts against each other.

Each currency is on its own horizontal row and vertical row, and where the currency would overlap itself (i.e. AUD/AUD) I have overlaid the graphs so that you can compare all three other currencies against one another.

I think it’s pretty interesting; it highlights the strength or weakness of a currency more effectively than comparing it against just one other currency; an example is that the AUD takes a dive against the USD around November 21, 2008; you can easily see that the AUD dipped against the EUR and GBP as well, although the USD spiked upwards slightly at the same time which made the AUD appear even weaker.

I’ve also just noticed that OzForex have spot rates charts too which would be a lot more useful for actual currency trading, if you wanted to try and get the best rate on a given day, so I’ll have to get around to creating a similar page using those.

Online Scams In Plain English

This video from the guys at CommonCraft does a great job of explaining what Phishing scams are and how they work:

Stupid Website Content “DRM”

Today somebody sent me a link to MIS Australia’s article about some ridiculous filters the ever-paternalistic Australian government is trying to foist on the Australian public for our own protection. Like, thanks you guys.

Anyway I got feisty when I realised that you can’t cut and paste from the Australian Financial Review’s MISAustralia website. As soon as you highlight text on the site, it becomes all garbled. My first, knee-jerk reaction when somebody does something on their website to make it less useful for users (like disabling right-click) is along the lines of “Errr you MORONS! WHY would you BOTHER DOING THIS?” Which is not exactly constructive criticism, but I really can’t see how doing this kind of dumb stuff on your website is a good idea.

If you don’t want your content on the web, don’t publish it there!

I can somewhat understand the mindset of fear at work here. Site owners feel that their content is sitting out there on the web ready to be copied and exploited by anyone. But here are a bunch of reasons why it’s dumb to use lame “DRM” or “copy protection” methods on your website:

You’re making it HARDER for people to share your stuff with their friends
In my case with this article, a guy at work tried to send me the link and a relevant quote from the article — but couldn’t! He could only send me the link. If a busy person can’t just quickly cut and paste the written equivalent of a soundbite to somebody else, they might not bother at all — it’s annoying and confusing. Not only that, but I might not visit your site because it’s just a boring link - there’s no snippet to pique my interest. This means less traffic for your website.
Your site will be LESS POPULAR because it’s HARDER TO FIND
Having garbled content is bad for search engine rankings. Don’t believe me? Try this search — it’s searching for the phrase “opponents of isp-level filtering” on Google — but restricted to ONLY on the MIS Australia website. Whaddya know, it returns ZERO results! That’s because the “protected” content makes NO SENSE to search engines. Not being searchable means missing out on A LOT of potential search traffic.
Your site will be LESS POPULAR because it’s not SHARING INFORMATION - what the web is built on
The most successful websites actively share their content to attract more users/readers using something called RSS. What RSS does is lets you share your content so freely that computers can find new stuff on your site and do the job of spreading it around for you! The only way people are going to know that your site has great content is by showing it to them. Hiding your content away is going to help nobody — not readers, because they can’t find you, and not you, because you’ll have no readers.

I can appreciate that people may be fearful about their content being stolen by web scraping. But this is actually not that big of a problem. Google knows how to deal with web scraping and has methods of determining who should be rewarded as the original publisher of content. Some kid stealing your articles and posting them on his own site isn’t going to take away all of your traffic!

You’re making your website WORSE TO USE.
So many sites that prevent me from right-clicking an image make me angry, because usually I’m just trying to see a higher-resolution version of the picture that they’ve scaled down to fit their page using HTML, but the pic is really a big, colourful picture with lots of detail that I’m missing out on. That sucks. Or maybe I want to send the picture to a friend, saying “Hey, look at this great site, they have heaps more cool pics like this one!” — just saying “hey check out this site they have cool pics” is way less powerful.

And that’s just disabling right-click. MIS Australia’s effort actually makes the site look TERRIBLE -- they have to use a fixed width font because their lame content “DRM” just uses two layers of content, one beneath the other! If you used a variable-width font the text on the two layers would never line up, and you would just get a jumble of letters. So that’s why MIS Australia’s articles look like they were typed out in the 1940s, even on a beautiful screen with font smoothing.

Speaking of a jumble of letters, that’s also what any visually-impaired person’s screen reader is going to see when it tries to read out the page. Way to discriminate against the disabled, yeah!

Your lame system can be easily circumvented ANYWAY - so why bother?
Especially the sites that deny the ability to right-click. There’s so many ways around this that it’s just pointless and makes your site annoying. If you really don’t want people to steal your images, use low-resolution pics with a watermark, because your right-click prevention just won’t work. If you really don’t want people to steal your website code, the best you can do is to obfuscate it — or don’t publish it at all! Web programmers are crafty — and often still in high-school, so they have lots of time to work around your tricks! :P
In the case of the MIS Australia website, to get the text of any of their articles is as easy as using /g,’\n\n’).replace(/< [^>]*>/g,”));})();”>this link and choose “Bookmark this link” or “Add to Favorites” and save the link to your bookmarks/favorites.
  • Now read an article on MISAustralia.com and if you like it, click your bookmark/favorite you have just added.
  • Presto! The article contents will be pasted into the comments box at the bottom of the page for you to cut and paste at your leisure.
  • I’ll say it again. If you’re going to go to the trouble of putting your content on the web, why hamstring your efforts? Put it out there and SHARE IT, and more importantly, LET OTHER PEOPLE SHARE IT — that’s what your website is for, and that’s how you get popular!

    Innernet ‘Splorer

    Gosh this blog looks terrible in Internet Explorer (at least in version 6), not that I’d advocate using IE unless you have to; especially now that Firefox 3 is out!

    Speaking of which, so is Opera 9, and IE8 is in beta. New browsers galore!

    Anyway, will fix, gentle reader(s).

    The Last Web Appplication You Will Ever Need?

    OK I admit that the title of this post is slightly hyperbolic, but I’ve just installed and started using PmWiki to replace my well-worn, dog-eared copy of ASPWiki that I have loved so well since about 2003, I think. And, I’ve gotta say that I love it! Out of the box it’s simple and easy to use, easy to setup, doesn’t require a database (PmWiki uses flat files for storage, which I think makes sense for big slabs of text content), but it’s flexible and extensible and there’s a great ecosystem around it with a metric assload of cutely named “Cookbook Recipes” instead of the over-used “extensions”, “add-ons” or “plug-ins”.

    PmWiki screenshot

    I chose PmWiki because I was looking for a PHP-based (for web-hosting reasons) wiki that’s small and simple, and then found out that it’s also really extensible and easy to customise to your liking, which of course I’ve done as part of my usual procrastination routine — see my snazzy theme in the attached screenshot. I also very much like and agree with its philosophy:

    1. Favor writers over readers
    2. Don’t try to replace HTML
    3. Avoid gratuitous features (or “creeping featurism”)
    4. Support collaborative maintenance of public web pages
    5. Be easy to install, configure, and maintain

    And just have a look at what PmWiki can do! With the help of the many cookbook recipes you can do all this and more:

    Plus there are a bunch of skins you can use to make your wiki more amenable to your tastes. I also liked the security features, because I use mine like a personal notepad so I don’t want other people being able to scribble all over it, or even to be able to read it, really. So my security needs are pretty simple, but you can go paranoid/berserk if you need to.

    Oh, and you can try out PmWiki on your own machine without a full-on web server if you want to by downloading the Standalone recipe which you just need to unzip a directory into your PmWiki directory tree, double-click a .BAT file and type http://localhost/! Easy peasy. You can run on other operating systems with just a PHP script, also provided on the Standalone recipe page. Running locally makes it super easy and quick to customise your PmWiki because you don’t have to upload your changes to a server, or wait for page refreshes to download. Also, you don’t have to worry about messing up your main “production” installation if you have one, you can mess around locally as much as you want to.

    Which brings me to my next point, which was that I wanted to do two things:

    1. Import my data from ye olde ASPWiki
    2. Experiment with a custom skin that would look decent if you used PmWiki as a way to manage a “normal” website, i.e. use it as a content management system.

    I’m mainly a C# developer, so I logically decided that I’d write a tool to import my old data in Python. I’ve written the odd Python script before and this didn’t seem like such a big job — some file I/O and some search/replace stuff. It didn’t turn out to be too difficult but it did take a bit longer than I expected as I learned more about the language; or more specifically, how the expat XML parser works. I’m pretty happy with how it works, I ended up getting my 300+ pages imported just fine.

    import xml.parsers.expat
    
    import re
    
    class elhandler:
    	def __init__(self, filename, wikiGroup):
    		self.buf = ''
    
    		self.wikiGroup = wikiGroup
    		self._parser = p = xml.parsers.expat.ParserCreate()
    
    		p.StartElementHandler = self.start_element
    		p.EndElementHandler = self.end_element
    
    		p.CharacterDataHandler = self.char_data
    		p.ParseFile(open(filename))
    
    		
    	def start_element(self, name, attrs):
    		self.name = name
    
    	def end_element(self, name):
    
    		if self.name == 'Title':
    			self.title = re.search('\w+',self.buf).group(0)			
    
    		elif self.name == 'PageData':
    			self.buf = self.wikifix(self.buf)
    
    			of = open('import/' + self.wikiGroup + '.' + self.title, 'w')
    
    			of.write(self.buf)
    			of.close
    		self.buf = ''
    
    		
    	def char_data(self, data):
    		self.buf += data
    
    	def wikifix(self, contents):
    
    		contents = contents.replace('    * ', '* ')
    		contents = contents.replace('\t* ', '* ')
    
    		contents = contents.replace('    1.', '# ')
    		contents = contents.replace('\t1.', '# ')
    
    		contents = re.sub(r'(^|\n)+====','\g<1>!!!!', contents)
    
    		contents = re.sub(r'(^|\n)+===','\g<1>!!!', contents)
    
    		contents = re.sub(r'(^|\n)+==','\g<1>!!', contents)
    
    		contents = re.sub(r'(^|\n)+=','\g<1>!', contents)
    
    		contents = re.sub(r'\b([A-Z][a-z]+[A-Z]+\w+)','[[\g<1>]]', contents)
    
    		contents =  re.sub(r'(\n\ .*)+', '\n[@\g<0>\n@]', contents)
    
    		return contents
    
    eh = elhandler('aspWiki-export.xml', 'Main')

    My second mission, to create a skin that would work if using PmWiki for a normal content-based website, is at least a partial success because I’m happy enough with my skin to use it on my wiki — at least for now. My skin is named PmGk, not too imaginatively. :)

    So if you’re looking for a Wiki that can do everything, or even just something, check out PmWiki, it could save your life!

    What’s The Worst That Could Happen?

    Creator of PHP Language Hates Programming!

    I’m listening to an IT Conversations podcast of Rasmus Lerdorf (the guy who created PHP) speaking about PHP, and I have to say I’m pretty surprised to hear him say “I hate programming with a passion — I created PHP to avoid programming.”

    Rasmus Lerdorf

    Rasmus says that he wrote PHP while building a web-based system for Toronto University. The university didn’t care how he built the system, they just wanted their system, so Rasmus built PHP to make his job easier.

    Rasmus’s decision to open source PHP was made when he was getting lots of questions about how he was doing his work, and they had the same needs. Rasmus and the University of Toronto were delighted at the speed of development they were now getting — and that he was fixing bugs in his sleep!

    To run a successful open-source project, Rasmus says that you need to cater to four types of people:

    • those with simple self interest - they have a need that the project solves
    • those looking to express themselves through their code
    • to interact with others to get their oxytocin fix
    • those who want to make the world a better place

    The same motivations that motivate people to join an open source project also motivate people to join an interactive website.

    You have to think about how the people think about themselves when they involve themselves in your project. You have to give them some ownership and control…which was hard for me…then again I’m a really lazy guy

    In order to build a decent modern web application, you really need to think about what the users think of themselves when they interact with your site. Every single action a user performs with your website improves your site.

    Later Rasmus delves into performance profiling and optimising a PHP website using Callgrind/valgrind, as well as some stuff about the ubiquity of cross-site scripting vulnerabilities and other topics.

    It’s a great podcast, do yourself a favour and have a listen.

    Guam is Really Far Away…Or Is It?

    Guam

    Part of being an Australian means you need to accept that sometimes, an expression or offhand turn of phrase you hear a lot won’t make much sense if you think about it logically. That’s mostly OK because in my experience, people use phrases and clichés they don’t understand without thinking twice; the phrase takes on almost the status of a single word and has a generally understood meaning — and sometimes that’s just…enough, you know?

    Here would be a good place to give my statement some solid reinforcement with a few concrete examples of such, but it’s late at night and this blog is hardly a showpiece of academia so I’ll leave the filling of the aforementioned gaps as an exercise for the reader. As you are a constituent of my readership I am certain that it is just to bestow upon you the qualities of resourcefulness, zeal for truth and thirst for knowledge so this burden will be of little imposition to you. And you could start here.

    Guam, Papua New Guinea and Australia

    But, to carry on, the point of this post is to say that Guam (see #5) is quite close to me really, being only a few thousand kilometres away and not tens of thousands, like, say, Greece or England.

    So what? Well it gets crazy when a conversation goes something like the following:

    Me: Hey, what’s up? [obviously imagine me looking way cool at this point]
    Other Person: Oh man I just went to a sporting event, it was neato.
    Me: Oh yeah? Like, where was it?
    Other Person: Dude it was in like, Guam! Took us an hour to get there.
    Me: Gee I sure am suitably impressed. Way to go, casual acquaintance! See ya round hey.
    Other Person: Ace! See ya.

    You can see where the possible confusion could arise where this conversation takes place between two residents of Australia. Guam is being used here as a token to exemplify an exaggeratedly far away location to place special emphasis on the sporting event’s location being very distant. In a place such as the U.S.A. or the Isle of Mann this is fine and congruent with the speaker’s meaning, especially since Guam has indeed been a far-flung outpost of the United States since World War II with its U.S. military base bristling with weapons I imagine to be poised to cause the mass destruction of South East Asia.

    N.B. All of the above text is to justify the images contained within this post.

    What Web 2.0 Is

    The Buzzword

    Like any good buzzword (say…agile — or is that AGILE? No, it isn’t.), Web 2.0 is overused and bastardised to mean a thousand different things by some groups of people, and at the same time it’s mocked and dismissed as just another buzzword by others.

    OK so it’s March 2008 and Web 2.0 is so not cool these days because it’s so old, but I feel like it’s important that I share two insightful resources that really do describe Web 2.0, if not succinctly then at least fairly comprehensively :)

    The Resources

    The first thing I want to share, and probably the canonical Web 2.0 description, is Tim O’Reilly’s essay “What Is Web 2.0 - Design Patterns and Business Models for the Next Generation of Software.”

    The other thing is this Youtube video that really had an impact on me when I first watched it. I think it does a good job of demonstrating the ideas behind web 2.0, especially for only 4 minutes and 31 seconds. It’s a good, quick conceptual overview of the whole concept.

    The “I Kinda Reckon” Bit

    So now that we’re talking about the whole web 2.0 concept thing, I’d just like to point out that it is really a lot different to the ideas people had back in the dotcom boom/bust days. Business ideas were much more aligned to the big dollar outlay, build-it-and-they-will-come, broadcast mentality of more traditional media and businesses (although some apparently got it right anyway.)

    So everyone threw all that stuff out in favour of lightweight, bootstrapped startups that rely on users contributing, and APIs and interoperability and simplicity and figuring out what the web is and not imposing some model from before.

    If you look at it like a giant agile development project, the original dotcom web bubble was our first iteration. We got some features, some stuff worked, some stuff was missing, and we threw some stuff away in the dotcom bust. Maybe Web 2.0 is iteration two — Fred Brooks did say, “build one to throw away.”

    The Wrap Up

    So as insanely belated as this post is, I really wanted to get these two resources off my chest and out of my private wiki (feel the two-point-ohness) so that y’all can enjoy them. Please do so.

    omg Krispy Kreme is coming to Brisbane!

    Wow.

    Krispy Kreme launch in Brisbane

    It looks like my dreams are finally coming true; Krispy Kreme is opening in Brisbane! They were going gangbusters in Queen Street Mall today at lunchtime, giving away 500 dozen doughnuts and they had a giant Krispy Kreme sandcastle — I don’t know why they had that but it was awesome.

    And they had a van and promo chicks and ex footy players (Paul Sironen) and balloons and what not.

    I snapped some pics on my phone (see em on Facebook):
    krispy kreme launch

    krispy kreme launch

    krispy kreme launch