Wednesday, August 31, 2005

Now That's A Bit Suss

Microsoft's "Sandbox" experiment, start.com/3/ is pretty good.

It quite frankly beats the google offering hands down in my humble opinion. What I didn't expect was for it to deliberately break network links to Google Earth.

Instead of getting the link right, it seems to produce markup like:
<p><a href="" http://bbs.keyhole.com/ubb/showthreaded.php/cat/0/number/90791/an/0/page/0#90791="">Link</a></p>


Is this a bug - some tiny coding mistake around finding the links... or a feature?

Sunday, August 28, 2005

Saving the World (... in Australia)

Once again, I've been reading about Peak Oil and once again, shitting myself.

To that end, combined with the prospect of (possibly) $380 / barrel, the fact that once again the people I live with have fucked up the food budget enough for me not to have anything to eat [paying A Share of the shopping budget for 3 meals in a week and having to eat takeaway every day of the week... is not my idea of a beneficial food purchasing program], I've decided to think about the costs of localised food production.

Knowing nothing about Gardening and Growing Things, I went searching (in vain) for reliable resources on doing so on the internet.
Gardening bloggers don't exist, and if you find a site about gardening, it's about flowers. I don't want to eat roses when oil peaks...
After much heckling, Niall turned out to be a not so bad resource. He promptly told me to stop bothering him with questions, and go ask a nursery.

The incredibly obvious thing to do had obviously not really occured to me prior to this point. I googled (why does YellowPages.com.au think that it's a sustainable business action to force people to use their portal to find information? Surely letting google into their phone directory would mean people found places and ended up at the yellow pages site far more effectively), and then I eventually found what appears to be a dodgy UBD + yellow pages phone book mashup. It's no google maps, for one thing, but it worked.

Off on my bike, I quickly found a nursey on OG road. I wandered about, I wasn't really certain of how to cope with all of these flower dohickeys... eventually I approached the staff.


Me: Hi
Girl: Hi
Me: I'd like to... make ... vegetables... and such. Do you know how to go about doing that?
Girl: Eh?
Me: At home. In... a garden.
Girl: Uh huh.
Me: Take me to your lettuce heads? (voice in head informs me that she's rather attractive at this point, thus explaining the lack of comprehensible english words emerging from my mouth).
Girl: Oh. You want to Start A Garden.
Success and communication. Hurrah.

After much looking about, it was suggested I consider the cultivation of Lettuce. It has a short turnaround time (ten weeks?), and it's piss easy to grow. There will be photos of this emerging over the next while (hit the flickr upload limit, unless someone wants to fix that for me).

Ontop of all that, I'd like to point to some great links about Lettuce, Sustainable Green Power, and this Handy Chart To Make You Feel Guilty About Shit.

I like storycode.com

Storycode is a pretty neat idea, I think I'll start heckling them to expose web services / RDF in the near future.

Know any other sites like Storycode, Bookcrossing, and AllConsuming?

Saturday, August 27, 2005

Bad Marketing

Spikes are bad, mmmkay?

What Did People Get Angry About, Before Software?

Boingboing points us to Everett True, world class whinger, grump, asshole and complainer.

I could swear that it's me in short, fat, comic form.

Wednesday, August 24, 2005

Google Talk

Google Talk... talks to GAIM.

The fact that Google Talk is built on Jabber is heartening - it's an open, community owned protocol and google has just weighed in with a client for it. It's sleek, sexy, and does VOIP - no webcam whoring yet though.

Though I like the look and feel of it, I don't need Yet Another IM Client, so I'm really fucking happy I can just use GAIM and consolidate my entire online communication experience into one client.

Now I'll never have to put up with MSN's servers being down. Muhahaha.

Rather pleased at the moment with this, we'll see how it plays out with the rest of the world - will this be an alpha geek early adopter trend that doesn't penetrate into the dimmer regions of the teenage chatter psyche [due to lack of emotions to annoy the fuck out of people with]?

Time will tell, but I'm pretty happy with it.

Oh, and my new Google Desktop Search 2.0.

Tuesday, August 23, 2005

Dear HP software devs...

Hi.
I recently wanted to install a printer my roommate owns onto my laptop, and it happened to be a HP PSC 1315 "All In One".
The reason I wanted to do it was to print out an invoice or three, because it's my sick day off work and I haven't done it. Most printers are easy to install - a driver file and that's it.

Most printers.

I discovered, soon, that you required a CD installation. What? Is this windows 98? No, I do not think so.
Ok, ok, get the CD, automagically find the drivers. Hmm. I see. An installation wizard. Interesting.

My slow, rickety old laptop ran the installer, and it informed me that for a mere gigabyte of HDD space, I could have the latest and greatest in HP software.
All well and good, but I have never found a bit of manufactorer supplied software that is superior to whatever it is I use to do things - please, don't install acrobat reader, or a crappy scanning application... just install me some drivers.

Hundred?I thankfully discover, just below, there's a "minimal" installation at a mere hundred mb. Sod off. Back in my day... *incoherent rambling about floppy discs and printer drivers*.

The wizard runs. Flickers and tries to do about 80 different things. That's very odd and unexpected behaviour. It tells me to plug in the printer, eventually - surely the fucker is already plugged in, otherwise windows wouldn't be bugging me with "new hardware detected" every three minutes.

Some cable jiggling later, I've changed nothing but it's now working. Note to self: slaughter a goat to the god of whatever it is possessing my hardware.

There's 8, long, slow steps. Eventually, they complete. I click next.

Suddenly, there's a warning message. BEEP WARNING WARNING FLASH FLASH - hey, there's another install in progress, finish that before you complete this.
Lies. Lies I say. I know for a fact that there's no other installations of HP software going on, and I'm only removing the Office XP suite [sidenote, open office 2.0's latest beta kicks ASS], surely this printer doesn't need to worry about that, does it?

I click OK, expecting it to busy spin and say, hey, finish the other install or cancel this one. Instead, it goes into a rollback. The 20 minutes of time wasted installing up to this stage, which required me to accept a licence agreement for "scanning" software I didn't agree to, it's all gone.
The entire process rolls back. Slowly. Scans my registry. Shows a rather scary dialog which proclaims boldly:

HP All-In-One Installer
Removing unneeded components: Canon PCLe-5

What? No, no, you evil son of a bitch, that's my work stuff. I know it isn't *actually* uninstalling my other printers, but it's a very fucking unfortunate thing to put on a screen.

Finally, the final interface has a "you must restart your machine" message and a button to do it.

How about no thank you, I'd rather keep working with the document I wanted to print, eh? Luckily, we can cancel out of this installer with crafty use of the window termination button ("X").

The second attempt at installation got as far as the first did - and apparently, there *are* no standard windows drivers on the entire CD that windows XP can understand.

So, HP devs, please find another occupation, because you aren't very good at your current one. Sure you can make a printer and things like that - nice, but not really what I'm looking for in a hardware vendor.
I'd advise a career in gardening, or perhaps work for the tax office.

Kind Regards,

Monday, August 22, 2005

AJAX needs an observer pattern

Certain things are useful, and AJAX controls most definately couldwill benefit from it.

The idea behind the observer pattern is something you're already familar with: onchange="foo()". However, things get messy when you have to observe the state of a hidden control updated by javascript.

Since I don't have access to the javascript that does the modifying of the hidden control, I need to be able to add an EventListener for modifications of the value via javascript.


//Wonderful psuedocode
var inputA = new Input();
var inputB = new Input();

inputB.value = &inputA.value;
inputA.value = foo;


Or



//Wonderful psuedocode
var inputA = new Input();
var inputB = new Input();

inputA.addEventListener('observerNotify',function() { inputB.value = inputA.value; }, false);

Since I don't have this at the moment, cross browser, it hampers invisibly updating controls and different parts of the UI...

Sunday, August 21, 2005

Wanted

Fabl for windows... no messing about with cygwin.
D2Rmap implemented in PHP / a more popular language than Java.

Saturday, August 20, 2005

MAKE blog, google earth

Upon stumbling about I read an old MAKE blog entry - GeoURL to Google Earth XSLT.

It looks pretty cool, because you now get a mashup of plazes, blogs, and everything... for instance, my blog, plazes, alcoholix and everything in Google Earth.

This is really cool.

Friday, August 19, 2005

How I'm Going To Make The Semantic Web

i need to ramble
why don't we have the semantic web; it's good and stuff
problem: switching from mysql/postgres/etc
to thinking in triplestores built ontop of those
Just Too Hard, technology isn't there yet, etc
DAO code, like PEAR::DB_DataObject lets you work with mysql/etc really easily
you type into the command line and it produces templates for all of your classes
to do queries, you go

DataObject::factory('tablename');
$foo = DataObject::factory('tablename'); even
$foo->get('1'); //record id #1
$foo->tablefieldName = "blah";
$foo->save();
if you need to do anything funky
you extend the dataobject
and you don't have to think

RDF: people don't get it
too hard
no benefits
what's the point of producing it from my database?
i'll just roll my own web service API
and people can use that.

Different web services make life hell
because you have to translate between external API and internal API
it's pretty good compared to what it was
but it's still a bit of effort
*especially* if you have to code the SDK from scratch

Web services have their place
but they should be for doing things like calculateHowCoolIam()
rather than for data access


Now: Migrating between two databases
RDF is really good here
*if* you can map your data to common, well established ontologies
ie, your user profiles in FOAF
your project data in DOAP
whatever

so, why not make semantic web services
which are built up from dataobjects.

you type make classes
it gets a local representaiton of you DB and makes all of the objects

you type make more classes: http://www.foaf.com/foaf.rdf
and it gets foaf.rdf's RDFS [schema/ontology]
parses that
and produces more classes


when you work with your RDFdataobject
you can translate to and from RDF with no fuss
all your coding consists of is stapling
title = dc:title
id = rdfs:nodeID
image = foaf:depiction

in some config file somewhere

Intended use:

$foo = RDFDataObject::factory('tbl_users');
$foo->get('1');
print $foo->toRDF();
Or as a parser:

$rdf = "A WHOLE LOT OF RDF FROM SOMEWHERE ON THE WEB";
$foo = RDFDataObject::Parse('tbl_users', $rdf);

The side benefits of this?
  • You get a webservice layer built right atop your database, RESTfully.
  • Data Interchange. If I want to translate your user profiles to my user profiles, the RDFDataObjects strive for the best case, minimal loss of information. Maybe I don't and have no intention of storing birthdates, so the dataobject just ignores that.
  • It's not a triplestore, but it's not an ordinary database anymore. It's lightweight automagical syndication, replication, and webservices all grafted together.

I've scribbled out a few vague sketchings of an RDFS parser that pumps out PHP code, heckle me with blog comments if I don't get on with it by the end of the month.

Thursday, August 18, 2005

DataObject Smackdown

In the beginning there was a database connection library.

Developers looked down onto it from lofty heights, and ended up making rubbish. Over and over. Someone finally said, nuts to this, let's use postgres.

Uhm... shit, porting. Thus:
... were born. And useful. Patterns began to invade the scriptkiddy space, though they didn't know it. Porting was said to be easy, but no one really used it. They did, however, like being able to set up basic configuration and just make it work - clean looking code, ooh.

For me, it was ADODB and PEAR::DB that lead me onto the OOP circuit for PHP. I went off and learnt Java and you know, turned 17 and such. Going back, I saw how wonderful PEAR was in theory - I threw out everything else and started using PEAR::DB.
Alot.
It's been a beautiful relationship. But after endlessly and unconciously adopting poor attempts at a good ORM/DAO pattern, it began to falter.
Now it's time for the next step up. Take other people's proven patterns and run with them.

The only question for me is, which do I choose?
What are the pros, cons, pitfalls and hidden costs which I can't see yet? Who's used what, and what was it like? Did you get stuck? Did it help you get stuff done faster?

Thursday, August 11, 2005

IT Considered Harmful

Office moment:

Admin Coord: I think one of these job applicants is one of yours.
IT Manager: Let's see. Indian name. Research assistant, CMU. Skills: Java, C++, C, etc ad nausem. Prior experience / projects: Built a minikernel, smart card reader, all sorts.
Admin Coord: Do you think he can type?
IT Manager: *chuckles* I think he might be a bit overqualified for an admin position.
Admin Coord: And I bet he's no fun either.
IT Manager: *throws resume into trash*

Shocked the hell out of me, because this guy has done what I'd do for alot of admin jobs - get the IT geek resume out and throw the words "team player" into the cover letter.

Lesson learned:
Admin people want personality. If you can type, you just have to be friendly and... basically not an obvious screwup. Convey that in your cover letter or go home, and make sure you craft your resume towards the position.

Map Fight

Microsoft vs Google.

Which platform feels better?

Photomap
  • Looks slicker
  • Less clutter
  • Well executed
  • Scrolling in Firefox is teh suck
  • Less features [I don't really know if this is good or bad]
Geobloggers
  • Cooler
  • Automagically finds photos - less work for you or I
  • Able to link to Google Earth. Snap!
I'm torn, in truth.

Wednesday, August 10, 2005

Why Games Are Broken

An article and discussion on why games are broken.



19. NO MORE JUMPING PUZZLES IN FPS GAMES

We'll try to be calm and avoid the violent hyperbole that spoils so many gaming websites, but are you telling me that Congress can hold hearings about steroids in baseball, but they can't do anything about jumping puzzles in first-person games? YOU CAN'T SEE YOUR MOTHERFUCKING FEET. IT DOESN'T WORK.

I understand this occurring in games like Turok 3. That's why they're called bad games. But Half-Life 2? Are you serious? BOW YOUR HEAD IN SHAME.

Understandable, isn't it - got any pet peeves yourselves?

Friday, August 05, 2005

My Flickr Woes

PEAR::Flickr is one of the first things I saw today, and I decided to actually try and use it. The problem - I mean it works *fantastically* - is that it relies on XML_Tree.

XML_Tree is a package geared towards *representing* XML, not manipulating it! Eek, Cal, that's scary. There's scarce documentation on XML_Tree too - So I can call my Flickr API methods, but damned if I can get data out of the results without reparsing [XML_Serializer, I love you].

XML_Tree-2.0.0 probably has a lot more beneath the surface I just haven't looked at yet, but... *sigh*. I thought this would be as easy as one-two-th.. oh, we're already done.

Stay tuned for another drunken development, I think I've got a good idea :O

Everything You Never Knew About PEAR

Kickass list of a lot of decent pear package tutorials.

Life Hacks

About 200 Life Hacks.

Nice.

Internet Explorer Is Really Fucked [A tale of my past two weeks]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> new document </title>
</head>

<body>
<input name="one" id="two" value="" />
<div id="one"></div>
<a href="#" onclick="var a = document.getElementById('one'); var b = document.getElementById('two'); alert(a.id + ' ' + b.id);">CliCk</a>
</body>
</html>


The above snippet should never, ever produce "two two" in the alert box. It doesn't in firefox. It does in IE. We've fucked around for two weeks on and off working out just what the hell Internet Explorer was smoking, and that's it.

How hard is it to tell the difference between an ID attribute and a name?

Anyone?

The other pearler, which I can't reproduce, revolved around IE throwing a massive tantrum with input boxes and position: relative; top: -1px;
I can't write a test case for it at the moment, but telling IE to use static rather than relative worked.

Tuesday, August 02, 2005

Gaim SOC and A Simple Way To Present Smushed News

Check out the Summer of Code GAIM blog post smusher. It's simple but effective and quite stylish. Why did no one else think of it first?

Acid2, Embedded PNG, and a quick comment

1. http://www.webstandards.org/act/acid2/
2. http://www.ietf.org/rfc/rfc2397
3. http://particletree.com/features/successful-strategies-for-commenting-your-code

Monday, August 01, 2005

The World Is Sold On Century 21

Go and fill this out. Then pick a suburb. Hey presto, the entire form is reset.

My boss laments this loudly as I cradle my hangover today at work...