<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7577414259337915956</id><updated>2011-12-17T01:12:18.879-08:00</updated><category term='Legal'/><category term='media'/><category term='datasource'/><category term='solution'/><category term='javascript'/><category term='Machine'/><category term='web'/><category term='robot'/><category term='event'/><category term='Idea'/><category term='dota keeper kotl wc3'/><category term='chrome'/><category term='prime'/><category term='detection'/><category term='Arduino'/><category term='Glasses'/><category term='extension'/><category term='rss'/><category term='compare'/><category term='internet'/><category term='chat'/><category term='video'/><category term='open'/><category term='email'/><category term='JMF'/><category term='code'/><category term='image'/><category term='barcode'/><category term='database'/><category term='Cellphone'/><category term='scanner'/><category term='mootools'/><category term='facebook'/><category term='knowledge'/><category term='feed'/><category term='java'/><category term='translation'/><category term='jpeg'/><category term='trigger'/><category term='engine'/><category term='information'/><category term='webcam'/><category term='N73'/><category term='Project'/><category term='Cyclist'/><category term='W1020'/><category term='digital photo frame'/><category term='Google'/><category term='Street View'/><category term='source'/><category term='treasure hunt'/><category term='Maps'/><category term='social network facebook myspace'/><category term='desktop'/><category term='atom'/><category term='Time'/><category term='Cat'/><category term='data'/><category term='answer'/><category term='reader'/><category term='zip'/><category term='db'/><category term='motion'/><title type='text'>Mind Meat</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>59</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-539071833908354983</id><published>2010-12-20T07:47:00.000-08:00</published><updated>2010-12-20T08:26:48.104-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='extension'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='translation'/><category scheme='http://www.blogger.com/atom/ns#' term='chat'/><title type='text'>Facebook Chat Translation</title><content type='html'>&lt;p&gt;I present to the world my latest invention, FBChatAT. A Facebook Chat Inline Auto Translation tool for Google Chrome. (If you don't use Chrome then &lt;a href="http://www.google.com/chrome"&gt;click here&lt;/a&gt;, install, and be set free.)&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.chromeextensions.org/language-translators/fbchatat/"&gt;Download FBChatAT Here&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This extension acts/translates in two ways:&lt;/p&gt;&lt;p&gt;When you receive a message in Facebook Chat, the extension will automatically translate that message into your native language, then insert the translated text underneath the original message. This allows you to review/read the original messages and translation simultaneously while you chat.&lt;/p&gt;&lt;p&gt;Secondly.. To type in your native language and have it automatically translated out: An extra textbox is provided at the bottom left of the screen. Type into this box your text will be translated and shown in the space provided above. If/when you are happy with your outgoing message, press 'enter'. This will push the translated text into the current active chat flyout/window. Press 'enter' a second time to push the message into the chat stream.&lt;/p&gt;&lt;p&gt;The default native and foreign languages are English and Traditional Chinese respectively. You can set your preferred languages in the options page of the extension. (Right click FB button in toolbar and choose options).&lt;/p&gt;&lt;p&gt;You may find the full source for this extension on &lt;a href="https://github.com/patcullen/FBChatAT"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;This extension uses Google Translate for the translation.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-539071833908354983?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/539071833908354983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=539071833908354983' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/539071833908354983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/539071833908354983'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2010/12/facebook-chat-translation.html' title='Facebook Chat Translation'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-6685192855963358753</id><published>2010-10-31T23:56:00.000-07:00</published><updated>2010-11-01T10:56:10.498-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='Machine'/><category scheme='http://www.blogger.com/atom/ns#' term='Idea'/><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='Cat'/><title type='text'>Cat Food Vending Machine</title><content type='html'>&lt;p&gt;This idea stemmed from something I've wanted to try for quite a while. That is to train a pet to do something, maybe even something convoluted or unnecessary, to get food or a treat.&lt;/p&gt;&lt;p&gt;Well I finally have the opportunity to build such a contraption. We recently adopted an &lt;a href="http://www.flickr.com/photos/patcullen/4858728077/"&gt;orphan cat&lt;/a&gt;, and have also recently acquired a lot of spare time. So here's the goal. A small machine that dispenses treats when the cat pushes a button. Some design goals:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Large container for cat pellets that empties FIFO style.&lt;/li&gt;&lt;li&gt;Some controlled mechanism of dispensing above-mentioned pellets.&lt;/li&gt;&lt;li&gt;Sensor feedback to indicate when pellets had left the machine.&lt;/li&gt;&lt;li&gt;UI feedback to indicate state of machine. (Ready, Dispensing, Done)&lt;/li&gt;&lt;li&gt;Easy UI for animal to prompt pellet dispensation.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;It ended up looking like this..&lt;/p&gt;&lt;p style="text-align:center"&gt;&lt;a href="http://4.bp.blogspot.com/_2MGAYAM8yks/TM7rDRxO8jI/AAAAAAAAAFE/qBVYQyed9h0/s1600/Front.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 134px; height: 200px;" src="http://4.bp.blogspot.com/_2MGAYAM8yks/TM7rDRxO8jI/AAAAAAAAAFE/qBVYQyed9h0/s200/Front.JPG" border="0" alt="Front view of the vending machine"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The cat is meant to press the paddle and then wait for their surprise to pop out the hole. The machine body is made from a cake box and cardboard. Everything was stuck together with cello-tape. Not the best building materials I know but that's all I had at the time. &lt;/p&gt;&lt;p&gt;I thought it was going to be really easy to teach my cat to interface with the machine... Turns out he got impatient quite quickly, and was probably more fascinated with the sound of the spinning motor, than the treats popping out the front.&lt;/p&gt;&lt;p style="text-align:center"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Uxrsc8YDzCE?hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Uxrsc8YDzCE?hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;p&gt;A breakdown of the electrical components I used:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Arduino Nano&lt;/li&gt;&lt;li&gt;ULN2004A Darlington Array&lt;/li&gt;&lt;li&gt;Some colored LEDS&lt;/li&gt;&lt;li&gt;Resistors. I think anything between 0.5k to 2k should be fine.&lt;/li&gt;&lt;li&gt;Photoresistor.&lt;/li&gt;&lt;li&gt;Stepper motor of your choice&lt;/li&gt;&lt;li&gt;Power source suited to your motor&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The following is what I cooked up around the Arduino. A lot of this was trial and error as I am a programmer and not an electrician. Needless to say this was all a large learning curve (which is what I wanted).&lt;/p&gt;&lt;br /&gt;&lt;p style="text-align: center"&gt;&lt;a href="http://2.bp.blogspot.com/_2MGAYAM8yks/TM74EyoGayI/AAAAAAAAAFU/5wxU1WxtYgw/s1600/InParts.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 134px;" src="http://2.bp.blogspot.com/_2MGAYAM8yks/TM74EyoGayI/AAAAAAAAAFU/5wxU1WxtYgw/s200/InParts.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5534633753278049058" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a href="http://3.bp.blogspot.com/_2MGAYAM8yks/TM74EUWx_PI/AAAAAAAAAFM/0Fokhf9sI0w/s1600/BoardClose1.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 134px;" src="http://3.bp.blogspot.com/_2MGAYAM8yks/TM74EUWx_PI/AAAAAAAAAFM/0Fokhf9sI0w/s200/BoardClose1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5534633745152343282" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The &lt;a href="http://pat.cullen.co.za/project/VendingMachine/KitKat.pde"&gt;final Arduino Sketch&lt;/a&gt; ended up looking like the below. It wasn't all that I'd hoped it would be; I had gotten fed up several times with trying to monitor time based operations on the Arduino. My sketch always seemed to end up dying after a few hours?.. After a while of hopeless debugging I resigned to just removing the offending bits of code. Sad I know, but actually not too bothered since this is all for the cat. The &lt;a href="http://pat.cullen.co.za/project/VendingMachine/KitKatFull.pde"&gt;initial more-feature-complete-sketch can be found here&lt;/a&gt;. That still has the photoresistor feedback and some other time based functions in it.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;int motorPin1 = 2;&lt;br /&gt;int motorPin2 = 3;&lt;br /&gt;int motorPin3 = 4;&lt;br /&gt;int motorPin4 = 5;&lt;br /&gt;int spinDelay = 25;    // the delay between motor steps&lt;br /&gt;int spinAmount = 220;  // how many steps should the motor turn?&lt;br /&gt;int motorState = 0;&lt;br /&gt;boolean motorDirection = true;   // used to alternate between motor directions&lt;br /&gt;&lt;br /&gt;int redLight = 6;&lt;br /&gt;int greenLight = 8;&lt;br /&gt;&lt;br /&gt;int buttonPin = 12;    // the pin that the pushbutton is attached to&lt;br /&gt;int buttonState = 0;   // current state of the button&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt;  pinMode(motorPin1, OUTPUT);&lt;br /&gt;  pinMode(motorPin2, OUTPUT);&lt;br /&gt;  pinMode(motorPin3, OUTPUT);&lt;br /&gt;  pinMode(motorPin4, OUTPUT);&lt;br /&gt;&lt;br /&gt;  pinMode(redLight, OUTPUT);&lt;br /&gt;  pinMode(greenLight, OUTPUT);&lt;br /&gt;&lt;br /&gt;  pinMode(buttonPin, INPUT);&lt;br /&gt;  Serial.begin(9600);&lt;br /&gt;  digitalWrite(greenLight, HIGH); &lt;br /&gt;  digitalWrite(redLight, LOW); &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop() {&lt;br /&gt;  buttonState = digitalRead(buttonPin);&lt;br /&gt;  if (buttonState == HIGH) {&lt;br /&gt;    buttonPushed();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void buttonPushed() {&lt;br /&gt;  digitalWrite(greenLight, LOW); &lt;br /&gt;  digitalWrite(redLight, HIGH); &lt;br /&gt;  for (int i = 0; i &lt; spinAmount; i++) {&lt;br /&gt;      spinMotor();&lt;br /&gt;      delay(spinDelay);&lt;br /&gt;  }&lt;br /&gt;  motorDirection = !motorDirection;&lt;br /&gt;  // reset state: motor pins low to conserve battery, green light on, red light off&lt;br /&gt;  digitalWrite(motorPin1, LOW);&lt;br /&gt;  digitalWrite(motorPin2, LOW);&lt;br /&gt;  digitalWrite(motorPin3, LOW);&lt;br /&gt;  digitalWrite(motorPin4, LOW);&lt;br /&gt;&lt;br /&gt;  digitalWrite(greenLight, HIGH); &lt;br /&gt;  digitalWrite(redLight, LOW); &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void spinMotor() {&lt;br /&gt;  if (motorDirection) {&lt;br /&gt;    motorState++;&lt;br /&gt;  } else {&lt;br /&gt;    motorState--;&lt;br /&gt;  }&lt;br /&gt;  if (motorState &lt;= 1) {&lt;br /&gt;    digitalWrite(motorPin1, HIGH);&lt;br /&gt;    digitalWrite(motorPin2, LOW);&lt;br /&gt;    digitalWrite(motorPin3, LOW);&lt;br /&gt;    digitalWrite(motorPin4, LOW);&lt;br /&gt;    if (!motorDirection) {&lt;br /&gt;      motorState = 9;&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  if (motorState == 2) {&lt;br /&gt;    digitalWrite(motorPin1, HIGH);&lt;br /&gt;    digitalWrite(motorPin2, HIGH);&lt;br /&gt;    digitalWrite(motorPin3, LOW);&lt;br /&gt;    digitalWrite(motorPin4, LOW);&lt;br /&gt;  }&lt;br /&gt;  if (motorState == 3) {&lt;br /&gt;    digitalWrite(motorPin1, LOW);&lt;br /&gt;    digitalWrite(motorPin2, HIGH);&lt;br /&gt;    digitalWrite(motorPin3, LOW);&lt;br /&gt;    digitalWrite(motorPin4, LOW);&lt;br /&gt;  }&lt;br /&gt;  if (motorState == 4) {&lt;br /&gt;    digitalWrite(motorPin1, LOW);&lt;br /&gt;    digitalWrite(motorPin2, HIGH);&lt;br /&gt;    digitalWrite(motorPin3, HIGH);&lt;br /&gt;    digitalWrite(motorPin4, LOW);&lt;br /&gt;  }&lt;br /&gt;  if (motorState == 5) {&lt;br /&gt;    digitalWrite(motorPin1, LOW);&lt;br /&gt;    digitalWrite(motorPin2, LOW);&lt;br /&gt;    digitalWrite(motorPin3, HIGH);&lt;br /&gt;    digitalWrite(motorPin4, LOW);&lt;br /&gt;  }&lt;br /&gt;  if (motorState == 6) {&lt;br /&gt;    digitalWrite(motorPin1, LOW);&lt;br /&gt;    digitalWrite(motorPin2, LOW);&lt;br /&gt;    digitalWrite(motorPin3, HIGH);&lt;br /&gt;    digitalWrite(motorPin4, HIGH);&lt;br /&gt;  }&lt;br /&gt;  if (motorState == 7) {&lt;br /&gt;    digitalWrite(motorPin1, LOW);&lt;br /&gt;    digitalWrite(motorPin2, LOW);&lt;br /&gt;    digitalWrite(motorPin3, LOW);&lt;br /&gt;    digitalWrite(motorPin4, HIGH);&lt;br /&gt;  }&lt;br /&gt;  if (motorState &gt;= 8) {&lt;br /&gt;    digitalWrite(motorPin1, HIGH);&lt;br /&gt;    digitalWrite(motorPin2, LOW);&lt;br /&gt;    digitalWrite(motorPin3, LOW);&lt;br /&gt;    digitalWrite(motorPin4, HIGH);&lt;br /&gt;    if (motorDirection) {&lt;br /&gt;      motorState = 0;&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;What would I change if I were to start again?&lt;/p&gt;&lt;p&gt;Pushing a button or paddle turned out to be way complicated. I thought a nice big paddle was going to be easy for the cat to just stomp on with his feet. I don't think I could have been more wrong. As intuitive as buttons are to humans, they make no sense to animals. Next time I would place the push button in or on the area where the pellets exit the machine. For a -long- time my cat tried to extract pellets out the machine by pushing his paw in the exit hole. This makes a lot of sense now looking back.&lt;/p&gt;&lt;p&gt;I certainly wouldn't use cardboard and cello-tape to build again. The hardest part to manufacture was a device to let pellets out of the store in a controlled fashion. Moreover, a machine like this needs to be built out of something solid and heavy; More than once we came through to the living room to see the machine knocked over with pellets everywhere. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-6685192855963358753?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/6685192855963358753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=6685192855963358753' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/6685192855963358753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/6685192855963358753'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2010/10/cat-food-vending-machine.html' title='Cat Food Vending Machine'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_2MGAYAM8yks/TM7rDRxO8jI/AAAAAAAAAFE/qBVYQyed9h0/s72-c/Front.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-8454535022324967105</id><published>2010-10-31T22:55:00.000-07:00</published><updated>2010-10-31T23:55:35.133-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='scanner'/><category scheme='http://www.blogger.com/atom/ns#' term='barcode'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='mootools'/><title type='text'>ScannerKeystrokeObserver</title><content type='html'>&lt;p&gt;A class to automatically detect entries from a hardware device that generates keystrokes (like a barcode scanner).&lt;/p&gt;&lt;a href="http://pat.cullen.co.za/project/ScannerKeystrokeObserver/"&gt;Demo&lt;/a&gt;&lt;p&gt;This class is designed on the assumption that your barcode scanner hardware will act like a keyboard. As a barcode is scanned a series of keypress events will be generated by the device. If these key events are in fast enough succession (the order of milliseconds), then it can be assumed that a scanner device pushed the series of key events. Otherwise it is just normal human input and will be ignored by the barcode reader class.&lt;/p&gt;&lt;h3&gt;How to use&lt;/h3&gt;&lt;p&gt;Include the following code in the head of your web page.&lt;/p&gt;&lt;pre&gt; &amp;lt;script src=&amp;quot;http://ajax.googleapis.com/ajax/libs/mootools/1.2.4/mootools-yui-compressed.js&amp;quot; language=&amp;quot;JavaScript&amp;quot; type=&amp;quot;text/javascript&amp;quot; &amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt; &amp;lt;script src=&amp;quot;ScannerKeystrokeObserver.js&amp;quot; &amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt; &amp;lt;script&amp;gt;&lt;br /&gt; new ScannerKeystrokeObserver({&lt;br /&gt;  onRead: function(v) {&lt;br /&gt;   $('txtGlobal').set('value', v).highlight();&lt;br /&gt;  }&lt;br /&gt; });&lt;br /&gt; &amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;h3&gt;Get It&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mootools.net/forge/p/barcodereader"&gt;Download from Mootools Forge&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://github.com/patcullen/BarcodeReader/"&gt;Source @ GitHub&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-8454535022324967105?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/8454535022324967105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=8454535022324967105' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/8454535022324967105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/8454535022324967105'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2010/10/scannerkeystrokeobserver.html' title='ScannerKeystrokeObserver'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-950661519935820508</id><published>2010-10-29T21:11:00.000-07:00</published><updated>2010-10-29T21:35:31.348-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='source'/><category scheme='http://www.blogger.com/atom/ns#' term='mootools'/><title type='text'>ImageCarousel Mootools Plugin</title><content type='html'>&lt;p&gt;An image carousel thats really easy to implement.&lt;/p&gt;&lt;a href="http://pat.cullen.co.za/project/ImageCarousel/"&gt;Demo&lt;/a&gt;&lt;p&gt;ImageCarousel was designed for those that might get a little intimidated with the Javascript side of web sites.&lt;/p&gt;&lt;p&gt;&lt;h3&gt;How to Use&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Copy your carousel images into their own folder inside your project.&lt;/li&gt;&lt;li&gt;Copy ImageCarousel.php into the folder from step one.&lt;/li&gt;&lt;li&gt;Download and unzip the ImageCarousel files into your project folder. They should unzip into a folder called 'ImageCarousel'.&lt;/li&gt;&lt;li&gt;Copy the following code into the head tag of your website.&lt;pre name="code" class="html"&gt;&amp;lt;script src="http://ajax.googleapis.com/ajax/libs/mootools/1.2.4/mootools-yui-compressed.js" language="JavaScript" type="text/javascript" &amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;link href="ImageCarousel/ImageCarousel.css" rel="stylesheet" type="text/css"&amp;gt;&lt;br /&gt;&amp;lt;script src="ImageCarousel/ImageCarousel.js" language="JavaScript" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Copy the following code into your webpage. This will act as the carousel element.&lt;pre name="code" class="html"&gt;&amp;lt;div class="ImageCarousel auto" rel="Images/Carousel/" styles="width: 500px; height: 375px;"&amp;gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;You need to change/check:&lt;ul&gt;&lt;li&gt;The 'rel' attribute should point to the folder where you have stored your images. The url should end with '/'.&lt;/li&gt;&lt;li&gt;Your images should all have the same dimensions; Check the Carousel 'width' and 'height' match your image dimensions.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;h3&gt;Get It&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mootools.net/forge/p/imagecarousel"&gt;Download from Mootools Forge&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://github.com/patcullen/ImageCarousel/"&gt;Source @ GitHub&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://pat.cullen.co.za/project/ImageCarousel/"&gt;Detailed Project Page with Demo&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-950661519935820508?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/950661519935820508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=950661519935820508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/950661519935820508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/950661519935820508'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2010/10/imagecarousel-mootools-plugin.html' title='ImageCarousel Mootools Plugin'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-4073505558748949294</id><published>2010-03-04T00:54:00.001-08:00</published><updated>2010-03-04T00:54:57.703-08:00</updated><title type='text'>Lighthouse</title><content type='html'>&lt;div style="text-align: left; padding: 3px;"&gt;&lt;a href="http://www.flickr.com/photos/patcullen/3417647056/" title="photo sharing"&gt;&lt;img src="http://farm4.static.flickr.com/3542/3417647056_e2c7d0f78a.jpg" style="border: solid 2px #000000;" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.8em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/patcullen/3417647056/"&gt;lighthouse&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/patcullen/"&gt;Pat Cullen&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;p&gt;Last year Robyn and myself travelled to Cape Town. This is a picture of the town called Kalk Bay. We stayed there for two nights in a B&amp;B just opposite the Brass Bell. This is a great town for perusing second hand shops and finding antiques. For the fishing village it is, there is a vibrant young culture.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-4073505558748949294?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/4073505558748949294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=4073505558748949294' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/4073505558748949294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/4073505558748949294'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2010/03/lighthouse.html' title='Lighthouse'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3542/3417647056_e2c7d0f78a_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-1222504821201118890</id><published>2010-02-01T06:35:00.000-08:00</published><updated>2010-02-01T06:48:35.517-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><category scheme='http://www.blogger.com/atom/ns#' term='event'/><category scheme='http://www.blogger.com/atom/ns#' term='source'/><category scheme='http://www.blogger.com/atom/ns#' term='information'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='feed'/><category scheme='http://www.blogger.com/atom/ns#' term='trigger'/><category scheme='http://www.blogger.com/atom/ns#' term='atom'/><category scheme='http://www.blogger.com/atom/ns#' term='reader'/><category scheme='http://www.blogger.com/atom/ns#' term='knowledge'/><category scheme='http://www.blogger.com/atom/ns#' term='email'/><category scheme='http://www.blogger.com/atom/ns#' term='engine'/><category scheme='http://www.blogger.com/atom/ns#' term='datasource'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='rss'/><category scheme='http://www.blogger.com/atom/ns#' term='db'/><title type='text'>Information Overload</title><content type='html'>&lt;p&gt;Information abundant: information pools, information pockets, information streams, information databases; Information sources of so many types delivered in so many formats.&lt;i&gt; I have too much information to manage it properly&lt;/i&gt;. Well, when I say 'properly' I mean there's too much to remember all of it, digest all of it, to take full potential of all the data being delivered to me.&lt;/p&gt;&lt;p&gt;I am a child of the information age: When I wake up in the morning the first thing I do is get behind my computer to catch up with the world around me. I've got social networks, business networks, email accounts, and am a programmer so have a multitude of other internet services and jobs running on schedules. I need(read want) to know certain things at certain times. If a client has requested my attention via email I need to know as soon as possible. If it's my mothers birthday I need to know 7am in the morning. If my web server goes down, I need to know five minutes ago. &lt;/p&gt;&lt;p&gt;With so many online services and so many of them offering an RSS/Atom stream about nearly everything; An RSS reader does a good job on keeping me up to date with 66.67% of my knowledge source. But even reading my master RSS feed every morning doesnt provide all the information I need, but more importantly it doesnt invoke some simple actions that I find repetitive when I come across certain data.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;I have a facebook account; I want to be alerted of birthdays in the early morning.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I follow some twitterers'; I only want to view tweets that are re-tweeted.&lt;/li&gt;&lt;li&gt;I have family members on Flickr and Picasa; If they post photos then I want to see them, better yet funnel them straight to my wireless photo frame in one merged Media RSS stream.&lt;/li&gt;&lt;li&gt;I've got an AreMySitesUp account: I need to urgently know when my servers are unavailable.&lt;/li&gt;&lt;li&gt;I've got Gtalk, Skype and AIM acocunts...&lt;/li&gt;&lt;li&gt;I have setup FTP locations that clients drop work in...&lt;/li&gt;&lt;li&gt;I've got several email accounts...&lt;/li&gt;&lt;li&gt;I follow several open source projects on forums, bug trackers, and version releases...&lt;/li&gt;&lt;li&gt;I run several projects and each of those have several checks and balances in place to make sure all is in order.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I could go on, but the point is made. I've got so many sources of information of varying types and each hold a certain level of importance or urgency to me. Now I want a central way to organise all of this; A way to manage and schedule my information.&lt;/p&gt;&lt;p&gt;I am a programmer; I'm going to make something. An information engine. This engine will:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Store &lt;/b&gt;data&lt;/li&gt;&lt;li&gt;&lt;b&gt;Consume&lt;/b&gt; data stream/trigger inputs&lt;/li&gt;&lt;li&gt;&lt;b&gt;Publish&lt;/b&gt; stream/alert outputs&lt;/li&gt;&lt;li&gt;Provide a &lt;b&gt;manage&lt;/b&gt;ment console for all of the above&lt;/li&gt;&lt;/ul&gt;More on this to come...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-1222504821201118890?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/1222504821201118890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=1222504821201118890' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/1222504821201118890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/1222504821201118890'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2010/02/information-overload.html' title='Information Overload'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-7009869637599212247</id><published>2009-10-17T03:38:00.001-07:00</published><updated>2010-03-04T00:34:24.550-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Legal'/><category scheme='http://www.blogger.com/atom/ns#' term='Glasses'/><category scheme='http://www.blogger.com/atom/ns#' term='Cyclist'/><category scheme='http://www.blogger.com/atom/ns#' term='Maps'/><category scheme='http://www.blogger.com/atom/ns#' term='Street View'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>The Non Fuzzy Face Cyclist</title><content type='html'>&lt;div&gt;I'm often travelling around the world in Google Maps Street View. From the &lt;a href="http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=Eiffel+Tower,+Paris,+France&amp;amp;sll=33.129,-117.311188&amp;amp;sspn=0.001148,0.002411&amp;amp;ie=UTF8&amp;amp;hq=Eiffel+Tower&amp;amp;hnear=Eiffel+Tower,+Paris,+France&amp;amp;ll=48.858955,2.29434&amp;amp;spn=0,359.922838&amp;amp;z=14&amp;amp;layer=c&amp;amp;cbll=48.857858,2.295247&amp;amp;panoid=BvmsCsff7BWYdNsVGmFEGg&amp;amp;cbp=12,324.96,,0,-55.17"&gt;Eiffel Tower&lt;/a&gt; to the &lt;a href="http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=Big+Ben&amp;amp;sll=48.857858,2.295247&amp;amp;sspn=0.027445,0.077162&amp;amp;ie=UTF8&amp;amp;hq=Big+Ben&amp;amp;hnear=Big+Ben,+Westminster,+London,+UK&amp;amp;ll=51.500782,-0.120935&amp;amp;spn=0,359.922838&amp;amp;z=14&amp;amp;layer=c&amp;amp;cbll=51.500828,-0.122154&amp;amp;panoid=Woo5jtM9lOT9xcsbvRKH0A&amp;amp;cbp=12,27.23,,1,-9.27"&gt;The London Eye&lt;/a&gt;. When Street View first hit the Maps product I was absolutely amazed. &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Since first reading about all the legal and privacy ramifications of this technology I've had a personal quest to find a person that somehow missed the fuzzy face filter. Up until now it's been a very unsatisfying search - thank you Google; But today I'll be collecting my quest points and moving on. The following cyclists face was found after reading &lt;a href="http://googleblog.blogspot.com/2009/10/street-view-we-can-trike-wherever-you.html"&gt;Google's post on their trikes&lt;/a&gt; and the new LegoLand footage. Even though its not a fully disclosed face, its the the most clear example of one I have come to finding.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_2MGAYAM8yks/S49wCzIbBkI/AAAAAAAAAEY/9HU_6qeXbp8/s1600-h/unfuzzy+street+view+cyclist.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 247px;" src="http://4.bp.blogspot.com/_2MGAYAM8yks/S49wCzIbBkI/AAAAAAAAAEY/9HU_6qeXbp8/s320/unfuzzy+street+view+cyclist.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5444693667901802050" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Guess they missed this because of the glasses. Maybe on purpose as well, but if that's the case then I'm kind of surprised because it's surely safer (legally) just to blur faces with glasses or any other obstruction as well.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-7009869637599212247?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/7009869637599212247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=7009869637599212247' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/7009869637599212247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/7009869637599212247'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2009/10/non-fuzzy-face-cyclist.html' title='The Non Fuzzy Face Cyclist'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_2MGAYAM8yks/S49wCzIbBkI/AAAAAAAAAEY/9HU_6qeXbp8/s72-c/unfuzzy+street+view+cyclist.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-6410868503852554227</id><published>2009-07-09T00:40:00.000-07:00</published><updated>2009-07-09T02:07:10.143-07:00</updated><title type='text'>Some Server JS</title><content type='html'>Javscript on the serverside,.. it's happening; I'm drawn in by its beauty.&lt;br /&gt;&lt;br /&gt;My workplace requires I base our web applications on a Microsoft product foundation. Not that I've got anything against Microsoft (I do, but even so..), I just prefer more of the non Microsoft founded languages. I'm also a dynamic language fanatic. C# and friends is great, but it just doesn't fit my bill (I am looking forward to playing with more of the Iron** products they pushing out now; very interesting combo.)&lt;br /&gt;&lt;br /&gt;What I love about Javsacript: It tends to be platform, vendor and pretty much all round - neutral. It's a dynamic, flexible and powerful syntax. I'm sold on it. Even better when it comes to web apps, now I'm playing with JS on the clientside and serverside; The consistency is awesome.&lt;br /&gt;&lt;br /&gt;I've started building my take-over-the-world-its-so-powerful-framework; and it's in Javscript; On a Microsoft platform...&lt;span style="font-style: italic;"&gt; [Awkward silence]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It's still all quite new to me, and I can't quite believe its working so well in our work context. I've basically setup a platform neutral interface of JS objects. I then create all application and framework objects above that. Below the interface sits a layer to allow all of the above to run on the MS JScript engine.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_2MGAYAM8yks/SlWydOJpRiI/AAAAAAAAAC0/5KcnuDM9ei4/s1600-h/GravityStack.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 300px; height: 248px;" src="http://1.bp.blogspot.com/_2MGAYAM8yks/SlWydOJpRiI/AAAAAAAAAC0/5KcnuDM9ei4/s320/GravityStack.png" alt="" id="BLOGGER_PHOTO_ID_5356383546911573538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One thing (large thing) I haven't addressed is the ServerJS standard that's in formulation. Someday,.. but for now I'm just playing around. For example; I can now execute code on the server that looks something like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;function getUsers(type) {&lt;br /&gt; return $(['getUsers', 'usertype=' + type], function() {&lt;br /&gt;  var s = {&lt;br /&gt;   title: 'Users of Type: ' + type,&lt;br /&gt;   data: new Array()&lt;br /&gt;  };&lt;br /&gt;  db.query('select * from grv_user').each(function(o) {&lt;br /&gt;   s.data.push(o);&lt;br /&gt;  });&lt;br /&gt;  return s;&lt;br /&gt; });&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This example function prepares a response object (that will be JSON'ized), reads a list of data from the default database, and handles caching of this result in a tag based cache.&lt;br /&gt;&lt;br /&gt;I'm personally quite happy with my new playground; I can squeeze a lot of functionality into a few lines. (Not that that's the point, but my RSI appreciates it). The serverside framework I've put in place includes a stripped version of the &lt;a href="http://mootools.net/"&gt;MooTools&lt;/a&gt; Framework. Fabulous!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-6410868503852554227?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/6410868503852554227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=6410868503852554227' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/6410868503852554227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/6410868503852554227'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2009/07/some-server-js.html' title='Some Server JS'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_2MGAYAM8yks/SlWydOJpRiI/AAAAAAAAAC0/5KcnuDM9ei4/s72-c/GravityStack.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-4711449183285318544</id><published>2009-02-23T01:31:00.000-08:00</published><updated>2009-02-23T01:35:35.018-08:00</updated><title type='text'>Fedora 10 - Geforce 6800</title><content type='html'>Recently I installed Fedora 10 and ran into some difficulty trying to install the correct drivers for my graphics card - a GeForce 6800. After much searching, and re-installing a couple times, I found these simple steps to be my answer.&lt;br /&gt;&lt;br /&gt;Firstly from &lt;a href="http://forums.fedoraforum.org/showpost.php?p=1114769&amp;amp;postcount=1"&gt;http://forums.fedoraforum.org/showpost.php?p=1114769&amp;amp;postcount=1&lt;/a&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;su&lt;br /&gt;rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm&lt;br /&gt;yum install kmod-nvidia xorg-x11-drv-nvidia-libs.i386 xorg-x11-drv-nvidia-libs.x86_64&lt;br /&gt;reboot&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then of course I wanted the CompizFusion desktop effects.&lt;br /&gt;From &lt;a href="http://www.fedoraguide.info/index.php?title=Main_Page#Applications"&gt;http://www.fedoraguide.info/index.php?title=Main_Page#Applications&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;su -c 'yum -y install compiz-fusion-extras libcompizconfig ccsm compiz-manager libcompizconfig'&lt;br /&gt;su -c 'yum -y install compiz-fusion-extras-gnome fusion-icon-gtk'&lt;br /&gt;compiz-manager&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This took my Fedora 10 out the box, from being pretty good to looking flippen great!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-4711449183285318544?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/4711449183285318544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=4711449183285318544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/4711449183285318544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/4711449183285318544'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2009/02/fedora-10-geforce-6800.html' title='Fedora 10 - Geforce 6800'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-3437998555161102951</id><published>2008-12-25T14:22:00.000-08:00</published><updated>2008-12-25T15:20:07.139-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='W1020'/><category scheme='http://www.blogger.com/atom/ns#' term='digital photo frame'/><category scheme='http://www.blogger.com/atom/ns#' term='media'/><category scheme='http://www.blogger.com/atom/ns#' term='rss'/><title type='text'>My First Digital Frame</title><content type='html'>Yesterday I bought my first digital photo frame. It's a &lt;a href="http://www.kodak.com/eknec/PageQuerier.jhtml?pq-path=12615&amp;amp;pq-locale=en_GB"&gt;Kodak W1020&lt;/a&gt;. It has its ups and downs (imho), and I've been stirring up some ideas for this new gizmo of mine.&lt;br /&gt;&lt;br /&gt;The major ups:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It's wireless&lt;/li&gt;&lt;li&gt;It reads from media rss streams&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Without too much hassle I plugged in the power, latched into my home wireless network, and had connected to my &lt;a href="http://flickr.com/photos/patcullen/"&gt;Flickr&lt;/a&gt; account. Soon after I connected to the open net the frame asked if I wanted to upgrade my firmware - I did so and it was painless and easy; I would reccomend doing this.&lt;/p&gt;&lt;p&gt;My major downs:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;My second button on the vertical menu does not work. Darnit!! Most of the time it is used as a play button and I can get around not having it... but its just damned annoying.&lt;/li&gt;&lt;li&gt;Minimum change time of 3 seconds... would like it to be smaller (I'll explain why later).&lt;/li&gt;&lt;li&gt;I cannot get my (vertical) images to 'Fill screen'? (Image's can either leave space either side or get cropped in order to fill display real estate.. I prefer fill screen)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;So I'm happy with the purchase but I think they've got a couple things to fix for the firmware upgrades.&lt;/p&gt;&lt;p&gt;Congrats and crits aside.. Here's my latest idea: Since the frame can read and display images from a properly formatted &lt;a href="http://en.wikipedia.org/wiki/Media_RSS"&gt;media-RSS feed&lt;/a&gt;, host such an RSS service on a machine on the same local network as the frame. &lt;/p&gt;&lt;p&gt;This RSS feed could/would be the aggregation of interesting media sources such as my Flickr stream, my contacts photos, youtube videos, etc. Further more I would like to be able to plugin RSS feeds that provide small amounts of textual info, like microblogging feeds or news headlines. The textual info should be rendered to an image, which is then cached on the stream server, and can then be picked up by the digital frame. &lt;/p&gt;&lt;p&gt;This is all a means to an end. The main idea here is that now I can write a small app that polls my email accounts. Then when I get an email I can push an alert to a text rss stream, which will feed into my RSS engine thingy, render the relevant picture, and ultimately get displayed on my digital picture frame sitting in front of me on my desk.&lt;/p&gt;&lt;p&gt;Further down the line I thought it would be great to hook the frame up to my VOIP client. So as I get a call, the frame should display who's calling me with a pretty picture of them. The problem here is latency of the picture change on the frame. 3 second changes for something more realtime as this is not practical. One last idea,.. Winamp plugin: on song change - display song details?.. &lt;/p&gt;&lt;p&gt;The more I develop this idea in my head the faster it grows - cant wait to make this (or for someone else to make it first).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-3437998555161102951?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/3437998555161102951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=3437998555161102951' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/3437998555161102951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/3437998555161102951'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2008/12/my-first-digital-frame.html' title='My First Digital Frame'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-4926068036373715626</id><published>2008-12-02T02:55:00.000-08:00</published><updated>2008-12-02T03:36:12.894-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open'/><category scheme='http://www.blogger.com/atom/ns#' term='desktop'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>I want a web desktop</title><content type='html'>It seems the web is awaking to the concept of interoperability between service providers. I read somewhere, and so true it is, that it's ironic how, in a sense service provision is returning to the 'mainframe'. The web as a platform offers so many advantages over the desktop platform, but in many regards the desktop is still the &lt;em&gt;home&lt;/em&gt; to the user. So; how can we get the web up to speed - not to replace the desktop, but to be as comfortable, secure and integrated as the desktop? What do we need? What does the user want? What do I want?&lt;br /&gt;Here's a couple of ideas... It's not an exhaustive list; It's just some ideas.&lt;br /&gt;&lt;b&gt;The web in the future:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Everything is open&lt;/li&gt;&lt;li&gt;Everything is decentralized&lt;br /&gt;&lt;/li&gt;&lt;li&gt;User space is shared and accessible&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The user has control of their own information&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;So How do we decentralize our systems in an open manner?&lt;/b&gt;&lt;br /&gt;Security and data integrity is a critical issue shaping the web. Decentralization and openness always comes coupled with policies and procedures. So how do we share personal and business intelligence in a fair and controlled manner? If a user has permission to view or mash information on one system, how can we securely let him reference that information from another system? (I realize this is a paragraph of questions,...)&lt;br /&gt;It is becoming more frequent to perform more of our daily work functions online; The trend of remote storage and processing is undeniable. The internet computing cloud is storming. I myself do not store email, pictures, video or music on my local computer; All of these are provided by -free- online services. In my work environment 4 out of the 6 regular applications I use all reside on the intranet.&lt;br /&gt;Another interesting thing to watch is the commercial adoption of social engineering (or more generally any 'Web2.0') platforms. Work environments, at least the ones I've worked in, either embrace the evolving web, or try and firewall it out. I always enjoy hearing of success stories from organisations that have embraced the evolving web; One of the examples that spring to mind is that of the micromessaging arena. Many companies now use Twitter et al to communicate within their organisation - and find it very effective. There are now many comercial micromessaging platforms that offer packages to willing corporates that want the paid support. So what - Why am I mentioning this?&lt;br /&gt;&lt;br /&gt;I believe the web is the dominant application domain now - and if your industry doens't fit into this rather swooping statement then, I beg to argue, that it most likely will in the future. Now I can either be in the company that waits to see what happens with the web and design my business around accordingly, or I can storm ahead and be on the forefront of the evolving web platform. &lt;em&gt;Gotto admit - I prefer setting trends rather than following them.&lt;/em&gt;&lt;br /&gt;What do I want my web platform to be? As a starting point I'm just going to throw together another list. This will be a few things that I would like to see out of a web framework, and the web in general. [Some are slightly redundant, but I thought it coloured in the picture nicely]&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;I, as a user, want control.&lt;/li&gt;&lt;li&gt;As a user, when I open my browser (or log on to the internet per say), I want to have access to all my information, all the time.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I need a clear entry point or a mechanism to manage my online life.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I want a platform that will abstract (hence simplify) the communication between different flavours of the same product type.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;em&gt;Example: Which Instant Messenger do you use? AIM, Gtalk, Skype, SIP, Gizmo, XMPP? What about your friends? This issue has been cordially addressed with the applicaiton of XMPP and multi-protocol clients, but this is an example of the open web and the need to find common ground between service providers.&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I want to be able to choose where I store my personal data and for that data to be seemlessly accessible from everywhere else I go.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;em&gt;Exmaple: If I'm at work, I do infact want to set my web-desktop background to that picture of my wife and kids. Sure some business policies will prohibit personal data accessability, but for those work environments that aren't so, dare I say 'old-school', as to lock down everything, I want this accessability.&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I want clear ownership of some of my information.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;em&gt;Example: I want to store my financials and budgets on my FTP server at home, but these should be as readily available to myself, as my online photo album. [And no,.. I don't want to carry around a portable FTP client on USB.] I want a web-desktop that seemlessly integrates with my online data, and my personal data at home.&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Some people are technical,... some are not. This is a fact of life. If the system does fit a decentralized model, the take-home installer should be simple to setup.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;em&gt;I want to addon to my web desktop system and code new plugins - My sister does not; She just wants to click once and install - Furthermore, my mother doesn't understand what installing is, she just wants to logon to a hosted solution.&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;My web-desktop system I host at home, the one I subscribe to online, and the one we use at work should in some manner communicate and synchronize.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I want to access my web-desktop from a plethora of different devices; &lt;em&gt;Such as my computer, mobile phone, &lt;a href="http://en.wikipedia.org/wiki/UMPC"&gt;UMPC&lt;/a&gt;, or any other capable computing device. &lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Well some might say that these things are highly improbable. How will the world accept such infusion between all of a persons online life?&lt;br /&gt;&lt;br /&gt;Will business's ever let me have access to my personal desktop (or portions thereof) at work?&lt;br /&gt;&lt;br /&gt;How many end users actually understand the concept of decentralization? (Few would be my guess.) I tried to explain OpenID's to my wife once and she could not see the purpose of it.Worst case scenario,.. lets just wait for &lt;a href="http://en.wikipedia.org/wiki/Generation_Y"&gt;my generation&lt;/a&gt; to pass. I would put money on it that in ten years every site will be OpenID enabled. The problem with most users in this 'internet generation', is that &lt;a href="http://en.wikipedia.org/wiki/Generation_Y#Relationship_with_technology"&gt;even though we all know how to use a computer&lt;/a&gt; , unless there's a need to know, we don't want to. It seems the best time to teach a generation of users new concepts, is in their infancy. In some ways this makes me sad that the digital-experience I yearn to have will only really become a reality for &lt;a href="http://en.wikipedia.org/wiki/Generation_Z"&gt;the next generation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;So what do I want?&lt;/span&gt;&lt;br /&gt;&lt;em&gt;I want a desktop for the web.&lt;/em&gt; A platform for integrating all my online escapades into a web platform. My very own personal web desktop.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-4926068036373715626?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/4926068036373715626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=4926068036373715626' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/4926068036373715626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/4926068036373715626'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2008/12/i-want-web-desktop.html' title='I want a web desktop'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-8176326999491177914</id><published>2008-11-18T02:24:00.001-08:00</published><updated>2008-11-18T03:20:15.625-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='webcam'/><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='image'/><category scheme='http://www.blogger.com/atom/ns#' term='compare'/><title type='text'>Java Image Comparison - Motion Detection</title><content type='html'>So this is what I've managed to do with some simple image comparison thus far... I've repackaged it all to try make some sense of it; The sample apps reside in &lt;span style="font-style: italic;"&gt;com.b22222.app.webcam&lt;/span&gt;; The most informative app probably being &lt;span style="font-style: italic;"&gt;WebCamState.java&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I've simply zipped my source folder. I use eclipse at this present time and have left my project settings file in the archive. The sample apps require java's JMF to be installed on the system.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://b22222.com/files/wcam.zip"&gt;The source zipped.&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What are my goals? &lt;/span&gt;&lt;br /&gt;I want to design some kind of (physical) contact free input system; This system should be as functional as, or more than the standard keyboard and mouse. Now that's the main goal... A bunch of other possibilities have come alive since I've been tinkering around. I can now set my camera facing the front door and get email alerts at work (with pictures of the culprit) when motion is detected at home. I've also got plans in the pipe to design a kinetic sculpture that reacts to motion in front of it. The list continues.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Where am I now?&lt;/span&gt;&lt;br /&gt;I can continually read from a live stream of webcam video and dismantle the picture into more pliable data. With this data I can pick up motion hotspots, primitive edge detection (particularly bad on blunt edges), and some noise reduction. All this is demo'ed in the attached library of code. Please keep this in mind that I develop in spare time by myself who has never studied image or video in large depth - I mostly only design as much I need to progress onto my next goal.&lt;br /&gt;&lt;br /&gt;Most general application settings end up in my settings.ini file. This might be a good place to start tinkering with values if you want to poke and prod my library. I had tried to use a neural network to interpret webcam input but it never really worked. I have left my code there in case I revisit that idea. The neural net library I used is called Joone and is freely downloadable.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Details of how I dismantle an image:&lt;/span&gt;&lt;br /&gt;Although I have copied the code in several places throughout, the best piece of code to reference this process is probably &lt;span style="font-style: italic;"&gt;com.b22222.routine.ImageHelper&lt;/span&gt;.&lt;br /&gt;A &lt;span style="font-style: italic;"&gt;BufferedImage&lt;/span&gt; (Raw Image pixel data) is drawn from the webcam source. This image is converted into what I called a &lt;span style="font-style: italic;"&gt;State&lt;/span&gt; object. A State is simply a 2d array of integers. At the moment this array represents the brightness on the pixels from the image. (I plan to somehow incorporate hue difference into this as well in the future.) From here you should partly forget that you are working with images, but rather arrays of numbers. I did this so that from here our code could be used for any map of numbers - Say cloud patterns, or temperature maps. (Not that I ever intend to go down this road myself)&lt;br /&gt;&lt;br /&gt;A &lt;span style="font-style: italic;"&gt;Comparison&lt;/span&gt; is an object drawn from the difference of two &lt;span style="font-style: italic;"&gt;States&lt;/span&gt;. If I remember correctly I just subtracted one array from the other. We now have a new array of numbers representing the difference between to images. This may help two fold; a) I'm obviously searching for motion, and b) if 70% of an image rarely changes then we want to consciously ignore it.&lt;br /&gt;&lt;br /&gt;Next a primitive &lt;span style="font-style: italic;"&gt;EdgeDetector &lt;/span&gt;object can process the change map to emphasize the edges of island and lines. This is not an essential stage and could quite likely be taken out if it is silencing too much useful data.&lt;br /&gt;&lt;br /&gt;After that I found two statistics of the data in the array: The average, and the *standard-deviation. Then using these multiplied by factors specified in the settings file, if the value in the array is not greater than the average + std-dev, then it is set to zero. This helps clean up small noise generated through subtle light differences, etc.&lt;br /&gt;&lt;br /&gt;The array that is now left contains data that is somewhat usefull to me. And hopefully you :-)&lt;br /&gt;&lt;br /&gt;*Ps: I always mixed up standard deviantion and variance. It's one of the two. I think.&lt;br /&gt;&lt;br /&gt;This can all be seen in action in the &lt;span style="font-style: italic;"&gt;com.b22222.app.webcam.WebCamState&lt;/span&gt; class.&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;Instructions for use: Run the app. Wait for the video feed to register in the left window. (Mine usually takes a few seconds). Then click the left button titled 'Capture Base Image'. This will set the image to compare against for motion detection. Now click the right button titled 'Start Compare...'.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here is a demo of when I tuned my settings to pick up my black pen against a white wall. (The red circles are rendered onto the image in areas of interest. The double green circle is the center of gravity of the points of interest)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_2MGAYAM8yks/SSKcM8mKLGI/AAAAAAAAACY/1L2wN9q5Dgk/s1600-h/pen_detect_01.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 174px;" src="http://2.bp.blogspot.com/_2MGAYAM8yks/SSKcM8mKLGI/AAAAAAAAACY/1L2wN9q5Dgk/s320/pen_detect_01.jpeg" alt="" id="BLOGGER_PHOTO_ID_5269946260215442530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What do I plan on doing next?&lt;/span&gt;&lt;br /&gt;Creating a more 'opaque' input interface. This interface would expose some events and hide all of the workings by the libraries described above. This interface will most likely provide some kind of coordinate information. I would also like to provide, but have no idea how, a polygon best representing the image input.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Long term?&lt;/span&gt;&lt;br /&gt;I'm thinking of a menu/list based input system. A user would navigate from menu to menu choosing options which would either automate keyboard input or mouse input. This is in part a resignation because I don't think getting pixel perfect mouse positioning will be viable with webcam input; but storing keyboard/mouse inputs in templates, sequences and menus could reduce work for repetitive actions normally done on these devices.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;In case you missed it up top, &lt;a href="http://b22222.com/files/wcam.zip"&gt;this is the source code.&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-8176326999491177914?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/8176326999491177914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=8176326999491177914' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/8176326999491177914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/8176326999491177914'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2008/11/java-image-comparison.html' title='Java Image Comparison - Motion Detection'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_2MGAYAM8yks/SSKcM8mKLGI/AAAAAAAAACY/1L2wN9q5Dgk/s72-c/pen_detect_01.jpeg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-8785508343448002048</id><published>2008-08-28T08:52:00.000-07:00</published><updated>2008-08-28T09:23:50.749-07:00</updated><title type='text'>Mootools Block Fx</title><content type='html'>So I found &lt;a href="http://gruppler.dojotoolkit.org/"&gt;http://gruppler.dojotoolkit.org/&lt;/a&gt; - It looks really great - Only problem is I'm a proud Mootools fan... So I whipped together a mimic - &lt;a href="http://b22222.com/files/mooblock.html"&gt;Fx.Block&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Fx.Block is a simple way of applying morphs to a set of clipped blocks achieving a greater effect. I thought it might add consistency to use a similar build up as morph and tween. I know my code will serve as an abomination to the general Mootools community; I've most likely transgressed every second Mootools design pattern. The effects are slow and coded ugly. But I achived what I wanted: a start. I encourage everyone to please try do better and leave links to your work in the comments. Hopefully someone else can take this and reshape it into something more production ready.&lt;br /&gt;&lt;br /&gt;Ideas moving forward:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Chaining effects to produce even more complex animations.&lt;/li&gt;&lt;li&gt;Better code and class structure that facilitates extending effects.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Fx.Block isnt my favourite name - How about Fx.Compund? Fx.Anim?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;An example of using this code:&lt;br /&gt;&lt;blockquote&gt;new Fx.Block($('element'), { effect: Fx.Block.Explode }).start();&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;If you didn't catch it up top, the code and examples can be found at:&lt;br /&gt;&lt;a href="http://b22222.com/files/mooblock.html"&gt;http://b22222.com/files/mooblock.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-8785508343448002048?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/8785508343448002048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=8785508343448002048' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/8785508343448002048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/8785508343448002048'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2008/08/mootools-block-fx.html' title='Mootools Block Fx'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-2998559298682717866</id><published>2008-07-17T05:08:00.000-07:00</published><updated>2009-03-13T06:30:59.390-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='image'/><category scheme='http://www.blogger.com/atom/ns#' term='JMF'/><category scheme='http://www.blogger.com/atom/ns#' term='compare'/><category scheme='http://www.blogger.com/atom/ns#' term='jpeg'/><category scheme='http://www.blogger.com/atom/ns#' term='detection'/><category scheme='http://www.blogger.com/atom/ns#' term='motion'/><title type='text'>Java Image Comparison / Motion Detection</title><content type='html'>I've recently purchased a wireless security camera which is very conveniently smaller than a cubic inch. Well the imagination runs wild once you've got this device,... Who can I spy on? What can I monitor? What does the domestic worker actually do when I'm at work?.. and so the list continues.&lt;br /&gt;&lt;br /&gt;I played around in java's JMF for a day and soon had a small app that recorded one still frame per second. Now I could review the recorded images when getting home at the end of the day. Hovever, 1 frame per second equates to 36000 images over the 10 hour work day that I'm not at home! I don't really want to record motion video - yet. I'm still happy with working with images,.. albeit a lot of them. So now I've got a haystack of images, and presumably somewhere inside of them is the needle of interesting footage.&lt;br /&gt;&lt;br /&gt;I searched pretty hard for a Java image comparison class or library and could not find anything. Just a whole bunch of forum posts declaring how advanced the topic can get. So sleeves up, I created my own rudimentary ImageCompare class. (&lt;a href="http://b22222.com/files/imagecompare.zip"&gt;Download Link&lt;/a&gt;). It's not bulletproof, and its not lightspeed, but for my purposes it's done the job perfectly.&lt;br /&gt;&lt;br /&gt;The class breaks up the images into smaller regions and compares the brightness of each corresponding region. If any particular pair of regions are vastly different then something must have changed in that part of the image.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How to use:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;// Create a compare object specifying the 2 images for comparison.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ImageCompare ic = new ImageCompare("c:\\test1.jpg", "c:\\test2.jpg");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;// Set the comparison parameters.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;//   (num vertical regions, num horizontal regions, sensitivity, stabilizer)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ic.setParameters(8, 6, 5, 10);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;// Display some indication of the differences&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt; in the image.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ic.setDebugMode(2);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;// Compare.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ic.compare();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;// Display if these images are considered a match according to our parameters.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;System.out.println("Match: " + ic.match());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;// If its not a match then write a file to show changed regions.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;if (!ic.match()) saveJPG(ic.getChangeIndicator(), "c:\\changes.jpg");&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;The setParameters() accepts four parameters.&lt;ol&gt;&lt;li&gt;The number of vertical columns in the comparison grid.&lt;/li&gt;&lt;li&gt;The number of horizontal rows in the comparison grid.&lt;/li&gt;&lt;li&gt;A threshold value. If the difference in brightness exceeds this then the region is considered different.&lt;/li&gt;&lt;li&gt;A stabilization factor. In future I will calculate this automatically since it is proportional to parameters 1 and 2.&lt;/li&gt;&lt;/ol&gt;setDebugMode() is completely optional and only really usefull while designing your parameters.&lt;br /&gt;&lt;br /&gt;After running compare(), match() will hold the result.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Example:&lt;/span&gt;&lt;br /&gt;The above code was run on the following two images:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_2MGAYAM8yks/SH9TxqoGivI/AAAAAAAAAB8/KP7p_5-mWy0/s1600-h/test1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_2MGAYAM8yks/SH9TxqoGivI/AAAAAAAAAB8/KP7p_5-mWy0/s400/test1.jpg" alt="" id="BLOGGER_PHOTO_ID_5223986205494250226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_2MGAYAM8yks/SH9Tx6rFYYI/AAAAAAAAACE/03EaDz60esI/s1600-h/test2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_2MGAYAM8yks/SH9Tx6rFYYI/AAAAAAAAACE/03EaDz60esI/s400/test2.jpg" alt="" id="BLOGGER_PHOTO_ID_5223986209801724290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The console output looked like this:&lt;br /&gt;&lt;blockquote&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;|0,0,0,0,0,0,1,0|&lt;br /&gt;|0,0,0,0,0,0,0,1|&lt;br /&gt;|0,0,0,0,0,0,0,3|&lt;br /&gt;|0,0,0,0,0,1,1,8|&lt;br /&gt;|0,0,0,0,0,0,0,8|&lt;br /&gt;|0,0,0,0,0,1,0,0|&lt;br /&gt;Match: false&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;... and the image output (changes.jpg) looked like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_2MGAYAM8yks/SH9WHj6aTUI/AAAAAAAAACM/I4rYkEy0IOM/s1600-h/changes.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_2MGAYAM8yks/SH9WHj6aTUI/AAAAAAAAACM/I4rYkEy0IOM/s400/changes.jpg" alt="" id="BLOGGER_PHOTO_ID_5223988780672372034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On my todo list:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Provide an array/vector of changed regions, or number of changed regions.&lt;/li&gt;&lt;li&gt;Heuristically determine a stabilizing factor, thus not having to specifying one.&lt;/li&gt;&lt;li&gt;Allow for the input of area vectors before comparison for the purpose of excluding or only checking these areas.&lt;/li&gt;&lt;li&gt;I'd also like to integrate this into a more real time solution that then exposes events and the like.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;What you see here is a very alpha stage development. Take it and use it if you like, but do so at your own risk,.. or frustration. I'll try post some updates to this code as and when significant changes have been made.&lt;br /&gt;&lt;br /&gt;Follow-up post: &lt;a href="http://mindmeat.blogspot.com/2008/11/java-image-comparison.html"&gt;http://mindmeat.blogspot.com/2008/11/java-image-comparison.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-2998559298682717866?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/2998559298682717866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=2998559298682717866' title='21 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/2998559298682717866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/2998559298682717866'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2008/07/java-image-comparison.html' title='Java Image Comparison / Motion Detection'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_2MGAYAM8yks/SH9TxqoGivI/AAAAAAAAAB8/KP7p_5-mWy0/s72-c/test1.jpg' height='72' width='72'/><thr:total>21</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-7822110480762338471</id><published>2008-06-06T03:55:00.000-07:00</published><updated>2008-06-06T05:49:47.433-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='prime'/><category scheme='http://www.blogger.com/atom/ns#' term='answer'/><category scheme='http://www.blogger.com/atom/ns#' term='treasure hunt'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google Treasure Hunt - Question 3 &amp; 4</title><content type='html'>I grouped my solutions to questions 3 and 4 together for two reasons.&lt;br /&gt;a) Life is short - I'm saving time.&lt;br /&gt;b) Question 3 didn't involve me writing a program to solve it and there's not much to talk about anyway.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;The competition can be found here: &lt;a href="http://treasurehunt.appspot.com/"&gt;http://treasurehunt.appspot.com/&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Question 3&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;A packet is sent out from host H with a destination of 41.196.52.48. Which nodes does the packet pass through on its way to the destination? (include start and final node in your answer)&lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;They then provide you with a diagram and a routing table.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Personally I thought writing a program for this would be more labor than automation. So I pulled out the local handy spreadsheet application and pasted in the routing table. Then node by node, traced the path of the packet going through the network. My solution passed through 8 or 9 nodes to reach its destination. &lt;span style="font-style: italic;"&gt;Waiting the 8 hours for my confirmation was more challenging than the question.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Question 4&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;Find the smallest number that can be expressed as&lt;br /&gt;the sum of 3 consecutive prime numbers,&lt;br /&gt;the sum of 23 consecutive prime numbers,&lt;br /&gt;the sum of 999 consecutive prime numbers,&lt;br /&gt;the sum of 1489 consecutive prime numbers,&lt;br /&gt;and is itself a prime number.&lt;br /&gt;&lt;br /&gt;For example, 41 is the smallest prime number that can be expressed as&lt;br /&gt;the sum of 3 consecutive primes (11 + 13 + 17 = 41) and&lt;br /&gt;the sum of 6 consecutive primes (2 + 3 + 5 + 7 + 11 + 13 = 41). &lt;/blockquote&gt;A funny story here: This question, if my calculations were correct, was released around 11:15pm GMT, around 01:15am in Durban ZA where I live. I couldn't wait for morning so I set my clock for 01:30am to specially get up and read the question. The funny thing about this is the next day someone said to me; 'I bet there are people that get up in the middle of the night to solve these things'. I just kept quiet.&lt;br /&gt;&lt;br /&gt;Well I slept on it -literally- and made &lt;a href="http://b22222.com/files/GoogleQ4.java"&gt;this Java app&lt;/a&gt; the next day.&lt;br /&gt;To run:&lt;br /&gt;&lt;blockquote&gt;java.exe GoogleQ4 40 1489 999 23 3&lt;/blockquote&gt;&lt;br /&gt;The first argument is the certainty factor for testing primes. The rest of the arguments are obviously the parameters from the question.&lt;br /&gt;For the parameters quoted above my program gave the following output: &lt;span style="font-style:italic;"&gt;(I haven't verified this result..)&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;********************************************&lt;br /&gt;9491851    -&gt; computed in 141 seconds.&lt;br /&gt;********************************************&lt;/blockquote&gt;A further explanation of my logic:&lt;br /&gt;Now I'm no mathematician so I'm not aware of any direct formula to solve this puppy; &lt;span style="font-style: italic;"&gt;So I'll resort to a mechanism of over complicated logic&lt;/span&gt;. I visualized this problem as a set of 'Slide Rule Thing-a-ma-gigs' sliding over the prime number set.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_2MGAYAM8yks/SEkosM1bhcI/AAAAAAAAAB0/iZQmshl0V7s/s1600-h/primesrule1.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_2MGAYAM8yks/SEkosM1bhcI/AAAAAAAAAB0/iZQmshl0V7s/s400/primesrule1.PNG" alt="" id="BLOGGER_PHOTO_ID_5208739183855371714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The example in the image above doesn't balance but use it to visualize this process:&lt;br /&gt;1) Drag the first slide to its next offset.&lt;br /&gt;2) Calculate the slides new total. (All the numbers it hovers over)&lt;br /&gt;3) Move to the next slide above it.&lt;br /&gt;4) Drag this slide from an offset where the slides total will be smaller than the previous slides total, to somewhere where the slides total is greater. If a matching total is found then we can recurse to steps 3 and 4 for all our other slides.&lt;br /&gt;5) When a similar total is found for all slides then we have our answer.&lt;br /&gt;&lt;br /&gt;The method I have used requires a lot of array manipulation. I figure it makes sense to enter your arguments greatest to smallest as this will greatly reduce the amount of work the machine will have to do.&lt;br /&gt;&lt;br /&gt;Other things that might help to speed up the slide rule machine:&lt;br /&gt;- The use of vectors or linked lists (something not fixed array based) would probably help.&lt;br /&gt;- A better algorithm to position the initial offset of each slide when recursing to that next slide. Originally I just started each slide from 2 everytime. gasp!. After a while I realized I was moving every slide 1000 odd positions before it was even close to solving the answer. Currently it starts the next slide where the previous left off.&lt;br /&gt;&lt;br /&gt;Well thats all there is to my solution. Probably not the best, but I got the answer right first time. Whoopee.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-7822110480762338471?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/7822110480762338471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=7822110480762338471' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/7822110480762338471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/7822110480762338471'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2008/06/google-treasure-hunt-question-3-4.html' title='Google Treasure Hunt - Question 3 &amp; 4'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_2MGAYAM8yks/SEkosM1bhcI/AAAAAAAAAB0/iZQmshl0V7s/s72-c/primesrule1.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-7501257994639099139</id><published>2008-05-29T04:20:00.000-07:00</published><updated>2008-05-29T05:55:49.117-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='answer'/><category scheme='http://www.blogger.com/atom/ns#' term='treasure hunt'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='zip'/><title type='text'>Google Treasure Hunt 2008 - Question 2</title><content type='html'>This is a continuation of my solutions to Google's treasure hunt. My post on question 1 can be found &lt;a href="http://mindmeat.blogspot.com/2008/05/google-treasure-hunt-2008.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The Question:&lt;br /&gt;&lt;blockquote&gt;Here is a random zip archive for you to download:&lt;br /&gt;    GoogleTreasureHunt08_123456123456123456.zip&lt;br /&gt;&lt;br /&gt;Unzip the archive, then process the resulting files to obtain a numeric result. You'll be taking the sum of lines from files matching a certain description, and multiplying those sums together to obtain a final result. Note that files have many different extensions, like '.pdf' and '.js', but all are plain text files containing a small number of lines of text.&lt;br /&gt;&lt;br /&gt;Sum of line 2 for all files with path or name containing foo and ending in .xml&lt;br /&gt;Sum of line 4 for all files with path or name containing mno and ending in .pdf&lt;br /&gt;Hint: If the requested line does not exist, do not increment the sum.&lt;br /&gt;&lt;br /&gt;Multiply all the above sums together and enter the product below.&lt;/blockquote&gt;&lt;br /&gt;Well this question begs for a [program,script,bash stmt] to be written. It doesn't even begin to make sense to do this manually..&lt;br /&gt;&lt;br /&gt;Here's my Java source: &lt;a href="http://b22222.com/files/GoogleQuestion2.java"&gt;http://b22222.com/files/GoogleQuestion2.java&lt;/a&gt;&lt;br /&gt;One just needs to modify the set of rules and the location of the unzipped folder.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;I just posted my answer for question 3; I have to wait 8 hours for the result! Oh well, fingers crossed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Happy Googling!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-7501257994639099139?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/7501257994639099139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=7501257994639099139' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/7501257994639099139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/7501257994639099139'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2008/05/google-treasure-hunt-2008-question-2.html' title='Google Treasure Hunt 2008 - Question 2'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-7408275307161561007</id><published>2008-05-19T04:50:00.000-07:00</published><updated>2008-05-21T05:31:39.358-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='robot'/><category scheme='http://www.blogger.com/atom/ns#' term='answer'/><category scheme='http://www.blogger.com/atom/ns#' term='treasure hunt'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google Treasure Hunt 2008</title><content type='html'>So Google is running a &lt;a href="http://treasurehunt.appspot.com/"&gt;treasure hunt&lt;/a&gt;. 1 puzzle a week for 4 weeks. I love puzzles.&lt;br /&gt;&lt;br /&gt;The first puzzle they have up goes something like this:&lt;br /&gt;&lt;blockquote&gt;A robot is located at the top-left corner of a 52 x 52 grid. The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid. How many possible unique paths are there?&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;For a while I tried to picture the mechanics of this problem in my head. It was too much,.. I would soon get lost trying to keep track of a dozen different paths and shapes all at once. So i resorted to paper. Not too long and I was having good progress. I would draw grids with numbers in each cell representing how many paths could be made from that cell to the bottom right. The trick was to start small. &lt;br /&gt;&lt;br /&gt;I drew grids for 2x2 and 3x3. I still couldnt work out the pattern,.. Then I drew 2x3 and 3x2 grids; Bingo. &lt;br /&gt;&lt;br /&gt;&lt;img src="http://b22222.com/files/map1.PNG" align="center" /&gt;&lt;br /&gt;&lt;br /&gt;Overlay/Imageine a 3x2 and 2x3 grid at the bottom-right of the grid above; To work out the total number of paths from the last missing cell (of 3x3) is simply all paths available in both the 2x3 and 3x2 grids. Still dont understand,.. &lt;br /&gt;Simply put: The number of unique paths from any cell to the finish is equal to the sum of, the number of paths from the cell on the right, and the cell below it.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://b22222.com/files/GoogleQuestion1.java"&gt;Here is the Java source&lt;/a&gt; I used to calculate my grid (55 x 60). My answer was 696940125414123253093858308567840. &lt;br /&gt;&lt;br /&gt;I would be interested in looking over the mathematical formula that calculates this directly incase anyone happens to know it. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Happy treasure hunting!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;PS: My code calculates the map upside down and other way around... In other words, the robot is going from bottom right to top left. Not the same as the picture above.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-7408275307161561007?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/7408275307161561007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=7408275307161561007' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/7408275307161561007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/7408275307161561007'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2008/05/google-treasure-hunt-2008.html' title='Google Treasure Hunt 2008'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-5986686597273633706</id><published>2008-04-30T05:26:00.000-07:00</published><updated>2008-04-30T05:29:57.827-07:00</updated><title type='text'>MxPx - Gimme Christmas</title><content type='html'>&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/OegXmMdaWWA&amp;hl=en&amp;rel=0"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/OegXmMdaWWA&amp;hl=en&amp;rel=0" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-5986686597273633706?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/5986686597273633706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=5986686597273633706' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/5986686597273633706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/5986686597273633706'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2008/04/mxpx-gimme-christmas.html' title='MxPx - Gimme Christmas'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-2019308965751913119</id><published>2008-04-02T01:27:00.000-07:00</published><updated>2008-04-02T01:36:23.511-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cellphone'/><category scheme='http://www.blogger.com/atom/ns#' term='N73'/><category scheme='http://www.blogger.com/atom/ns#' term='Time'/><title type='text'>Cellphone time</title><content type='html'>Today I made a startling discovery on my cellphone. I started a contract about 5 months ago and I received an N73. Today I was curious about how long one of the calls I had made; Just to get a better concept of estimating how long I've been on calls. (My phone doesn't display call duration after the call ends)&lt;br /&gt;&lt;br /&gt;So I go to the call log and call durations.... Well I was surprised, because the phone had kept statistics on total out call duration, total in call duration, and the total of those together. I had spent, in 5 months of having my phone, 23 hrs and 53 minutes on the phone. omw, I don't even use my phone a lot - just goes to show how technology has fused itself into our everyday lives.&lt;br /&gt;&lt;br /&gt;1 Whole day of my life in 5 months was spent jabbing away into a hunk of metal and plastic.&lt;br /&gt;&lt;br /&gt;Time is a commodity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-2019308965751913119?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/2019308965751913119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=2019308965751913119' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/2019308965751913119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/2019308965751913119'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2008/04/cellphone-time.html' title='Cellphone time'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-5768292697824556732</id><published>2008-04-01T06:09:00.000-07:00</published><updated>2008-04-01T07:28:58.327-07:00</updated><title type='text'>BR cleaner VS other cleaners</title><content type='html'>I've always got a bit of a mess on my hands when I'm finished CSS'ing an HTML form. With all the different forces shaping form development I sometimes find it difficult to get a form to look exactly the same in every browser, and to look pretty when degraded out of CSS.&lt;br /&gt;&lt;br /&gt;Traditionally I've used divs or spans as a 'cleaner' element to clear the floats above it. I don't know where I learned this common trick, but for as long as I can remember now I've used the cleaner class and some empty divs round around the form to try correct line breaks and the form layout.&lt;br /&gt;&lt;br /&gt;Completely randomely I tried something different today. I used a line break element as my cleaner. omg - Why have I never done this before? Now my line breaks act as line breaks when&lt;br /&gt;CSS fails, and then they act as cleaners with CSS enabled. So far its been too good to be true,.. literally; I'm waiting to see why I haven't seen this elsewhere - Waiting to see where it breaks.&lt;br /&gt;&lt;br /&gt;Here's a demo of what my cleaners now look like:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;style&amp;gt;&lt;br /&gt;br {&lt;br /&gt;    display: none;&lt;br /&gt;}&lt;br /&gt;.cln {&lt;br /&gt;    display: block;&lt;br /&gt;    clear: both;&lt;br /&gt;}&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;... blah blah fish paste ...&lt;br /&gt;&amp;lt;div&amp;gt;My floated left element&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div&amp;gt;My floated right element&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;br class="cln" /&amp;gt;&lt;br /&gt;&amp;lt;div&amp;gt;The rest of my content&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Some last notes:&lt;br /&gt;I hide all line breaks by default because they are really there only for graceful degradation. If the client has CSS enabled then I don't want extra line breaks mucking up my presentation. On the other hand, when CSS is enabled then the linebreaks with the 'cln' class will be displayed and, simply put, line break over the above floated elements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-5768292697824556732?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/5768292697824556732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=5768292697824556732' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/5768292697824556732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/5768292697824556732'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2008/04/br-cleaner-vs-other-cleaners.html' title='BR cleaner VS other cleaners'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-3264912424167230629</id><published>2008-02-27T00:05:00.000-08:00</published><updated>2008-02-27T00:08:10.257-08:00</updated><title type='text'>Time</title><content type='html'>For as long as I can remember now, time has only ever got faster. I never feel like I can do more than I used to - I'm always thinking how there just isn't as much time as there used to be.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-3264912424167230629?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/3264912424167230629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=3264912424167230629' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/3264912424167230629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/3264912424167230629'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2008/02/time.html' title='Time'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-4832654862847800595</id><published>2008-02-21T07:00:00.000-08:00</published><updated>2008-02-21T08:00:07.924-08:00</updated><title type='text'>Powermate in C#</title><content type='html'>Well about four months ago I bought a Griffin Powermate. It's pretty much as good as they say except I think it could have been a little more solid. It looks a lot heavier in the pictures.&lt;br /&gt;&lt;br /&gt;Now the only real gripe I had with the Powermate was the drivers. I battled for, I kid you not, days. I installed, connected, uninstalled, disconnected, reinstalled, reconnected this darn powermate so many times, that even by chance I should have got it to work.&lt;br /&gt;&lt;br /&gt;The retailer I bought it from, SimplyMac.co.za in Johannesburg, wanted nothing to do with me. They simply denied me warranty on the item and told me to search Griffins site for help - Which I had already done by then! All I'm saying is that I will never buy from them again. Griffin was more helpfull,.. well nothing they suggested actually helped, but it didn't stop them from trying. I believe that if I carried on emailing their support team they probably would have got me to ship it over to get repaired.&lt;br /&gt;&lt;br /&gt;I don't know how many people out there have battled with Powermates, but mine just seemed to move the cursor horizontally across the screen. The Powermate registers itself as a mouse-type device and thus without drivers will just cause the cursor to move slowly across the screen. With drivers and software you are meant to be able to assign more helpful actions to the Powermate; like changing the volume or scrolling your current document up and down. So since my Powermate made the mouse move without drivers, I reckon the problem must reside in the drivers. Surely if there was a fault in the Powermate itself then the device wouldn't register on the computer at all. Well whatever the problem is, shipping it over to the States is gonna cost be money. So some DIY was sounding good.&lt;br /&gt;&lt;br /&gt;Yesterday I started snooping around C#, and hey,.. Presto! In half a day I managed to hack together a small app which:&lt;br /&gt;     1) Detects all the mouse HID's installed.&lt;br /&gt;     2) Links in to the data sent from the Powermate, and ..&lt;br /&gt;     3) Adjust the system volume or pump a page scroll.&lt;br /&gt;&lt;br /&gt;Now I really did hack it together, I'm not even going to try take credit for the source. Having a good knowledge of Java and some C++ I managed to interpret the C# syntax without too much trouble but,... I'm not a C# guy so keep that in mind if you looking through the code.&lt;br /&gt;&lt;br /&gt;Here's the source with binaries included: &lt;a href="http://b22222.com/pmate.zip"&gt;http://b22222.com/pmate.zip&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;Note: I coded this using MS Visual C# Express which I think uses dotNet 3.5&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Directions for use:&lt;br /&gt;    Run PMate.exe (duh).&lt;br /&gt;    By default the Powermate then controls your volume.&lt;br /&gt;    If you press the Powermate it alternates to controlling page scroll.&lt;br /&gt;&lt;br /&gt;The three thing's I'm not satisfied with yet in this solution are:&lt;br /&gt;    1) The program has a bit of delay while reading from the Powermate - Not ideal.&lt;br /&gt;    2) The Powermate still pumps regular mouse events. So pressing the Pmate still invokes context menus :/&lt;br /&gt;    3) I don't know how to properly hide the form, so it infact just minimised without a taskbar button. This allows you to still ALT-tab to the app.&lt;br /&gt;&lt;br /&gt;At the end of the day though I'm quite happy with the solution. It gives me a bit of a geeky thrill turning the Powermate and knowing that I somehow got it to change my volume.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-4832654862847800595?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/4832654862847800595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=4832654862847800595' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/4832654862847800595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/4832654862847800595'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2008/02/powermate-in-c.html' title='Powermate in C#'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-6661621565311350650</id><published>2008-02-21T02:22:00.000-08:00</published><updated>2008-02-21T02:24:41.746-08:00</updated><title type='text'>Lego stop animation of Mario level 1</title><content type='html'>&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/hmWWfnKVbYY&amp;amp;rel=1&amp;amp;border=0"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/hmWWfnKVbYY&amp;amp;rel=1&amp;amp;border=0" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-6661621565311350650?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/6661621565311350650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=6661621565311350650' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/6661621565311350650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/6661621565311350650'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2008/02/lego-stop-animation-of-mario-level-1.html' title='Lego stop animation of Mario level 1'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-5620928205003458120</id><published>2008-02-18T23:09:00.000-08:00</published><updated>2008-02-19T01:44:42.726-08:00</updated><title type='text'>South Africa, creatively backward.</title><content type='html'>So this post will sound a lot like a rant. It's kindof a rant, but it's meant to be more of a self directed challenge. Why does South Africa always seem to be 3 years behind? Now I understand there will be industries that SA is ahead in and others where it is behind, but in general I tend to hear of SA trying to catch up in stead of leading the way.&lt;br /&gt;&lt;br /&gt;The industry that I'm passionate about is web design and marketing. When I browse the web it is very evident that technology has greatly accelerated and is allowing all sorts of new opportunities to deliver content over the line. With the ever growing awareness of web standards, it's actually relatively easy now to create a standards based web design that looks and functions effectively; Whereas in the old days they mostly either looked good, or worked good, but rarely both.&lt;br /&gt;&lt;br /&gt;So what about South Africa. Well who knows, maybe it's not South Africa, maybe it's just Durban,.. perhaps just my employer; But as it appears to me, around here, the general interest in new technologies and the benefits thereof doesn't seem a high priority among long standing business's. I find it frustrating to just sit back and do what the guys before me always did, just because 'that's how they did it and it seems to work just fine.'&lt;br /&gt;&lt;br /&gt;So what do I want? I guess I'd like to see some South Africans take the podium when it comes to declaring the new web standard, or delivering a first in a certain technology. These two things pertain to my industry, but this would be great for any business or social advancement. I feel like all the talent got left in America, Germany, Sweden, and a dozen other European countries. What happen's in South Africa? What does the world see? Corruption, crime and broken down politics. Lets see some radically different people. Lets leave the past in the past. Learn from it of course, but lets progress. The last thing I think we are losing are dreams and creativity. I find a lot of people these days are actually plain boring.&lt;br /&gt;&lt;br /&gt;Lets develop some ideas and dreams. Lets turn these dreams into industry, social and business advancements that help our communities and our country advance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-5620928205003458120?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/5620928205003458120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=5620928205003458120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/5620928205003458120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/5620928205003458120'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2008/02/south-africa-creatively-backward.html' title='South Africa, creatively backward.'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-7980588462272355613</id><published>2007-12-19T03:31:00.000-08:00</published><updated>2007-12-19T07:46:15.416-08:00</updated><title type='text'>Faust, Midas, And Myself - Switchfoot</title><content type='html'>&lt;span style=";font-family:Verdana;font-size:100%;"  &gt;This one's about a dream I had last night.&lt;br /&gt;How an old man tracked me home and stepped inside.&lt;br /&gt;He put his foot inside the door and gave a crooked smile.&lt;br /&gt;Something in his eyes, something in his laugh,&lt;br /&gt;Something in his voice, that made my skin crawl off.&lt;br /&gt;&lt;br /&gt;He said, "I've seen you here before, I know your name.&lt;br /&gt;You could have your pick of pretty things.&lt;br /&gt;You could have it all. Everything at once.&lt;br /&gt;Everything you've seen, everything you'll need,&lt;br /&gt;Everything you've ever had in fantasies."&lt;br /&gt;&lt;br /&gt;"You've one life, you've one life.&lt;br /&gt;You've one life left to lead."&lt;br /&gt;&lt;br /&gt;I woke up from my dream as a golden man,&lt;br /&gt;With a girl I've never seen with golden skin.&lt;br /&gt;I jumped up to my feet she asked me what was wrong.&lt;br /&gt;I began to scream I don't think this is me.&lt;br /&gt;Is this just a dream or really happening?&lt;br /&gt;&lt;br /&gt;What direction? I'm splitting up! This is my personal disaffection.&lt;br /&gt;&lt;br /&gt;What direction? What direction? What direction now?&lt;br /&gt;&lt;br /&gt;I looked outside the glass at golden shores.&lt;br /&gt;Golden ships and masts with golden cords.&lt;br /&gt;As my reflection passed I hated what I saw.&lt;br /&gt;My golden eyes were dead and a thought passed through my head,&lt;br /&gt;A heart that is made of gold can't really beat at all.&lt;br /&gt;&lt;br /&gt;I wanted to wake up again without a touch of gold.&lt;br /&gt;What direction? Death or action! Life begins at the intersection.&lt;br /&gt;&lt;br /&gt;I woke up as before but the gold was gone.&lt;br /&gt;My wife was at the door with her night robe on,&lt;br /&gt;My heart beat once or twice and life flooded my veins.&lt;br /&gt;Everything had changed my lungs had found their voice&lt;br /&gt;And what was once routine was now the perfect joy&lt;br /&gt;&lt;br /&gt;You've one life,&lt;br /&gt;One life left to lead.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-7980588462272355613?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/7980588462272355613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=7980588462272355613' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/7980588462272355613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/7980588462272355613'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/12/faust-midas-and-myself-switchfoot.html' title='Faust, Midas, And Myself - Switchfoot'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-8221290416120324930</id><published>2007-12-18T00:10:00.000-08:00</published><updated>2007-12-18T00:31:15.875-08:00</updated><title type='text'>friendSpace - A facebook application</title><content type='html'>I have recently managed to get together a small Facebook application - It's pretty crud but I have to start somewhere. It doesn't serve any practical purpose.. I originally planned to browse through friends of friends, so that as a user moved toward a certain friend, the app would then download and load that persons friends in and around their part of the friendSpace. This would give friendSpace the practical use of searching for new friends.&lt;br /&gt;&lt;br /&gt;Here is the application page:&lt;br /&gt;&lt;a href="http://apps.facebook.com/friendspc/"&gt;http://apps.facebook.com/friendspc/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Credit to Jared Tarbell over at levitated.net; I actually did very little in terms of designing the friendSpace visualisation - It is mostly Jared's ingenuity to which I have applied a couple tweaks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-8221290416120324930?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/8221290416120324930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=8221290416120324930' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/8221290416120324930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/8221290416120324930'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/12/friendspace-facebook-application.html' title='friendSpace - A facebook application'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-3820489477402919707</id><published>2007-11-26T00:29:00.000-08:00</published><updated>2007-11-26T00:59:27.096-08:00</updated><title type='text'>So I Joined Facebook.</title><content type='html'>Well,... it happened. In some ways I still don't know why. I joined Facebook. There; It has been said and done. I do have a few good reasons I'd like to remind myself of.. At work I've been asked to make a 'mini Facebook' for a local college so that the old-girls can keep in contact. Now the only way I'm gonna learn what these young ladies will expect out of their website, Is to dive head in here and explore Facebook for myself.&lt;br /&gt;&lt;br /&gt;Secondly,.. I'd be silly to deny the huge growth that Facebook is experiencing. Growth = $$$. I'm keen to see where I can lay my programming hands in ways to either make money or self advertise.&lt;br /&gt;&lt;br /&gt;Of course,.. to all my friendlies: I joined Facebook because I love networking soooo much. If you know me well you know how much I talk. Really though,.. I'm sure I'll enjoy at least some measure of social networking here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-3820489477402919707?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/3820489477402919707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=3820489477402919707' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/3820489477402919707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/3820489477402919707'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/11/so-i-joined-facebook.html' title='So I Joined Facebook.'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-5520373613408978097</id><published>2007-11-07T00:34:00.000-08:00</published><updated>2007-11-07T00:44:23.848-08:00</updated><title type='text'>Brave Saint Saturn - Heart Still Beats</title><content type='html'>The girl in the alley kneels with exhaustion&lt;br /&gt;She's guarded by the skinny guy who limps from some infection&lt;br /&gt;Behind a veil of bleached thin hair her eyes tell a story&lt;br /&gt;Like a photo of Berlin, December 1944&lt;br /&gt;She's looking for a handout, she's been high for several weeks now&lt;br /&gt;She's too far gone for whoring and the money just gave out&lt;br /&gt;&lt;br /&gt;And her heart still beats inside&lt;br /&gt;And the blood runs in her veins&lt;br /&gt;A remnant of life remains&lt;br /&gt;Her heart still beats inside&lt;br /&gt;&lt;br /&gt;The man finally comes to the door, I've seen him several times&lt;br /&gt;He always looks pissed off and his sunglasses stay on&lt;br /&gt;I think he got his biceps and tattoos while in prison&lt;br /&gt;And it doesnt seem to bother him when he says "go to hell"&lt;br /&gt;&lt;br /&gt;And his heart still beats inside&lt;br /&gt;The blood runs in his veins&lt;br /&gt;A remnant of life remains&lt;br /&gt;His heart still beats inside&lt;br /&gt;&lt;br /&gt;The thought it comes to my mind, to somehow intervene&lt;br /&gt;But it could bring me trouble, and what can I do anyway?&lt;br /&gt;It's hard to be effective when it happens so often&lt;br /&gt;To see a life unraveling, through drawn venetian blinds&lt;br /&gt;I'm sickened by compassion, I'm stifled by my limitations&lt;br /&gt;Anesthetic apathy, come take the pain away&lt;br /&gt;&lt;br /&gt;And my heart still beats inside&lt;br /&gt;The blood runs in my veins&lt;br /&gt;A remnant of life remains&lt;br /&gt;And my heart still beats inside&lt;br /&gt;&lt;br /&gt;Oh God, we need you here&lt;br /&gt;We're sinking fast and we dont care&lt;br /&gt;The evidence is all around me, on both sides of my door&lt;br /&gt;Our hearts beat&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-5520373613408978097?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/5520373613408978097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=5520373613408978097' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/5520373613408978097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/5520373613408978097'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/11/brave-saint-saturn-heart-still-beats.html' title='Brave Saint Saturn - Heart Still Beats'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-6960182587522069512</id><published>2007-10-26T07:43:00.000-07:00</published><updated>2007-10-26T07:45:57.846-07:00</updated><title type='text'>From the Behance Network</title><content type='html'>So I stumbled upon &lt;a href="http://www.behance.net"&gt;http://www.behance.net&lt;/a&gt; today. Radical site imho.&lt;br /&gt;&lt;br /&gt;Two entries that particuarly caught my eye:&lt;br /&gt;&lt;a href="http://www.behance.net/Contest/Be-Contest-Photography/31493/42671"&gt;http://www.behance.net/Contest/Be-Contest-Photography/31493/42671&lt;/a&gt;&lt;br /&gt;and&lt;br /&gt;&lt;a href="http://www.behance.net/Gallery/V-WATER-viral-animation/43975"&gt;http://www.behance.net/Gallery/V-WATER-viral-animation/43975&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-6960182587522069512?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/6960182587522069512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=6960182587522069512' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/6960182587522069512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/6960182587522069512'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/10/from-behance-network.html' title='From the Behance Network'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-6409817828198426014</id><published>2007-10-11T01:14:00.000-07:00</published><updated>2007-10-11T01:16:18.052-07:00</updated><title type='text'>One heck of a Javascript Tree/Table control</title><content type='html'>This is a notable piece of freeware. &lt;a href="http://www.coqsoft.com/TreeGrid5_0/Html/EJSTreeGrid.html"&gt;http://www.coqsoft.com/TreeGrid5_0/Html/EJSTreeGrid.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-6409817828198426014?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/6409817828198426014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=6409817828198426014' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/6409817828198426014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/6409817828198426014'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/10/one-heck-of-javascript-treetable.html' title='One heck of a Javascript Tree/Table control'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-8413475251125543711</id><published>2007-10-03T05:41:00.000-07:00</published><updated>2007-10-03T05:47:32.141-07:00</updated><title type='text'>One virus to rule them all</title><content type='html'>How does one create the &lt;span style="font-style: italic;"&gt;ultimate &lt;/span&gt;virus? well what is the ultimate virus? Some would say that it is the virus that crashes the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;internet&lt;/span&gt;. Or perhaps a virus that cripples the information infrastructure so badly that were taken back to the stone age.&lt;br /&gt;&lt;br /&gt;There have been many noble attempts to fulfill the above goals but the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;internet&lt;/span&gt; is still around nonetheless. The ironic thing about the previously stated goals is that when the virus that destroys the net as we know it has done its work, the gentleman that wrote the virus will have nothing left to be proud of. It'll all be over. He will most likely be employed as a programmer, or at least in the IT field, so he will now be out of a job. The economy will grind to a halt in so many places. Chains of supply to consumers will be disrupted. No food, no petrol, no electricity. Well,.. sitting in a dark cold house with no food has never been a dream of mine.&lt;br /&gt;&lt;br /&gt;So what are my attributes of the ultimate virus?&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Is hard to remove from a computer.&lt;/li&gt;&lt;li&gt;Designed to survive in a networked environment.&lt;/li&gt;&lt;li&gt;Has more reputation than any other virus.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Point 1:&lt;/span&gt;&lt;br /&gt;So I think the ultimate virus should thwart all attempts at removing it, yet still make its presence know to the user. It should be a virus that is designed to last as long as possible - Survival for existence. Now some viruses excel at making their users aware of their presence, but do so irritatingly (&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;pop ups&lt;/span&gt;, bandwidth usage) thus cause the user to format or remove the virus, thus contravening this first rule.&lt;br /&gt;&lt;br /&gt;A virus that in no way, directly or indirectly, interferes with the user will not present any immediate need to remove the virus.&lt;br /&gt;&lt;br /&gt;I'm still not set on how I would tell the user that they were infected, but I probably wouldn't go much further than emulating a dead pixel in the bottom right corner of their workspace. &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;That's&lt;/span&gt; it. Just something small to say that the virus is present.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Point 2:&lt;/span&gt;&lt;br /&gt;The ultimate virus should be network smart. As networks can vary in so many protocols, mediums, transfer speeds and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;security&lt;/span&gt;, it would need to carry some measure of heuristic power. It needs to be smart enough to travel from one network to the next; From file to file, virus to worm,.. It needs to be smart.&lt;br /&gt;&lt;br /&gt;It needs to have a small, actually super small footprint. If the virus started to hog storage space or bandwidth it would start to present a need to be removed. Now the more intelligent we want our virus to be &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;invariably&lt;/span&gt; the larger our footprint is going to be. No matter how smartly you design the virus,.. if you want to tap into any network and into any file, you are going to need a bit of code to make it work. Now instead of keeping all this viral goodness in one virus entity, why not split it up? Lets make this virus 'modular'. It will be &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;conceived&lt;/span&gt; as one complete part, but will be able to break down into smaller segments; Each segment capable of basic viral activities and &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;propagation&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;A modular/segmented virus!.. Okay, so its got smaller parts - What else? Each segment should be able to be rebuilt from the cooperative work of other segments on the network. Something &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;reminiscent&lt;/span&gt; of RAID 5 and 6 parity reconstruction. This will not only reinforce my second attribute to survive in a networked environment, but the virus is now designed to use the network to its advantage. Each segment should to some degree track from which 'parent' virus it came from, and/or where other virus segments are in its close neighbourhood. This way when it needs to perform some more complex or group viral activity it can gather the parts it needs, perform the task, then breakdown appropriately. Say a virus needs to do some &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;brute force&lt;/span&gt; activity or large calculation, it should be able to distribute work to its segment friends on remote devices to help perform the task.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Point 3:&lt;/span&gt;&lt;br /&gt;So the ultimate virus needs to be famous. What would stand out the ultimate virus from all the rest. Point 1 has ruled out all forms of destructive, indecent, or otherwise irritating behaviour. So whats left? We can't be bad... Well why not be good? Good! Sure,.. Why not make a virus that performs low level &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;HDD&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;defrag&lt;/span&gt; optimization during spare CPU time? How many virus's can lay claim to that fame?&lt;br /&gt;&lt;br /&gt;Now here's the best for last. Here is the way to make our virus greater than every other virus. &lt;span style="font-style: italic;"&gt;Give our virus the ability to intelligently search and destroy all other virus'&lt;/span&gt;. That's it; If you can't beat them, delete them. Who wouldn't want a piece of software that &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;automagically&lt;/span&gt; removes all hazardous software from their computer/device?&lt;br /&gt;&lt;br /&gt;Now although the virus coders carnal desire to destroy peoples computers isn't going to come true: He would have created, in my humble opinion, the penultimate virus.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-8413475251125543711?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/8413475251125543711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=8413475251125543711' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/8413475251125543711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/8413475251125543711'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/10/one-virus-to-rule-them-all.html' title='One virus to rule them all'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-7917035823383649117</id><published>2007-09-20T23:20:00.000-07:00</published><updated>2007-09-20T23:25:05.531-07:00</updated><title type='text'>Two yip yay flickr toys.</title><content type='html'>&lt;a href="http://bighugelabs.com/flickr/wallpaper.php"&gt;http://bighugelabs.com/flickr/wallpaper.php&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bighugelabs.com/flickr/cube.php"&gt;http://bighugelabs.com/flickr/cube.php&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-7917035823383649117?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/7917035823383649117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=7917035823383649117' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/7917035823383649117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/7917035823383649117'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/09/two-yip-yay-flickr-toys.html' title='Two yip yay flickr toys.'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-4600714531758509796</id><published>2007-09-14T07:19:00.000-07:00</published><updated>2007-09-14T07:22:51.799-07:00</updated><title type='text'>These must be the last from gym class.</title><content type='html'>Golly. I always thought my hobbies were the nerdiest. Watching some of this makes me feel a little better. (I do admire the skill though)&lt;br /&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/xNG3sgk02Lc"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/xNG3sgk02Lc" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-4600714531758509796?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/4600714531758509796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=4600714531758509796' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/4600714531758509796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/4600714531758509796'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/09/these-must-be-last-from-gym-class.html' title='These must be the last from gym class.'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-2609050947263251092</id><published>2007-08-05T06:53:00.001-07:00</published><updated>2007-08-05T06:53:13.328-07:00</updated><title type='text'>Flash, Photoshop and the like.</title><content type='html'>This is a cool site.&lt;p&gt;&lt;a href="http://www.phong.com"&gt;http://www.phong.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-2609050947263251092?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/2609050947263251092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=2609050947263251092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/2609050947263251092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/2609050947263251092'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/08/flash-photoshop-and-like.html' title='Flash, Photoshop and the like.'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-365826280643986493</id><published>2007-07-10T03:25:00.000-07:00</published><updated>2007-07-10T05:28:12.671-07:00</updated><title type='text'>mySite is Born</title><content type='html'>For a while now I've been becoming increasingly frustrated with certain things about my web development career and any private development I might do as well. I'm beginning to understand something about my character, I don't like to be or do things that are &lt;span style="font-style: italic;"&gt;repetitive &lt;/span&gt;/ &lt;span style="font-style: italic;"&gt;stagnant &lt;/span&gt;/ &lt;span style="font-style: italic;"&gt;boring &lt;/span&gt;/ &lt;span style="font-style: italic;"&gt;uninventive&lt;/span&gt;. I like to research new areas, try new things, find something brand new on the web - even better, put something brand new on the web. Why get slowed down by all the repetitive (ie: boring) tasks that occur in the &lt;a href="http://en.wikipedia.org/wiki/Software_Development_Life_Cycle"&gt;software development&lt;/a&gt;? I'm increasingly wanting to spend more time designing sites instead of building them.&lt;br /&gt;&lt;br /&gt;When conceiving a business venture on the web, be it a simple website or a more complex web application, I often (if not always) get buried in a flurry of inconveniences and rabbit-trails concerning how I'm going to implement it. I want to spend less time deciding how I'm going to &lt;span style="font-style: italic;"&gt;display&lt;/span&gt; it, and more time designing &lt;span style="font-style: italic;"&gt;the display&lt;/span&gt;. Lets invest more time and emphasis on creating an &lt;span style="font-style: italic;"&gt;effective design&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;user experience&lt;/span&gt;, than on the efforts that the customer and their users will never really see.&lt;br /&gt;&lt;br /&gt;Now enter &lt;a href="http://www.cullen.co.za/mySite"&gt;mySite&lt;/a&gt;. This is my attempt to generalize the website platform. Lets have a menu engine, a content loading mechanism, and anything else that is pretty much needed in every project. I have started designing mySite with the goal of running on a host that doesnt allow server side logic - But: I do intend to maintain a design that would allow a developer to easily incorporate their own server side logic if need be.&lt;br /&gt;&lt;br /&gt;Well I'll spare the details here; The project will develop as will it's goals. Rather keep up with it's progression at &lt;a href="http://www.cullen.co.za/mySite"&gt;http://www.cullen.co.za/mySite&lt;/a&gt;. I have also started a SourceForge project as well which can be found at &lt;a href="http://mysite.sourceforge.net/"&gt;http://mysite.sourceforge.net&lt;/a&gt;. I will move the development of mySite there as soon as I can wrap my head around how to properly administer a SF project.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Edit: &lt;/span&gt;Yay! I have uploaded mySite to the Sourceforge host. I'll try carry on updating both hosts for the sake of it, but will probably revert to using only SourceForge after a while.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-365826280643986493?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/365826280643986493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=365826280643986493' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/365826280643986493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/365826280643986493'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/07/mysite-is-born.html' title='mySite is Born'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-220353564224166384</id><published>2007-07-09T07:44:00.000-07:00</published><updated>2007-07-09T07:48:00.444-07:00</updated><title type='text'>An interesting read for a programmer</title><content type='html'>&lt;a href="http://www.chiark.greenend.org.uk/%7Esgtatham/infinity.html"&gt;http://www.chiark.greenend.org.uk/~sgtatham/infinity.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-220353564224166384?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/220353564224166384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=220353564224166384' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/220353564224166384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/220353564224166384'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/07/interesting-read-for-programmer.html' title='An interesting read for a programmer'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-1993260873924897979</id><published>2007-05-21T01:04:00.000-07:00</published><updated>2007-05-21T01:34:15.742-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='social network facebook myspace'/><title type='text'>Why I won't join social networks</title><content type='html'>Online social networks seem like all the rage lately. With the event of mySpace, xanga, facebook, classmates and well the other 100 services available - it seems unusual to find a person that isn't on at least one of them. Some people I know would even claim to have a profile on each!&lt;br /&gt;&lt;br /&gt;I have searched deep inside my soul and come to these two reasons why I believe it will be a long time before I join a social network.&lt;br /&gt;&lt;br /&gt;1) It's a time muncher: These days I find time is a precious commodity in my life and social networking (or the admin of it) would just eat away at time I never had before anyway. This blog and stumbleUpon take about all the time I care to spend networking/communicating on the net. (This blog was never even meant to be public anyway - It was originally designed as a type of personal jotter; Somewhere I could record ideas and URL's to interesting pages that I could reference in the future.)&lt;br /&gt;&lt;br /&gt;2) This is the unspoken of, but everyone knows that they do it thing.. I believe a good portion (dare I say majority) of social network users find it a race to add as many 'friends' as possible to their profile. I suppose this is relative... some people will have many and some people will add friends slowly,.. but in the back of their minds they are all just dying to see their friends list grow.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_2MGAYAM8yks/RlFX2IXNkMI/AAAAAAAAAAY/IgvxzhCWDzs/s1600-h/netFriends.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 326px; height: 122px;" src="http://1.bp.blogspot.com/_2MGAYAM8yks/RlFX2IXNkMI/AAAAAAAAAAY/IgvxzhCWDzs/s320/netFriends.gif" alt="" id="BLOGGER_PHOTO_ID_5066927643237912770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;So unless I needed to join one for a specific collaborative purpose, (or I won the lottery and could sit at home all day) I dont think I'll be on your friends list anytime soon ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-1993260873924897979?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/1993260873924897979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=1993260873924897979' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/1993260873924897979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/1993260873924897979'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/05/why-i-wont-join-social-networks.html' title='Why I won&apos;t join social networks'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_2MGAYAM8yks/RlFX2IXNkMI/AAAAAAAAAAY/IgvxzhCWDzs/s72-c/netFriends.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-7986193533600123952</id><published>2007-05-19T13:44:00.000-07:00</published><updated>2007-05-19T13:45:31.583-07:00</updated><title type='text'>Crazy Ping Pong Ball Technique</title><content type='html'>This is the craziest ball skills I've ever seen.&lt;br /&gt;&lt;a href="http://www.costaricanproperty.net/ball.html"&gt;http://www.costaricanproperty.net/ball.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-7986193533600123952?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/7986193533600123952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=7986193533600123952' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/7986193533600123952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/7986193533600123952'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/05/crazy-ping-pong-ball-technique.html' title='Crazy Ping Pong Ball Technique'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-472746698209289159</id><published>2007-05-18T11:18:00.000-07:00</published><updated>2007-05-18T11:22:08.524-07:00</updated><title type='text'>Modest artist</title><content type='html'>I found &lt;a href="http://artpad.art.com/artpad/painter/"&gt;http://artpad.art.com/artpad/painter/&lt;/a&gt; today. Fun. Theres a cool feature to save and replay what you did afterwards at 10x the speed,.. I wish I was really that good with a mouse!&lt;br /&gt;&lt;br /&gt;Here's my first drawing:&lt;br /&gt;&lt;a href="http://artpad.art.com/gallery/?ji91gk5v98w"&gt;http://artpad.art.com/gallery/?ji91gk5v98w&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-472746698209289159?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/472746698209289159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=472746698209289159' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/472746698209289159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/472746698209289159'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/05/modest-artist.html' title='Modest artist'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-5578940867572679142</id><published>2007-05-09T03:55:00.000-07:00</published><updated>2007-05-09T04:39:15.496-07:00</updated><title type='text'>Web Menus</title><content type='html'>Im always looking out for new menu's and navigation mechanisms... Every now and then I come across a gem that I know I'l want to hack up in the forthcoming month. Problem is - I always forget where I found it.&lt;br /&gt;&lt;br /&gt;Here some menus I've come across recently:&lt;br /&gt;&lt;a href="http://www.andrewsellick.com/35/sexy-sliding-javascript-side-bar-menu-using-mootools"&gt;http://www.andrewsellick.com/35/sexy-sliding-javascript-side-bar-menu-using-mootools&lt;/a&gt;#&lt;br /&gt;&lt;a href="http://devthought.com/cssjavascript-true-power-fancy-menu/"&gt;http://devthought.com/cssjavascript-true-power-fancy-menu/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.chromasynthetic.com/blog/wp-content/uploads/2006/09/mootools1.html"&gt;http://www.chromasynthetic.com/blog/wp-content/uploads/2006/09/mootools1.html&lt;/a&gt;#&lt;br /&gt;&lt;a href="http://zend.lojcomm.com.br/ifisheye/"&gt;http://zend.lojcomm.com.br/ifisheye/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://torkiljohnsen.com/demo/popmenu/"&gt;http://torkiljohnsen.com/demo/popmenu/&lt;/a&gt;#&lt;br /&gt;&lt;a href="http://devthought.com/cssjavascript-true-power-fancy-menu/"&gt;http://devthought.com/cssjavascript-true-power-fancy-menu/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.phatfusion.net/imagemenu/index.htm"&gt;http://www.phatfusion.net/imagemenu/index.htm&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.mindplay.dk/temp/mooTree2/test.html"&gt;http://www.mindplay.dk/temp/mooTree2/test.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-5578940867572679142?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/5578940867572679142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=5578940867572679142' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/5578940867572679142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/5578940867572679142'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/05/im-always-looking-out-for-new-menus-and.html' title='Web Menus'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-1850381220077299646</id><published>2007-05-08T23:07:00.000-07:00</published><updated>2007-05-08T23:10:21.873-07:00</updated><title type='text'>So, What Size and Type of Font Should I Use on My Website?</title><content type='html'>&lt;blockquote&gt;&lt;p&gt;By far the two most common types of fonts currently used on the Web are the serif font, Times New Roman (TNR) and the sans serif font, Arial. The question is, which one is more legible and at which size? ...&lt;/p&gt;&lt;/blockquote&gt;Read the full article @ &lt;a href="http://psychology.wichita.edu/surl/usabilitynews/2S/font.htm"&gt;http://psychology.wichita.edu/surl/usabilitynews/2S/font.htm&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-1850381220077299646?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/1850381220077299646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=1850381220077299646' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/1850381220077299646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/1850381220077299646'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/05/so-what-size-and-type-of-font-should-i.html' title='So, What Size and Type of Font Should I Use on My Website?'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-4753775791766169356</id><published>2007-04-24T23:06:00.000-07:00</published><updated>2007-04-24T23:07:02.601-07:00</updated><title type='text'>Some Flash Ideas</title><content type='html'>&lt;a href="http://www.arkitus.com/"&gt;http://www.arkitus.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-4753775791766169356?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/4753775791766169356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=4753775791766169356' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/4753775791766169356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/4753775791766169356'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/04/some-flash-ideas.html' title='Some Flash Ideas'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-8449763169029472398</id><published>2007-04-24T03:48:00.000-07:00</published><updated>2007-04-25T01:23:25.557-07:00</updated><title type='text'>Deisgning for 2.0</title><content type='html'>Here are some interesting articles, guides and tutorials I've come across.&lt;br /&gt;&lt;br /&gt;Web 2.0 design guides:&lt;br /&gt;&lt;a href="http://www.webdesignfromscratch.com/web-2.0-design-style-guide.cfm"&gt;http://www.webdesignfromscratch.com/web-2.0-design-style-guide.cfm&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.webdesignfromscratch.com/current-style.cfm"&gt;http://www.webdesignfromscratch.com/current-style.cfm&lt;/a&gt;&lt;br /&gt;&lt;a href="http://f6design.com/journal/2006/10/21/the-visual-design-of-web-20"&gt;http://f6design.com/journal/2006/10/21/the-visual-design-of-web-20&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Photoshop tutorials:&lt;br /&gt;&lt;a href="http://www.photoshoplab.com/web20-design-kit.html"&gt;http://www.photoshoplab.com/web20-design-kit.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.photoshoplab.com/web-20-design-kit-part-2.html"&gt;http://www.photoshoplab.com/web-20-design-kit-part-2.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.webdesignfromscratch.com/logos.cfm"&gt;http://www.webdesignfromscratch.com/logos.cfm&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.webdesignfromscratch.com/3d_effects.cfm"&gt;http://www.webdesignfromscratch.com/3d_effects.cfm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Some interesting web2.0 sites and services:&lt;br /&gt;&lt;a href="http://www.openomy.com/"&gt;http://www.openomy.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.zimbra.com/"&gt;http://www.zimbra.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.stripegenerator.com/"&gt;http://www.stripegenerator.com&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.dropsend.com/"&gt;http://www.dropsend.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cooltext.com/"&gt;http://cooltext.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.trackslife.com/"&gt;http://www.trackslife.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.tamadaa.com/"&gt;http://www.tamadaa.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://feedrinse.com/"&gt;http://feedrinse.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A nice reference site:&lt;br /&gt;&lt;a href="http://thesis.veracon.net/"&gt;http://thesis.veracon.net/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-8449763169029472398?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/8449763169029472398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=8449763169029472398' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/8449763169029472398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/8449763169029472398'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/04/deisgning-for-20.html' title='Deisgning for 2.0'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-1638253514743050259</id><published>2007-04-14T13:42:00.000-07:00</published><updated>2007-04-14T14:01:17.212-07:00</updated><title type='text'>My JavaScript Development</title><content type='html'>Well, I've been playing with the &lt;a href="http://www.mootools.net/"&gt;Mootools &lt;/a&gt;library a bit now. I have to admit that before mootools, javascript was a little scary to me. I have successfully created about three business applications using RPC techniques - but what a hack. Although XML is such a universal wonder, its a bit of a chore to work with sometimes.&lt;br /&gt;&lt;br /&gt;With &lt;a href="http://www.mootools.net/"&gt;mootools&lt;/a&gt;, it all gets better. I believe the &lt;a href="http://www.mad4milk.net/"&gt;Mad 4 Milk&lt;/a&gt; guys have really made a well designed package. Now with the event of JSON, Javascript RPC's become a brease.&lt;br /&gt;&lt;br /&gt;I've traditionally used ASP-VBScript as my server side language; Now maybe I haven't googled hard enough, but it's impossible to get hold of a VBScript JSON interpreter (and Im too lazy to do the work myself). So my new development platform now consists of JSP, Javascript and faithfull &lt;a href="http://www.mootools.net/"&gt;MooTools&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I thought I'd start a page of Javascript 'experiments' mostly using the &lt;a href="http://www.mootools.net/"&gt;mootools library&lt;/a&gt;. Every now and then I get that 'I wonder how to do that' thought,.. so I thought I'd share any examples I happen to make. Hope it helps someone someday,...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cullen.co.za/pat/javascript/index.html"&gt;http://www.cullen.co.za/pat/javascript/index.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-1638253514743050259?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/1638253514743050259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=1638253514743050259' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/1638253514743050259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/1638253514743050259'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/04/my-javascript-development.html' title='My JavaScript Development'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-3614635429163548182</id><published>2007-03-30T04:45:00.000-07:00</published><updated>2007-03-30T04:46:25.672-07:00</updated><title type='text'>MooTools</title><content type='html'>Today I found my new favourite JavaScript Library... &lt;a href="http://mootools.net"&gt;MooTools&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-3614635429163548182?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/3614635429163548182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=3614635429163548182' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/3614635429163548182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/3614635429163548182'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/03/mootools.html' title='MooTools'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-3228597806981023560</id><published>2007-03-27T23:07:00.000-07:00</published><updated>2007-03-27T23:13:54.879-07:00</updated><title type='text'>We are the machine</title><content type='html'>Here is an interesting presentation on the impact of Web 2.0&lt;br /&gt;&lt;br /&gt;&lt;a href="http://youtube.com/watch?v=6gmP4nk0EOE"&gt;http://youtube.com/watch?v=6gmP4nk0EOE&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-3228597806981023560?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/3228597806981023560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=3228597806981023560' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/3228597806981023560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/3228597806981023560'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/03/we-are-machine.html' title='We are the machine'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-7792291949502650951</id><published>2007-03-27T10:17:00.000-07:00</published><updated>2007-03-27T10:19:13.211-07:00</updated><title type='text'>My Two Troubles</title><content type='html'>&lt;p&gt;The stars have not dealt me the worst they could do:&lt;br /&gt;My pleasures are plenty, my troubles are two.&lt;br /&gt;But oh, my two troubles they reave me of rest,&lt;br /&gt;The brains in my head and the heart in my breast.&lt;/p&gt; &lt;p&gt;&lt;em&gt;- A.E. Housman&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;For more great posts see &lt;a href="http://www.dwblog.net/"&gt;Desperately Wandering&lt;/a&gt;&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-7792291949502650951?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/7792291949502650951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=7792291949502650951' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/7792291949502650951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/7792291949502650951'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/03/my-two-troubles.html' title='My Two Troubles'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-8741011078925442889</id><published>2007-03-23T02:13:00.000-07:00</published><updated>2007-03-23T04:21:59.864-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dota keeper kotl wc3'/><title type='text'>My Keeper Build v1.0 - The Glass Cannon</title><content type='html'>So Im a big fan of DotA. If you're a gamer then check out &lt;a href="http://www.dota-allstars.com"&gt;http://www.dota-allstars.com&lt;/a&gt; and &lt;a href="http://www.getdota.com"&gt;http://www.getdota.com&lt;/a&gt;. DotA is simply a mod / custom-map for the Warcraft 3 game made by blizzard.&lt;br /&gt;&lt;br /&gt;Now if you're still reading I'm assuming you've played DotA before and am going go ahead with the usual DotA jargon. I've been playing long enough now to have tried most characters in the game; Now I'm a guy who likes to get one character and stick with it, build it up, and make it unstoppable. So I'm currently running with Ezalor - Keeper of the Light. You're probably saying "Keeper!, but he's so weak. He'll never be unstoppable". True to a certain degree. There are some characters in DotA which are just perfect counters for KotL, but that is the case for most heros anyway. I think I particuarly like trying to build KotL as a large portion of players tend to see him as such a weak character. I like to surprise! :)&lt;br /&gt;&lt;br /&gt;I only really play in pubbies so my build will naturally be a little more greedy as apposed to a team build. My angle on this character is this. Produce as much damage and brute force push as possible, but be perfectly capable of ducking out of the gank when it comes for you - because it always does. [People love to kill low HP pool hero's - Sorry for Ezalor]&lt;br /&gt;&lt;br /&gt;So here's the gentleman in his Sunday best:&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Ezalor - Keeper of the Light&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_2MGAYAM8yks/RgOy10o0ORI/AAAAAAAAAAM/LtcT_psvPOA/s1600-h/BTNGhostMage.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5045072645317736722" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_2MGAYAM8yks/RgOy10o0ORI/AAAAAAAAAAM/LtcT_psvPOA/s320/BTNGhostMage.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;My skill build:&lt;/strong&gt;&lt;br /&gt;Levels 1 - 8: Illuminate and Chakra alternatively&lt;br /&gt;From there on I max out Ignus Faatus as quick I can, and choosing stats inbetween. I normally leave Mana Leak until the end as it is not included in my strategy.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;My item build:&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;[Game start....]&lt;/em&gt;&lt;br /&gt;Chicken&lt;br /&gt;Circlet of Nobility&lt;br /&gt;Ironwood branch&lt;br /&gt;&lt;br /&gt;&lt;em&gt;[First chicken run....]&lt;/em&gt;&lt;br /&gt;Ring of regeneration&lt;br /&gt;Mantle of Intelligence&lt;br /&gt;Nulls Talisnam&lt;br /&gt;Headress of Rejuvination&lt;br /&gt;&lt;br /&gt;&lt;em&gt;[Get these as and when you can afford them...]&lt;/em&gt;&lt;br /&gt;Boots of Speed&lt;br /&gt;Point Booster&lt;br /&gt;Energy Booster&lt;br /&gt;Vitality Booster&lt;br /&gt;Mystic Staff&lt;br /&gt;Dagger of escape&lt;br /&gt;&lt;br /&gt;&lt;em&gt;[The game still goes...]&lt;/em&gt;&lt;br /&gt;Build an Eye of Skadi&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Explanation/Strategy:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Early game:&lt;br /&gt;&lt;/u&gt;Always call Mid. The effect of Fog-of-War is a great advantage for Keeper. Farm and harass. Try and position illuminates well so that you hit as much creep as possible and a hero aswell. Try align the illuminate to hit both hero's if possible. Lately I've been experimenting in Pubs with my Illuminate positioning,.. There are some great spots to shoot from; behind bushes, around corners, etc. Try every spot on the map. Every chance to hide in FoW is another chance to harass your enemy with a ball of light.&lt;br /&gt;&lt;br /&gt;Chakra is a no brainer,.. buff yourself as often as possible. If the spell is ready cast it on yourself, don't think, just cast. If you're full MP, cast it on you're ally. If he's full MP, bladdy cast something else,.. anything. If you've got mana you may aswell spend it. This is the beauty of Keepers endless mana pool.&lt;br /&gt;&lt;br /&gt;Try get a hero to lane mid with you that will compliment you. A few examples are Furion, Earthshaker, infact most long duration stunners/harasses will be a great combo. Try to buff them as often as possible. It has happened more than once that I and a partner have got first blood by a combination of hitting, stun/illuminating and chasing, before the creeps have even arrived.&lt;br /&gt;&lt;br /&gt;You should farm reasonably well with Keeper. After a few levels you should be able to run the second handfull of items with your chicken. BUT - dont move away from the experience earning area. It is critical to try xp as much as possible, as it gets harder and harder to maintain a competitive level in the mid-late game.&lt;br /&gt;&lt;br /&gt;I normally keep to my own lane. If you're playing with a decent set of allies, then they shouldn't need to call help to other lanes. Keeper should always be able to get the first tower down, and you should aim to get the second middle tower down aswell. Be carefull once over the river,.. you are an easy target. Try to keep ally company, especially one who can help you both escape a risky gank. If you're firing at the second tower you should have a lvl 3-4 illuminate which gives a good firing range. Try to sit as far back as possible but close enough to hit all the creeps around the tower. If you're insecure you can temporarily fall back while your spells regen. If played right, you should be safe.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Mid game:&lt;br /&gt;&lt;/u&gt;Okay, I'm assuming you manage to get two towers over, and your towers are untouched. (This shouldn't be too hard). Now I wouldn't run into the enemy base without some ally support which at this stage of the game, in a pub, you probably wont get. Although not mentioned in the item build, invest in some scroll of teleports. While your creeps are sufficiently far forward enough you can move around the map. Remeber dont wander too long - you will be losing any kind of xp gain. While moving towards another lane, fire off an illuminate at a set of low level neautrals. Finish off the ones that may live. This is easy cash and xp while moving around.&lt;br /&gt;&lt;br /&gt;While keeping a sharp eye on the middle lane (your lane) go assist your allies to push over a side tower. With two or three illuminates passing over as many creep waves, you should make quick progress. Now dont stay too long, the counter attack in the middle should be nearing your tower. Head back there either by walking, if not too far, or by teleport (yay for those scrolls).&lt;br /&gt;&lt;br /&gt;Keep this kind of cycle going for a while,.. defend your lane, but help push others aswell. A game can take so many directions from here on. My strategy is to try keep the advantage all the time by pushing. If a vote comes to push a certain lane into the base, I would almost always vote in. Until some kind of group effort happens though, just farm and farm and don't push further than you can safely esacpe a gank. Don't feed.&lt;br /&gt;&lt;br /&gt;After not too long you should be able to afford your Soul Booster items, and then a while later you Mystic staff. Hoorah - You have an Aghanims Scepter. Here starts the later part of my strategy.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Late Game:&lt;/u&gt;&lt;br /&gt;It may not be late game yet, but I'm just gonna put my two main points here, as these are the activities I tend to carry out till the end of the game anyway. It is generally accepted that Keeper is not a late game hero. I tend to agree. Try to make as large an effect as possible before the enemy hero's become too strong for you.&lt;br /&gt;&lt;br /&gt;You should have level 2 Ult, hopefully level 3. With two wisps you can create an army in excess of twelve creeps. I always send the wisps to the lane with no enemy heros and let them do there work alone. Tell the wisps to follow a ranged creep to just create priests and be more low lying in battle; or tell them to follow a melee creep if you want them to be more aggressive in battle. Every 30 seconds scroll back to their lane and pick up any straggling priests. I normally just tell them to attack ground in the enemy base and this will keep them occupied until they expire.&lt;br /&gt;&lt;br /&gt;If an emeny hero comes to attack your priests and wisps then you can do one of two things. a) get out of there. b) stay to fight. If you choose to stay, then leave Keeper somewhere safe and micro the priests effectively. Try and surround the enemy hero with creeps to prevent escape and then tell all the priests and both wisps to attack the hero. If you dont kill him you might get close. It's always great fun to get a priest kill. If you choose to run away then do so promptly. Send the priests to a remote location in the bushes, where they will expire naturally. If the wisps still have a large MP then transport them to another lane, else send them with the priests. One last use for a bunch of ragged out priests is to try neutral - if you manage to kill something then good for you, but if they die you've lost nothing and the enemy has gained just as much. The main thing here is to not leave your priests an managed as farming material for the enemy.&lt;br /&gt;&lt;br /&gt;My second main late game activity is pushing with allies into the base. This can be done concurrently with your wisps but try not to let them get in the way (for you allies push), but rather try prevent an enemy retreat. When pushing an enemy base your task is simple. Time your illuminates for each new enemy creep wave. Wipe out every creep wave almost instantly, giving your team a creep advantage. As that is done I usually charge up another Illuminate closer to the base - This acts as a reasonable scare tactic. Buff your allies as often as possible.&lt;br /&gt;&lt;br /&gt;If your team push has garnered the attention of the entire opposing team then very stealthily get your wisps to push another lane. This will either split enemy attention, giving your push an advantage, or your priests will do a darn good job of pushing their lane.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Other random tips and explanations:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;You are the glass cannon. If you dont have any supportive team stunners then you must fend for yourself - Blinkstick is a lifesaver. Recently an animation was added to the blinkstick which makes it easier for someone to follow you, but it is still my favourite means of escape. If you are coining it and the game is going on, you will be able to afford BoT as well and can use this in conjunction with the blinkstick.&lt;br /&gt;&lt;br /&gt;An early game tip: The middle lane low level enemy neatrals are a free kill to Keeper. Every new day, just send an illuminate through the bushes in front of you and you will receive ~90 gold.&lt;br /&gt;&lt;br /&gt;If an enemy hero has just made it out of battle alive and is going to make a sneaky escape then you have a perfect chase vehicle - Old Ignis Fatuus. Either create a two new wisps or get the existing ones with mana and transport them half a screen infront of the escaping hero. Bash him with all your wisp might and hopefully you'll get the kill.&lt;br /&gt;&lt;br /&gt;If the game has gone on then I would suggest buying an Eye of Skadi. It gives you a great stat boost and makes you quite a lot scarier with that slow effect.&lt;br /&gt;&lt;br /&gt;A big mistake I've found myself to make is allowing the enemy team to make large counter attacks. Keeper can fairly easily obliterate a pushing creep wave, but don't let it go by unnoticed. If you leave a counter push they will easily walk over your towers.&lt;br /&gt;&lt;br /&gt;Well thats all I've got to say about that for now. I know I've probably left a lot of standard guide points and technique out, but hey, how many people are actually gonna read this hey? I've actually learned a bit about Keeper myself by writing this. In the future I might post some replays if I'm feeling energetic.&lt;br /&gt;&lt;br /&gt;Here ends my cruddy guide.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-8741011078925442889?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/8741011078925442889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=8741011078925442889' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/8741011078925442889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/8741011078925442889'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/03/my-keeper-build-v10-glass-cannon.html' title='My Keeper Build v1.0 - The Glass Cannon'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_2MGAYAM8yks/RgOy10o0ORI/AAAAAAAAAAM/LtcT_psvPOA/s72-c/BTNGhostMage.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-9032787297165603278</id><published>2007-03-08T22:43:00.000-08:00</published><updated>2007-03-08T23:01:13.651-08:00</updated><title type='text'>Yahoo are funnier than I thought</title><content type='html'>So I've never really used flickr before today. And for the record I dont really use many Yahoo products at all that I'm aware of. Now Not because I don't like them or anything,.. I just happen to use other brands of search etc.&lt;br /&gt;&lt;br /&gt;So today I decided to post my first photos on flicker and to my entertainment, on the login screen is the following phrase: "&lt;cite&gt;Not only does Flickr make you smell better, it also makes you more attractive."&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;... oh and if you're interested in seeing me play the fool.. &lt;a href="http://www.flickr.com/photos/69828188@N00/"&gt;My Photo Set&lt;/a&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/cite&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-9032787297165603278?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/9032787297165603278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=9032787297165603278' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/9032787297165603278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/9032787297165603278'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/03/yahoo-are-funnier-than-i-thought.html' title='Yahoo are funnier than I thought'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-2977623662389193753</id><published>2007-03-07T23:44:00.000-08:00</published><updated>2007-03-07T23:51:03.770-08:00</updated><title type='text'>Aaron Stanton</title><content type='html'>I recently found &lt;a href="http://www.cangooglehearme.com/index.php"&gt;this blog&lt;/a&gt; of Aaron Stanton. I applaud him for his determination. There's not many people in the world that seriously chase a dream or vision seriously and it is inspiring to hear of it actually being done.&lt;br /&gt;&lt;br /&gt;I dont want to try describe his story here,.. rather just open his blog. He has a short video describing his intentions at the top of the page.&lt;br /&gt;&lt;br /&gt;Well done Aaron. Cant wait to hear the outcome of your quest. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-2977623662389193753?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/2977623662389193753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=2977623662389193753' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/2977623662389193753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/2977623662389193753'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/03/aaron-stanton.html' title='Aaron Stanton'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-7160593416866957164</id><published>2007-03-06T00:17:00.000-08:00</published><updated>2007-03-06T00:19:47.468-08:00</updated><title type='text'>The World Through Statistics Eyes</title><content type='html'>This site can be quite an eye opener to the state of the world around us.&lt;br /&gt;&lt;a href="http://www.sasi.group.shef.ac.uk/worldmapper/index.html"&gt;http://www.sasi.group.shef.ac.uk/worldmapper/index.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-7160593416866957164?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/7160593416866957164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=7160593416866957164' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/7160593416866957164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/7160593416866957164'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/03/world-through-statistics-eyes.html' title='The World Through Statistics Eyes'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-8597236717699488721</id><published>2007-03-05T23:38:00.000-08:00</published><updated>2007-03-06T00:17:17.011-08:00</updated><title type='text'>Virtual Computer</title><content type='html'>I have had the desire to build a computer from nothing for quite a while. When I say computer, it's not sticking a motherboard, memory and processor together that I want to do,.. I want to build one from the logic up. After studying the architecture of a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;pc&lt;/span&gt; at university I started to do some more reading on the history of computers and how they and the technology has developed over the years.&lt;br /&gt;&lt;br /&gt;I've been trying to get a LEGO &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;pc&lt;/span&gt; together for a while now. In theory it could perhaps be done, but it is highly impractical. The main problems I've found are friction and the marginal error that grows exponentially between logic gates. I've managed to create the And, Or, and Xor gates out of Lego. Each gate uses &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;approximately&lt;/span&gt; 50 pieces of which 20 are cogs. The cogs are the problem. I've only got about 100...&lt;br /&gt;&lt;br /&gt;So I've looked to TIM &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;as well&lt;/span&gt;... The limitations here are space &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;avaiable&lt;/span&gt; to design on is one screen; and the user cannot interact with the machine while in operation.&lt;br /&gt;&lt;br /&gt;This has led me to the want to create a completely virtual machine in a program. My language of choice would most likely be java, but I also think Flash/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Actionscript&lt;/span&gt; would be a good platform to try. The great thing about Flash is that it lends itself to being far more visual. My problem is that I am not very strong at all in Flash programming.&lt;br /&gt;&lt;br /&gt;I think the best part about creating this &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;TTL&lt;/span&gt; up computer virtually is that it &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;doesn't&lt;/span&gt; pose any mechanical or resource limitations on the project.&lt;br /&gt;&lt;br /&gt;Here's a link to an example..&lt;br /&gt;&lt;a href="http://goldfish.ikaruga.co.uk/logic.html"&gt;http://goldfish.ikaruga.co.uk/logic.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-8597236717699488721?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/8597236717699488721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=8597236717699488721' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/8597236717699488721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/8597236717699488721'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/03/virtual-computer.html' title='Virtual Computer'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-9151252830919469639</id><published>2007-03-01T23:09:00.000-08:00</published><updated>2007-03-02T01:26:18.752-08:00</updated><title type='text'>Happy Birthday Engadget</title><content type='html'>Well, tomorrow is &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Engadget's&lt;/span&gt; &lt;a href="http://www.engadget.com/2007/03/01/engadgets-3rd-birthday-giveaway-day-1/"&gt;third birthday&lt;/a&gt;. They requested readers to dive into history and dig up three of their favourite &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Engadget&lt;/span&gt; posts; One from each year. As a fairly long time subscriber I thought this sounded like fun, or a challenge - Only three articles and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;sooo&lt;/span&gt; much to pick from! Well here goes..&lt;br /&gt;&lt;br /&gt;2004 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Runnerups&lt;/span&gt;:&lt;br /&gt;&lt;a href="http://www.engadget.com/2004/07/23/text-message-classes-for-the-over-50-set/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;SMS&lt;/span&gt; Class's&lt;/a&gt; - I empathise 100% with the families that send their parents to this. Pity I &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;don't&lt;/span&gt; live on the same continent..&lt;br /&gt;&lt;a href="http://www.engadget.com/2004/09/24/cyborg-rats-will-save-you/"&gt;Cyborg Rats&lt;/a&gt; - &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Mmm&lt;/span&gt;, very interesting.. Wonder when they'll be strapping humans onto mind controlling devices?&lt;br /&gt;&lt;br /&gt;2005 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Runnerups&lt;/span&gt;:&lt;br /&gt;&lt;a href="http://www.engadget.com/2005/02/28/plantraco-remote-control-microblimp/"&gt;Remote Blimp&lt;/a&gt; - I have now wanted one of these for two painfully long years.&lt;br /&gt;&lt;a href="http://www.engadget.com/2005/06/30/the-real-life-progress-bar/"&gt;Progress Bar of Life&lt;/a&gt; - I thought this idea was smart.&lt;br /&gt;&lt;br /&gt;2006 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Runnerups&lt;/span&gt;:&lt;br /&gt;&lt;a href="http://www.engadget.com/2006/05/24/hondas-asimo-gets-mind-control-interface/"&gt;Robot &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;HCI&lt;/span&gt; Thought Interface&lt;/a&gt; - Mind control... &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Mmm&lt;/span&gt;. I'd certainly like to control my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;WoW&lt;/span&gt; from the comfort of my sofa. This even beats the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_12"&gt;ingenuity&lt;/span&gt; of Auto-Run!&lt;br /&gt;&lt;a href="http://www.engadget.com/2006/02/16/nasas-spidernaut-robot-arachnid/"&gt;Big Spider&lt;/a&gt; - Want one!&lt;br /&gt;&lt;a href="http://www.engadget.com/2006/12/06/engadgets-holiday-gift-guide-for-son/"&gt;Gift Guides&lt;/a&gt; - These gift guides for (mom/dad/son/etc) were a nice roundup of nifty devices.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;and the winners are....&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2004: &lt;a href="http://www.engadget.com/2004/07/23/text-message-classes-for-the-over-50-set/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;SMS&lt;/span&gt; Class's&lt;/a&gt; - Because I just dont understand how something so simple to me can be so hard to someone else! Ti's life I suppose.&lt;br /&gt;2005: &lt;a href="http://www.engadget.com/2005/02/28/plantraco-remote-control-microblimp/"&gt;Remote Blimp&lt;/a&gt; - For being the coolest toy to have ever hit the market - And I dont even have one. Darn these financial constraints.&lt;br /&gt;2006: &lt;a href="http://www.engadget.com/2006/02/16/nasas-spidernaut-robot-arachnid/"&gt;Big Spider&lt;/a&gt; - You may not understand my romantic inclination towards robots and all things AI, but this bot represents all that is large and robotical in my mind.&lt;br /&gt;&lt;br /&gt;I think my &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_14"&gt;all time&lt;/span&gt; dream would probably be to get &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;NASA's&lt;/span&gt; spider, mount a chair on it, then control it with an RC remote. My every childhood mad scientist dream &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_16"&gt;fulfilled&lt;/span&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-9151252830919469639?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/9151252830919469639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=9151252830919469639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/9151252830919469639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/9151252830919469639'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/03/happy-birthday-engadget.html' title='Happy Birthday Engadget'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-1803750083452237964</id><published>2007-03-01T23:01:00.000-08:00</published><updated>2007-03-01T23:07:26.003-08:00</updated><title type='text'>KeyBot - Computer controls computer...</title><content type='html'>I came across this entry lately in the MakeZine feed. Pretty &lt;a href="http://www.zianet.com/keyboard/"&gt;nifty  device&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In response to a previous article [&lt;a href="http://mindmeat.blogspot.com/2007/02/virtual-bot-vs-lego-bot.html"&gt;Virtual Bot vs. Lego Bot&lt;/a&gt;] - Theres just no way something like &lt;a href="http://www.wow-europe.com/en/index.xml"&gt;WoW &lt;/a&gt;could do to detect third  party applications botting. (If you dont know what this means then  perhaps it's better you move on to the next article..) It is well known  that automated botting and any kind of AFK play in WoW is against  blizzards ToS. Well check it out... &lt;a class="moz-txt-link-freetext" href="http://www.zianet.com/keyboard/"&gt;http://www.zianet.com/keyboard/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-1803750083452237964?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/1803750083452237964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=1803750083452237964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/1803750083452237964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/1803750083452237964'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/03/keybot-computer-controls-computer.html' title='KeyBot - Computer controls computer...'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-1661277770822298882</id><published>2007-02-27T05:17:00.000-08:00</published><updated>2007-02-27T05:24:02.114-08:00</updated><title type='text'>Never touched Linux before</title><content type='html'>Well I want to create a java client/server system that can distribute and balance tasks between client nodes. This I plan on using the the infamously platform independant Java. Well since I dont own a dozen licenses of Windows (nevermind the computers that meet the OS's requirements), I've been looking to the opensource options - To which java lends itself very well!&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cafeerte.com/images/penguin.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 85px; height: 103px;" src="http://cafeerte.com/images/penguin.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://www.damnsmalllinux.org/"&gt;Damn Small Linux &lt;/a&gt;(DSL) looks quite hopefull. It comes in form of a LiveCD so can run from a bootable USB drive or CD. Now I just need to find out if I can run my java apps on the platform... You should've guessed by now that I know very little of the unix/linux platform and its hundreds of derivatives.&lt;br /&gt;&lt;br /&gt;My goal here would be to boot many old (P1 133) machines from a CD/USB into DSL which would then automatically load my java app which would give me complete remote control access of the machine from my server. Mmmm,.. sounds simple enough.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-1661277770822298882?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/1661277770822298882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=1661277770822298882' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/1661277770822298882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/1661277770822298882'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/02/never-touched-linux-before.html' title='Never touched Linux before'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-7756995765947978596</id><published>2007-02-22T00:44:00.000-08:00</published><updated>2007-02-22T01:34:06.578-08:00</updated><title type='text'>Virtual Bot vs Lego Bot</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img530.imageshack.us/img530/1357/title1wl9.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 347px; height: 152px;" src="http://img530.imageshack.us/img530/1357/title1wl9.jpg" alt="" border="0" /&gt;&lt;/a&gt;I've always wanted to create a sentient Lego robot. For a long time now I have had plans to try create a large computer bank running some kind of AI/learning program that &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;wirelessly&lt;/span&gt; transmits with a Lego robot. The new &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;NXT&lt;/span&gt; system from Lego and the open standards they've implemented &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;definitely&lt;/span&gt; makes this a possible reality.&lt;br /&gt;&lt;br /&gt;Things this robot should one day implement, among other things are, a visual processing system, feedback from sensors on the body, and should be able to fire various motor skills. The body sensors should mostly include sensors to indicate touch and feel (sensing bodily harm).&lt;br /&gt;&lt;br /&gt;Now as of last week I just became a dedicated &lt;a href="http://www.worldofwarcraft.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;WoW&lt;/span&gt;&lt;/a&gt; player. Besides the mixed responses you may give about the game or greater culture of it, listen to the idea. What about bridging the control of a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;WoW&lt;/span&gt; character to an AI program as I wanted to link to my Lego robot?.. Now I have heard of '&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;botting&lt;/span&gt;' programs that are already (although illegally) available to gamers that allow them to put their character on 'auto-pilot'. Thus they can level their &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;character&lt;/span&gt; without going through the painstaking chore of culling 1000's of creatures.&lt;br /&gt;&lt;br /&gt;So whats the difference? I don't want to create a program for someones levelling convenience, I want to create a sentient program that lives inside the game. The AI program would live and believe it exists inside of another world. It wouldn't just run ten spells by sequence to gain a level - It will think it is &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;fulfilling&lt;/span&gt; its purpose. It wont run from a higher levelling creature because its programmed to - It will run for its very life. The robot will live and learn within the rules and &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;boundaries&lt;/span&gt; of the game. There is &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;definitely&lt;/span&gt; a certain &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_10"&gt;philosophical&lt;/span&gt; aspect to be taken into account to understand where I'm going with the idea. Kinda reminiscent of the Matrix. Human players being human and this robot being,.. I dunno a virus or independent program...&lt;br /&gt;&lt;br /&gt;Now implementing this thought experiment would most &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;definitely&lt;/span&gt; breach &lt;a href="http://www.worldofwarcraft.com/legal/termsofuse.html"&gt;Blizzards &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;ToS&lt;/span&gt;&lt;/a&gt; (See 14.a). I do understand that Blizzard would not want unmanned characters &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_13"&gt;destroying&lt;/span&gt; everything in the game world as this would ruin the game play for the human players. So don't worry Blizzard I'm not going to do it. I wouldn't know how anyway,.. my experience goes as far as Lego I'm afraid.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-7756995765947978596?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/7756995765947978596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=7756995765947978596' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/7756995765947978596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/7756995765947978596'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/02/virtual-bot-vs-lego-bot.html' title='Virtual Bot vs Lego Bot'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-6070663824565711026</id><published>2007-02-22T00:21:00.000-08:00</published><updated>2007-02-22T00:43:55.727-08:00</updated><title type='text'>Distributed Processing System</title><content type='html'>So - if I want to build an AI program that can respond in real-time and act really clever and learn and things like that, then I reckon I'm gonna need a really powerfull PC and some darned well honed programming skills. Well I'd like to think I have both but in reality those can both be put to question....&lt;br /&gt;&lt;br /&gt;I pretty much know I'll never get my hands on an uber super PC or server - yeh, money doesnt grow on trees in South Africa either.. So I've started wrapping my mind around building a massively distributed and parallel processing system. In the end these prove to be more powerfull in terms FLOPS they can process per time anyhow. But the challenge to myself is to build one that can receive input, process it, and return output all in real-time.&lt;br /&gt;&lt;br /&gt;A list of existing projects similar to this and their purposes can be found here - &lt;a href="http://en.wikipedia.org/wiki/List_of_distributed_computing_projects"&gt;http://en.wikipedia.org/wiki/List_of_distributed_computing_projects&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-6070663824565711026?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/6070663824565711026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=6070663824565711026' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/6070663824565711026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/6070663824565711026'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/02/distributed-processing-system.html' title='Distributed Processing System'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-2712193589184407679</id><published>2007-02-22T00:16:00.000-08:00</published><updated>2007-02-22T00:17:49.194-08:00</updated><title type='text'>My Incredible Full Adder</title><content type='html'>It has been a long time quest of mine to build a mechanical &lt;a href="http://en.wikipedia.org/wiki/Von_Neumann_architecture"&gt;Von Neumann machine&lt;/a&gt;. Lego is a particuarly interesting platform to try this on. Recently my sister reminded me of a game I used to play back in the day when the world was a lot bigger,.. &lt;a href="http://en.wikipedia.org/wiki/Incredible_Machine"&gt;The Incredible Machine&lt;/a&gt; (TIM). Classic game in it's time (in my opinion), and still fun to create the odd &lt;a href="http://en.wikipedia.org/wiki/Rube_Goldberg_Machine"&gt;Rube Goldberg machine&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;After finding the game and reacquanting myself with the devices and physics, I set out to create something usefull (this is relative..) I set off with designing some &lt;a href="http://en.wikipedia.org/wiki/Logic_Gate"&gt;logical gates&lt;/a&gt;. The &lt;span style="font-style: italic;"&gt;AND&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;OR&lt;/span&gt;, and &lt;span style="font-style: italic;"&gt;NOT &lt;/span&gt;gates were a breeze, but the &lt;span style="font-style: italic;"&gt;XOR &lt;/span&gt;gate was more of a challenge. Size is critical here.. It's not an option to build an &lt;span style="font-style: italic;"&gt;XOR &lt;/span&gt;out of &lt;span style="font-style: italic;"&gt;OR&lt;/span&gt;'s and &lt;span style="font-style: italic;"&gt;AND&lt;/span&gt;'s.&lt;br /&gt;&lt;br /&gt;Heres a picture of my &lt;span style="font-style: italic;"&gt;AND &lt;/span&gt;gate.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1832/4044/1600/and.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/1832/4044/200/and.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The link between the gates was a red laser. Red laser on = 1, Red laser off = 0.&lt;br /&gt;&lt;br /&gt;Here's the links to all my gates: &lt;a href="http://img301.imageshack.us/img301/6966/andjl5.jpg"&gt;AND&lt;/a&gt;, &lt;a href="http://img86.imageshack.us/img86/3900/oryx8.jpg"&gt;OR&lt;/a&gt;, &lt;a href="http://img120.imageshack.us/img120/781/xorqa0.jpg"&gt;XOR&lt;/a&gt;, and &lt;a href="http://img96.imageshack.us/img96/2859/notkv9.jpg"&gt;NOT&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now the only logical thing (excuse the pun) to do when you've built these gates is construct a &lt;a href="http://en.wikipedia.org/wiki/Full_adder"&gt;full adder&lt;/a&gt;.  Here it is.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1832/4044/1600/fulladdersmall.jpg" alt="" border="0" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The fullsize image can be downloaded &lt;a href="http://img86.imageshack.us/img86/24/fulladderln9.jpg"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-2712193589184407679?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/2712193589184407679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=2712193589184407679' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/2712193589184407679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/2712193589184407679'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/02/my-incredible-full-adder.html' title='My Incredible Full Adder'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7577414259337915956.post-2213028599736110241</id><published>2007-02-22T00:07:00.000-08:00</published><updated>2007-02-22T00:16:33.453-08:00</updated><title type='text'>Modular and/or Self Replicating Robots</title><content type='html'>A while back I had a mind numbing, absolutely brilliant idea.. Make a robot that can make robots. Well to my dismay it had already been done. &lt;a href="http://www.google.com/search?q=modular+self+replicating+robot"&gt;[Google This]&lt;/a&gt; (It just goes to further prove that you're probably never the first person to do something)&lt;br /&gt;&lt;br /&gt;I was quickly amazed at what people had already achieved in this field. (Just look through some of the google results and you'll see what I mean) Well I do plan to be uber rich one day, and when that day comes I'll give this idea a shot, but for now here are some of my ideas.&lt;br /&gt;&lt;br /&gt;Here's a picture of what I came up with (Okay, so MS Word shapes aren't the best!! But they should give you the idea):&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img484.imageshack.us/img484/7426/nodebasicda5.png"&gt;&lt;img style="cursor: pointer; width: 112px; height: 148px;" src="http://img484.imageshack.us/img484/7426/nodebasicda5.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;... and here's a quick 3D rendition I made in blender. (Yes, I am a beginner)&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1832/4044/1600/botpart1tn.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1832/4044/200/botpart1tn.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://img475.imageshack.us/img475/7892/botpart1ir9.png"&gt;&lt;span style="font-style: italic; font-size: 85%;"&gt;Higher definition pic (50k).&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;An explanation:&lt;br /&gt;The black part is just the body/hull. The blue'ish discs rotate. The grey panel in the middle of the discs are electromagnets to hold units together. The red circular tracks are for transfering power. Details that are not in the pictures are: Communication by means of wireless; And some extra mechanism to bind modules by means of retractable hooks. The top disc in the pictures above should be able to rotate around the body 90 degrees either way.&lt;br /&gt;&lt;br /&gt;A robot could be made purely out of these modules, but theres always a creative need to add some more diversity to the situation.. Here's a list of pictures of other modules I would add to this robots biology aswell:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://img179.imageshack.us/img179/2674/nodewheelbg6.png"&gt;Wheel node&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://img295.imageshack.us/img295/7564/nodegripperur0.png"&gt;Gripper node&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://img460.imageshack.us/img460/4518/nodecamerapk4.png"&gt;Camera Node&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://img384.imageshack.us/img384/9482/nodeextendna7.png"&gt;Extender Node&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://img460.imageshack.us/img460/2886/nodebatteryvy2.png"&gt;Battery Node&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://img384.imageshack.us/img384/4492/nodecomputerbo4.png"&gt;Computer Node&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The computer node would contain a more powerfull CPU to lift the burden off the basic nodes.&lt;br /&gt;&lt;br /&gt;So modular it is.. what about self replicating? Well we could add more specific modules to our artillery. To make this scheme self replicating I would add the components found in a typical CNC machining tool. With that the robot could forge more modules when provided with the raw materials.&lt;br /&gt;&lt;br /&gt;To finish off, heres a quick build up of a mobile robotic arm using some of the modules described above. &lt;a href="http://img177.imageshack.us/img177/6200/armbotvn3.png"&gt;Picture Here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7577414259337915956-2213028599736110241?l=mindmeat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mindmeat.blogspot.com/feeds/2213028599736110241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7577414259337915956&amp;postID=2213028599736110241' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/2213028599736110241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7577414259337915956/posts/default/2213028599736110241'/><link rel='alternate' type='text/html' href='http://mindmeat.blogspot.com/2007/02/modular-andor-self-replicating-robots.html' title='Modular and/or Self Replicating Robots'/><author><name>Pat Cullen</name><uri>http://www.blogger.com/profile/06074122166169270459</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_2MGAYAM8yks/TQuPCYcR_rI/AAAAAAAAAF4/tZwv9om4Yzg/S220/profile.jpg'/></author><thr:total>1</thr:total></entry></feed>
