'Hello World' in 80 hacks / In 80 Sprachen 'Hallo Welt' - Phase 1
I have started a multilanguage programing project. The goal is to create a "Hello World"-program using 80 programing languages. A list of programing languages i intend to use is already available on the project-page
read more ...Nagios Glitzerlampe
I made a new project page for my nagios visualisation system written in ruby.
read more ...Bouncingball
I hacked together a BouncinBall-Demo in 5 minutes using processing.
Why? Just because i can :-)
read more ...Demo Exhibition
Yesterday some workmates and i went to an exhibition about demos in the MQ. It was realy realy funny to see C64, Sinclare, Amiga, Atari and co in reality again.
They even had a Atari Falcon 030!! And a FastTrack II!!
read more ...Processing OSC
I have recently posted about my chuck-script that generates osc events from my m-audio iControl. Now i have written a Processing-sketch, that visualizes the events. The OSC-Events are parsed using the oscP5.
import oscP5.*;
import netP5.*;
OscP5 oscP5;
int buttons[] = {0,0,0,0,0,0,0,0};
float knobs[] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
void setup() {
size(500,500);
frameRate(25);
background( 0 );
oscP5 = new OscP5( this, "239.0.0.1", 3334 );
}
void draw() {
drawControl();
}
void drawControl() {
smooth();
ellipseMode( CORNER );
for (int i = 0; i < 8; i++ ) {
fill( 255 * buttons[i] );
stroke( 255 );
ellipse( 10, 20 + i * 20, 15, 15 );
fill( 0 );
rect( 40, 20 + i * 20, 100, 15 );
noStroke();
fill( 0, 0, 128 );
rect( 41, 21 + i * 20, 99 * knobs[i], 14 );
}
}
void oscEvent( OscMessage m ) {
print( " pattern " + m.addrPattern());
println( " type " + m.typetag());
if (m.addrPattern().equals( "/icontrol/button" )) {
int chan = m.get(0).intValue();
int val = m.get(1).intValue();
buttons[chan] = val;
} else if ( m.addrPattern().equals( "/icontrol/knob")) {
int chan = m.get(0).intValue();
float val = m.get(1).floatValue();
knobs[chan] = val;
}
}
read more ...stinky emails
Last week a college came up with the theory, that nobody would have mails lying around in his inbox, if they would start to stink after a while. To check this, i came up with the "email-stinky-o-mat" i already have hacked together a small ruby script that calculates the "stinkycount" for a mailbox.
require 'net/imap'
require 'date'
imap = Net::IMAP.new('mailhost')
imap.login( 'user', 'password')
imap.select( "INBOX" )
stinkycount = 0
imap.search(["BEFORE", "#{(Date.today()-20).strftime( "%d-%b-%Y" )}" ]).each do |message_id|
stinkycount += 1
end
puts "#{stinkycount} stinking messages found"
this count can now be sent to a microcontroller (an arduino for example) which starts a fan, that is standing next to a reservior containing someting stinky - et voila (imagine drum roll here) - emails start to stink after 20 days :-)
read more ...Javadeus08
Yesterday i attended to the javadeus08, the first java-conference by sun in austria.
Most of the sessions were really interesting, and i definitly have to give jmaki a try :-)
The only thing, that annoyed me, is that there was no free wlan and that even the speakers had a veeeeeeeeery slow connection for their demos
read more ...workbench
6 years ago we have put up a table in our cellar for soldering and making stuff. since then we put various stuff in big boxes on the table an in front of it "just until we find a proper place" ... :-/
today we finaly managed to clean our cellar, put up 3 new shelves and store the stuff in them, and - TADA - the table can be used now!!
i just went down and soldered a kit - just because i can :-)
read more ...chuck icontrol
I own a m-audio icontrol and some time ago i started to play with chuck a programming language for making electronic music. today i managed to link them together and use my icontrol to start and stop my chuck programms :-)
next thing i will try is to convert the values from the "endless"-knobs to floats and to pass messages to the sub programms
1 => int device;
MidiIn min;
MidiOut mout;
MidiMsg msg;
// open the device
if( !min.open( device ) ) me.exit();
if( !mout.open( device ) ) me.exit();
[0,0,0,0,0,0,0,0] @=> int on[];
[-1, -1, -1, -1, -1, -1, -1, -1] @=> int ids[];
["beep.ck", "sing.ck", "autoloop.ck", "", "", "", "", "" ] @=> string names[];
while ( true ) {
min => now;
// get the message(s)
while( min.recv(msg) ) {
// print out midi message
<<< msg.data1, msg.data2, msg.data3 >>>;
if ( msg.data1 == 176 && msg.data2 >= 64 && msg.data2 < 72 && msg.data3 == 127 ) {
msg.data2 - 64 => int chan;
if ( on[chan] == 1 ) {
0 => on[chan];
sendOff( chan );
if (ids[chan] > 0) {
Machine.remove( ids[ chan ] )
-1 => ids[chan];
}
} else {
1 => on[chan];
sendOn( chan );
if ( names[chan] != "" ) {
Machine.add( names[chan] ) => ids[chan];
}
}
}
// send( msg.data1, msg.data2, msg.data3 );
}
}
fun void sendOn( int chan ) {
send( 176, 64 + chan , 127 );
}
fun void sendOff( int chan ) {
send( 176, 64 + chan, 0 );
}
fun void send( int d1, int d2, int d3 ) {
MidiMsg msg;
d1 => msg.data1;
d2 => msg.data2;
d3 => msg.data3;
mout.send( msg );
}
read more ...multitouch
since i have heard of lemur i wanted to try a multitouch display. i later found instructions on instructables.com showing how to build an DYI-Multitouch Display using a pictureframe, some infrared leds, a modified webcam and a lcd projector .
i dont own a lcd projector and so my multitouch display still remained a dream.
but recently i found a blog-post showing how to build a "moultitouch light". This version doesnt use infrared but normal light and it doesnt display the picture on the display but uses a second monitor.
i quickly hacked together my own version
and managed to get some of the demos running :-) - VEEEEERY COOL
(aehm - yes the penguin is a webcam)
i didnt manage to get the flash demos running on linux but the smoke demo and the calibration tool are working now
read more ...