<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>webr3.org &#187; general</title>
	<atom:link href="http://webr3.org/blog/category/general/feed/" rel="self" type="application/rss+xml" />
	<link>http://webr3.org/blog</link>
	<description>brain&#039;s on fire!</description>
	<lastBuildDate>Tue, 19 Jul 2011 15:38:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>I live in the UK and...</title>
		<link>http://webr3.org/blog/general/i-live-in-the-uk-and/</link>
		<comments>http://webr3.org/blog/general/i-live-in-the-uk-and/#comments</comments>
		<pubDate>Mon, 14 Mar 2011 19:03:48 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=483</guid>
		<description><![CDATA[I work on the web, I work from home, my clients are all in different countries around the world, so are the people I communicate with on a daily basis, my friends and associates. One could say that I'm almost detached from the everyday society that goes on around me, I pretty much work and [...]]]></description>
			<content:encoded><![CDATA[<p>I work on the web, I work from home, my clients are all in different countries around the world, so are the people I communicate with on a daily basis, my friends and associates. One could say that I'm almost detached from the everyday society that goes on around me, I pretty much work and live autonomously; other than close family and a select few people I see regularly when I'm outside that is. The same is true for my better half Rachel.</p>
<p>A side effect of this, is that it let's me sit back and look at the country in which I live. The UK (or Great Britain, or whatever you call it). You probably know what I'm about to say, but I don't see anybody else saying it - granted, I haven't looked, but the way I see it is, if this isn't coming through my social stream then it isn't being said - so let me say it.</p>
<p>If the UK was embodied in a person, it would be a desensitized homeless addict without any morals, who'd taken advantage of and harmed every person they knew, and that was currently in mid air, about to hit the ground, after jumping off a bridge. I'm probably being too kind there though. From here on, this post is just going to be a collection of fragment paragraphs which hopefully illustrates.</p>
<p>Japan has just been hit by so many disasters it's unreal - I can say without a shadow of a doubt though, that if they had happened in the UK the effect would have been several orders of magnitude more devastating. The infrastructure would have crumbled, there would have been next to no warning bar the web's social media streams (that is to say, I'd probably have had to run down the street and warn the neighbours as they wouldn't have had a clue), the death toll would have been unimaginable. The response? can you really see our government (country wide or local) doing anything to respond that amounted to anything of consequence? Do you think there's a plan for any such event (of any kind on a similar scale), do you think there's even a plan, a clue, any preparedness at all? Can you see our prime minister stepping up to the plate and doing anything other than hide or squirm? Let's not gloss over things here, we would be completely and utterly screwed.</p>
<p>The middle east, uprisings everywhere, the people have a drive and are prepared to at least try and do something. Now, can you see that happening here? our economy is gone, there are no jobs, people are being made redundant at a scary rate with no more jobs for them to walk in to. The country produces nothing, has no industries, there are no jobs for our children, well over half the population is paid out of the tax of the other half of the population, and the half that pays the taxes are dropping like flies and struggling for work or to make a wage. Here's the horrible bit though, some of the people who are out of work just accept it and do nothing, others work themselves to death (literally, I knew several people did everything they could to provide for their families after loosing their careers, and sadly are no longer with us, overwork and over stress, they just died, unceremoniously at a young age - really good men, the best kind), yet others are busy scraping themselves through life and in to early grave. Some, the over 40s are just without hope, there's nothing for them now, they had a career and were the foundations of the companies and organizations they worked in, they have nothing now, can't get any kind of job doing what they did (even though the country needs their skills!), they can wallow or possibly get unskilled work, they can kiss goodbye to their pensions though, nothing to look forward to there, if they're lucky they've already bought their homes and can.. oh wait, no housing market is gone and they don't have a job, probably have to sell their homes just to survive and go live in a small flat somewhere, scrap that thought. The other horrible bit? the rest of the country who are working, are too distracted by a combination of money, stress and distractions (tv, material goods, fake lives, striving after the wind) to do or say anything about it, they just get on with their own lives until it happens to them and then nobody listens because they're too distracted with (repeat). The nation is too demotivated to do anything frankly. Ahh but these other countries are full of corrupt people stealing their money and wasting it.. yes, and we've legalized that process and made it law, the norm. What percentage of your wages goes to tax and national insurance? then what percentage get's taxed on everything you spend - do the maths, take a wage of an easy figure, say £1000 GBP, take off the tax and national insurance, then the spend the rest and take off the amount of that which is taxed, then pay one other person with what's left that wasn't taxed and repeat. How much is left after two circulations through the economy? what percentage of that money was trimmed off as tax? almost all of it. It makes you wonder how the country even functions. So where does that money go? in to our crumbling infrastructure? schooling? health? general services? No chance in hell, there is no way that much money can produce that little results - it just does not add up, especially when you couple that to the debt we have as a country.</p>
<p>I spoke to a taxi driver last night, he owns the business, it's his retirement you see and the only way he can actually do any work and make a living, a skilled worker all his life, that's all he's got left now, and he's one of the lucky ones, anyway, he told me that the night before he'd picked up a local bank manager, a bit tipsy (drunk that is), who said that he doesn't think he can do his job any longer, because he sold mortgages to a load of people because they wanted new build properties in a nice area of town, now not one of them (in the entire scheme) can handle the mortgage payments, some of them are homeless, a couple of them have recently committed suicide, he feels guilty because he saw it coming. It all interconnects, this guy who owns the taxi company has a new driver called Mo. Mo is a few years older than me and has two young children, he works two jobs, starts one at 8am (the telesales job, although Mo is a qualified computer/network engineer and mathematician) and finishes driving the taxi at 3am, 6 or 7 days a week, he's working himself in to an early grave, but has no choice. Mo recently joined that company, because two weeks before the company he previously worked for was put up for sale (£50k price tag), Mo wanted to buy it but the bank said no, and nobody else around to help him, so he's stuck. The company was put up for sale by the previous owners widow, because her husband, who I also knew, was working two jobs, the taxi business and working on the oil rigs, he was a brilliant man, kindly man in his late 30s - dropped down dead from overwork and stress last year, he dropped me off down the street, went home picked up his equipment for the oil rig job, drove to the airport, went to step on the helicopter and dropped dead from a heart attack. That you see is why his widow was selling the business, why Mo had to leave to this other company, and how I came to be speaking to the taxi driver at the start of this paragraph last night (because I wanted to give Mo my business, but Mo wasn't on). Coincidently, the other driver who's having to leave, Bill, is awaiting retirements to go and live with his wife in Taiwan, he can't leave the country yet because he won't get his full pension if he does, so he's stuck here twiddling his thumbs for a couple of years first, with no work of course even though he's incredibly skilled at what he does. Ahh yes, and the company that's getting sold, well that's just been bought, by somebody who's just been made redundant from the local council and can't get another job, it was literally, his only choice, because he has to pay for private health care for his wife who's ill and needs an operation for which the waiting list is years. I find that all quite sad, these are just the normal people I see on a daily basis.</p>
<p>I'll stop there I think, and get back to my web bubble where I can work, can communicate, and do get to see at least some of what's happening in the world, I'm protected in a way I guess. I do feel guilty for that protection though, when my friends who I grew up with, who have traditional trades, are all pretty much screwed.</p>
<p>The problem though, is that I have kids, so what do I do to guarantee them, at least a fighting chance, a job, and maybe a place where priorities are a little more in order (like a formerly third world country perhaps)?</p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/general/i-live-in-the-uk-and/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Where&#039;s the economic infrastructure for open source and public domain developers?</title>
		<link>http://webr3.org/blog/general/wheres-the-economic-infrastructure-for-open-source-and-public-domain-developers/</link>
		<comments>http://webr3.org/blog/general/wheres-the-economic-infrastructure-for-open-source-and-public-domain-developers/#comments</comments>
		<pubDate>Mon, 27 Dec 2010 15:36:54 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[economic infrastructure]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[public domain]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=425</guid>
		<description><![CDATA[2011 is just around the corner, I've got a huge list of things to do which I could reasonably and easily spend all year doing, I'm quite sure (hopeful?) that they will all have positive economic impacts for many people, many of whom I'll never know, in the same way a library like jquery does, [...]]]></description>
			<content:encoded><![CDATA[<p>2011 is just around the corner, I've got a huge list of things to do which I could reasonably and easily spend all year doing, I'm quite sure (hopeful?) that they will all have positive economic impacts for many people, many of whom I'll never know, in the same way a library like jquery does, or any other open source / public domain script, any spec, hack or innovation in our sector.</p>
<p>So here's the problem, who pays? the reality is we're all humans with needs, many of us have full families to support and raise, the work we could and want to be doing is far more valuable to the web at large than simply making another "website" for a paying client, yet the common variety website will pay us well personally, and the valuable open source / public domain work will pay us zero.</p>
<p>Then there's licensing and copyright, essentially I (like many others I'm sure) simply want to open source and cc-zero every single bit of re-usable or reference-able work I do from here forth. In previous years I've managed to strike a bit of a balance where I picked projects based on things I felt were needed generally, or which I wanted to learn, I could release the generic code created and give clients the application specific code, however, increasingly I find that the work I do provides the framework for projects and applications, but not the application itself - just take a quick look at my <a href="http://webr3.org/blog/general/generic-to-do-plan/">generic to-do list</a> and you'll see what I mean.</p>
<p>So, what do we do, what do I do? How do I get to this time next year with all these things done, released as a source of reference, as usable libs, and as prototypes, whilst still being a "working man" rather than charity worker for some invisible charity?</p>
<p>This is a big problem our sector needs to address quickly, kickstarter and the like doesn't address it, neither does public domain funding (I'm not a "business" I'm a "me" with no plans to start a fully blown company, tis a waste of all our time if I head down that path). Somebody mentioned a return of the patronage model the other day, maybe linked with micro payments, but until that's common place it feels a bit like scrounging / free loading (even though it's not really).</p>
<p>At the end of the day, I could easily spend the next year doing 100+ hour weeks of v hard work (just like last year), but there's no client. Something has to give, or change here - I along with many others <em>don't</em> want to slow down all of this or even stop all together, but one has to provide for their family.</p>
<p>What do we do, what's the solution here for the many people out there like me?</p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/general/wheres-the-economic-infrastructure-for-open-source-and-public-domain-developers/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Generic to do plan</title>
		<link>http://webr3.org/blog/general/generic-to-do-plan/</link>
		<comments>http://webr3.org/blog/general/generic-to-do-plan/#comments</comments>
		<pubDate>Mon, 27 Dec 2010 14:26:51 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[auth/ident protocol]]></category>
		<category><![CDATA[client side w/ stateless protocols]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Data management]]></category>
		<category><![CDATA[double-agent based auth/ident protocol]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[http client+cache+server]]></category>
		<category><![CDATA[intelligent agent]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[linked data]]></category>
		<category><![CDATA[p2p]]></category>
		<category><![CDATA[p2p web]]></category>
		<category><![CDATA[personal data management]]></category>
		<category><![CDATA[rdf]]></category>
		<category><![CDATA[RDF query language]]></category>
		<category><![CDATA[RDF Schema]]></category>
		<category><![CDATA[RDFa]]></category>
		<category><![CDATA[Resource Description Framework]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[side w/ stateless protocols]]></category>
		<category><![CDATA[Skullcandy Double Agent Portable Audio Device]]></category>
		<category><![CDATA[SPARQL]]></category>
		<category><![CDATA[Technology/Internet]]></category>
		<category><![CDATA[temporally valid webid-like protocol]]></category>
		<category><![CDATA[Turtle]]></category>
		<category><![CDATA[web application state]]></category>
		<category><![CDATA[Web Architecture]]></category>
		<category><![CDATA[webid-like protocol]]></category>
		<category><![CDATA[World Wide Web]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=423</guid>
		<description><![CDATA[Personal high level to-do list for the next x amount of time ahead...
To do:
Update rdfa-api to align with the RDF API, add full Graph Literal support, add RDFa 1.1 Core parser + profile support, finish generic HTTP based CRUD clients, merge with JS3.
Upgrade to support full N3, work on rule, reasoning and inference methods with [...]]]></description>
			<content:encoded><![CDATA[<p>Personal high level to-do list for the next x amount of time ahead...</p>
<p><strong>To do:</strong><br />
Update rdfa-api to align with the RDF API, add full Graph Literal support, add RDFa 1.1 Core parser + profile support, finish generic HTTP based CRUD clients, merge with JS3.</p>
<p>Upgrade to support full N3, work on rule, reasoning and inference methods with OWL and rdfs support + sl/ql/fol based approaches, basic and improving understanding of ontologies, including restriction and owl based data validation.</p>
<p>Spec and upgrade to RDF Object View, spec and implement bi-direction oo-friendly tree views of RDF.</p>
<p>N3 Paths, RDF Selectors (and maybe SPARQL implementation?).</p>
<p>Create hook-in predicate, class and rule based agent framework for data streams and graphs, on top of aforementioned tooling - agents which listen for specific types of data / sets of statements and then do what's needed - to handle simple reflex, model-based reflex, goal-based and utility based intelligent agents.</p>
<p>Combine intelligent agent framework with data wiki support to create intelligent cloud storage agents, personal data streams and helper agents. (agent per uri, each agent has a task, collection of semi-dumb agents in to a data space makes a semi-intelligent agent).</p>
<p>Work on double-agent based auth/ident protocol - four-party, decentralized, temporally valid, webid-like protocol, with built in foothold for trust - details soon.</p>
<p>Leverage HTTP POST for storage / triple accepting agents in a "document which accepts annotations" style. Implement + compare and contrast SPARQL update vs Diff/Path approach.</p>
<p>Web Socket based triple &#038; rdf object streams for personal data streams, filtered data streams, data synchronization and updates.</p>
<p>Generic linked data client side agents for specific tasks - basic social clients (messaging, friend adding, personal data management), and generic apps (like good-relations based client side basket which works on any site), shift of web application state to client side w/ stateless protocols and semi-intelligent agents at both sides.</p>
<p><strong>side topics:</strong><br />
- micropayments via payswarm, open transactions, bitcoin.<br />
- convergence of RDF libs and tooling for interoperability based on standardizing apis.<br />
 - p2p web / web architecture &#038; movements on persistent domains, alternative approaches to resolvability/dns, bidirectional/back links.<br />
 - More amaya-like browsers/user agents, desktop based http client+cache+server in one efforts.<br />
 - RDF serializations (Turtle+Graph Literals ala AMORD in RDF, JSON based serializations / json-ld).</p>
<p><strong>primary long term focus being the convergence of:</strong><br />
- read write acl enabled web of data<br />
- "intelligent" / semantic agents<br />
- internet of things<br />
- augmented reality and innovations/improvements in device + human interface sectors.</p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/general/generic-to-do-plan/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Recently..</title>
		<link>http://webr3.org/blog/general/recently/</link>
		<comments>http://webr3.org/blog/general/recently/#comments</comments>
		<pubDate>Sun, 01 Aug 2010 14:43:58 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[AMF Pensionsforsakring AB]]></category>
		<category><![CDATA[Brazil]]></category>
		<category><![CDATA[Cloud standards]]></category>
		<category><![CDATA[Computer programming]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Digital Bazaar]]></category>
		<category><![CDATA[Edward VII]]></category>
		<category><![CDATA[Eiffel Tower]]></category>
		<category><![CDATA[Entertainment/Culture]]></category>
		<category><![CDATA[Ext]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Google Inc.]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Hans Rosling]]></category>
		<category><![CDATA[HTML 5]]></category>
		<category><![CDATA[Jacques Henri Lartigue]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JavaScript programming language]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[Keyhole Markup Language]]></category>
		<category><![CDATA[kinda web db]]></category>
		<category><![CDATA[King]]></category>
		<category><![CDATA[Lego]]></category>
		<category><![CDATA[Markup languages]]></category>
		<category><![CDATA[peer-to-peer]]></category>
		<category><![CDATA[prediction services]]></category>
		<category><![CDATA[RESTful]]></category>
		<category><![CDATA[Software engineering]]></category>
		<category><![CDATA[Swift River]]></category>
		<category><![CDATA[Technology/Internet]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=375</guid>
		<description><![CDATA[On the client side of things, I've been enjoying using jQuery UI and Ext JS, have been really impressed by Protovis, a graphical toolkit (js) for visualization - a quick peruse of the examples like Burton's Antibiotics, Focus + Context or Map Projections and all will become clear, it's a bit like processing but for [...]]]></description>
			<content:encoded><![CDATA[<p>On the client side of things, I've been enjoying using <a href="http://jqueryui.com/home">jQuery UI</a> and <a href="http://www.sencha.com/deploy/dev/examples/">Ext JS</a>, have been <em>really</em> impressed by <a href="http://vis.stanford.edu/protovis/">Protovis</a>, a graphical toolkit (js) for visualization - a quick peruse of <a href="http://vis.stanford.edu/protovis/ex/">the examples</a> like <a href="http://vis.stanford.edu/protovis/ex/antibiotics-burtin.html">Burton's Antibiotics</a>, <a href="http://vis.stanford.edu/protovis/ex/zoom.html">Focus + Context</a> or <a href="http://vis.stanford.edu/protovis/ex/projection.html">Map Projections</a> and all will become clear, it's a bit like <a href="http://processing.org">processing</a> but <a href="http://processingjs.org">for javascript</a>, and a bit more refined / useful.</p>
<p>There have been some <a href="http://githubissues.heroku.com/#280north/cappuccino/10">nice</a> <a href="http://wargamez.mape.me/">examples</a> of combining client and server side js recently, and <a href="http://nodeknockout.com/">node knockout</a> is sure to provide many more real soon - if you don't know of <a href="http://nodejs.org">node.js</a> I'd recommend taking a look. Also worth noting the realtime client push service, <a href="http://pusherapp.com/">Pusher</a> (for <a href="http://dev.w3.org/html5/websockets/">HTML5 WebSockets</a>) - of course there are also node implementations, and here's <a href="http://zackhobson.com/2010/03/28/node-js-and-web-sockets.html">a nice article with some more details and examples</a>.</p>
<p>I've also been playing with some of google's projects (radar check, you know about the <a href="http://code.google.com/apis/ajax/playground/">ajax playground</a> ya?), namely <a href="http://tables.googlelabs.com/">Fusion Tables</a> (<a href="http://tables.googlelabs.com/DataSource?dsrcid=136705">here's one</a>) which has a full <a href="http://code.google.com/apis/fusiontables/docs/developers_guide.html">REST API</a>, infact that's what it is, a kinda web db merged with csv merged with RESTful goodness - <em>and</em> you can <a href="http://code.google.com/apis/maps/documentation/javascript/overlays.html#FusionTables">use them with V3 Maps</a> which gives some really sweet results - like this <a href="http://code.google.com/apis/maps/documentation/javascript/examples/layer-fusiontables-heatmap.html">heatmap of designated beaches on the coast of Brazil</a>. Convergence check, you noticed that <a href="http://vis.stanford.edu/protovis/ex/oakland.html">protovis can be used with google maps</a> ya?</p>
<p>If there's one app I wish google would opensource, it's <a href="http://www.google.com/moderator/">Google Moderator</a> for an example see <a href="http://www.google.com/moderator/#15/e=b6a&amp;t=b6a.4a&amp;f=b6a.8a98">the one for TipJar</a>. Btw, did you see <a href="http://www.youtube.com/watch?v=qRrX7Rb1PdA">3D Lego Star Wars running in Chrome with HTML5</a> (credit to <a href="http://unity3d.com/">Unity 3D</a> truth be told) - oh, and if you ever wondered how those 3D Lego videos we see on youtube all the time are made, you'll be looking for <a href="http://bricks3d.com/">this</a>.</p>
<p>Generally I'm really admiring <a href="http://ushahidi.com/">ushahidi</a> (projects on <a href="http://github.com/ushahidi/">github</a>), and especially <a href="http://swift.ushahidi.com/">Swift River</a> and <a href="http://github.com/ushahidi/SiLCC">SiLCC</a> - there was a good post on <a href="http://blog.ushahidi.com/index.php/2010/08/01/ten-ways-to-use-swiftriver/">10 ways to use Swift River</a> which is certainly worth a read. Related, but don't ask why, here's a good <a href="http://mark.reid.name/iem/prediction-services.html">post on prediction services</a> which has a few good links. Crossover check, remember earlier I mentioned Fusion Tables w/ Maps V3 and Protovis.</p>
<p>Digital Bazaar have been working on a <a href="http://blog.digitalbazaar.com/2010/07/20/javascript-tls-1/2/">Javascript implementation of TLS</a> (<a href="http://blog.digitalbazaar.com/2010/07/20/javascript-tls-2/2/">part2</a>) namely Forge - <a href="http://github.com/digitalbazaar/forge">code on github</a> -explaining why this is such a big deal is outside the scope of this post, but I'd encourage you to look at <a href="http://payswarm.com/">PaySwarm</a> and <a href="http://blog.digitalbazaar.com/">Digital Bazaar's fantastic blog</a> which'll give you a good overview of what they're up to. Related and similar, it's worth noting <a href="http://jssha.sourceforge.net/">jsSHA</a> - a JavaScript implementation of the entire family of SHA hashes, <a href="http://www.random.org/">random.org</a> for all the <em>true</em> random data you could need, <a href="http://www.bitcoin.org/">Bitcoin</a> a peer-to-peer network based digital currency and <a href="http://www.jamesward.com/2010/07/07/amf-js-a-pure-javascript-amf-implementation/">amf.js</a> a js implementation of AMF. Also there's the <a href="https://www.eff.org/https-everywhere">HTTPS Everywhere</a> extension for Firefox.</p>
<p>And in non technical land, I've really been enjoying <a href="http://www.howtobearetronaut.com/">How to be a Retronaut</a>, it features amazing media from the past, such as <a href="http://www.howtobearetronaut.com/2010/07/colours-of-the-rothschilds/">Colours of the Rothschilds…</a> which amongst other things has a colour photograph of King Edward VII, taken in 1909 - other recent favourites include <a href="http://www.howtobearetronaut.com/2010/07/watch-the-eiffel-tower-being-built/">the Eiffel Tower being built</a>, <a href="http://www.howtobearetronaut.com/2010/07/the-first-ever-music-video-1895/">the first ever music video (1895)</a> and <a href="http://www.howtobearetronaut.com/2010/06/the-instant-eye-of-jacques-henri-lartigue/">the instant eye of Jacques Henri Lartigue</a>.</p>
<p>If you haven't seen <a href="http://www.ted.com/talks/hans_rosling_on_global_population_growth.html">Hans Rosling's talk on global population growth</a> go watch it now, v recommended - and finally, <em>they</em> <a href="http://timesofindia.indiatimes.com/World/UK/Mystery-cracked-Chicken-came-first/articleshow/6169249.cms">figured out what came first, the chicken or the egg</a>..</p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/general/recently/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Web of Data illustrated, meet Bob.</title>
		<link>http://webr3.org/blog/general/web-of-data-illustrated-meet-bob/</link>
		<comments>http://webr3.org/blog/general/web-of-data-illustrated-meet-bob/#comments</comments>
		<pubDate>Sat, 08 May 2010 14:43:22 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Cross-platform software]]></category>
		<category><![CDATA[Data management]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[IBM software]]></category>
		<category><![CDATA[linked data]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Negation]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Subdomain]]></category>
		<category><![CDATA[Technology/Internet]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=325</guid>
		<description><![CDATA[
Something to try
Next time you start an application, why not create a subdomain for your data tier, create a script for each SQL query and call it via HTTP (honestly you won't notice a speed difference), similarly expose all static files your system uses on the same (or a different) sub domain. Here's the advantages:

You [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-328" title="bob" src="http://webr3.org/blog/wp-content/uploads/2010/05/bob1.jpg" alt="bob" width="738" height="2230" /></p>
<h2>Something to try</h2>
<p>Next time you start an application, why not create a subdomain for your data tier, create a script for each SQL query and call it via HTTP (honestly you won't notice a speed difference), similarly expose all static files your system uses on the same (or a different) sub domain. Here's the advantages:</p>
<ol>
<li>You can scale without changing your application</li>
<li>You can swap servers without changing your application</li>
<li>You can move data around your server and take advantage of all the HTTP servers features.</li>
<li>You can cache your resources and utilize HTTP caching.</li>
<li>You can distribute or relocation your application anywhere on the net without worrying about data.</li>
<li>You can migrate over to different data systems (swap database vendors etc) without changing your application.</li>
<li>You can call every resource on the web in the same manner, from APIs through to linked data and all in between.</li>
<li>You're critical SQL and data mapping code will be fully abstracted and in self contained files (ultra easy to edit, bug fix, maintain).</li>
<li>You can take advantage of HTTP logging, and HTTP status codes instead of custom exceptions.</li>
<li>You have a ready made RESTful API in to your data tier, so you can hook on other applications, or open it up to third parties, or the entire net.</li>
</ol>
<p>So much more, all by one simple step - and that's only the first half of the cartoon ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/general/web-of-data-illustrated-meet-bob/feed/</wfw:commentRss>
		<slash:comments>52</slash:comments>
		</item>
		<item>
		<title>Generations of the Web - an Overview.</title>
		<link>http://webr3.org/blog/general/generations-of-the-web-an-overview/</link>
		<comments>http://webr3.org/blog/general/generations-of-the-web-an-overview/#comments</comments>
		<pubDate>Fri, 07 May 2010 06:23:39 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Data management]]></category>
		<category><![CDATA[Entity-attribute-value model]]></category>
		<category><![CDATA[FOAF]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[JS]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[legacy systems]]></category>
		<category><![CDATA[linked data]]></category>
		<category><![CDATA[proprietry systems]]></category>
		<category><![CDATA[rdf]]></category>
		<category><![CDATA[Resource Description Framework]]></category>
		<category><![CDATA[Roy T. Fielding]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[server side web applications]]></category>
		<category><![CDATA[server side web applications coul]]></category>
		<category><![CDATA[social services]]></category>
		<category><![CDATA[Software engineering]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[Technology/Internet]]></category>
		<category><![CDATA[Tim Berners-Lee]]></category>
		<category><![CDATA[Versa]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Access Control]]></category>
		<category><![CDATA[Web application]]></category>
		<category><![CDATA[World Wide Web]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=317</guid>
		<description><![CDATA[I feel it's very important to note where we are coming from, and where we are headed with regards the web.
Generations One and Two
Historically we have been through two generations of the web so far, not web 1 and web 2.0, but rather the first round of mounting the presentation tier on the web (static [...]]]></description>
			<content:encoded><![CDATA[<p>I feel it's very important to note where we are coming from, and where we are headed with regards the web.</p>
<h2>Generations One and Two</h2>
<p>Historically we have been through two generations of the web so far, not web 1 and web 2.0, but rather the first round of mounting the presentation tier on the web (static publishing documents and media), then the second round of mounting the application tier on the web (from forms through to the current api's we see everywhere).</p>
<p>The next round, and what many are currently hacking at, is mounting the data tier on the web, mainly via the "<a href="http://en.wikipedia.org/wiki/Linked_Data">Linked Data</a>" movement which you may have noted.</p>
<p>This third round is critical for two primary reasons:</p>
<ol>
<li>By mounting the data tier on the web, it allows us to remount the application tier again, but this time properly, where <a href="http://tools.ietf.org/wg/httpbis/">HTTP</a> is the API between the Application tier and the Data tier. (true <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm">REST</a>)</li>
<li> The "<a href="http://en.wikipedia.org/wiki/Internet_of_Things">Internet of Things</a>" is very much dependant on the "Things" speaking the same language and sharing a single <a href="http://en.wikipedia.org/wiki/Data_model">Data Model</a>, where the model remains the same but the vocabulary can change.</li>
</ol>
<h2>Generation Three</h2>
<p>"Linked Data" is in many ways the solution to the above, because it has a Universal Data Model (<a href="http://en.wikipedia.org/wiki/Entity-attribute-value_model">EAV</a>), a Universal API (HTTP), and Universal Addressing &amp; Identification (the <a href="http://en.wikipedia.org/wiki/Dereferenceable_Uniform_Resource_Identifier">duality</a> of http URIs) - more importantly though, "Linked Data" provides the means to mount and expose both <a href="http://en.wikipedia.org/wiki/Abox">ABox</a> and <a href="http://en.wikipedia.org/wiki/TBox">TBox</a> statements on the web - this is the key detail where <a href="http://en.wikipedia.org/wiki/Resource_Description_Framework">RDF</a> wins over other EAV based data models; the ability to store both the data and the vocabularies on the web, and both in the same manner.</p>
<p>Linked Data is currently tied (but not bound) to RDF. However, RDF still has very critical limitations, primarily it doesn't have any notion of Named Graphs or Quads. <a href="http://www2005.org/cdrom/docs/p613.pdf">Trust and provenance</a> are essential moving forwards (with quads you can <a href="http://www.semanticoverflow.com/questions/757/which-owl-reasoners-understand-named-graphs">select which data your application trusts</a>, and which it doesn't, based on the source, the Named Graph - without it you can't), as is the ability to transfer data from multiple sources at the same time (update streams, batch operations, merged data with provenance - again needing quads).</p>
<p>The above means we need an <a href="http://www.w3.org/2009/12/rdf-ws/">RDF2</a> (or standardisation &amp; adoption of <a href="http://www.w3.org/2000/10/swap/doc/cwm">N3+rules</a>), and moreover we need standardized non-xml serializations of said RDF(+2), the most important being <a href="http://n2.talis.com/wiki/RDF_JSON_Specification">rdf/json</a>.</p>
<p>This brings me to <a href="http://www.w3.org/TR/html5/">HTML5</a>, the key here isn't the new HTML5 document format, the semantics, the ability to embed microdata or anything like that - it's the introduced (or implied) dependency on JS /ECMAScript via the <a href="http://apirocks.com/html5/html5.html">JS APIs</a>. This leads to JS being rolled out on to the majority of devices - it's also important to note the server side JS movement in this too.</p>
<h2>Generation Four</h2>
<p>We've had a "Web of Documents", we're building a "Web of Data", the next logical step is to have a "Web of Applications", for this we need two things: a Universal Programming Language (JS...) and an "Internet of Things" which support the universal data model and the universal programming language.</p>
<p>As far as I'm concerned HTML5 plays a critical part in the big picture:</p>
<p>- Short term, it at least unites the browser vendors to better support the techs which developers use.<br />
- Presently (and from here on) it allows us to start hacking at the web of applications.<br />
- In the future it's legacy will be it's introduction of JS as a Universal Programming Language.</p>
<p><strong>Sides:</strong><br />
It stands to reasons that RDF/JSON (or whatever supersedes RDF serialized in JSON) will also play a major part in this round.</p>
<p>We may well see a shift from client-server, server-server to application-application; where each machine on both sides comprises of HTTP Client, Server and Cache.</p>
<h2>Generation Five</h2>
<p>Leading on from here we get to the fifth round of the web, remounting the Presentation Tier, but this time where the presentation tier speaks to the application tier through HTTP, the Universal Interface.</p>
<p>HTML (together with JS and CSS) again plays a critical role in round five, because up until this point it remains the only way for the hackers to create this fifth generation, notably it will be a lot more than we are have now, after years of maturity, hacking and support universally. Naturally then we can assert that HTML will remain the core of the Web's presentation tier so long as the Web exists.</p>
<h2>Additional Shifts</h2>
<p>Widespread adoption and understanding of REST, truly without this we'll never get past generation three.</p>
<p>Data transformation, for a very long time <a href="http://virtuoso.openlinksw.com/">data transformation</a> will be an everyday service we all require, for legacy systems, legacy data, proprietry systems, data model conversion and so on - the key isn't to be able to understand all kinds of data / serializations / models, but to transform it in to what you do understand, easily.</p>
<p>The enabling of the <a href="http://en.wikipedia.org/wiki/Semantic_Web">Semantic Web</a>, Linked Data provides the means to do this, it is the enabler - each EAV triple we put out is also a triple that can be reasoned over, full machine understanding of all our data is an ultimate goal that will take many years. Generation three very much pushes the semantic web in to the realms of the real world, no longer for the strictly academic.</p>
<p>The great cleanse, all the data from generations one through three (and possibly beyond) will need cleansed - as primary universal vocabularies emerge the task will be to clean what's on the web and migrate it in to the new models, reasoning and cleaning it as we go.</p>
<p>Cross compilation and seperation of syntax from machine code - another movement that is gaining momentum, no longer are we tied to a specific syntax for a specific JVM - not far off is the day where we can program in our preffered language, and compile it to whatever target we need. This is all ready happening in many quarters (like <a href="http://haxe.org/">haxe</a>) and soon will be the norm.</p>
<p>Seperation of human readable data syntax and data storage/transfer serialization. This has long been understood, however with <a href="http://www.w3.org/XML/EXI/">EXI</a> comes a light serialization of XML for the machine &amp; transfer; logically from there we can expect the same in the future for RDF(2) and most data moving forwards.</p>
<p>Much of the code needed for the Application Tier will disappear over time, typically most application code involves taking some data and turning it in to some new data, processing it - when you can do this on the fly via data transformations, rules, reasoning, inference, querying and similar, you remove the need for most f the code in between. It is entirely possible that most server side web applications could disappear.</p>
<h2>End</h2>
<p>It is testament to the strength and design of the web that it can support every incarnation of the web thus far and in the future all at the same time - All credit to Tim Berners-Lee, Roy T Fielding and the many, many others who contributed, evolved and continue to forge this thing we call the web.</p>
<p><strong>Disclaimer</strong><br />
Obviously, this is all just my humble opinion, none of it is fact - but from stepping back a bit this is what I conclude, for now.</p>
<p>I've skipped loads of things, most of the techs I work on and think about daily, FOAF+SSL, web access control, read write web of structured linked data, loads more - the above is just a summary of where I think we're headed, primarily for my own reference :)</p>
<p>Universal doesn't necessarily mean universal - but it's a good enough word to convey what I'm thinking. Any other use of terminology you don't quite agree with, likewise, terminology is not the point of the post ;)</p>
<p>Best &amp; happy to hear your thoughts and additions,</p>
<p>Nathan</p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/general/generations-of-the-web-an-overview/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Released some RDF Graph update related things..</title>
		<link>http://webr3.org/blog/general/released-some-rdf-graph-update-related-things/</link>
		<comments>http://webr3.org/blog/general/released-some-rdf-graph-update-related-things/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 03:19:58 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Diff]]></category>
		<category><![CDATA[GUO]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[Knowledge representation]]></category>
		<category><![CDATA[Metadata]]></category>
		<category><![CDATA[Patch]]></category>
		<category><![CDATA[rdf]]></category>
		<category><![CDATA[Resource Description Framework]]></category>
		<category><![CDATA[semantic web]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=298</guid>
		<description><![CDATA[This is a short post to say I've managed to get 2 of 3 parts of RDF graph update / synchronisation done and live on the net; still need to do the PATCH but for now:
GUO Graph Diff is a prototype script for performing "diffs" on RDF Graphs - not text based, rather it's graph [...]]]></description>
			<content:encoded><![CDATA[<p>This is a short post to say I've managed to get 2 of 3 parts of RDF graph update / synchronisation done and live on the net; still need to do the PATCH but for now:</p>
<p><a href="http://bit.ly/9APYnQ">GUO Graph Diff</a> is a prototype script for performing "diffs" on RDF Graphs - not text based, rather it's graph / trple based as discussed in the <a href="http://www.w3.org/DesignIssues/Diff">DesignIssue</a>. An implementation of patch/diff for RDF.</p>
<p><a href="http://webr3.org/specs/guo/">GUO - Graph Update Ontology</a> pretty self explanatory, an intentionally skinny ontology aimed at enabling lightweight RDF graph updates and graph synchronisation on a per triple level.</p>
<p>Next up is GUO Patch in the very near future; and hopefully a full demo / implementation using HTTP Patch and such like.</p>
<p>More soon, all info available on the respective pages above. Any feedback or comments most welcome!</p>
<p>Regards,</p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/general/released-some-rdf-graph-update-related-things/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Human Flesh Search a catalyst for Linked Data generation?</title>
		<link>http://webr3.org/blog/general/human-flesh-search-a-catalyst-for-linked-data-generation/</link>
		<comments>http://webr3.org/blog/general/human-flesh-search-a-catalyst-for-linked-data-generation/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 19:48:11 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[semantic web]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=259</guid>
		<description><![CDATA[Earlier today I saw an interesting slideshow from James A Hendler which had some focus on Human Flesh Search.
Personally I find this somewhat inspiring, out of all of it's features the thing that I find most interesting is using human power to rapidly "link" data together.
Here's a very quick look at the human process involved:

Assign [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier today I saw an <a href="http://www.slideshare.net/jahendler/social-machines-oxford-hendler">interesting slideshow</a> from <a href="http://twitter.com/jahendler">James A Hendler</a> which had some focus on <a href="http://en.wikipedia.org/wiki/Human_flesh_search_engine">Human Flesh Search</a>.</p>
<p>Personally I find this somewhat inspiring, out of all of it's features the thing that I find most interesting is using human power to <em>rapidly</em> "link" data together.</p>
<p>Here's a very quick look at the human process involved:</p>
<ol>
<li>Assign the subject of the Human Flesh Search.</li>
<li>Send out humans to find data about that subject, on both the web and in the physical world
<ul>
<li>When the information is on the web link to it and perhaps highlight some key points in an abstract</li>
<li>When the information is in the physical world identify it, and describe it.</li>
</ul>
</li>
<li>Correlate all data together and reference it to the subject.</li>
<li>Manually cleanse the data to weed out incorrect / wrongly placed data</li>
</ol>
<p>If this isn't a huge human powered linked data generating and cleansing machine then what is?</p>
<p>IMHO an implementation to cater for this (in early stages) would be extremely simple, for example consider the following:</p>
<ul>
<li>The subject of the flesh search is assigned an Identifier (perhaps under the guise of a tag - eg flesh:the_subject)</li>
<li>A simple interface is made, perhaps a tiny browser extension or toolbar button, which when clicked associates the current web page with the flesh:subject (no doublt by quickly sending the URI of the page as a get parameter to a server, at which point a single triple flesh:the_subject predicate uri is stored)</li>
<li>For offline resources a simple UI is made to enter in some data (back end obviously stores data cleansed and associated w/ flesh:the_subject)</li>
<li>Another simple UI to expand or remove information and "links".</li>
</ul>
<p>Certainly running this as social style web app would be in order, but would require minimal work from what I can see, and serve as a model for a human powered mass linked data generating machine.</p>
<p>nb: you could go wild with this, sponging data and uri's submitted through various web services, now is a good time to stop I think.</p>
<p>This may be overly obvious, but just in-case I thought it needed said :)</p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/general/human-flesh-search-a-catalyst-for-linked-data-generation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Why ActionScripts poor performance is a good thing</title>
		<link>http://webr3.org/blog/general/why-actionscripts-poor-performance-is-a-good-thing/</link>
		<comments>http://webr3.org/blog/general/why-actionscripts-poor-performance-is-a-good-thing/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 17:49:22 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Adobe Flash]]></category>
		<category><![CDATA[Alchemy]]></category>
		<category><![CDATA[AMF Pensionsforsakring AB]]></category>
		<category><![CDATA[Apparat]]></category>
		<category><![CDATA[Computer programming]]></category>
		<category><![CDATA[Computer science]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[haXe]]></category>
		<category><![CDATA[Literal]]></category>
		<category><![CDATA[player]]></category>
		<category><![CDATA[Software architecture]]></category>
		<category><![CDATA[Software engineering]]></category>
		<category><![CDATA[Software framework]]></category>
		<category><![CDATA[Technology/Internet]]></category>
		<category><![CDATA[Virtual machine]]></category>
		<category><![CDATA[Web Developers]]></category>
		<category><![CDATA[web developers itinerary]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=208</guid>
		<description><![CDATA[ActionScript gives web developers an almost unique chance to grow their skills; out of the common languages in a web developers itinerary ActionScript is almost the only one where a developers code is going to be run 30-100 times per second, with common methods being run literally thousands of times per second.
Further the code isn't [...]]]></description>
			<content:encoded><![CDATA[<p>ActionScript gives web developers an almost unique chance to grow their skills; out of the common languages in a web developers itinerary ActionScript is almost the only one where a developers code is going to be run 30-100 times per second, with common methods being run literally thousands of times per second.</p>
<p>Further the code isn't running on a solid server where the environment is controlled, and where you can simply throw more processors and memory at a problem to make it go away, the code is being run on differently specified machines almost every run, in a different client and in different versions of player.</p>
<p>To compound this unique situation the virtual machines (relatively) poor performance comes in to play.</p>
<h3>Why is this good?</h3>
<p>It has spurred a good percentage of ActionScript developers on to look at more advanced levels of code optimisation, to consider factors which are simply ignored and overlooked in other languages, to work with (and create) other technologies in order to push performance to the max; indeed even to hack the virtual machine to bits then create custom compilers and optimisers.</p>
<p>Libs and frameworks from PV3D through to Flex, projects such as haXe, Apparat and Alchemy; not to mention the wide array of technologies from AMF to RTMFP - this list goes on (and on).</p>
<p>There are 3 types of coders: bad coders, normal coders and ultra coders who's skillsets and level of understanding are far and beyond that of the normal coder; what I'm trying to get at here, is that the ActionScript challenges outlined above create an environment where a higher percentage of coders can grow in to ultra coders, than in any other language I know.</p>
<p>The Flash / ActionScript pair gives both designers and developers the notion that anything is possible - and this spurs them on to the push boundaries of what can be done; that kind of thinking sticks with people, they carry it on to other languages, platforms and communities; bringing inspiration and forward thinking to the web of humans.</p>
<p><em>Context: Really enjoyed reading this post: <a href="http://blog.joa-ebert.com/2010/02/11/the-advantage-of-actionscript/">The Advantage Of ActionScript</a> from Joa, in particular I'm glad that he mentioned "Poor Performance" as an advantage. The above post leads on from Joa's to give some of my own thoughts on why we all owe ActionScript and Flash a little something.</em></p>
<p><img src="http://webr3.org/blog/wp-content/uploads/2010/02/as3poor.jpg" alt="as3poor" title="as3poor" width="600" height="250" class="alignnone size-full wp-image-228" /></p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/general/why-actionscripts-poor-performance-is-a-good-thing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to fix a noisy computer or graphics card fan</title>
		<link>http://webr3.org/blog/general/how-to-fix-a-noisy-computer-or-graphics-card-fan/</link>
		<comments>http://webr3.org/blog/general/how-to-fix-a-noisy-computer-or-graphics-card-fan/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 12:29:50 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[gotcha]]></category>
		<category><![CDATA[Asus]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Electronic engineering]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[GeForce]]></category>
		<category><![CDATA[Nvidia]]></category>
		<category><![CDATA[olive oil]]></category>
		<category><![CDATA[Video cards]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=177</guid>
		<description><![CDATA[Background:
A few months ago I upgraded my pc, part of which included adding an Asus GeForce 9600 GT; shortly after installing, the Fan on the graphics card started to make a most irritating grinding noise. I found that if I knocked and tilted my case a few times I could get it to stop grinding [...]]]></description>
			<content:encoded><![CDATA[<h2>Background:</h2>
<p>A few months ago I upgraded my pc, part of which included adding an Asus GeForce 9600 GT; shortly after installing, the Fan on the graphics card started to make a most irritating grinding noise. I found that if I knocked and tilted my case a few times I could get it to stop grinding &amp; quieten down (the hit-it fix). Over time this grinding has become more frequent, to the point that it's almost non-stop; and so that it vibrates the case and thus you can hear it all through the house. It's been driving me insane because everytime I get it to stop, the *slightest* of movements starts it going again, which includes me moving, somebody walking past, infact anything. This weekend it's been especially bad, in-fact I've felt like throwing the f'ing thing out the window; finally this morning I had enough and thought I have to get a new fan for this thing.</p>
<p>Searching the internet found me no replacement fans, which meant I was looking at sending the card back to get it fixed (and thus missing out on work), buying a full new cooling set, or buying a new card - the last two options would have led to pc-murder as seriously this noise goes right through you. Thus after running out of options  I tried to fix it.</p>
<h2>How to fix a noisy computer fan:</h2>
<ol>
<li>Remove the fan from the computer (in my case this meant removing the graphics card and unscrewing the plastic cover and fan).</li>
<li>Once you have the fan removed, remove the stickers from it.</li>
<li>On one side you'll notice a small recess with the end of a small metal pin on it (the bit that holds the fan together, and which the fan spins on)</li>
<li>Take a small, toy plastic soldier and chew off the arm (or rifle butt it if has one).</li>
<li>Take the cap off a bottle of Filippo Berio Extra Virgin Olive Oil and fill said cap approx half full with said olive oil.</li>
<li>Dip one end of the plastic arm / rifle in to the olive oil, then dab the smallest of drops on to the small metal pin in the recess of the fan (from step 3)</li>
<li>As you do step 6, gently pull the two parts of the fan about 0.5mm apart and turn the fan clockwise and ant-clockwise.</li>
<li>Repeat steps 6 &amp; 7 until you feel the oil has worked its way in and loosened it, "oiled the fan".</li>
<li>Be very careful not to swamp the thing with oil, it's an electronic part and you'll break it.</li>
<li>Reassemble what you took apart in step 1.</li>
</ol>
<p>I do believe the specific brand of olive oil, or even the fact it's olive oil isn't of significant importance, likewise the soldier arm / rifle could be anything small that's good for poking.</p>
<p>As an extra bonus, my graphics card is now running 20 degrees cooler when idle :)</p>
<h3>Short version:</h3>
<ol>
<li>Oil it</li>
</ol>
<h3>Disclaimer:</h3>
<p>This worked for me, I'm most pleased, if it doesn't work for you or you break something, don't blame me - but it might be worth a try.</p>
<p>Regards!</p>
<p><img class="alignnone size-full wp-image-178" title="fanfix" src="http://webr3.org/blog/wp-content/uploads/2010/02/fanfix.jpg" alt="fanfix" width="600" height="250" /></p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/general/how-to-fix-a-noisy-computer-or-graphics-card-fan/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Preparing Yourself for Web 3.0, LOD and 2010+</title>
		<link>http://webr3.org/blog/featured/preparing-yourself-for-web-3-0-lod-and-2010/</link>
		<comments>http://webr3.org/blog/featured/preparing-yourself-for-web-3-0-lod-and-2010/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 00:08:51 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[RDFa]]></category>
		<category><![CDATA[featured]]></category>
		<category><![CDATA[general]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[linked data]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[author]]></category>
		<category><![CDATA[everyday Web Developer]]></category>
		<category><![CDATA[FOAF]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[London]]></category>
		<category><![CDATA[mentioned search engine traffic]]></category>
		<category><![CDATA[Open Data]]></category>
		<category><![CDATA[public facing web pages]]></category>
		<category><![CDATA[rdf]]></category>
		<category><![CDATA[same author]]></category>
		<category><![CDATA[search engine]]></category>
		<category><![CDATA[Technology/Internet]]></category>
		<category><![CDATA[United Kingdom]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Designer and SEO Specialist]]></category>
		<category><![CDATA[Web Developers]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=172</guid>
		<description><![CDATA[If you work on the net then you'll have probably heard of the "semantic web", it's nice, you can ignore it and get along just fine though; however "Linked Open Data" (LOD) is now upon us and it's one of these things that can't be ignored, no matter which sector of the internet you work [...]]]></description>
			<content:encoded><![CDATA[<p>If you work on the net then you'll have probably heard of the "semantic web", it's nice, you can ignore it and get along just fine though; however "Linked Open Data" (LOD) is now upon us and it's one of these things that can't be ignored, no matter which sector of the internet you work in, if you do ignore it you'll probably become extinct (career-wise) pretty soon.</p>
<p>Sounds melodramatic but the whole point of this text is to explain in real terms the effect it'll have on the every day web worker; the web developer, web designer, seo expert, internet marketer etc. So that you, my current or future friends and associates still have a job in a couple  of years; and I researched it so that I would still have a job in a few years (+ because I love this stuff!)</p>
<h2><strong>A bit about Linked Open Data (LOD).</strong></h2>
<p>LOD can easily be a huge, scary and new thing, overwhelming in so many ways with all this talk of a cloud, billions of bits of information in some part of the web that is separate to "us"; take one look at the diagrams of the linked open data cloud and you'll see those academic acronyms of scientific organisations, future thinking global entities publishing their specialised data - nothing about you and me with our little blogs, and moreover nothing about our clients websites.</p>
<p>Sure it's about getting massive amounts of data on the web, linked and open for use, but it's different to how you expect :)</p>
<p>Linked Open Data is simply about making the info we already put on the net (like this post) machine readable as well as human readable.</p>
<p>It *IS NOT* about creating some system to dump everything from our database in some weird format for a machine to read somewhere.</p>
<p>It *IS* about wrapping the data on a normal page in a bit of markup so that a computer knows what it is.</p>
<p>If you're writing about london you simply add a tiny bit of markup that says 'about="http://en.wikipedia.org/wiki/London"' - honestly that's it in real terms, the user reading your page knows its about London, England - and now a system like google knows that it's definitely about London, England too. In most cases though it's simpler; it's a case of saying this article is titled "x" and made by person "y" - that alone makes a huge difference to the net.</p>
<h2><strong>How LOD will change the web.</strong></h2>
<p>More Links! We're currently in the age of search, if you want something you search for it, to get more info you search again, and again and so on.</p>
<p>Link trust was at an all time low a few years ago, sure you'd click a navigation link on a site but not a link in a document, because it was probably to a popup, an advert, something you didn't want. Not now though, mainly thanks to bloggers with their in text links to other pages, the world has grown to trust the link again.</p>
<p>Linked Open Data will spawn a massive increase in related data on page, related resources, articles, images, videos and more. And thus many, many more links.</p>
<p>This means that people will search less, and explore more; ever increasingly.</p>
<p>It's unavoidable, and even if a website isn't enhanced with all this extra linked data, odds are the user will have a browser extension or app running that will show all the related information anyway - these technologies are already here and used - adoption *will* grow, no way out of it, change happens.</p>
<h2><strong>Info for specific sectors</strong></h2>
<p>This isn't the meant to be a full introduction or all encompassing, in fact nowhere near it - if you want the ins and outs of LOD then look elsewhere. This info is for the everyday Web Developer, Web Designer and SEO Specialist.</p>
<p><strong>Web Designers (+ those who work with html)</strong></p>
<p>To be honest I think this change might hit you guy's hardest; you see XHTML+RDFa is already here, it'll be massive soon (and don't go thinking HTML5 will get you out of it, RDFa will be in there too). In short XHTML+RDFa is xhtml as you know it, but with support for embedded RDF information, really it means a few new properties on elements that let you say what they are; in place FOAF, Dublin Core (DC) and the like. Any further description is outside the scope of this document ;)</p>
<p>What this means for you is that as well as having potentially a lot more to display on page (linked data) and lot's of UI challenges, you also now have to cater for this RDFa data in your templates. It's not like other W3C stuff which you can ignore, different to cross browser compatibility, if you leave it out or skip the RDFa stuff then the site will potentially be outside of the LOD network, traffic will drop and ultimately the site may as well not be "in" the web (might be a few years before that though) - so in many ways the end of ignorance and excuses.</p>
<p>You can currently slap out some HTML4, change the doctype, stick on jquery and make it "look" web 2.0 - and people will think it's web 2.0; with web 3.0 (the linked open data based net) you can't do that, it either is web 3.0 or isn't; there isn't a "web 3.0" look, just web 3.0 source.</p>
<p>Drupal 7 has RDFa support out of the box; within the year I bet every CMS &amp; Blog will too; and if you make a new template with the RDFa cut out because you "don't know it", then I'm pretty sure it won't be long before your clients or employers cut you out; and we don't want that.</p>
<p>Further, if you don't - developers will be on your back big time &amp; changing your source; or worse the SEO guys will be ;)</p>
<p><strong>Web Developers</strong><br />
All of you need to know what triples are (subject-predicate-object), and URIs and CURIEs (not your normal URIs, URIs as Identifiers).</p>
<p>If you're going to be exposing data in your systems then you need to get used to mapping database properties through to RDF triples; that a user is a foaf:person with a foaf:name; that tags are ctags and dc:subjects, and that articles have a dc:title (keeping it simple for this).</p>
<p>If you're going to be consuming LOD data then you need to learn a bit more, RDF, SPARQL, Owl, ontologies and a bit more.</p>
<p>And if you want to get "in to" LOD in a big way, then go do it.</p>
<p><strong>SEO Specialists</strong><br />
You need to know what the designers know, and you'll be changing from SEO specialists to data exploration optimizers or suchlike, focus will be on how you can make the data machine readable and get it linked in by the right services.. should be fun!</p>
<p>Further, you'll need to watch for how to get traffic to the sites, as mentioned search engine traffic will drop slowly over the next few months and years; with more focus going on "links" from related pages. As for the diggs &amp; reddits, who knows how it'll effect traffic from them.</p>
<h2><strong>Summary</strong></h2>
<p>IMHO it's in all of our best interests to just get on with this, it will happen and the sooner YOU do it and convince your employers you have to make this move the better, companies can easily loose clients too if your competition is offering "web 3" and you aren't.</p>
<p>At no point have I seen a tech hit the web which could literally leave people behind if they don't jump on board; it's happened in other industries and now ours (remember VHS?).</p>
<h2><strong>The two questions most people / companies / clients will immediately raise..</strong></h2>
<p><strong>1] We don't want to expose all our data for reasons X,Y&amp;Z!</strong></p>
<p>LOD isn't about exposing all the your data on the internet; it's about making the data you've already exposed on the internet in a more granular fashion, it's about making that data machine readable.</p>
<p>Presently you may have an article on a page with a title and author credit in HTML, in the future you would still have the same author and title, however they would be wrapped in markup that allows a machine to understand that "Joe Blogs" is a person who is the author of the article, and that the articles title is "I'm scared of exposing my data".</p>
<p>If you consider you're public facing web pages, everything on that page is already exposed, all we're doing here is describing what each bit of data is in a way we can all use.</p>
<p><strong>2] Trust &amp; Junk</strong></p>
<p>One common misconception is that you have no control over the source of the data you pull from the "cloud", and that it could essentially be junk. However this couldn't be further from the truth, what we do is to find a source of data we trust that has their data exposed in a machine readable format, then query it for the exact information we want, and finally include or display it in our own system.</p>
<p>To illustrate, consider you wanted to reference the countries of the world with population in your system. Currently you would have to build  a database table, populate that data with country name and country population, then write some code to display that data. In this scenario you'd probably get the population data from a credible source such as wikipedia (copy and paste it in to your own database).</p>
<p>By using linked open data, you could treat the machine readable version of wikipedia (dbpedia) as your database table, query it instead and again write some code to display the data on you're own site.</p>
<p>You're displaying the same data, from the same trusted source; and you've selected which source you trust; it's not a case of just querying some cloud of data; it's a case of choosing which source(s) you want / trust and querying them.</p>
<p>As an additional bonus you don't need to worry about your information going out of date, as you're getting the data straight from source, the population of each country is updated on your site whenever it's updated on wikipedia.</p>
<p>Further, you don't need to worry about maintaining that list of countries, as in a single query you can pull out a list of all countries with each ones population, as the world grows and changes, so does your data.</p>
<p>Further still! once you've made the move to using some linked open data, all the data you could want is at your finger tips, let's say a decision is made to include 30 different bits of information about each country in your system. Consider that task for a minute - full system change, finding, collating and entering all that data; let alone maintaining it! Well, I'm sure you can guess the next bit, using LOD we can simply expand our original query to include the other bits of information we want, then display it - job done.</p>
<p><strong>That's it.</strong></p>
<p>Good Luck!</p>
<p>nathan</p>
<p><img class="alignnone size-full wp-image-173" title="future" src="http://webr3.org/blog/wp-content/uploads/2009/10/future.jpg" alt="future" width="600" height="250" /></p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/featured/preparing-yourself-for-web-3-0-lod-and-2010/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Developer Cry</title>
		<link>http://webr3.org/blog/general/developer-cry/</link>
		<comments>http://webr3.org/blog/general/developer-cry/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 22:32:29 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[semantic web]]></category>
		<category><![CDATA[streaming technologies]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=161</guid>
		<description><![CDATA[
Whilst in my spare time I'm literally cramming to take in all the new technologies on the web and learn how to use them all, in working hours even the meatiest of projects involves old skills learned years ago; and worse, the common projects listed everywhere are little more than install X CMS, with Y [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-162" title="devcry" src="http://webr3.org/blog/wp-content/uploads/2009/10/devcry.jpg" alt="devcry" width="600" height="250" /><br />
Whilst in my spare time I'm literally cramming to take in all the new technologies on the web and learn how to use them all, in working hours even the meatiest of projects involves old skills learned years ago; and worse, the common projects listed everywhere are little more than install X CMS, with Y Plugins and Z Template + a couple of tweaks.</p>
<p>Much of the work has been dumbed down to repetitive, narrow scoped projects that really take little to no "developer knowledge".</p>
<p>I'm sitting here racking my brain, how to find a way to spend 2010 learning further and putting all these good things in to practise? I'd love to spend a good chunk of the year piecing together all these new tech's to create something great; and preferably with some of the ultra skilled developers I know - the scope is incredible, the boundaries are virtually limitless, and moreover, the technologies are there for the picking!</p>
<p>Surely, somewhere, there is a business man sitting racking his brain, fed up with the same old sites every one has, aware of all these new techs, great API's, and with the notion that something great can be created; posting job offers and hunting down the right developers for the task?</p>
<p>I just can't grasp that with all the forward thinking companies and people out there pushing boundaries, that nobody is wanting to take advantage of that and tie them all together.</p>
<p>So here's the problem; how to pair the two? how do we match up to the right companies &amp; businesses. In fact.. how do I find the right people who want to exploit all of this?</p>
<p>Link up the goodies available from the semantic web, with the tech advances in streaming technologies, via a whole host of API's, using the latest languages to target multiple platforms; polish it all off with the latest in graphical interfaces and develop a realtime monster application to be proud of.</p>
<p>I'd love to list the tech's involved, but the list would be 100+; and more to the point - without a set project description to mesh this all together, we just don't know. But.. anything is possible.</p>
<p>Developers can you think of a way to break the masses in to the next generation of the internet?</p>
<p>Companies &amp; business men, can you think of some projects to get us there?</p>
<p>The next stage of the net is sooo close, yet so far, all we need to do is grab it and go - I know there's a lot of forward thinkers that read this blog.. rack you're brains for the good of us all!</p>
<p>Regards :)</p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/general/developer-cry/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>Forced Coding</title>
		<link>http://webr3.org/blog/general/forced-coding/</link>
		<comments>http://webr3.org/blog/general/forced-coding/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 20:30:40 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[experiments]]></category>
		<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=150</guid>
		<description><![CDATA[
update:
I've been off for a week after finishing a project and moving house, in that time this domain dropped and just prior to that appeared to get 20k+ reads which is a bit omg. Anyways many comments all over the net, and certainly on reddit (comments here) - and thus just to clarify, the entire [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://webr3.org/blog/wp-content/uploads/2009/09/forced-coding.jpg" alt="forced-coding" title="forced-coding" width="600" height="250" class="alignnone size-full wp-image-151" /></p>
<p>update:<br />
I've been off for a week after finishing a project and moving house, in that time this domain dropped and just prior to that appeared to get 20k+ reads which is a bit omg. Anyways many comments all over the net, and certainly on reddit (<a href="http://www.reddit.com/r/programming/comments/9s1n8/forced_coding/">comments here</a>) - and thus just to clarify, the entire content of this post is purely a note to myself, and to help me in those times when you can't get going in the morning or such like.. in no way am I suggesting you don't plan or do things properly whenever you can - this is literally just some ways of getting through the day. Thought I'd made that clear and most people got it ;)<br />
end update:</p>
<p>This one is more for my own reference, but sharing anyways as it may help others. In numerous scenarios it is really hard to "get going" when you're trying to code, particularly under the following circumstances:</p>
<p> * You haven't started coding till late(r) in the day<br />
 * Emails, Blogs, Social networking have taken up more time than expected and/or distracted more than anticipated<br />
 * You've just completed a deliverable, milestone or task.<br />
 * You're tired!</p>
<p>All of these are virtually daily occurances in the coding world, and here are the methods I've used to get going again.. no particular order, just a list.</p>
<p><strong>Under all circumstance, avoid planning!</strong><br />
Planning is one of those things you can't do unless you are all ready in the flow, whether this is because you've just had a client meeting, a long discussion, or read a full spec - it's not the thing to do to get your flow going, all you'll do is plan nothing, plan badly, or stare blankly at the screen / paper.</p>
<p><strong>Don't read related material to get you in the flow.</strong><br />
This will purely serve to distract you, make you think about doing things differently, doublt what you've done or worse throw you in to planning mode - fact is you won't be planning "your" app though, you'll be planning "some" ideal app or scenario.</p>
<p><strong>Pick the smallest task, whether complex or not, and just do it!</strong><br />
Doesn't matter what it is, so long as it's coding a little part of the app, or modifying part of it, then it'll do. It could be adding an extra field to an object or table, popping in some validation, anything small and simple. It really doesn't matter if you do it right or wrong; you're not doing it to sign off a task, you're doing it to re-aquaint yourself with your system, by the time you've been through X lines of code you'll be back in work mode and firing on all cylinders, well on your way to getting zoned.</p>
<p><strong>Music, Headphones, Repeat.</strong><br />
You'll know the genre that suits you, personally I find repeating an album or even song fades me in to the zone and keeps me there. The repetitiveness of the tune keeps you there, because just as a phone call can distract you, so can a change in tune to something at a different tempo or worse a completely different genre.</p>
<p><strong>Don't cram!</strong><br />
If you've only got 15 minutes before the next sizable interuption, forget it, don't do anything just chill - make a coffee, smoke, whatever. You're not wasting time you're saving your zone, you can only get zoned a couple of times a day, so don't get zoned for only 15 minutes - save it and get zoned for longer later on.</p>
<p><strong>Speedcode</strong><br />
Why not? as nike say "just do it", if the code has 10 bugs but is finished in half the time then you've done good, that gives you loads of time to fix the bugs, and more importantly you get to those moments where you realise x,y&#038;z need to be changed much quicker. Not only that, but would you rather have a week to go and have a list of 80 bugs, or a week to go and 2 major deliverables a week overdue..</p>
<p><strong>Communicate for no reason.</strong><br />
Often a major focus is simply talking to somebody else on the same project as you, whether its the client or a workmate, and the more stressed they are the better, they'll not only blast you with things but their urgency / stress will often convey straight over to you and focus / zone you instantly.</p>
<p><strong>Do the thing you know, not the thing you don't.</strong><br />
Inline with "don't plan" and "pick the smallest task", always pick something you can already do (if possible), as with everything else, the things you don't know are much easier when you're already zoned, not only that but you'll be more focussed when doing the thing you don't know so less likely to over spec / over code it.</p>
<p><strong>Don't code other things!</strong><br />
nothing on earth will kill your project like working on something else, every minute you spend on another script or app is like an hour lost on what you should be doing, and with every minute that passes you're getting closer and closer to utter project failure - and hence why most open source projects are dead.</p>
<p>Remember, the key to forced coding is just to get you in the zone, and ultimately boils down to just getting stuck in there with some lines of code on your project.</p>
<p>Works for me anyways [most of the time] - if anybody has anything to add (constructive) then please do!</p>
<p>Regards - nathan</p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/general/forced-coding/feed/</wfw:commentRss>
		<slash:comments>131</slash:comments>
		</item>
		<item>
		<title>The Wall</title>
		<link>http://webr3.org/blog/general/the-wall/</link>
		<comments>http://webr3.org/blog/general/the-wall/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 00:10:50 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[big applications]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[FAQ]]></category>
		<category><![CDATA[good programmer]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Multitier architecture]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software architecture]]></category>
		<category><![CDATA[Software design patterns]]></category>
		<category><![CDATA[Source lines of code]]></category>
		<category><![CDATA[Technology/Internet]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=144</guid>
		<description><![CDATA[
Something all of us developers realise but it doesn't always smack home until certain scenarios arise - The Wall (as I'll call it for now) is the virtual line behind the UI which is where the developer / client separation of concerns occurs. The client wants to see one thing on a UI, click a [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://webr3.org/blog/wp-content/uploads/2009/09/thewall.jpg" alt="thewall" title="thewall" width="600" height="250" class="alignnone size-full wp-image-145" /></p>
<p>Something all of us developers realise but it doesn't always smack home until certain scenarios arise - The Wall (as I'll call it for now) is the virtual line behind the UI which is where the developer / client separation of concerns occurs. The client wants to see one thing on a UI, click a few buttons, hit a few keys and see the UI change to another thing, this change indicates that we as programmers have done our job, behind that line is generally our concern.</p>
<p>Here's the scenario.. a few weeks back "we" started a full 3 tier app, the Applcation tier consisted of the three big layers, service layer -> domain model layer -> data source layer; everything implemented by the book with transfer objects, DAOs, business objects, a full language extension lib, utils, everything coded to interfaces and using factories.. you get the picture.. a lot of code. On the presentation tier we had single UI consisting of a full MVC framework with all the magic and goodness, the models of which talked to the service layer of the application tier (as it should).</p>
<p>A couple of hundred hours later we get our first full end to end done, a simple FAQ system.. possibly the most overkilled FAQ system ever, but still a great end to end test. This is where the wall becomes clear, because for all of that the client only saw a simple FAQ system.</p>
<p>At this point, as a developer you have to ask yourself why.. the FAQ system could have been developed in circa 1 hour using a few lines of PHP and simple mysql database + some echo's.</p>
<p>I don't have an answer to this, and don't think there is one... because if you think about all the immediate arguments for doing it the "proper" way.. maybe even the java way - you still have to think, what is more maintainable a few hundred files and a complex architecture full of design patterns, or three lines of PHP a "n00b" could maintain.</p>
<p>More over.. ultimately those few lines of code you could make the application with are pretty much the same few lines of code which aren't reusable when using the full application approach.</p>
<p>Finally you ask yourself.. if a good programmer introduces about 2.5 bugs per 100 lines.. then what requires more long term maintenance; 100 lines for a full FAQ system or 100 classes with 100 lines each.</p>
<p>Just a thought, that won't go anywhere - because i get paid to make these big applications, but when the pressures on and I've got a 3 hour deadline I do the 100 line thing.</p>
<p>no response needed, simply questioning oneself (again)</p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/general/the-wall/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PixelBender is more useful than I assumed!</title>
		<link>http://webr3.org/blog/general/pixelbender-is-more-useful-than-i-assumed/</link>
		<comments>http://webr3.org/blog/general/pixelbender-is-more-useful-than-i-assumed/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 11:18:25 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[Flash 10]]></category>
		<category><![CDATA[PixelBender]]></category>
		<category><![CDATA[general]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[3D computer graphics]]></category>
		<category><![CDATA[Abstract algebra]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Computer graphics]]></category>
		<category><![CDATA[haXe]]></category>
		<category><![CDATA[image processing algorithms]]></category>
		<category><![CDATA[Linear algebra]]></category>
		<category><![CDATA[Perlin Noise]]></category>
		<category><![CDATA[Pixel Bender]]></category>
		<category><![CDATA[Shader]]></category>
		<category><![CDATA[Technology/Internet]]></category>

		<guid isPermaLink="false">http://webr3.org/blog/?p=94</guid>
		<description><![CDATA[All too often it's too easy to overlook a technology, or indeed its uses, by mentaly boxing it in to the role it's advertised to fill.
PixelBender is one of these technologies, as advertised "You can use the Pixel Bender kernel language to implement image processing algorithms (filters or effects) in a hardware-independent manner"; however this [...]]]></description>
			<content:encoded><![CDATA[<p>All too often it's too easy to overlook a technology, or indeed its uses, by mentaly boxing it in to the role it's advertised to fill.</p>
<p>PixelBender is one of these technologies, as advertised "You can use the Pixel Bender kernel language to implement image processing algorithms (filters or effects) in a hardware-independent manner"; however this isn't the whole truth of the matter.</p>
<p>PixelBender is a highly under-rated and under-used technology imho. Simply put PixelBender is actually a very fast way of converting or manipulating large sets of numerical data, whether it's image based or not. In this post I'm only going to skim the surface and give some pointers.</p>
<p>The standard input types cover Vector, ByteArray and BitmapData, likewise with output data, additionally many types are supported for parameters, everything from ints up to 4x4 Matrix' of floats.</p>
<p>Some obvious and simple uses include:</p>
<ul>
<li>3D Data Manipulation (Float3 input and output - rgb or xyz)</li>
<li>Raw Sound Data Manipulation (from Sound.extract, you could even build an FFT implementation in PixelBender)</li>
<li>Visual Effects Calculations</li>
<li>Batch Processing and Data Transformation.</li>
</ul>
<p>Starting with Batch Processing and Data Transformation, here is the simplest PixelBender usage and example you could ever get.</p>
<h3>Problem</h3>
<p>Turn a BitmapData in to a Vector of RGB float values where each value is float &lt; 1 and each set of 3 values comprises a pixel.</p>
<p>Doing this with pure AS3 or haXe or anything else is quite intensive, then you add PixelBender in to the equation</p>
<p><strong>Solution</strong><br />
PixelBender Code:</p>
<pre>&lt;languageVersion : 1.0;&gt;
kernel Identity
&lt;   namespace : "org.webr3.pb";
 vendor : "WebR3";
 version : 1;
 description : "Converts BitmapData to Vector Number (rgb)";
&gt;
{
 input image3 src;
 output pixel3 dst;

 void evaluatePixel()
 {
 dst = sampleNearest( src, outCoord() );
 }
}</pre>
<p>And to use this we can create a simple wrapper class in AS3:</p>
<pre>package test
{
 import __AS3__.vec.Vector;

 import flash.display.BitmapData;
 import flash.display.Shader;
 import flash.display.ShaderJob;
 import flash.utils.ByteArray;

 public class ShaderVector
 {
 [Embed("/rgb.pbj", mimeType="application/octet-stream")]
 private var shaderClass : Class;

 private var shader : Shader;

 public function ShaderVector()
 {        
 shader = new Shader(new shaderClass() as ByteArray);
 }

 public function convert( img : BitmapData ) : Vector.&lt;Number&gt;
 {
 var output : Vector.&lt;Number&gt; = new Vector.&lt;Number&gt;( (img.width*img.height) * 3 , false );
 shader.data.src.input = img;
 var job : ShaderJob = new ShaderJob( shader , output , img.width , img.height );
 job.start( true );
 output.fixed = true;
 return output;
 }

 }
}</pre>
<p>Now we've got a kind of worker / utility class which we can farm all the hard work on to; usage is simple:</p>
<pre>var worker : ShaderVector = new ShaderVector();
var rgb : Vector.&lt;Number&gt; = worker.convert( someBitmapData );</pre>
<p>that's it, in one line we've solved the problem.</p>
<p>PixelBender is a lot easier than you may think, the above code is a small model you can easily manipulate just embed different pixel bender files.</p>
<p>Here's another simple kernel file; this one will take a BitmapData of perlin noise and convert it in to Vector of 3D positions for us to use.</p>
<p>It takes the bitmap data, converts every pixels r,g,b values in to float -0.5 to +0.5 values, then scales them up and finally returns back a vector of what are essentially 3D Perlin Noise Particles (like the ones in my <a href="http://webr3.org/blog/haxe/3d-perlin-particle-light-cloud-and-source-haxe-flash-10/">earlier experiments</a>)</p>
<pre>&lt;languageVersion : 1.0;&gt;
kernel Scaler
&lt;   namespace : "org.webr3.pb";
 vendor : "WebR3";
 version : 1;
 description : "For Perlin Noise, Converts BitmapData to 3D x,y,z positions";
&gt;
{
 input image3 src;
 output pixel3 dst;

 parameter float scaleX
 &lt;
 defaultValue : float(1.0);
 minValue     : float(0.1);
 maxValue     : float(100000.0);
 &gt;;

 parameter float scaleY
 &lt;
 defaultValue : float(1.0);
 minValue     : float(0.1);
 maxValue     : float(100000.0);
 &gt;;

 parameter float scaleZ
 &lt;
 defaultValue : float(1.0);
 minValue     : float(0.000001);
 maxValue     : float(100000.0);
 &gt;;

 void evaluatePixel()
 {
 dst = sampleNearest( src, outCoord() );
 dst -= 0.5;
 dst.r *= scaleX;
 dst.g *= scaleY;
 dst.b *= scaleZ;
 }
}</pre>
<p>and the modified shader vector, only 3 new lines to set up the scale values:</p>
<pre>package test
{
 import __AS3__.vec.Vector;

 import flash.display.BitmapData;
 import flash.display.Shader;
 import flash.display.ShaderJob;
 import flash.utils.ByteArray;

 public class ShaderVector
 {
 [Embed("/rgb.pbj", mimeType="application/octet-stream")]
 private var shaderClass : Class;

 private var shader : Shader;

 public function ShaderVector()
 {        
 shader = new Shader(new shaderClass() as ByteArray);
 shader.data.scaleX.value = [200];
 shader.data.scaleY.value = [200];
 shader.data.scaleZ.value = [200];
 }

 public function convert( img : BitmapData ) : Vector.&lt;Number&gt;
 {
 var output : Vector.&lt;Number&gt; = new Vector.&lt;Number&gt;( (img.width*img.height) * 3 , false );
 shader.data.src.input = img;
 var job : ShaderJob = new ShaderJob( shader , output , img.width , img.height );
 job.start( true );
 output.fixed = true;
 return output;
 }

 }
}</pre>
<p>If you're thinking this is complex, it's honestly not - try coding this in pure AS3 and it'll be a lot of complex slow lines, been there and done that!</p>
<p>I'm going to leave the examples there for now, if your looking for a 3D example then <a href="http://bit.ly/JnQzA" target="_blank">check the PixelBender files in Ralphs 3D Particle example</a>.</p>
<h3>Conclusion.</h3>
<p>AS3 together with PixelBender, haXe and Alchemy is fast becoming an immense tech for us developers, have a play around you may be suprised by the results you can achieve by utilizing these techs.</p>
<p>Coming very soon I'll be posting some examples which show what can be done when you use PixelBender, Fast Memory, Vectors and haXe / AS3 together, but in unconventional ways. Until then I hope this is enough to get some more dev's playing with PixelBender.</p>
<p>peace ::</p>
<p><img class="alignnone size-full wp-image-96" title="pb" src="http://webr3.org/blog/wp-content/uploads/2009/07/pb.jpg" alt="pb" width="600" height="250" /></p>
<p>image is a still from <a href="http://www.apple.com/trailers/wb/iamlegendawakening/" target="_self">I am Legend : Awakening</a> a very well made 5 minute short animation.</p>
]]></content:encoded>
			<wfw:commentRss>http://webr3.org/blog/general/pixelbender-is-more-useful-than-i-assumed/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

