News from NASA

A lot has been happening at NASA it seems. First there are some really cool photos (animated GIF's) of whirlwinds on Mars. Personally I think they accidentally landed the rover near De Aar :)

And then there is this very interesting project on SourceForge called javapathfinder. This is very encouraging and I hope more people can release their code open and free for all.

Keep up the good work NASA!


Nokia introduces new N-series phones

Pretty amazing stuff! Packed with a 4GB microdrive, this phone can store several thousand songs in MP3, M4A, AAC and WMA formats. Other interesting specs:


Can't wait


Microsoft News Roundup

Some interesting stuff I got today. I suppose most of the news broke at WinHEC and hence the reason of the variety of articles. Anyway, here goes:




Getting around browser incompatibilities...

I have wondered for a long time now what the best approach would be to write an application that can be really platform and browser independent.

Well, it seems I might have stumbled on something... It's called Laszlo, and it's Open Source !

From the FAQ, on what Laszlo is: "OpenLaszlo is an open-source platform for the development and delivery of rich Internet applications on the World Wide Web.".

Seems I would need to learn Java and J2EE after all :(



In the moodle for learning


After a very interesting read, I decided to investigate the use of Moodle in South Africa, and to my surprise I found some very interesting sites.

What is Moodle?

From the Moodle site: "Moodle is a course management system (CMS) - a free, Open Source software package designed using sound pedagogical principles, to help educators create effective online learning communities. You can download and use it on any computer you have handy (including webhosts), yet it can scale from a single-teacher site to a 40,000-student University. This site itself is created using Moodle, so check out the Moodle Features demos, the Demonstration Courses or read the latest Moodle Buzz."

South African Sites running Moodle

There are especially two I would like to highlight:

This is awesome! I belief that Moodle can provide a very good platform for many companies to train people to use their products. Imagine if a bank can provide online training to it's customers on it's products and services...

Final Thoughts

I am very excited about this discovery, and I belief that Moodle did not yet receive the media attention it deserves. A very good Open Source project indeed!

Happy Moodling !



A slow week...

Not much happening today. Since we have a couple of holidays coming up, I suspect it will be a slow week...



Interesting stuff from the Linux Journal

I Got this interesting article from Linux.com with a good summary of the state of USB on Linux. Personally, I am particularly interested in the USB Networking side.

There is also the article on Mail Merge in OpenOffice 2.0 - It seems like it's actually working now :)

Finally, I found this very interesting article on FireFox tweaking.



News from all over

It seems there was a bit going on this last week. Here is the summary:

The ABSA deal is significant because "The software deal is a significant one, as this is the first instance of a bank outside of Europe choosing SAP's banking regulation solution." It will be interesting to see if SAP can deliver.

Not too much surprises it the ITWeb salary survey and I can't wait for my copy of the full results. The average monthly salary reported at the top executive level was over R55 000, while at the staff level it was R18 000.

The Symbian virus threat does not seem to be that critical at this stage, but it already seems it's likely to lead to frustration - it's hard enough just keeping your PC virus free and now you have to worry about your phone as well.

Enjoy you week-end!



Python - the Microsoft way

I could hardly belief it... Python with Microsoft support behind it? Well, it seems miracles still happen :)

While reading BetaNews I cam across this new beta release. Also check out the official Microsoft site for downloads etc.

Will be interesting to follow the progress of this project.

Update: I also found the original home page.



Tools for your toolbox

If you are used to work with SSH in a Linux environment, you may be a bit frustrated to find none of the SSH tools are standard with any Windows installation. There is hope, and there are especially 2 tools that can make your life bearable in Windows (well, almost):

NOTE: Putty is required for FileZilla to use SSH.

Very nice indeed.

On the Linux side, you may be interested in ClusterSSH - a tool that allows you to connect to multiple hosts and execute the same command to all of them at the same time. Makes tasks like "apt-get update ; apt-get upgrade" a breeze on a number of hosts simultaneously.




Blog Updates

I finally updated several items on the blog to hopefully make it more usable. You will notice the following changes:



News from all over

I have a lot of interesting snippets of news in my inbox this morning which I would like to share with the rest of you. Here goes...

News from IBM

The latest IBM LinuxLine is available (subscribe here). The mention a very interesting article about Blue Gene/L, and how Linux was used to take that system to the top of the Supercomputer list.

Scary to think the same systems that drives several of my desktops also powers the most powerful computer on Earth :)

If you are interested in high performance computing, you might be happy to hear that you don't need the IBM budget to start a cluster of your own. Here are some related clustering links you can try at home:

The ClusterKnoppix project is especially handy, as it also includes the Linux Terminal Server Project (LTSP) so that you easily turn a LAN into a working cluster. Now you can older Pentium 2 systems into powerful workstations as they share the load across the cluster.

Happy cluster building !


Although Borland is more Windows centric I have always enjoyed using their products. I practically started way back with Turbo Pascal. Well, I have decided to go over there and I found several interesting pieces of information. Here is the summary:

There is however an alternative to Borland if you want to code cross platform GUI (and other) applications in Pascal. It's in the form of freepascal and the great Delphi like IDE called Lazarus. Make sure you check out the freepascal links page for more resources.


A busy day indeed. I hope you have enough from the above links to keep you busy for today.




Desktop OS Migration...

So... you want to migrate from your Windows desktop to a more stable and secure Linux desktop environment, but:

Is there an easy way to it? Does it have a GUI interface? Well - yes :)

I have not yet personally tried this tool, but be sure I will do it first change I have this coming week - and since I just got my new VMWare workstation up and running, that will be the perfect test bed.

Update to follow...



Novell to Open Source SARS

Congratulations to Novell for winning the South African Revenue Service (SARS) tender to provide an "end-to-end enterprise-level Linux system software". It seems Novell is really serious about their Open Source efforts, and their distro of choice will be SuSe Linux.

From the ITWeb article: “Our first migration will be SAP onto SuSe Linux, running on an Intel platform, which will be live by the end of June”.

It would be interesting to see where this leads to.



[Perl] A 'stat' replacement

I discovered Planet MySQL recently, and saw an a very good Perl solution that can serve as a stat(1) replacement.

The code:

1 #!/usr/bin/perl
2 use POSIX qw(strftime);
4 my $FORMAT="%H:%M %a, %e %b %y";
6 foreach(@ARGV)
7 {
8 my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
9 $atime,$mtime,$ctime,$blksize,$blocks)
10 = stat($_);
11 print $_."\n";
12 print "Dev: $dev\n";
13 print "inode: $ino\n";
14 print "mode: $mode\n";
15 print "nlink: $nlink\n";
16 print "uid: $uid\n";
17 print "gid: $gid\n";
18 print "rdev: $rdev\n";
19 print "size: $size\n";
20 print "atime: ".strftime($FORMAT,localtime($atime))."\n";
21 print "mtime: ".strftime($FORMAT,localtime($mtime))."\n";
22 print "ctime: ".strftime($FORMAT,localtime($ctime))."\n";
23 print "blksz: $blksize\n";
24 print "blks: $blocks\n\n";
25 }

Thanks Stewart Smith for the effort...

Enjoy :)



South African Computer Olympiad goes Open Source

It turns out that more and more people see the advantages of using Open Source in training and education. This is also true for the South African Computer Olympiad. They will be issuing Python CD's for free to participating schools.

Additional links:

I am really excited by this - I hope our children take up this opportunity to learn Open Source !


Perl of wisdom

Catching Signals

A often misunderstood command on Unix platforms is the kill command. The kill command sends a signal to a program, and one of the popular uses of kill is to send the -9 (SIGKILL) signal to a process, effectively "killing" that process.

You can get a list of signals by using the -l switch.

Perl sample code

Have a look at the following sample code:

1 #!/usr/bin/perl
3 # sample signal handler
5 # define a global variable
6 my $globalint = 0;
8 # install the signal handler
9 $SIG{HUP} = \&sighHUP;
11 print "The PID for this script is '$$'\n";
12 while( 1 ){
14 $globalint++;
15 sleep(1);
17 }
19 sub sighHUP {
21 $SIG{HUP} = \&sighHUP;
23 # print the value of
24 # $globalint and reset
25 # to 0
26 print "\n\nglobalint=$globalint\n\n";
27 $globalint = 0;
28 return 1;
30 }

In this little script we start off by defining our signal handler (line 9). The signal handler calls a subroutine, defined in lines 19-30. Note that on line 21 we redefine the signal handler - this is not always a requirement, but I do it out of habit.

The main function of the script is to increment an integer every second (lines 12-17). When a SIGHUP (signal 1) is caught, the integer is reset and counting starts again.

To run and test this script you would need two open terminals. On terminal 1, run the script. On startup, the script will print its own PID (process ID). On terminal 2, wait a couple of seconds and send the 'kill -1 ' command. On terminal 1 you should see the value of the integer, and then it would be reset. Wait a couple of seconds and do it again.

To stop the process you can just press CTRL+C on terminal 1, or on terminal 2 send the 'kill -9 ' command.

Next time...

That's it for this week. Next week I will show how to use this and the previous weeks wisdom to make the basics of a dynamic code environment.

Have fun!

Today's Perl Link

Perl modules can save a lot of time and changes are very good that some body somewhere already coded a module to solve a problem you face. The ultimate source for Perl Modules is CPAN.




Building frustrations

As many others in my town I have decided to make some alterations to my house - taking advantage of the good economic times we live in (still making up my mind if this actually true). Anyway - a friendly warning to any people out there planning some alterations: take you budget for the project and multiply it by 3 - at least!

Various friends and family members had given me the same advice, but I thought to myself: "how can it be? Why would a budget be that far off?". So, I did the initial investigations, got the quotes and then added 10% on top of it to make room for the unexpected expenses. I had it all figured out.

The the building started...

Apart from taking exactly 4 times longer then planned, it also cost me 3 times more then planned. Why? Well, there were various factors, and I hope what I put down here may help some other poor fellow some day...

So, that was some of the fun I had. The other problem was of course that I did not stick to my initial plan. I ended up getting a oven and stove more then twice the original price I planned for - because I saw a better model the day I went to actually by the equipment.

Finally - a point I am still trying to figure out for myself - I can still not figure what's the use of inflation figures. Just about nothing I have bought this last year (including food, petrol and building materials) obeyed the inflation figures. I wonder how this work? Maybe I will figure it our one day...

Well - some hard lessons learned. I hope this can be a little reality check for some one out there.




Project on Freshmeat - PProxy

I have registered a new project on freshmeat name PProxy. You can read my initial idea titled "Time for a new idea".

I have also started the basic code templates, and I am also working on an initial XML spec.

Any input would be greatly appreciated.

Update : The project did not register on Freshmeat for some or other reason. I will re-register at a later stage.


Mandrake Name Change

It seems there is finally some finality on Mandrake's new name. They will from now on be known as Mandriva. I have used Mandrake for a long time now - since 7.2. I hope they continue to deliver a truely user friendly desktop solution - something they were always good at.



Template Updates

I have added my personal browser start-up links in the links section on the left. Maybe it is of interest to some one else. The links are mostly IT related.



LPI Documentation

I discovered these very useful documents on Leading Edge's web site. Enjoy :)


Time for a new idea

The Problem

As many other users around the world, I sit "safely" behind a corporate firewall and proxy infrastructure which is supposed to protect "me" and the organization against various nasty things.

In the nature of my work I need to visit strange places on the Internet on a regular bases, but that is impossible through our very strict proxy. I would also sometimes like to use another e-mail service when communicating to people - especially if I don't yet fully trust the remote party (you never know what they do with your e-mail address). Since I can not connect to external mail servers, this is no longer possible, and since the proxy blocks all access to web mail sites, I am stuck using only limited resources.

The solution that is suggested over and over again boils down to use a HTTP tunnel to some of the external sources. Ok, but... I have found this not always to be reliable, since I have special needs, like:

Sounds easy?

The solution?

I have now started to tinker with the idea of a XML message specification that could make it possible to tunnel various protocols over a single connection. This would require a special client application on the end user's computer that "listens" on the various standard ports on his/her local machine. In turn this client needs to chat to the remote server using the XML message spec to retrieve the various pieces of information (multi protocol) from various destinations. Once the data is collected, it should be send to the client which reformats it to the correct local message specification (per protocol specifications) and returns this data to whatever client side application asked for the data.

As an example, let's assume you want to use Usenet as well as pop3/smtp servers external to your company. The server on the outside will need configurations to connect to these remote systems and also understand their protocols. On the client side you should configure the client application (tunnel client app) to sue these services over the tunnel. On the local host the client application should then start to listen on the usual ports for the particular services. The user's normal clients (like Thunderbird) can now be configured to connect to the local port (pop3, smtp and Usenet) all conversations are then relayed to the external server over a single port.

From here on...

Well - I will first need to design a very basic framework with a simple proof of concept. I reckon I should start with something simple like pop3 and smtp - two protocols related to e-mail.

I will keep you posted as I go along.

From here on, you are welcome to come up with suggestion, and remember - help is always appreciated.




Another nasty virus

Just when I thought it couldn't get any worse, there's another virus, called Marburg. Nasty one, belonging to the same family as the Ebola virus.



Perl of wisdom

Today I start my "Perl of wisdom" series that looks at short (and maybe sometimes not so short) pieces of information on how to get things done in Perl.

There are lots of Perl resources on the Web, and if you wonder what Perl is I suggest you start here...

Storing code in a variable

I am busy working on a concept of dynamic code. To be more accurate, I am working toward a program that actually get it's code and data entirely from a database. Part of this concept requires that I can dynamically load source code in variables.

You can also think about this as unnamed sub routines or functions. You can even pass it parameters.

Have a look at the following code block:

1 #!/usr/bin/perl
3 # This application tests the theory of code loaded
4 # in variables
6 my %code = (
7 "f1" => sub {
8 my $name = shift;
9 return "Hello $name";
10 },
12 "f2" => sub {
13 my $age = shift;
14 if( int( $age ) <> sub {
15 return 0;
16 }
17 return 1;
18 },
20 "f3" => sub {
21 print "Enter your name: ";
22 my $name = ;
23 chomp( $name );
24 print "Enter your age: ";
25 my $age = ;
26 chomp( $age );
27 $age =~ /(\d+)/;
29 return $name,$1;
30 },
31 );
33 # Function f1() returns a string
34 # Function f2() returns 1 if a persons age is
35 # greater then 18, else returning 0
36 # Function f3() gets input from a user
38 my $src = $code{"f3"};
39 ( my $name, my $age ) = &$src;
40 $src = $code{"f1"};
41 print &$src($name),"\n";
42 $src = $code{"f2"};
43 if( &$src( $age ) ) {
44 print "You are old enough\n";
45 } else {
46 print "Maybe you should age a little more\n";
47 }

Here is a line-by-line break down: In lines 6 to 31 we define all the DYNAMIC FUNCTIONS in a hash called %code. During execution we call the code by first defining the scalar with the code segment (lines 38, 40 and 42), and then we execute the code (lines 39, 41 and 43). As you can see, we can also pass parameters to the code and receive results back.

Today's Perl Link

Perl.org - A good starting point to get to know Perl. Perl is a scripting language available under various platforms (Windows, *nix etc.) and it's relative easy to learn.


Have a nice day and remember to give feedback, tips, ideas and comments on the stuff published here.



This is really cool...

I even got the e-mail publishing to work - 1st time.

I am really impressed!


Here goes...

I have waited to start my own blog for a while now - well, here goes :)

This page is powered by Blogger. Isn't yours?