Tuesday January 20, 2004
I'm going to London
After all my plans seem to work somehow. I can do my internship at Fotango, which will be great. This keeps me from getting to far off home this summer. And I'm now on the speaker proposal list for the German Perl Workshop, what makes me really happy :-). The only thing I have to finish is my application for my scholarship for Toronto and this will be a joyfull travelling year. Juchuuu!!!
Saturday January 17, 2004
Planning a year
Anonther week is over and I'm getting a small overview how my year might look like.
There are currently two chances to get out of germany. I got to do an internship beginning July, 19th and I'm applying for a scholarship to get to Toronto for the winter term.
But getting a job for my internship in Toronto is harder than I thought. What I actually thought would be the best idea was mailing to the Toronto.pm mailing list and ask for help. The only two answers I got was one offering me to ask for a job in his company and another who told me that it is quite hard to find a job in IT in Canada even for locals. Quite promising. One of the professors of our university is also teaching at YorkU in T.O. but to depend on him in important matters is quite... not a good idea. The other problem is that I'd miss YAPC::EU, because I'd be in Toronto (and thus missing nearly every conference this year).
As I don't have many options, because my language knowledge is limited to German and English (and Perl ;-), and Latin, but getting into Vatican is a no-op.) I got only one place to go to, Great Britain. But I'm not quite sure if that's what I want. I'll think that over and maybe ask London.pm for help.
The next problem I have is just plain room for living, as I know that there is a college in Toronto where I could stay but I've no experience with England (I've actually never been there).
I finished my new CV today, because when I'm going to apply for a job I'll need it, in either country. So I was quite productive. And I got to start to study a little bit, because I'm going to write exams in the first two weeks of February and I still have no clue about Maths.
We'll see, we'll see. Maybe I'll just contact the professor a second time to ask I've he'd provide me with the information I need, give him a deadline and otherwise look for a job in U.K..
Tuesday January 13, 2004
After having a looong day in university (most time spent thinking about what to do with the script I wrote once to check changes on websites in a statistical manner) I finally got home and lost the motivation to actually do anything with it.
Another annoying thing is that I again spent an hour to find a way to turn my local debian installation into a fine set of installation CDs. I still didn't find anything and fear that I got to write something myself. It doesn't sound that hard, because all you have to do is take all the packages installed, download them via apt-get, somehow fit them into a directory structure convenient for a installation CD, add an installer (there is actually more than one way to install debian, we got d-i (debian-installer), a port of RedHat's Anaconda installer to debian, the old way and I guess some more) and create ISOs. The problem is that I seem to be the only person on this planet who want's to do that instead of taking woody cd's to a friend, telling him that after installation he's got all "old" software, then to edit his apt sources and do a upgrade to unstable. This is bandwith consuming and needs time for conviction ("Why should I use something called "unstable"?").
There is much Perl in the Debian installing routines and apt-get, but I don't actually want to get started, because it sounds time consuming and I need to study for my next exams in February, I fear maths.
I finally got geekish, ordering my first set of T-Shirts and ThinkGeek. This will even more outlaw me, but some friend of mine told me that the binary people shirt is actually I fine way to get to know people (female) on a party. Hope they don't need to long to ship them over to germany :-).
Monday January 05, 2004
Survived first day
Today my university decided to steal again some of my valuable time. It is actually far more brutal than stealing, as I'm quite bored most of the time, at least on Mondays.
Tomorrow does not promise more, but I need to get some sleep. And I have to finish my regex talk till Thursday and that is getting much more a problem as I thought cause I can't really think of what to strip out in order not to bore my audience to death (all none perl guys with different skills in programming, quite hard).
By the way, there is a quite interesting incident this Saturday. The epoch will wrap around to 1000....
$ date -u -d "Sat Jan 10 13:37:04 2004" +%s
$ bc -iq
Are we running into a big problem in 30 years?!?
Sunday January 04, 2004
Having two weeks of Christmas holidays can be a tough thing. I thought I'd find time to do some work on Curses::UI and on a talk I'll give next Thursday, but my Family, Friends and heavy drinking consumed so much time that I was unable to do either stuff.
The last year ended quite easy for me, so it's time to schedule 04. I'm not quite sure what I want to do, but going back to T.O. (it's Toronto, Ontario for the unaware) is my first goal. Maybe in summer. Anyway, I'd like to join YAPC::EU, but as no date is set yet and YAPC::NA is quite early this year I fear to be on the wrong continent when either of both is held. But I'll survive this too.
German Perl Workshop is a big time problem, too, but I'll manage that. Maybe I'll give a talk, as they've not decided anything but the date till now. This depends on how my talk next week (about regular expressions) will be judged by the audience. We'll see. This talk is nonexistent, so I'll start creating some transparencies now.
Monday October 27, 2003
The Perl Standard Library
When I look at that what I would call the Perl library at the moment,
the CPAN, I see a whole bunch of modules (more than 14.000 when I
remember my last count), some of them are OO, some are not and we got
several different efforts running at the moment to make the situation,
which is not bad but strange, better.
Thinking about CPAN related projects that is what comes to my mind:
- The Phalanx Project
- The Core Modules
The problem of all this is that we miss a real structure, something I
will call the Perl Standard Library (PSL) from now on.
See, we got all this beautiful modules which all more or less work
with some version of Perl, some OS and some architecture. That is
nice, as most of them work for me, on a Linux i386 box. Other
platforms are hard to tell, e.g. Windows and compiling something can
be really hard.
The Phalanx project choose 100 modules, as I understand it to make it
more or less the testing platform for Ponie, and try to improve them
to be better modules(TM). CPANPLUS is an effort to make the management
of the installed modules easier. CPANTS and testers.cpan.org make it
more easy for the module developers to see their modules tested on
hardware and version they don't have. The Core Modules (and the bad
dual life modules) make Perl pumpkining harder (I guess so) and
improve the basic functionality that Perl has. The Problem is that
some useful modules are not Core (and maybe some useless modules
are in core :-)). The next thing that is important in connection with
module management is my OS vendor, or my Distribution as it is called
in the Linux world. They bring a couple of modules, some CPAN original
and just build for my version of the OS, or some changed ones, because
a Dead Camel did not move and they needed the lib (as Curses.pm was a
long time, at least SuSE, RedHat and Debian had their own patches
because it didn't compile with 5.8.0). This all ends up in a big
BLOB. I can't really tell by heart which modules are installed on my
system, I'm not sure about every version number and can't promise that
something I wrote works on every system. I don't have nothing to
depend on when writing software, I don't have no Library. In my
opinion a language is only as strong as it's library, but the problem
with the library of my favorite language (guess what) is that it's
library is maintained by over 1000 people and it has nothing you can
What I want to say is that we should take a bunch of modules (as the
Phalanx Project does), put the together, make it stable at mark it the
PSL for 5.8.1. I don't have a list of modules I want to see in there,
but I think it would be an advantage for Perl if we would take the
material we got, take the material others contribute (like the modules
which the distro vendors choose) and make something up we could depend
on in eternity (or at least for the time Perl exists). When we have
bundled it we could make another effort do restructure it, as I don't
believe that the CPAN structure would fit all the time. Then we can
improve documentation and make everything more homogeneous. One of the
other problems with the CPAN is that there is no document I can think
of that says how to do what with which module. There are many books
out there that recommend many modules, but there is no single "Using
CPAN" book out there that covers all of CPAN.
To make myself clear again, what I would like would be a PSL project,
that provides a big, stable and maybe pure OO library for Perl,
version dependent, with easy to access documentation and that has
This is just an idea, maybe I have to restructure some parts and think
Another thing that came to my life lately was that another thing I'm
missing at the moment is easier to install modules. I installed
ID3Lib.pm today just to recognize that it didn't compile because I had
no ID3Lib installed. This is rather obvious but often it's hard to
tell which libraries a Perl module depends on. Maybe this is something
for the META files. The thing that I really didn't like was that the
lib was just a line away (on my Debian) it's just 'apt-get install
libid3'. I'd like to have something like CPANPLUS::Distro::Backend
that would manage such thing for me. It's not very realistic to get
something like that for every system, but if you can say the developer
install lib foo it's more than just a missing include file. Would be
some kind of community effort, but maybe it is possible.
Enough revolutionary ideas for today :-)
Wednesday October 08, 2003
Cure for headache: Release
I did to much module maintaining in the last days and so I thought to stick to the old XP rule, release often.
Somebody got to keep the PAUSE indexer busy. After having released GraphViz::ISA::Multi on tuesday (which after all is a fine module) twice cause a day of thinking about the code showed me some different algorithyms, I released both Curses::UI 0.8 and C::S::C 0.5 today. FREEDOM!! I didn't finish all the tests I planned for Curses::UI, but IMHO tests are something that grow and so I'll wait till the bugreports and test failures come in. After all it is a big step in my 2-steps-till-1.0 plan.
CPANPLUS::Shell::Curses doesn't have that many changes, it is kind of colorful now (maybe I'll release a halloween-acme version in orange) and can show readmes again which is nice. And of course, I test for pod.... Maybe I should drop the Author of modulemaker a mail to include it...
I'm still trying to find out how to release MPlayer.pm to CPAN, suggestions for a nice non TLNS are welcome.
As I mentioned in the subject, I got an awfull headache today, but I think that is in connection to me having to write Java at univeristy.
My next topic will be how to seem cleverer as you are, cause I voluntered for a talk at my local LUG and it will be about - guess what - Perl and I actually never gave a talk about a programming language, will be fun though.
Good night, release often and regularly
Monday October 06, 2003
Testing Curses::UI 2 & MPlayer.pm
OK, had a rather short day in university and thus a rather productive day at home, geeee. The short day in university was because we got a new practicing class in which we do --- Shellscripting. Will give me 2 hours of free time each week in this term
The problem with testing Curses::UI vanished after having some good idea: as I didn't want to test Curses.pm but Curses::UI I thought --- tada --- just replace it.
Take Curses.pm, strip out all the code you don't need, use AUTOLOAD to define everything that is actually in @EXPORT and there you go. I just had to implement five functions myself, because Curses::UI expected different behaviour (shame on me, I forgot that @_ is just a list of references to the original values) and I had a running Curses::UI without actual Curses calls. That made me happy.
Current count is about 98 tests, without doing really edge case testing or fault testing or testing complex things like the event system, but I think it is quite good. Will invest some more time and then release 0.8 (my precious).
(What I forgot in my we summary was that I spend some time on forcing MPlayer to playback the audio in the LOTR:ROTK trailer, therefore I'm a little ringish at the moment)
Did some work on CPANPLUS::Shell::Curses too, now it has colors (ugly red and green, but I like it). Is in CVS, the problem is that I had a bug in the Color support for status widgets and thus have to wait for me releasing Curses::UI 0.8 until I can release C::S::C 0.5 (I decided to go with the minor number of CPANPLUS to keep a better track of with witch version it works). And I added a test for the Pod. I think it is an easy way to get a test more
:-) (Maybe I should start using Acme::Test)
Ehm... yes. Ah, MPlayer.pm. It's rather a quickhack than a Module, but I wanted to play webradios (Kohina
) in a comfortable way (it is a Curses::UI Perl interface). I found the -slave option in MPlayer and thought it would be fun to implement the Perl Bindings, but the slave mode is (sorry) crap. Not really supported (as MPlayer is (I've never seen such an unfriendly mailinglist, they add automatically a "RTFM" message to every email)) and it does not really give featback. I don't know whether to put it on CPAN (have a look into it from my homepage and tell me). BTW I'm not sure whether to keep the name, too. Claiming a first level namespace is always.... ehm
... sticky. (But it is quite idiomatic use MPlayer;). We'll see.
Take a couple of hours of sleep now and think about new creative tests. And about when to release which module where (maybe CPAN
Sunday October 05, 2003
Weekend summary & GUI Thoughts
The weekend is ending and my new term starts tomorrow. Actually this a good thing because I got interesting classes like Local and Distributed OSes and two classes about Software Engineering, which sound all kind of interresting.
This weekend started with me going mad about my emails. You know, as a kind of interrested person you get lots of mail, mostly from mailing lists. Last week I started getting some mails from my friend (worm) Sven and he didn't stop. I let all my email go through a german freemail provider, because they got spam filtering and virus protection and all the stuff and why should I do stuff myself when I can outsource it :-). I used to have my virus protection turned off (with a Linux system your always "secure") and had no problems till those Sven mails started (those mail all got stuck in the spam filter, but with about 100 a day my spamfolder got messed up and I needed far too much time to scan for false positives). The result till now that from 700 mails I got since frieday 5 p.m. about 220 were svenish. That's too much. The problem is that my mailprovider sends me a warning for each mail if it has a virus in it, so I got 220 virus warnings :-(. But I'm still better off, because on the one hand I see on first sight the false positives in my spam filter and recieving a 2KB warning is better than recieving a 300KB Virus mail over a 64K line.
The next thing is again Curses::UI. I didn't really start writing the tests for all modules, but I finished the POD test. Starting tomorrow I'll write a test for a widget a day, I can't stand more boring things at one day. So I'll be finished end of this month. Actually there is a bug in Test::Pod docu, because it does not export
plan which is mentioned in the SYNOPSIS. The other thing I did was trying GraphViz::ISA, which is a nice module for visualising ISA relations (Actually the whole GraphViz thing is a very nice module for visualising any kind of relation). The problem is that it does not support showing relations for multiple modules but shows only the tree for one module. I wanted it to show the whole Curses::UI Widget set and ended up doing a real nasty hack to make it do so. This actually looks quite nice, but I'd like to do it more cleanly and have it in GraphViz::ISA for later use. So I can add this to my TODO list. Will be fun.
The last thing I did this weekend was thinking about usability. I had the nice experience that a friend of mine bought a new computer (with the "usual" WinXP on it) and asked me to help her getting started. Actually I wasn't needed that much because Windows was doing a good job on helping her. She always went like "I want to do bla bla bla" and the nice interface in Explorer always had the right shortcut (like "copy folder"). This and an article I read on slashdot about "Y" (Yet another X replacement) made me wonder about the way computer interfaces are designed today. The first thing I actually never realised was that most of the X apps (if they are not from the same desktop package) look always different. For a person like me, that on the one hand just uses software and on the other hand has the Matrix-like view on apps (just seeing widgets and imagining the underlieing code) this does not matter. For people new to computer it does. They need to do things on the same way in every app. The other thing is that interfaces should be more task-based. Everyone knows that Mozilla is a webbrowser, Evolution is an email suite and OpenOffice is an office suite. But you want to "browse the web" and not "mozill" or "read your email" and not "evolute". That's kind of stupid. Maybe all thos small Icons should vanish for some (ordered) task list. That would help people a lot more than a taskbar which actually never mentions a single task, but program names. I know that it is part of the creative process to give the program a name, but this does not help people and usability. Maybe we should redefine desktops and stop stealing what M$ already has.
The last thing for this rather long summary is an idea a friend told me. He's starting to get used to the Linux world and has some interesting ideas. The best one he had till now was that one thing that is needed for Linux is something like the MS Office assistant for all of X (or KDE, or GNOME) to help people getting started. You can actually combine that with the "task based user interface" I talked about erlier, because if you can ask you Computer about how to do something it usually get's a lot easier. If you can tell your Computer "I want to move a folder" he can give you good (desktop dependend) hints. That's always kind of hard for people which don't have a clue about things like file systems, permissions and all the rest. They just want to do it, so let us help them do it.
Tuesday September 30, 2003
Testing Curses::UI and version numbers
I'm currently in a very constructive email chat with a (I guess) indish guy who keep constantly asking me how to do things in Curses::UI that are not even implemented. That's good, because he requested some rather usefull features like adding single items to a Listbox widget. Never thought of that and actually never did that.
When thinking about Curses::UI and hacking it I always want to keep backwards compatibility, that's because I'm lazy and don't want to change my own programs that use Curses::UI. This can't be bad for other people.
The problem is, as I took over Curses::UI there weren't really much tests. In fact, all tests in Curses::UI just test weather the modules compile, not their actual function.
But how to test something that is rather a visual thing than something you can catch in the source. I mean, usually you test a module by knowing what a method should return and then using Test::Simple or Test::Moore. I guess about 75% of all subs in Curses::UI don't return anything. They just do something on the screen. And they don't know weather their call just worked or didn't. That's rather strange.
It's actually not an excuse for not testing the 25% subs that return something. I'm going to do that before I release Curses::UI 0.80. The other problem that all the Test::* modules usually do output something, which can be hard if the screen is locked by Curses calls. This is a thing I've to figure out before I write the tests. The POD isn't tested either and this is something I consider as really bad. So besides all the other stuff I do I have to fix the and write tests for Curses::UI
Another thing I just wonder about is versioning of modules. I got Curses::UI when it was version 0.70 or something and kept increasing the version number in steps of 0.01 for quite a while now. I think it's psychological more usefull to releas a verion 1.0 someday to tell people that I believe it is ready, stable and useable. Maybe I should create something like a releas plan. It should be easy to release a 1.0 version till christmas. I will release the next version, that has mostly bugfixes and the new tests I'm going to write till end of this month as a 0.8 version. After waiting for some fixes I'll go up to version 0.9 and if I find now showstoppers I'll release it as 1.0. Sounds far more easy than it will be. Only in writing all those test I will intoduce new bugs, find some, fix some bugs and write some new features, so I shouldn't be that optimistic.