A Pointless Update?
Posted by Howard Yeend in web on May 10, 2011
This is a pointless update.
I haven’t updated this blog for over a month. Google likes it when I update frequently. So I’m doing a pointless update to see what Google does. Last year I started updating the blog every two weeks and have noticed a huge increase in search traffic since then (anecdotal evidence I know, but controlled experiments on SEO are difficult).
Now my updates are less frequent, my traffic has dipped a little again. So I’m hoping that this update will cause my traffic to increase again.
So it’s not really a pointless update, it’s part of an experiment to see how Google responds. And in fact, I’ve actually managed to turn this into a vaguely interesting post about search engines after all, so the experiment is probably hopeless flawed. But read on if you’re interested in some chatter about how search engines like Google actually work.
Read the rest of this entry »
jQuery simple dialog plugin; 1.5kB minified
Posted by Howard Yeend in javascript on April 3, 2011
jQuery liteDialog is a very lightweight modal dialog plugin for jQuery. It’s designed as an “I don’t care about the features I just want to pop up a little message” plugin.
Download the source on github or Open a quick demo to see how it looks.
jQuery.liteDialog.js weighs in at 1.5kB minified, and requires just one file. It’s designed to be blindingly simple to deploy and use, but also features a few basic options should you need them.
Read the rest of this entry »
Genetic Algorithm Examples
Posted by Howard Yeend in machine learning on March 3, 2011
There’s been a lot of buzz recently on reddit and HN about genetic algorithms. Some impressive new demos have surfaced and I’d like to take this opportunity to review some of the cool things people have done with genetic algorithms, a fascinating subfield of evolutionary computing / machine learning (which is itself a part of the broader study of artificial intelligence (ah how academics love to classify things (and nest parentheses (especially computer scientists)))).
If you’re new to genetic algorithms, don’t be put off by the awesome/scary name – you might like to check out my own modest contribution to the field of abusing science to make cool useless things; the hello world genetic algorithm tutorial. It’s written as a short genetic algorithm tutorial to help beginners understand genetic algorithms from the ground up (and it has a pretty interactive demo in JavaScript too!).
So here’s my top five evolutionary scripts:
Read the rest of this entry »
What Bing Should Have Said To Google
Posted by Howard Yeend in web on February 3, 2011
So, Bing made their response to Google’s accusations of copying their results. I don’t think Bing were as clear in their response as they could have been.
Today I’m going to write the post that I think Bing should have written. To be clear – I have absolutely no relationship with either of these companies (beyond using gmail, analytics and adsense), I’m just putting this out here from my view of the situation. After this I’ll get back to blogging about cool web stuff, and stop ruining my chances of ever working for Google…
Read the rest of this entry »
What are Google thinking: Part 2
Posted by Howard Yeend in web on February 2, 2011
Original blog post here: >What are Google thinking<
I’d like to respond to some of the comments made on hackernews and puremango about my post yesterday, and about Binggate / copygate in general.
Read the rest of this entry »
What on earth are Google thinking? (re: Bing-gate)
Posted by Howard Yeend in web on February 1, 2011
By now you’ve no doubt smelled the shitstorm surrounding Google’s allegation that Bing are ‘cheating’ and copying Google’s search results. If not, in brief, Google spotted that Bing sometimes includes results that seemed to be copied from Google, so Google set up a honeypot – they made some made up words like [hiybbprqag or juegosdeben1ogrande] cause Google’s SERPs to link to random unrelated sites. A few weeks later, around 8% of those sites showed up on Bing for those queries.
In what is being dubbed by many as “BingGate”, Google then leaked a great story onto searchengineland.com who ran with the headline Google: Bing is Cheating, Copying Our Search Results. This on the very same day that the Farsight 2011 event was held – a discussion about the future of search between Matt Cutts (Head of Webspam at Google), Harry Shum (Bing Corporate Vice President) and Rich Skrenta (CEO of Blekko) – great timing Google. Classy.
When I read about the story on hackernews, I pretty much immediately saw what was going on – Bing are using click data from everywhere to improve their results. Now I’m no MS evangelist. I run OSX, had gmail when it was still 6 invites per user, yada yada. (heck I run adsense and analytics on my blog. I love Google, which is why I’m massively disappointed to see this kind of behaviour from them!)
What is the point of HTML 5?
Posted by Howard Yeend in Philosophy, web on January 29, 2011
HTML 5 is making a huge splash. It’s like web2.0 all over again. I think it’s a massively important moment in the history of the web, but I also think it’s slightly off-center in terms of where the web should be heading.
It’s difficult to say what the web “started out” as, because there was really no single distinct moment of inception. Sir Tim Berners-Lee cobbled together a program to combine already-extant Internet and hypertext systems, but the primary purpose for this ‘web’ of his was to be a document organisation and retrieval system. In fact I think Sir Tim even wanted the web to be editable, so Wikipedia is more or less what he had in mind.
That’s a telling legacy. The web was designed to be an interconnected system of text. Or a decentralised system of text. Or a self-organising system of text. But always: a system of text.
Read the rest of this entry »
Genetic Algorithm For Hello World
Posted by Howard Yeend in javascript, machine learning on December 13, 2010
This article works through the creation of a ‘toy’ genetic algorithm which starts with a few hundred random strings and evolves towards the phrase “Hello World!”. It’s a toy example because we know in advance what the optimum solution is – the phrase “Hello World!” – but it provides a nice simple introduction to evolutionary algorithms.
I have written this article primarily for developers who have a casual interest in machine learning. I don’t talk much about the implementation of the code itself because there’s not much of interest there – the beauty of genetic algorithms is their simplicity, so the code isn’t that interesting, other than in as much as it’s not usual to do such things in JavaScript. For ‘real’ applications of genetic algorithms, I’d suggest looking into existing established frameworks for your language.
Read the rest of this entry »
A quick overview of machine learning techniques
Posted by Howard Yeend in machine learning on November 27, 2010
Machine learning is a fascinating discipline. Often inspired by natural processes, it can produce astounding results in a wide range of applications. Modern web search is underpinned by ML techniques such as clustering and statistical text processing. Computer games make use of evolutionary algorithms to produce better artificial enemies. Your camera probably has face detection in it for aiding auto-focus. Machine learning is key to making our technology better and our lives easier.
Today I’m going to give a very brief and incomplete overview of machine learning technologies and applications. There are three broad types of machine learning: Categorisation, Optimisation and Prediction.
Poking holes in PHP object privacy
Posted by Howard Yeend in PHP on November 1, 2010
PHP provides a decent model of class member visibility, with public, private, and protected members to help you define tight APIs for your objects and show other developers how your object is supposed to be used. But used naively, PHP’s ‘magic methods’ can easily and subtly subvert this system, making everything public.
If you’re still new to object oriented programming in PHP5, think of “public” as roughly analogous to “my function’s arguments” and “private” as “local variables inside the function”. You wouldn’t want someone calling your function and messing with the local vars, and you wouldn’t want someone using your object messing with its private members.
Magic methods provide functionality like catching references to methods and properties which are not visible to us, and doing special things with them. Magic methods have always struck me as a bit weird, and whenever you bring them up in discussions online, there’s always a few people with reservations about them – efficiency, clarity, use-cases and so on.
I’m still in two minds; they can be useful in some circumstances, but here’s one reason why they could be considered harmful: Used carelessly, they can easily enable an OOP antipattern where all class members become public, even those declared as private or protected in the class definition. Read the rest of this entry »





Recent Comments