Saturday 29 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.