Older blog entries for pcburns (starting at number 11)

I read miguel's article on the future of UNIX.

You can pick pretty much any programming language and use it to invoke CORBA methods or implement a CORBA server. These are typically referred as "CORBA bindings".

In GNOME we use ORBit for our C bindings. Owen Taylor has written a CORBA implementation for Perl using ORBit, and bindings for Python and C++ also exist.

I hope they don't neglect bindings for the shell. I would really like to be able to type stuff into an xterm and use it to manipulate components.

I agree with his assertion that sharing functionality requires more than pipes and filters.

Also, a pipeline looks like this:

command | filter1 | filter2

Information flows from command to filter1 and finally to filter2. There is no way for filter2 to communicate with command or with filter1 and interact with it.

If we have two programs that can be made to work together using CORBA, how do we express the way we want to connect them together from the shell? Should we treat a running program as an object? How do we find out what interfaces it provides and how do we access them? Could we create a shell that parses the CORBA related stuff and acts on it and passes the rest onto the shell it was created in?

(The blockquotes are excerpts from miguel's article.)

I haven't written a diary entry for a while so I'll make up for it with a long entry.


My cd player is developing nicely. I did a bit of work on my tracker. I obtained Maarten de Boer's Fl_Envelope widget, and used to to create a dialog for my wave shaping filter, and to display volume and panning envelopes for instruments. I fixed a small bug with the drawing of the margins and sent the patch to Maarten. I created a pattern widget and a piano widget. I love fltk. It so easy to create nice widgets that work on both windows and linux. I might try and set up a PenguinSound page on sourceforge. It use to be on sunsite.auc.dk but I stopped uploading it there when PenguinPlay died. There is some source on my xoom page but its a bit out of date, there is no current source in a cvs repository. I didn't get any contributions to the source code when Penguinplay was still going so I don't think that I will get any by simply putting it on sourceforge. I think the best way would be to create working applications that people can use. When those users (the techie ones) get frustrated by missing features or bugs, hopefully they'll contribute patches to fix the application. I've just got to write some complete applications and then release it - or should I release buggy applications and hope people see some use for them and help to fix the bugs?

Mozilla's (build 2000072311 - got it through apt) text area widget seems to like moving around with the arrow keys by two characters instead of one.

After the discussion about advogato's trust metric I finally took a look at the source. I've downloaded and compiled the module, but I have not yet set it up with apache properly. I haven't worked on apache modules before, so I've got some learning to do. My previous experience with web applications comes through developing ISAPI and Active Server Components for work. I'd like to add the ability to associate a message with a certification. I'd like to be able to search advogato's diary entries and articles. As advogato gets bigger, i think it would be nice to add the ability to watch for recent diary entries from a selected group of users. I think that the diary entries should be dated with a timestamp, so that more than one can be entered in a day. The users should be able to customise their locale so that the times are meaningful. I'd like to have the comments I make under articles listed under my personal page.


The coach of the Australian Women's Basketball team (Tom Maher?) was invited to speak at the quarterly meeting at the company at which I work. He revealed the secrets of successful teams. One of the basic characteristic of a successful team is that they don't complain or gripe. The team members should be positive and try to build the others up.

Kostya Tszyu was interviewed on The Panel after his victory over Victor Chavez. He was asked about what you need to achieve your dreams. He said that you need more than dreams, you need to be realist about what you can achieve.

I read the recent story about Stallman's visit to Teradyne. After seeing RMS tirelessly respond to the same questions over and over Rene Hollan ask him how he could tolerated it. RMS replied "I have a mission!". Rene noted: "I suppose that he's the only person I can describe as an evangelical atheist without it being an oxymoron." RMS is also fond of portraying himself as the Saint of Free Software. I thought it would be interesting to look at how the early christian evangelists operated. My research degenerates into a list of quotes from the bible. I may have gone a bit overboard. I'll keep the list here because I think they are interesting and I'd like to have a list handy.

When RMS was accused of being a communist, for his stance that everthing should be "free", he responded with a cryptic remark that sharing possessions is a concept that was being practiced at least 2000 years before communism.

Acts 2:44-47 "All the believers were together and had everything in common. Selling their possessions and goods, they gave to anyone as he had need. Every day they continued to meet together in the temple courts. They broke bread in their homes and ate together with glad and sincere hearts, prasing God and enjoying the favor of all the people. And the Lord added to their number daily those who were being saved."

Acts 4:32 "All the believers were one in heart and mind. No one claimed that any of his possessions was his own, but they shared everything they had." Acts 4:34 "There were no needy persons among them. For from time to time those who owned lands or houses sold them, brought the money from the sales and put it at the apostles' feet, and it was distributed to anyone as he had need."

One of the basic concepts the christians had was that they should live their life as an example for others to follow.

Matthew 7:12 "So in everything, do to others what you would have them do to you, for this sums up the Law and the Prophets."

Matthew 7:1-2 "Do not judge, or you too will be judged. For in the same way you judge others, you will be judged, and with the measure you use, it will be measured to you."

Romans 12:21 "Do not be overcome by evil, but overcome evil with good."

Developers who criticise Microsoft for their buggy software had better make sure that their own software is free from bugs.

1 Thessalonians 5:21: "Test everything. Hold on to the good."

Alexander Solzhenitsyn, who won the nobel prize for literature, experienced life in the soviet gulags. He became aware of christians in the prison camps. They were able to persevere despite their suffering - they retained their hope for the future and didn't succumb to depression.

Romans 5:3-4 says "...we also rejoice in our sufferings, because we know that suffering produces perserverance; perserverance, character and character, hope."

Ephesians 4:32 "Be kind and compassionate to one another, forgiving each other, just as in Christ God forgave you."

Colossians 3:13 "Bear with each other and forgive whatever grievances you may have against one another. Forgive as the Lord forgave you."

Ephesians 4:29 "Do not let any unwholesome talk come out of your mouths, but only what is helpful for building others up according to their needs, that it may benefit those who listen."

Romans 12:3 "... Do not think of yourself more highly than you ought, but rather think of yourself with sober judgement,..."

Matthew 7:7-8 "Ask and it will be given to you; seek and you will find; knock and the door will be opened to you. For everyone who asks receives; he who seeks finds; and to him who knocks, the door will be opened."

Reading Nymia's diary entries makes me suspect that the method used as a callback is not static. The "this" pointer is usually given as first argument of a method, unless the method is static. If you need to call methods of the class in the callback pass a pointer to an instantiation of the class. eg.

void SomeClass::callback(void* arg)
    SomeClass* that = (SomeClass*)arg;

The Bledisloe cup match on saturday night was possibly the greatest game of Rugby Union ever! I sat at home and watched it on tv. The first five minutes were full of despair. The All Blacks scored three tries blowing the score out to 24-0. Australia fought back and the scores were even at half time. With only extra time to go Australia was winning by one point. Jonah Lomu tip toed along the side line to score the winning try for New Zealand. Not the best ending. The maori girl at work was grinning from ear to ear on Monday. We'll have to wait for the next game in Wellington for revenge.

The was a complete lunar eclipse on sunday night. At 6.00 giant cumulous clouds loomed on the southern horizon. An hour later they swept over and dropped their water. Leaving me to despair of seeing the eclipse. At 10.00 the sky was clean and clear. The stars seemed more numerous than normal. The moon was gradually eaten away by the shadow eventually going a deep blood red. I pulled out a pocket astronomy book and had a wonderful time looking up the star charts and working out the constellations.

I've done a bit more work on my cdplayer. It can now read artist and track information from the local cddb database in /var/lib/cddb and the cdplayer.ini used by the windows cdplayer. After doing a bit of researching I found a place called cdnames that provides a database similar to cddb. I'll try to implement access to both the cddb and cdnames protocols. After taking a look at the cddb code that comes with xmcd I decided I'd much rather reimplement it than try to refactor the existing code.

It was a really nice sunny day today; I saw pelicans flying overhead.

I did a bit of work on my cd player. The user interface is just about complete. I've added a little slider so that you can change the current playback position. The status display is updated by a timeout callback from fltk every second. My cd driver doesn't seem to support CDROM_DRIVE_STATUS or CDROM_DISC_STATUS, which makes checking that there is a cd present a bit of a problem. I'll have to try to find a way around it.

The only thing left is to implement cddb support. xmcd and kscd seem to use the same code written by Ti Kan. They both use the same local database in /var/lib/cddb . The cd player that comes with gnome uses a different code base and maintains a separate local database. The cd player that comes with windows doesn't support cddb. Its stores user typed information in one .ini file. The creative playcenter cd player uses a different database to store user typed information, it doesn't seem to support cddb either. I downloaded a copy of the sdk license from www.cddb.com and wasn't impressed with it. I don't think that I will try to use the official sdk.

I uploaded a snapshot of the code to my page on xoom.

My sample editor is coming along nicely. I have implemented cut and paste, and ironed out the bugs - still a few left. I have been thinking about how to make the filtering operations more configurable. Adding a new filter graph dialog seems to be the best option.

I've been trying to think up a name for my sample editor should it ever get into a state that is fit for release.

I have created a small fltk application for my module player.

I'm thinking about writing a cd player too. It would be nice to be able to use the same cd player where ever I am. I've got the basic functionality to play cds implemented in PenguinPlay. I'll have to find out about the way cddb works, so that titles and tracks can be displayed.

I'm going to see telemetry orchestra and others perform at newtown rsl tomorrow night. I might try and see sub bass snarl at frigid on sunday.

After using fltk for a short time, I have come to really like it. Using fluid, a usable application can be whipped up in an extremely short amount of time. The speed of development comes as a bonus, on top of its portability and speed.

A number of my friends have been departing for trips overseas. One sent a surprise email from Bangkok airport on his way to Israel for an archeological dig as part of his ancient history degree. I had lunch on sunday with another friend. It was her last chance to see her friends before she heads off to the Northern Territory as the cook for a safari. After that she's heading off to Papua New Guinea.

I'm going to skirmish this saturday.

I caught a snippet of an interview with 5000 fingers of Doctor T . They started out writing music using trackers on the amiga.

Ran across an interesting project called gnu octal. The name seems easy to get confused with gnu octave.

I have been looking at various cross platform user interface toolkits. I aim to target win32 and linux.

QT seems ideal but as my project is unlikely to generate revenue I don't want to fork out money to purchase the non- free win32 version.

I started off looking at the win32 version. I spent way too much time mucking around getting it to compile, I still haven't been able to get a working application to use the library.

I decided to look for an alternative toolkit. While I was looking somebody submitted questions about crossplatform toolkits to both kuro5hin.org and slashdot.org and I was given valuable suggestions.

I decided to evaluate both wxWindows and fltk. I opted out of evaluating wxWindows after it required a hefty download of 9 MB.

fltk on the otherhand is impressively lightweight. It was a breeze to compile under linux and win32. I did run into strange filename problems under windows 95 (fl_color.cxx appears to be the same as fl_color_chooser.cxx etc..), but was able to build the project after carefully checking that all files were extracted and their contents were correct. I had no problems under windows NT or linux. FLTK comes with numerous examples and copious documentation. All in all it is a very impressive offering.

I ran across an interesting quote from J. Robert Oppenheimer in James Blish's "Cities in Flight":

We do not believe any group of men adequate enough or wise enough to operate without scrutiny or without criticism. We know that the only way to avoid error is to detect it, that the only way to detect it is to be free to inquire. We know that in secrecy error undetected will flourish and subvert.

I met a lunatic in George street while waiting for some friends. He hung around outside of Planet Hollywood, telling people he was going to marry a movie star and showing off his nonexistant muscles. He seemed to calm down when he found someone to talk to.

The other day on a crowded train I saw a young female drug addict sit prowling up and down the carriage. She sat down next to a woman and start harassing her - asking for a fight. The girl threw a punch at the woman. The woman grabbed her umbrella and started bashing the girl over the head. The girl ran off the train. The woman claimed she was nearly a blackbelt in tai kwan do, and regretted that she didn't get off the train to fight the girl. The girl sitting next to me said "oh no she did it again". I wonder if this is a regular occurrence.

I saw the same girl again a few days later talking to her friend. The old couple sitting opposite her were relieved when she left.

2 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!