Note to my female readers: Sorry, I’m addicted to programming

Because of my UNIX backgrounds I feel most comfortable working in the black (My girlfriends’ terminology of ‘a terminal’). Also, I’m a frequent IRC chat user. Actually, after booting up my computer, the first thing I do is re-attach my IRC session. Therefore I think it’s only adequate for me to make my personal manager available ‘in the black’.

This weekend I couldn’t resist taking a few hours to quick-and-dirty mashup these:

  • Backpack IRC interface (bot)
  • Backpack Command Line Interface (cli)

code: backpack_tt-290107.tar.gz (written in Ruby of course)

Highly Effective People 2.0

on January 28, 2007

Since my last school days are numbered – last week I had a 9 out of 10 for my final thesis – I’m preparing to get more organized. Even though this week is about celebration and slacking off, I will have to prepare for a busy and volatile life.

Backpack: Get Organized and Collaborate

That’s where Backpackit comes in! This online tool let’s you organize loosely and integrate it with email/sms/calendar. So far it works pretty neat for my situation. Loose and principle based which backs the philosophies of The Seven Habits of highly Effective People

This Friday I will move to Tokyo for two months where I will do: projects, job hunting and learn Japanese.

Since my domain darkwired.org is only used for IRC (chatting) I decided to write a web interface. The Web interface uses the EyeRC API and is built on RubyOnRails.

Currently, you can join our test channel on http://www.darkwired.org/ :

I have no intention to develop it any further, however, I might take some time to finish it off (sourcecode):

  • refactoring
  • unit test case

I hope this was the last IRC client I ever wrote :)

(related code: BASH IRC Client )

Code update: Ruby-EyeAreSee

on January 18, 2007

At the moment I’m working on a little web-IRC client. My intention was to use the Ruby-IRC Framework, but I’ve decided to write my own API for the following reasons:

  • It is impossible to establish multiple connections (multi-user) in the same process
  • Event-handlers can not be flexible.
  • After disconnecting it’s almost impossible to reconnect using the same instance or a new one.

Now I have a slim SSL capable IRC API that fulfills all my needs.

Click here to view examples and documentation

Click here to download the API (Beer-Ware Licensed)

example IRC client:

require 'EyeAreSee'

irc = EyeAreSee.new("EyeAreSee", "irc.darkwired.org", :ssl => true, :channel => "#test")

# catch all lines for debugging
irc.on_message { |line|
  puts "debug: "+line if $DEBUG
}

# catch all server messages, eg nickname already in use
irc.on_server_message { |event|
  next if event[:code] == 372
  puts event[:code].to_s+": "+event[:message]
}

# handle 372 messages (Message of the Day)
irc.on_server_message(372) { |event|
  puts "motd: "+event[:message]
}

# display all messages directed to the #test channel
irc.on_message("privmsg", :to => "#test") { |event|
  puts event[:from_nickname].to_s+" says: "+event[:message].to_s
}

# auto-response to private message from specific user
irc.on_message("privmsg", :to => "EyeAreSee", :from_nickname => "Drakonen") { |event|
  sleep(rand*10)
  responses = ["hmmmz", "boeiend", "interessant"]
  irc.message event[:from_nickname], responses[(rand*3).to_i]
}

# display all messages directed to the #test channel
irc.on_message("privmsg", :to => "#test", :message => "please go away EyeAreSee") { |event|
  irc.message("#test", "OK "+event[:from_nickname]+", bye everyone!") 
  irc.quit
}

irc.start
irc.start #reconnect once after a quit

the Webemoth

on January 15, 2007

Before Oreilly dropped the term ‘Web 2.0’ there was no Web 1.0. At this point, people are discussing the definition of Web 3.0 – while we don’t even have a definition of Web 2.0.

In his article on KurzweilAI, Nova Spivack outlines the characteristics of all three versions. All of them are valid observations I think. However, Web3.0 observations like mobile internet access, broadband adoption, SaaS, open communications etc. can also be done in the Web2.0 and Web1.0 eras.

I don’t think we’re entering the ‘third generation’ because there can be no clear definition of ‘the new version’. I think the term Web2.0 was just a joke (and intended so by Oreilly), funny, ha ha, over. Let’s just drop the dot and the whole versioning system altogether. The evolution of the Web is real however, and it’s dead serious.

The post 2006 Web – I like to call it ‘the Webemoth’ – is growing and shaping itself in numerous trends. In the Herald Tribune, John Markoff observes the following ‘next steps’:

  • natural language understanding
  • machine learning
  • the semantic web
  • data mining

I think these trends – when added to our current trends – will indeed move us towards a better web.

Natural Language Parsing is something which is popular among some of the latest ‘top secret’ start-ups like powerset.com. I also think it’s something very interesting and I bet Google has been working on it for quite some time. NLP is already being done in high-end systems like NSA’s echelon to keep track of our emails here in Europe. Just like powerful encryption, it’s the next thing to come in hands of ordinary cattle like us.

Machine Learning is something being done all over the world – like for example at your credit card company – and will advance the web enormously. Even though, some of the top ranking websites are already harvesting the power of pattern recognition for music and book recommendations (pandora.com, amazon.com). In my country there are a lot of artificial intelligence studies available and I know a lot of people attending them.

The Semantic Web is something we are missing now. Many websites are already making advances to this semantic web below the radar. Every day there are numerous new so called mash-ups that stitch together data from various sources. In order to do something useful with this data they need to know the semantics. Sites providing API interfaces like Wikipedia and Amazon.com offer only limited semantics. Sometimes they are missing and then developers switch to data mining techniques like scraping (parsing the user interfaces to ‘pick out’ the data).

I must say I’m a bit skeptical about the move towards the Semantic Web in the short run. Semantic – semantikos, giving signs – refers to the meaning of information. Current .com behemoths like youtube.com profit from the user contributed information. More specifically, they profit from displaying this information but not from the information itself (at least, not yet). Sometimes I watch some TV at youtube like sites and I guess I’m a very bad customer: I block the advertisements (so I guess they should move the adds to the stream itself). This is my skepticism:

  • Are there business models that can profit from just providing semantics?
  • If there are, will they affect the semantics/content itself?

今年 New Year, New Domain

on January 15, 2007

I intended to kick-off this year by registering dominiek.com, my first name. That night, I was reminded of the malicious fundamentals of the Internet. Like many of our apparent international governmental bodies, the Internet is largely controlled by the US and they want to keep it that way. The same night I checked for my future domain it was registered. It was registered by an obviously fake company ‘Maison Tropicale’, une compagnie de services en langue française aux Caraïbes, yeah right! After some digging around I found out there is this big scam going on involving numerous organizations that monitor WHOIS queries. Since I only checked the availability of the domain at my local Dutch company and using some standard UNIX tools, I think this corruption runs pretty deep. You can read here that there are some holes in the policies of the US domain servers that allow these kind of things. Since the US domain servers profit from it, they don’t intend to change anything.

Fortunately, dominiek.com didn’t generate them much revenue and I didn’t call their 1000$ bluff. After five days I could register it my own ‘dot commercial’. I’m actually starting to wonder why I chose this overly capitalism-flavoured .com. Well anyway, it’s up and running so check it out. My new blog URL will be blog.dominiek.com and my professional URL will be dominiek.com.

Yes, this new year I might start some freelance projects, hence the dominiek.com. This all depends on the outcome of my job hunts and graduation process. From February 2nd I will be in Tokyo: hunting for jobs; doing projects; learning Japanese; reading up on IT in Asia. I will be back in the Netherlands in April either briefly or prolonged.

あけまして おめでとう! このことは少し遅い。 二月から 東京で日本語をべんきょうします。 いま 日本語の知識はとても悪いです OTL

だから、 がんばるよ!

来年たぶん dominiek.com日本語版 は あります ☆_☆

Code update: Ruby XMMS Hack

on January 13, 2007

Control XMMS (nix audio player) without any third party libraries (No Ruby-XMMS, no libxmms).

Why? This might be useful for some specific cases. My case: I needed to know the low-level protocol in order to port it to a different language. This Ruby script is a quick hack to test my understanding of the protocol.

xmms_hack.rb

Code update: Ruby-IRC SSL Hack

on January 13, 2007

I haven’t been doing much programming lately since I had to write my final thesis. Sometimes however, I cannot resist coding a little piece :]

Ruby-IRC is an IRC Framework which is still in the BETA stage (what isn’t?). I wanted to write a little piece of code to connect with my IRC server: irc.darkwired.org. Fortunatle, Darkwired IRC requires SSL connection, so I had to hack the Framework a little.

Example code ( ssl_irc_example.rb )

 
require 'rubygems'
require 'IRC'
require 'IRCSSLConnection'

$IRC_DEBUG = true
bot = IRC.new("irc20", "irc.darkwired.org", "9999", "irc20")
IRCEvent.add_callback('endofmotd') { 
    |event| bot.add_channel('#rtest') 
}
IRCEvent.add_callback('join') { |event|
    bot.send_message(event.channel, "Bonjour! Ik ben #{event.from}")
}

bot.connect
 

How to use?

1. download IRCSSLConnection.rb from one of my junk archives.

2. EITHER: You can replace the FrameWork’s IRCConnection.rb file with this new one (eg cp IRCSSLConnection.rb /usr/lib/ruby/gems/1.8/gems/Ruby-IRC-1.0.7/lib/IRCConnection.rb)

2. OR: Just leave it in the directory of your script and include it