Since I have a test at my signing language course tomorrow, i combined practicing and making something creative. I spelled the word "creativity" using the international signing alphabeth as my day 8 project

Since I have a test at my signing language course tomorrow, i combined practicing and making something creative. I spelled the word "creativity" using the international signing alphabeth as my day 8 project

one of my cacti started to bloom today. So I had to make a photo for 30daysofcreativity

I made a picture of a nosy little dinosaur. This is my day 6 project for 30DaysOfCreativity
I also added it to my drawings gallery

I always wanted to see where the readers of my blog are comming from, so I took a picture frame and inserted a world map, a handfull of leds and an arduino. Some soldering and some rubyscripts later I had my hardware geo-aware logfile visualization.
I have a script running at the server that parses new ip adresses from the log file and geocodes them. Than the continent code is sent to my mac where i have a little script that forwards the continent code to the serial port. And finally the arduino in the picture frame is making the leds blink. The whole project was hacked together as a weekend project so the scripts might need some "fine-tuning" :-)
This is my day 5 project for 30DaysOfCreativity
so please read my blog to make the leds blink :-)

The world map is released under a creative commons licence and cand be downloaded here
The geocoding is done using the iprange to continent mappings from countryipblocks.net
The hardware part looks like this (just some leds and resistors)

This is the code i'm running on my arduino int count[] = { 0,0,0,0,0,0,0 };
1 void setup() { 2 pinMode(2,OUTPUT); 3 pinMode(3,OUTPUT); 4 pinMode(4,OUTPUT); 5 pinMode(5,OUTPUT); 6 pinMode(6,OUTPUT); 7 pinMode(7,OUTPUT); 8 pinMode(8,OUTPUT); 9 Serial.begin( 9600 ); 10 } 11 12 void loop() { 13 if (Serial.available() > 0) { 14 byte in = Serial.read(); 15 if (in >= '1') { 16 count[ in - '1' ] = 50; 17 } 18 } 19 for( int i =0; i < 7; i++) { 20 if (count[i] > 0) { 21 digitalWrite( i+2, HIGH); 22 count[i]--; 23 } else { 24 digitalWrite( i+2, LOW); 25 } 26 } 27 28 delay(10); 29 }
This is the script that runs on the computer the arduino is connected to
1 require 'rubygems' 2 require 'serialport' 3 require 'socket' 4 include Socket::Constants 5 SERIALPORT="/dev/tty.usbserial-A600ag8n" 6 7 8 sp = SerialPort.new( SERIALPORT, 9600, 8, 1, SerialPort::NONE) 9 sleep(2) 10 (1..7).each{ |i| 11 sp.write( "#{i}" ) 12 sleep(0.2) 13 } 14 15 socket = Socket.new( AF_INET, SOCK_STREAM, 0 ) 16 sockaddr = Socket.pack_sockaddr_in( 2200, '' ) 17 socket.bind( sockaddr ) 18 socket.listen( 5 ) 19 while(true) 20 client, client_sockaddr = socket.accept 21 led = client.readline.chomp 22 sp.write( led ) 23 client.close() 24 end 25 26 sp.close()
and this is the script that runns on my server and geocodes the ip adresses
1 require 'socket' 2 include Socket::Constants 3 4 def ip2int(ip) 5 block = ip.split('.') 6 ipi = block[0].to_i * 256 * 256 * 256 + block[1].to_i * 256 * 256 + block[2].to_i * 256 + block[3].to_i 7 return ipi 8 end 9 10 def parseCountryFile( fn ) 11 ranges = [] 12 f = File.new("geocodeip/country_ip/#{fn}") 13 f.each_line { |l| 14 if l[0] != '#'[0] then 15 tmp = l.split("-") 16 start = ip2int(tmp[0].strip) 17 stop = ip2int(tmp[1].strip) 18 19 ranges << [start, stop] 20 end 21 22 } 23 return ranges 24 end 25 26 def findIp( map, ip ) 27 ipi = ip2int( ip ) 28 map.each{ |continent,ranges| 29 ranges.each{ |start,stop| 30 return continent if ipi > start and ipi < stop 31 } 32 } 33 return "4" 34 end 35 36 def process( map, line ) 37 t = Thread.new do 38 continent = findIp( map, line.split(" ")[0]) 39 socket = Socket.new( AF_INET, SOCK_STREAM, 0 ) 40 sockaddr = Socket.pack_sockaddr_in( 2200, 'nikkimac' ) 41 socket.connect( sockaddr ) 42 socket.puts continent 43 socket.close 44 puts continent 45 end 46 end 47 48 map = {} 49 map["1"] = parseCountryFile("Oceania_range.txt") 50 map["2"] = parseCountryFile("Asia_range.txt") 51 map["3"] = parseCountryFile("India_range.txt") 52 map["4"] = parseCountryFile("Europe_range.txt") 53 map["5"] = parseCountryFile("Africa_range.txt") 54 map["6"] = parseCountryFile("South_America_range.txt") 55 map["7"] = parseCountryFile("North_America_range.txt") 56 57 puts "parsing done ..." 58 59 f = File.new( "/var/log/apache2/access.log" ) 60 f.seek( 0, IO::SEEK_END ); 61 last = f.pos 62 while true 63 sleep(1) 64 size = f.stat.size 65 if last < size then 66 l = f.readline 67 process( map, l ) 68 while !f.eof 69 l = f.readline 70 process( map, l ) 71 end 72 last = f.pos 73 end 74 end
I made another abstract art generator in processing, this time i'm using the color red. this is my day 4 project for 30DaysOfCreativity
click here to give it a try

Pictured above is the AI Full Of Techno t-shirt. (Click 'er for bigger.) It will be printed on 100% cotton in a 4.3 ounce weight (normal "cheap" shirts are 6 ounce), three ink colors. The shirt is $20, or $22 if you're a 2X type. Shipping depends on quantity and locale. Paypal only.
I'm going to stop sales and make the t-shirt order on Monday, but I'll mention at this juncture that the minimum number, in order to keep this pricing model, is fairly high. So we need quite a few people to get up in this whip. I don't really have the money right now to cover any overs, so if you voted "yes" in the "I'll Buy A Full Of Techno T-Shirt" a few months back, now's the time to cowboy up.
Anyhow, the order page is here. Spread that link around and get your peeps on board so we can work it. http://bit.ly/aWWB5s
Now, I don't particularly care for the song itself, which is pretty thin. And she's obviously nervous as hell, being her first time on TV and all. But there are some interesting things about this performance that are worth noting. Chief among these is that this is an actual girl, that can actually sing and dance, performing an actual song, with an actual band that can actually play.
It's really sad that this is worth noting, since this was the norm not so very long ago. But when you've received a decade-long barrage of nasal-voiced scale princesses with backing tracks and indie rock shoe-gazes that look down on any aspect of virtuosity and performance in favor of some hazy concept of "independence," this is really quite a relief.
So, apparently Sean Combs has decided to save us from ourselves. Well, more power to him, I say. http://bit.ly/bhpdoG
The third in BeatServ's popular Dark Downtempo series of sample sets is now available for purchase up in here. As the poet once said, "let it flow. Let yourself go. Slow and low, that is the tempo." Of the three, this is the best one, IMO. Which isn't to knock the other two at all, of course.
Also too, Sonic Couture has a very nice release right around the corner. I've got a pre-release copy here, and it's gonna go over well with the synthy-nerds. James said it would be out by this weekend, but I just checked their site and it's not on there yet, and I'm not sure whether I'm supposed to say what it is or not. It rhymes with SchmovaSchmord, though.
Finally, I think we have this t-shirt shit figured out. I'm going to make a couple tiny changes to the artwork and such, but we're going to be looking at $20 per plus shipping, I believe. I'll put 'em up for pre-order when everything is sorted. We're going to have a minimum order, though, so we'll need a fair portion of people that previously said they were on board with this whole Full Of Techno shirt concept to actually be on board (325 or so when we did the vote on whether to do it or not a few months back.) http://bit.ly/dktoeu
As the title says. Discord3 is now available for purchase in the AD store. Hit it.
Note the following: as we discussed here a couple months ago, this release, on the Mac side, is Intel only. No PPC version. Also, the 64-bit versions aren't done yet. Gonna be a couple weeks on those. One piece of good news for the AU users is that this AU (and all others following it) has MIDI Learn just like the VSTs always have. So that's fun.
Anyhow, let me know if you've got any issues, complaints, praise, comments, whatever. http://bit.ly/bhM2zR
That's all we're willing to tell right now, unfortunately. This will be the strangest product we've made, and that's saying something, as we have some fairly strange products.
In other news, the Full Of Techno t-shirt will go up for pre-order on Monday or thereabouts. Looks like it's going to be the same price as the previous shirts, $20. That was tricky to pull off, as it has three colors where the others only had one. I'll put up the final artwork over the weekend, and we can go to town on it.
And finally, the new AI site (which has been idling for a couple reasons) is essentially done, so one day Real Soon Now, you'll visit and the site will look completely different. It'll still be orange and white, of course. There is also a full mobile site for smartphone users that makes things pretty easy to deal with in that context. http://bit.ly/agv1vz
NAME
Jinhyung Kim, 김진형 (aka: IRONY ISLET)
EDUCATION
Whimoon High School ‘98, Dong-Ah Institute of Media and Arts ‘00 in South Korea and go to Berklee College of Music in Boston now.
WORK
As an arranger and composer, many Korean pop songs, major film and drama BGMs and 2002 Korea-Japan Worldcup Music for Seoul, South Korea.
INFLUENCES
Yoonsang, Dongsung Kim, Jinku Kim, Sangwon Shim, Kwangmin Kim, BK:Astro Bits:Bumsoo Kim, Wonju Nah, Sungjae Hwang, Jinhwan Kim@South Korea / and Kanno Yoko, Kazuhiko Maeda, Opolopo, Steve Reich, Keith Jarrett, Eliane Elias, Fred Hersch, Alan Silvestri, Toots Thielemans, Quincy Jones, Shakatak, George Duke, John Pizzarelli, Cornelius, Antonio Farao, Maria Schneider Orchestra, Diane Schuur, Towa Tei, Fantastic Plastic Machine, Mondo Grosso, Cassius, Daft Punk, Dave Grusin, David Foster, David Benoit, Abraham Laboriel, Gilberto Gil, Glenn Medeiros, Hisaishi Joe, Incognito, Ivan Lins, Jamiroquai, D’sound, Down to the Bone, Joan Gilberto, Astrud Gilberto, Bebel Gilberto, Andrea Bocelli, Brian Mcknight, Kyoto Jazz Massive, Lenny Kravitz, Lisa Ono, Natalie Cole, Pat Metheny, Patti Austin, The Rippingtons, Ryuichi Sakamoto, Hasymo, Stevie Wonder, Sting, Take 6, Toto, Underworld, Warren g, Whitney Houston, Yasutaka Nakata, Yutaka Yokokura@Planet Earth and so on.
FAVORITE MOVIES
1989, Cinema Paradiso, Director’s Cut / 1995, The Usual Suspects / 1995, Twelve Monkeys / 1999, The Thirteenth Floor / 2000, Memento / 2004, The Butterfly Effect, Director’s Cut / 2004, The Notebook / 2006, Heavenly Forest and so on.
FAVORITE QUOTATIONS
“To know is nothing at all; To imagine is everything.” - Anatole France / “Nothing is more despicable than respect based on fear.” - Albert Camu.
IRONY ISLET.COM
IRONY ISLET.NET
MY SPACE
© 2010 IRONY ISLET