|
Just trying to change my password for $COLLABORATOR's network. Does anyone have any idea what sort of password would satisfy this? I've tried many, many different things :).
Your new password does not meet the following password policy requirements:
- The password must contain: 0 lowercase characters, 0 uppercase characters, 2 alphabetic characters, 8 unique characters, at least 2 digits, digits in positions: 0, 0 ending digits, at least 2 special characters, special characters in positions: 0, 0 ending special characters. The check is case sensitive.
Update: I found the following command somehow generated a valid password:
$ dd if=/dev/urandom bs=10 count=1 2>/dev/null | uuencode - | head -2 | tail -1
|
|
Update: It appears the wordpress/LJ cross poster can't handle indentation. I suggest you just download the full source from the link at the bottom.
Update 2: Fixed it (whit a bit of a hack).
This time we'll learn how to use one of Firtree's most powerful features: kernels. Firtree includes a little C-like language which can be used to specify image processing operations. In essence, it is a function that is called once per output pixel and is asked to compute the colour of that pixel. The kernel can, itself, make use of samplers just like a rendering engine.
Under the covers Firtree compiles all of your kernel functions (and it's the samplers it uses) into one optimised machine code routine.
Firstly, we'll write a Python function which can help us compile kernels. It takes a string containing some kernel source and returns a kernel and a sampler for that kernel. It also prints out an error log if you made a mistake in the syntax:
def compile_kernel(source):
"""
A simple function which compiles a kernel, checks that the
compilation succeeded and returns a pair containing the kernel and a
sampler for it.
"""
kernel = ft.Kernel()
kernel.compile_from_source(source)
if not kernel.get_compile_status():
print("Error compiling kernel:")
print("\n".join(kernel.get_compile_log()))
return
kernel_sampler = ft.KernelSampler()
kernel_sampler.set_kernel(kernel)
return (kernel, kernel_sampler)
Now let's actually create a kernel. I'm going to use the example of a desaturate kernel, essentially converting a colour image into a black and white one:
# Create a desaturate kernel.
(desat, desat_sampler) = compile_kernel("""
kernel vec4 desaturate(sampler src)
{
vec4 src_colour = unpremultiply( sample(src, samplerCoord(src)) );
float luminance = dot(src_colour, vec4(0.299,0.587,0.114,0));
return premultiply(
vec4(luminance,luminance,luminance,src_colour.a)
);
}
""")
The kernel language itself should be familiar to anyone who has programmed in C, GLSL or CoreImage. I'll explain some of the functions we use:
- [un]premultiply – Firtree uses a pre-multiplied representation internally. That is to say that the red, green and blue components of a colour are pre-multiplied by the alpha value. These functions can be used to undo and redo this operation.
- sample – Call a sampler. It takes two parameters: one is the sampler to sample from and the second is a 2d vector specifying where to do so.
- samplerCoord – Samplers have associated with them a co-ordinate transform. This function returns the co-ordinate in the sampler's co-ordinate system of the current pixel.
- dot – Perform a dot-product between two vectors. In this case, it takes the right combination of red, green and blue components to return a luminance value.
We now need to tell the kernel what sampler to use for 'src'. We do this with one line of Python:
# Wire the lena sampler into the desaturate kernel. desat['src'] = lena_sampler
Finally we need to tell the CPU renderer to use the desat_sampler sampler instead of the Lena one:
# Use the engine to render the output.
engine.set_sampler(desat_sampler)
engine.render_into_cairo_surface(
lena_sampler.get_extent(), # what area of the input to render
output_surface # into what
)
The output image is what we wanted, a desaturated version of Lena.
If one wanted to check that Firtree is indeed doing some work behind the scenes, we can get it to print out the compiled assembler for the function. Simply add the following line:
print(ft.debug_dump_cpu_renderer_asm(engine, ft.FORMAT_RGBA32))
Compating the resulting output to the kernel language input clearly shows how much easier it is writing image processing kernels in Firtree! :)
Next time, we'll see how to chain kernels together and let Firtree worry about the details.
The full source code is available.
|
|
I'm going to write a set of blog posts all about how to use Firtree from Python. This post is about the simplest thing that you can do with Firtree, load an image and write it back out again.
To get Firtree on Ubuntu Karmic, you can add the Firtree PPA to your system and install the python-firtree package.
Firtree is based around the concept of a sampler. A sampler in essence knows how to get the colour of a pixel given it's location. The location is specified as a 2d vector of floats and the colour is a 4d vector of floats. The colour is made up of the red, green, blue and alpha components scaled into the rage zero to one.
Our first example will load our input, the ubiquitous Lena, into a Cairo surface and create a sampler which knows how to get data out of that surface:
import cairo import pyfirtree as ft
# Firstly, load the lena image lena_surface = cairo.ImageSurface.create_from_png('lena.png')
# Create a sampler for the surface lena_sampler = ft.CairoSurfaceSampler() lena_sampler.set_cairo_surface(lena_surface)
So far, so easy. Firtree also has the concept of a renderer which knows how to run over each pixel in an output, ask the sampler for the appropriate pixel colour and write it out. Firtree ships with a CPU based renderer which uses LLVM to compile your pipeline down into efficient code and run it over all the CPUs in your machine. Let's make use of that:
# Create an output surface similar to the input output_surface = cairo.ImageSurface( cairo.FORMAT_ARGB32, lena_surface.get_width(), lena_surface.get_height() )
# Create a CPU render engine. engine = ft.CpuRenderer()
# Use the engine to write the input to the output. engine.set_sampler(lena_sampler) engine.render_into_cairo_surface( lena_sampler.get_extent(), # what area of the input to render output_surface # into what )
# Write the output output_surface.write_to_png('output.png')
And that is it, you have written some code that loads an input file and writes it back out to another file. Next time you'll learn how to make use of the main feature of Firtree: image processing kernels.
The source code for this example is available.
|
|
The BBC Archive have released a number of old Tomorrow's World episodes. One particular episode has the infamous 'beachball' opening sequence. The moment I saw that I was immediately transported back to my childhood, having just got out of the bath (Tomorrow's World day was bath day) and sitting downstairs freshly washed in a dressing gown.
Tomorrow's World is one of my happy recollections of a time when the BBC's science output actually excited and engaged me. The pre-Peter Snow and Phillipa Forrester Tomorrow's World was an excellent programme that celebrated the innovation and optimism about technology before the cynical 90s killed it all. Similarly I remember the two-programme Horizon special on the Voyager space probes as an excellent high point before the 'single scientist against the world with strange camera angles and visual metaphors' rot that has reduced the once proud flagship science programme into the stupid dumbed down claptrap is is now.
|
|
The canonical source for this blog has moved server. Hopefully all the cross-posting magic has retained its power. This post acts as a test for this :).
|
| » Second night in Edinburgh |
|
The second night in Edinburgh is about to begin. The first one doesn’t really count given that the entire day was pretty much lost to travelling. The train trip up was fun though. Having people to talk to, and space to breathe really does make a hell of a difference. The second leg (Stevenage to Edinburgh) took around 6 hours but I hardly noticed.
Today we had a bit of a practise in the morning followed by a relaxing day to prepare us for the stress to come. Laila, Alex, Jon and I went to the seaside. Photos of which can be seen on the Project Steve blog. After the beach, there was a well deserved pub.
I really love Edinburgh. The quality of the air up here is always so crisp and refreshing. Just breathing makes me feel like I’m cleaning my insides out.
Tomorrow is our get in. Luckily it is at the civilised time of 2pm but before that I have a publicity meeting with TSOB at 12pm and a Steve meeting at 10am. This, coupled with the inevitable flyering, means I should be pretty busy tomorrow.
The Internet connection here can be described as ’spotty at best’. My phone, when it has 3G + HSPDA is absolutely wonderful. When it has 2G, it sucks donkey balls. Luckily I have found a magic location within my room where 3G goodness can be had. One bar of goodness, but goodness nonetheless.
Aug. 24th, 2009 @ 12:43 am
|
| » Problem solved: PyGObject versions on OS X |
|
If you, like me, are trying to port a big GObject-based codebase with Python bindings over to OS X you may have run into the problem that the py-gobject port links agains Python 2.4. If, like me, you use CMake as a build system you’ll know that it is tricky to persuade CMake to do the same. The solution is to install the py25-gobject port.
Aug. 21st, 2009 @ 12:51 pm
|
| » Seen in the lab |
|
Someone left an anagram on the whiteboard at work that we had to solve. As everyone knows, anagrams only have a single unique solution and we found it.
We also added a picture of Nick the Filthy Pencil. We work hard. Honest.
Aug. 19th, 2009 @ 11:26 am
|
| » Once Upon a Time Trailer |
|
Here is a trailer for Once Upon a Time that I’m in for a bit of. It is terribly fine and Cat did an amazing job of learning all her Final Cut Pro and Blender-fu to do all the CG.
Once you’ve seen An Improvised History of Absolutely Everything, make sure to check this out too!
Update: The original script is also available if you want to compare the final product to it/discover some in-jokes :)
Aug. 18th, 2009 @ 11:39 am
|
| » This time last year |
|
tl;dr; I just need to bloody well cheer up.
It has been said by a wiser sage than I, I think perhaps it was Kenny Everett[1], that there are two sorts of comedians: those with some mental illness and those that are dead. It is undoubtedly true that comedy is bad for the mental health; the yearly trip to Edinburgh neatly shines a light on this fact for me.
This time last year I faced down a rather severe depressive meltdown. The proper sitting-in-the-corner-rocking-back-and-forth sort. It is funny seeing the blog posts leading up to that moment. In retrospect the explosion was obvious; the undirected low-level anger at people, the growing levels of frustration and impotence at the world and the feelings of self-doubt all all important indicators. It is most telling, I think, that there are no posts between the 1st August 2008 and 28th September 2008. Two months which were hell for me.
I am hoping that this year will be better all around. Last year I very nearly exploded all over my friends in a very nasty way that would almost certainly be bridge burning. The incredible stress of Edinburgh didn’t help here. Indeed, in the last few days of rehearsal week I was convinced that I would make people far happier if I just went away; I truly believed that everyone I knew hated me. Certainly my hazy recollection of the month of August is alternating between rage and weeping in corners.
In fact my brain was so broken that I have only two clear memories of the entire rehearsal week. One is the audio book of 2001: A Space Odyssey, which I played on continual loop to and from the rehearsal venue. The other is a small rock. This rock sits by the entrance to the Long Room in New College, Oxford. It is a small, unremarkable, rock about the size of a clenched fist. It sits roughly where one might expect to find a stop or wedge for the main door into the building.
This rock was my companion in the dark times. The entrance to the Long Room is a small, shaded corner deep in the heart of New which is ideal to hide in. When I was steeling myself against the vicissitudes of my own brain, I would fixate on it and give it my full attention. Even now I think I could draw a reasonable picture of this rock. If there were such a thing as telekinesis, this rock would long ago have been propelled into orbit.
I went on a Project Steve weekend a few weeks ago. We practised in New College. The rock was still there. In some strange way I felt as if I had come to see an old friend.
So why am I prattling on about this? Some form of catharsis? An attempt to exorcise demons by shouting into the black void of the Internet? No, not really. Consider it more a belated apology to anyone I might have pissed off last year at around this time.
And perhaps it is some form of advanced apology. Depression can take many forms, as I’m sure anyone who’s dipped their toe into it’s murky waters can attest. For me, it is most definitely directed at complete dissatisfaction with society and a low-level hatred to those who I should probably view as closest.
Ironically, it is not this that proves problematic. I can deal with my own brain. We’ve been close bedfellows for almost three decades now so I should know how to knock it into shape. It is harder to deal with the guilt my behaviour towards those around me provokes. For you see, dear anonymous Internet hoards, I am not actually someone who enjoys being snappy and aggressive to people. I most certainly don’t want to load people up with my own emotional baggage. It isn’t their problem, why should they have to deal with it? Thus I am stuck in the awkward position of being absolutely indefensibly horrible to people and then not feeling able to excuse myself for the fear that they’ll resent having to ‘deal with the madman’.
Like it or not, mental illness makes people feel uncomfortable. If I am in a mood, I think it is fairly justifiable for people to be of the opinion I should just bloody well cheer up. I am, almost by definition, being unreasonable, both in behaviour and the implicit requirement that people accept that behaviour because of some nebulous ’sad disease’ I profess to have. It is people’s reticence to do this that makes me feel worse. If the boot were on the other foot, so to speak, I’d worry about whether I should try to fix the stupid, paranoid problem the other person has or whether to ignore their behaviour and hope they go away. I would certainly wish that they would just sort their own brain out and stop burdening me[2].
In fact, if I appear hostile, cynical, angry, combative, sarcastic or snide, it may surprise you to know that what I’d probably really like is someone to take me into another room, give me a cup of tea, a gentle cuddle and talk about something pointless for a bit. I really am that much of a soppy git. I don’t want you to sort out any stupid problem I might have; it is not yours to sort out. Instead I am probably just scabbing over my own fears that everyone hates me :).
The good news is that in no sense has the cloud descended as much as it did last year. But it is hovering over the horizon. Should it rear it’s ugly head for this year’s festival, I know that I just need to get away. I’ll just go away for a bit. Maybe an afternoon, perhaps overnight. Perhaps all I need is to be taken away from people and be brought a beer (you know who you were last year…).
All in all the lesson learned from last year: cheer up and stop being a grumpy bastard. The sub-lesson is ‘find someone willing to snuggle up and cuddle the stress away’. This year, those people will be a bit thin on the ground!
[1] I can find no reference, but he seems to have been chatty about such things.
[2] With the exception of those I love. I’d view an acceptable definition of love as ‘being as selfish for another person as yourself’. Certainly being willing to recognise someone else’s problem as your problem satisfies that.
Aug. 5th, 2009 @ 02:37 am
|
| » MP 2.0? |
|
I was listening to the free-as-in-node podcast on the way to work today and there was a long and, to be honest, not terribly interesting rant about politics in the UK going on. It did however get me thinking on our parliamentary democracy. Could there be an almost ‘ideal’ MP?
One of the arguably best things about our first-past-the-post system is that one votes directly for a person. Almost all forms of PR I’ve seen lose this important distinction and move more towards voting for a party. This difference is worth exploring in some detail.
An MP should, in an ideal world, represent their constituents. Their role is to be the voice of the people in parliament. As time has gone on, however, an MP has become less about voicing the views of the people who voted for them and more about being a member of the largest gang.
Voting is very much an action-at-a-distance thing. As it stands, dividing out by independent candidates for the moment, I must select a person whom I think both capable of listening to and representing my views but also, pragmatically, someone who is a member of one of the ‘big three’ political parties. Said person is under immense pressure from the party to kowtow to the party line and so, should the party line bifurcate from my own views, I’m pretty much screwed.
I realised then that a perfect democratic MP has no politics. I don’t actually want someone who has strong views. What I want is someone who stands up and says the consensus view of their constituents.
Ah! But there is the rub. For it is almost impossible to get a consensus amongst four people, let alone forty thousand. So let us consider our ideal MP 2.0. I’m going to assume a beautiful world where everyone who cares can get access to the Web. Our MP, let us call them Ali Smith, has set up http://alispeaksforyou.com/ or similar. This is the world’s first truly democratic site.
Every house in the constituency is flyered with some log-in details for those on the electoral role. We’re going to assume relatively soft security here. Any constituent can log into alispeaksforyou.com and can directly involve themselves:
- There is a system akin to the e-petition system on the Number 10 website. People can propose and vote for a question that they’d like Ali to ask in parliament. The ‘first’ choice is the question Ali might try to ask at PMQs for example.
- There are forums for constituents to actually discuss amongst themselves and try to find some consensus without hoping that Ali will have magical insight.
- Expense claims are an RSS feed.
- Each week, Ali runs a surgery podcast. He talks about what people have been discussing in the forums, reads out some emails, perhaps attempts to sum up a fair opinion.
I’m sure you could add twenty other things to that list. The purpose of the site, crucially, is not to tell Ali what to do, it is to bring the constituency together so that in fact they can meet and discuss with each other. After all, Ali is there to represent the constituency’s view; this is impossible if the constituency as a whole hasn’t come together to form one.
The site, in essence, builds a community around the MP. This community is, after all, what the MP should be all about. The site and it’s users is the important thing. The person who actually goes to some room, stands up and reads the topic from IRC is in some sense irrelevant. :)
What if the top-voted question is ‘will the PM promise to include Rick Astley in the New Year Honours?’ Well, what if it is? If that ends up being the view of the community, even if it is a protest view, it should be aired.
With modern communications technology, the constituency as a whole can, metaphorically, fit into the MP’s front room and vent their grievances. More importantly, they might find that their own grievances pale when compared to others’. Perhaps everyone would learn a little.
Aug. 4th, 2009 @ 12:22 pm
|
| » What if Facebook was done right? |
|
Facebook, good God, what is it good for? Absolutely nothing.
Well, that isn’t entirely fair. Consider for the moment if the Web as a whole was lke Facebook. Each Facebook ‘application’ was a website and anyone could create a profile page which contained all the applications they wanted to use. The identity problem would be solved or, at least, would be consistently bad; there would be one distributed ID scheme for everyone. If the Next Twitter arrives, it is immediately part of everyone’s existing experience.
Could this be built using Web-twenty and the drizzle-machine[1]? I think so. Consider a social networking site built around these principles:
- Don’t make Yet Another Identity System. Choose an ID system that is distributed, like OpenID, and stick to it. Everyone in your network has a preferred ID like this.
- Don’t implement your own infrastructure. Instead create ‘applications’ that talk to some other Cloud service but don’t store state. These applications would be, in effect, merely views, delegating the controller and model to Cloud APIs. Each view knows how to display its associated service as a main page, inside your profile, as a feed, etc.
- Create mechanism, not policy. Your profile is made up of views, put wherever you want. A ‘page’ is merely a view of views. Your profile consists of one or more views with one view blessed, by you, as the ‘main profile’.
- Allow for, and encourage, user generated content. You provide a set of template pages. Certainly you’d include a main profile but also, perhaps, a page which interfaces with the Flickr API to manage photos, a status feed drawn from Twitter, etc. Crucially, there is no difference between your ‘official’ views and views generated by third parties. There is no ‘blessed’ code.
- Host as little as possible. You don’t want to host pictures. You don’t want to store state that someone else can store. You store just enough to present the views in the right place and give the views enough information to access their service.
- Don’t re-invent the wheel. Don’t invent a notification and messaging system. Use email. Views use email directly to send notifications.
- Use soft-security. What stops a spammy view from spamming everyone you know? Nothing, except that you can remove spammy views easily. A spammy view won’t last long. In the same vein, don’t try to make malicious views impossible, just make them easy to identify and remove.
- Make content discoverable. All the views are bundled together in one place, the ‘view store’. This ’store’ is itself merely a REST-ful database of view providers with a view which can interact with it. You provide a view store but others can do the same. If $COMPANY wants to make their own pay-for view store, they can.
- Make is easy and safe to play. The Web is an easy playground. People can play with a website by merely visiting a URL. They can stop by just navigating away. In the same way, views are easy to add, either click-install (a la Firefox’s extensions) or drag-and-dropping some URL. Just as importantly, views are easy to remove. Everything is reversible via undo back to your default profile.
What I’ve descibed may sound a lot like a web-framework, a la Django or Drupal. In truth, it is. But unlike other frameworks it is entirely distributed. It is also user-controlled.
With a pragmatic hat on, such a system could never exist. For one, since you, by design, don’t host, control or hold the keys to any content, there is almost no way to monetise the system. Secondly, a system designed to be extensible and accessible to everyone is open to abuse in precisely the same way as the Internet and Web. Malicious web-sites and spam have exact analogues in this utopian social network.
But at the same time, could such a system be built? In essence one could imagine it as a bunch of Cloud services and one page of HTML + JS that you open in your web-browser. State is distributed, replicated and one can migrate as you wish. It truly puts the user in control of their data. Or, more precisely, puts the user in control of who has their data.
[1] Web 2.0 and the Cloud. But I refuse to be cool enough to use those buzzwords in real life. OTOH, Web-twenty and the drizzle machine sound like they would be an awesome band.
Jul. 31st, 2009 @ 09:03 am
|
| » BBC complaint (again) |
|
Today’s complaint to the BBC:
From http://news.bbc.co.uk/1/hi/technology/8175410.stm:
“Programmes will be streamed without DRM (Digital Rights Management) copy protection but will only be available to people with a UK web address.”
Assuming you are using the common convention of referring to URLs as ‘web addresses’, this statement implies that the programmes will only be viewable by people who have a personal website which is based in the UK. This is clearly absurd.
Instead I imagine the correct phrase is “IP address” or, for the non-technical, “Internet address”, which refers to the unique number associated with your Internet connection.
As it stands, the article is stating something which is markedly different from fact.
Of course I didn’t complain about the fact that they didn’t disclose the MS spokesperson used to be head of the iPlayer at the Beeb…
Jul. 30th, 2009 @ 01:18 pm
|
| » BBC Claims {0, 1, 2, 3} === 0 |
|
I’ve seen the BBC News magazine section make some stupid claims in my time but never have I seen them assert that 0 ≤ n ≤ 3 ⇒ n = 0.

Jul. 22nd, 2009 @ 01:25 pm
|
| » New computer |
|
I woke up at 5:50am this morning unable to sleep (I had an interesting dream about flying insects — usually a sign I overheated in the night). But this post is not about my insomnia. It is about my laptop.
I have a 5 year old original black MacBook laptop. I’ve been very happy with it over the years. As one might suspect, there have been a few wrinkles over that time. The plastic case has been notched and a bit of the keyboard facing has come away around the edges, the audio jack half broke around 6 months ago making the internal speakers useless in OS X (but still working under Linux) and the iSight never really forgave me for disconnecting it for a bit. In addition I had to replace the hard drive (not entirely my fault) and the battery (my fault but unlikely to be repeated since a non-removable battery is also non-losable).
This morning, however, the audio gave up the ghost fully. That is to say that getting the laptop to play with headphones (and thus not wake housemates) is now fairly impractical without opening the case and replacing the jack myself.
Since it is my birthday next week, I thought I’d use the final death of audio as a good excuse to treat myself to a brand new 13″ MacBook. Now, dear reader, please don’t comment saying ‘What? That laptop sucks for $REASON’. It is the only laptop that satisfies the four requirements of being Linux-possible, being within my price range, being from Apple1 and looking like not-arse2.
This is also my first experience with a ‘mail in rebate’. I’m aware these things are common in the US. In the UK, however, they are relatively rare. In this case, the rebate means I could purchase an iPod Touch for £20, so I did. So far the rebate process has been relatively painless. Then again, so far it is just a case of finding the IBAN for my bank account and filling in a web-form. The actual posting of the various magic labels must happen once I get the laptop in question.
As a side-rant, finding the IBAN was non-trivial. The helpful instructions on my bank’s online banking site being incorrect. I found it in the end using my own wits.
I do wonder why the mail in rebate thing happens at all. Apple know I’ve bought the laptop and iPod; they sold it to me. Why I then have to post back proof of purchase is beyond me. I can see the logic if I buy the things from $RANDOM_SHOP, but I didn’t :). It would be far simpler if the Apple Store just noticed I’d bought the things and chopped the rebate off. This has the added effect of not giving the tax man the VAT (which, BTW, is almost exactly what the remaining 20 quid I’m paying for the iPod appears to be).
The cynic in me does make me wonder if the extra hoops and hurdles is just a way of making sure a percentage of people don’t claim the rebate making the actual mean reduction less.
1 Yes, it has to be a Mac laptop. No, I’m not showing my working :).
2 The white MacBook fails this important test.
Jul. 21st, 2009 @ 02:26 pm
|
| » @-addressing on micro blogging sites |
|
Disclaimer: I’ve not been able to find anything particularly informative Googling around for this. I haven’t looked terribly far so any useful links appreciated.
Any of you fine people who have fully embraced the web twenty micro-blogging rubbish that everyone and their dog thinks is going to be the next pets.com (remember them?) will have come across @-addressing. For those that haven’t, the concept is simple: When referring to or publicly replying to a twitter user, one simply sticks a ‘@’ in front of their name and the multitudinous twitter clients will linkify it to their profile.
The problem comes in when you are a de-localisation junkie like me. Already this blog is available in at least three separate places not counting any web-based RSS readers. Similarly my dents are available as tweets on Twitter and updates on Facebook. @-addressing, therefore, should really have some sort of tagging of the site of origin.
Now there already exists a mechanism of addressing for uniformly locating resources on the Web, the humble URL. Hence if I want to unambiguously refer to joebloggs on Twitter, I should quote http://twitter.com/joebloggs. Unfortunately, this takes up a precious 29 characters out of 140. Even if I were to assume the protocol part, one still gets twitter.com/joebloggs which effectively doubles the length of the username. It also jars against the accepted @-addressing convention.
So, let us be satisfied with an addressing scheme that:
- Fits in with the current @-addressing (and will still be auto-linkified by clients, even if the link is wrong on some sites).
- Adds small overhead to the address.
- Requires some external agreement/convention on identifying micro-blogging sites or, equivalently, pushes the site identification overhead out of the tweet.
I propose, therefore, @username:siteid. The justification being:
- Convention at the moment includes the ‘@username: message’ idiom and so the colon is an auto-linkify terminator for most clients.
- The overhead is entirely the site id (see below).
- Isn’t visually jarring given appropriate choice of siteid.
I’ve started using @username:T for Twitter and @username:I for identi.ca and will probably use @username:F for facebook. There is precisely one character of overhead which I can deal with. This is, however, a poor way to choose siteids. It rapidly uses up the convenient name space and is in no sense centralised.
Now the easiest way to automate the site id process is to have some site (e.g. pointme.at) which will redirect http://pointme.at/[siteid]/path/to/resource to http://[site]/path/to/resource. The siteid could either be chosen to reflect the site or auto-generated in a manner similar to bit.ly and it’s ilk.
On an related note, pointme.at is available… :)
Jul. 16th, 2009 @ 12:27 pm
|
| » Joining the cool kids |
|
I dipped my toe in this Web 2.0 thingie and created a Google AppEngine website. It comes complete with a stupid poncy name: thyncean. It will take a search query and display a series of randomly generated tweets about the subject based on real ones. Note that this is a toy. It works on my machine and my browser. YMMV :) If you are in IE, you not only lose but deserve to do so!
Some choice examples:
On ‘Christianity’: We don’t exist Phew
On ‘gays’: We have lady-sex I almost got in his system.
On ‘Obama’: say no to get their stockpiles of the most fiscally irresponsible in Moscow.
On ‘Sarah Palin’: Why Sarah Palin…Political FAIL
On ‘Michael Jackson’: just stop.
On ‘The Queen’: Helena Bonham Carter as the tower for the new obsession!
On ‘Linux’: whose fictitious fame rests on dutch iPhones for Kaitlyn Owen just utter rubbish.
Jul. 6th, 2009 @ 04:29 pm
|
| » HeMan and Skeletor are MsOTU - I am not |
rjw57@vega:~/Development/repos/bzr/firtree/packaging/jaunty$ lintian ../build-area/*.deb | wc -l
17
Fail :(.
Jul. 2nd, 2009 @ 10:02 am
|
| » Why, Auntie, Why? |
|
Because of the bloody stupid Andy Murray, BBC2 has now become BBC1 and what was BBC1 has now become BBC ‘lets-eek-the-time-before-the-inevitable-failure-out’. Consequently, the one decent programme on tonight, ‘The Supersizers…’ has been cancelled.
I just sent the following to the BBC:
OK. I’m going to hold up my hand Auntie. I really don’t care if Andy ‘Tim’ Murray wins his match. I am in the minority I realise. The rest of my household loves the silly fool and cares deeply about his progress.
One thing we all agree on, however, is how much we love the Supersizers… And how we’re all capable of watching the Murray match on any one of the thousand or so *other* ways Wimbledon can be enjoyed on the BBC.
Imagine our suprise when, upon tuning in to get our weekly fix of the garrulous gastronomes, we were presented with the tail end of Panorama. Subsequent investigation revealed that, no, our digibox was not suffering from some confusion, BBC2 had indeed become BBC1.
If the BBC is going to launch BBC Murray, please have the good grace to do it sooner rather than later so that I can sit safe in the knowledge that the, already inordinately huge Wimbledon coverage, won’t be extended to quite frankly cringeworthy proportions.
Now, I know that the response to this will inevitably be ‘we decided that the Murray match was important and you are just some crotchety old fool who is probably sat at home counting his collection of interesting 1950s biscuit tins’. If not in so many words, then indeed in spirit. Well, I’ll have you know that said collection of tins is terribly interesting. If this were the One Show, we’d have a Z-list commedian or someone who was the offspring of someone else famous come and look at them. We’d have a nice little interview where I’d give a couple of soundbites that Adrian Chiles can mock in a nice gentle manner while the interchangable ‘regional presenter’ rolls her eyes.
So, BBC. Stop pandering to the stupid ‘Murray Mania’ and realise that you are providing a programme of television, i.e. a set of *different things*.
Right. Demons have be exorcised and this crotchety old man (28 years old BTW) can go back to his train set.
Jun. 29th, 2009 @ 08:17 pm
|
| » Firtree editing video |
|
There is a new Firtree demo up on YouTube. This shows Firtree’s integration with GStreamer so that it can process video.
The video is also embedded below so that I can make all your RSS aggregators eat CPU :).
Jun. 29th, 2009 @ 05:34 pm
|
|