Saturday, 29 November 2008

Monday, 24 November 2008

Saturday, 15 November 2008

Thursday, 13 November 2008

Reading

The Ashes of Worlds :- Book 7 of Saga of Seven Suns

Sunday, 26 October 2008

Saturday, 18 October 2008

Saturday, 13 September 2008

Friday, 22 August 2008

science week

"I like that, sir, if I may say so, because it’s a very good thing, indeed it’s one of the things aimed at by this Academy, that we should not fall into the error of thinking that science began this morning." :- Robert Menzies prime minister of Australia opening the Shine Dome (aka Becker House, Jack Becker gave 100K of 1961 pounds and was dumped for John Shine's 1M 2000 AUD, cheek !)

Tuesday, 19 August 2008

Friday, 18 July 2008

Zigzag in C

Here is the zigzag decoder in C

//=======================================================
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main (int argc, char *argv[]) {

const int ArraySize= 10001 ;
char cryptStr[ArraySize];
int rowlen,r,newrow;
char array[ArraySize];

if ( argc < 3 ){
printf("%s\n","zigzag_d rowlen cryptmessage");
} else {

rowlen = atoi(argv[1]) ;
strcpy(cryptStr,argv[2]);
//adjust for zero-numbering
rowlen-- ;

//init the array
for (r=0;r <=ArraySize ;r++){ array[r]=0; }

int rowIndex =0;
int tempIndex=0;
int arrayLen = strlen(cryptStr)-1;
r=0;
newrow=0;

while(r <= arrayLen ){
if (newrow == 1 ) {
// new row
rowIndex++;
tempIndex = rowIndex;
array[tempIndex] = cryptStr[r];
if (rowIndex == rowlen) {
tempIndex = tempIndex+2*rowlen;
} else {
tempIndex = tempIndex+(2*(rowlen-rowIndex));
}
r++;
newrow=0;
} else {

if((rowIndex > 0 ) ) { //don't do on first row
if(newrow==0) {
array[tempIndex] = cryptStr[r];
r++;
tempIndex = tempIndex+2*rowlen-(2*(rowlen-rowIndex));
if (tempIndex >arrayLen) { newrow =1; }
}
}

if(rowIndex != rowlen) { //don't do on last row
if(newrow==0){
array[tempIndex] = cryptStr[r];
r++;
tempIndex = tempIndex+(2*(rowlen-rowIndex));
if (tempIndex > arrayLen) { newrow =1 ; }
}
}
}
}

printf("%s\n", array);
}
}
//=====================================================================

Sunday, 13 July 2008

Zigzag Cypher

The Zigzag cypher (also known as a Rail Fence is a simple transposition scheme and not very strong, this is just an exercise in tinkering.
First here is the encoder:

#!/usr/bin/perl
$rowlen = @ARGV[0];
$message = @ARGV[1];
if ( @ARGV == 0) {
$message="CHARLIETHEWONDERBUDGIE";
$rowlen =6;
}
$rowlen -- ;
@letter = split '', $message;

$dir =0;
$index =0 ;

for ($r=0;$r<= @letter ;$r++){
@array[$index]=@array[$index].@letter[$r];
if($dir == 0) { $index++; }
if($dir == 1) { $index--; }
if ($index >$rowlen ) {
$dir = 1 ;
$index-=2;
}
if ($index <0) {
$dir=0;
$index+=2;
}
}

for ($r=0;$r<= $rowlen ;$r++){
print @array[$r] ;
}
print "\n";


After some trial and error the decoder

#!/usr/bin/perl

sub unzig {
#adjust for zero-numbering
$rowlen-- ;
@letter= split '', $cryptStr;

for ($r=0;$r <= scalar(@letter) ;$r++){
@array[$r]=" ";
}

$rowIndex =0;
$tempIndex=0;
$arrayLen = @letter-1;
$r=0;
$newrow=0;
while($r <= $arrayLen ){
if ($newrow == 1 ) {
# new row
$rowIndex++;
$tempIndex = $rowIndex;
@array[$tempIndex] = @letter[$r];
if ($rowIndex == $rowlen) {
$tempIndex = $tempIndex+2*$rowlen;
} else {
$tempIndex = $tempIndex+(2*($rowlen-$rowIndex));
}
$r++;
$newrow=0;
} else {

if(($rowIndex > 0 ) ) { #don't do on first row
if($newrow==0) {
@array[$tempIndex] = @letter[$r];
$r++;
$tempIndex = $tempIndex+2*$rowlen-(2*($rowlen-$rowIndex));
if ($tempIndex >$arrayLen) { $newrow =1; }
}
}

if($rowIndex != $rowlen) { #don't do on last row
if($newrow==0){
@array[$tempIndex] = @letter[$r];
$r++;
$tempIndex = $tempIndex+(2*($rowlen-$rowIndex));
if ($tempIndex > $arrayLen) { $newrow =1 ; }
}
}
}
}

for ($r=0;$r <= scalar(@letter) ;$r++){
print @array[$r];
}

print "\n";
} #end sub

#main
$rowlen = @ARGV[0];
$cryptStr = @ARGV[1];
if ( @ARGV == 0) {
print "call with ./zigzag_d.pl rowlength cryptmessage \neg. ./zigzag_d.pl 3 COPATGAHRRY\n";
#do a demo
$cryptStr="WECRLTEERDSOEEFEAOCAIVDEN";
$rowlen =3;
unzig;
} else {
#there was command line input
unzig;
}




And a few lines for a test script

./zigzag_e.pl 3 CARTOGRAPHY
./zigzag_d.pl 3 COPATGAHRRY

./zigzag_e.pl 4 THISISENCRYPTEDWITHTHEZIGZAGCYPHER
./zigzag_d.pl 4 TETHGPHSNPETTIZYHIICYDIHZACESRWEGR

./zigzag_d.pl 6 CWIHEOGEAHNDRTDULEEBIR
./zigzag_d.pl 10 CERHDYTOHEGASSVAOOEFCLWADANR

Monday, 30 June 2008

Pop-up robot cards by Susan Bluerobot


Susan Bluerobot has posted a cool pop-up robot card project

Thursday, 27 March 2008

Sunday, 16 March 2008

OpenBiblio demo

I have been tinkering with OpenBiblio library software and deployed a demo... Later, had to remove the demo due to unwanted hacking (this means you q5c.ru). Thanks for nothing.

Wednesday, 12 March 2008

Reading

Dervish is Digital by Pat Cadigan

Friday, 29 February 2008

Skink

This charming little skink found his way inside, here he is prior to release


Back in the garden


A little closer (he was lying doggo)

Thursday, 28 February 2008

Reading

Continuing the Neal Stephenson input stream: Interface

Sunday, 3 February 2008

Saturday, 19 January 2008

small blue robot


This small blue robot is implemented in plastic canvas.

Friday, 18 January 2008

Pelicans

Reading

The Confusion

Kangaroo Cargo Bike



Chituma have got these neat cargo bikes, they are selling them with electric motors fitted but also available as pedal-only. The pedal unit is going for $795 AUD.