About GNOME · Download · Users · Art & Themes · Developers · Foundation · Contact

October 28, 2006

Ethical Research?

Wired News: Boarding Pass Hacker Under Fire [October 27, 2006]

Wow! Grad students can be arrested if they are not careful how they conduct their “experiment”!

I am not saying the student or the airline is wrong. My point is that there are more controversal issues in computing as more organizations are computerized. It is interesting to see how different people react to the issues. People often can point out if certain actions in the cyberspace are wrong, but their arguements are not very solid.

Another controversal news was U of Calgary offer a course on spyware and spam quite a while ago.

Anyway, I certainly do not want to get arrested for any research work I do. :)

October 23, 2006

Bach Elgar Choir Concert: Lest We Forget

The first concert of the Bach Elgar Choir’s 07-08 season will be featuring Requiem by Gabriel Faure and The Unknown Soldier by Canadian composer Andrew Ager. It will be on November 11 at 8:00pm in Melrose United Church, Hamilton ON.

It is my first time to be involved in a decent choir in a few years. And I am excited that the choir is conducted by Howard Dyck, one of he most prominent choral music personalities in Southwestern Ontario. :)

[For all Gnomers: One of the reasons I put such a post in my blog is to help bashing the stereotype of computer scientists. We are not all code monkeys who only sit in front of the computer all day long: We have other interests, too! One of the examples is that a post about a planet gnome member playing Classical guitar.]

October 13, 2006

Virus/Malware for Linux?

The internet at my place is done through my landlord and is included in the rent. My landlord just dropped by reminding everyone to have an up-to-date virus and adware scanner. Looking at the router’s logs, he suspected a computer in my appartment had been infected with a virus.

Not everyone was at home when he came. I told him that I am using linux on my laptop and desktop. He immediately determined that the infected computer was not mine. One other tenant said that she got a virus scanner, but was not sure what exactly an Adware scanner was.

Is there any virus/malware/adware that can infect linux machine at present? I can’t think of anything except the cookies in the browser.

Note: It was good to be a Linux user: It was so easy to rule out that my computers are not infected with some nasty virus!

October 10, 2006

Mr Mozart likes Mr Handel?

I have been a member of Bach Elgar Choir (Howard Dyck, conductor) Hamilton, Ontario since September.

During the choir rehearsal last Tuesday, Mr Dyck suggested that some parts of Mozart’s Requiem might have been inspired by Handel’s Messiah. He pointed out the great similarity between the theme (aka exposition) of And with his stripes we are healed from Handel’s Messiah

and the one in the fugue of Kyrie from Mozart’s Requiem

The key signatures of both passages are irrelevant. The distance (aka interval) between the notes circled are identical.

Both choral works are popular. Although I have studied both works before, I did not notice such a coincident between the works. What a great insight!

(Note: The excerpts of the choral works are taken from the Choral Public Domain Library.)

October 05, 2006

[root@dimsum-cart /usr/local/tps/]$ rm -fr /bin (Part 2)

Thanks goes to all who replied to the part 1 of my horror story. :)

Since I installed Ubuntu using a Breezy Badger (5.10) installation CD and upgraded to Dapper Drake (6.04) using Synaptics, I did not know which installation CD should I use. Instead of spending time figuring out which CD to use, I decided to have a fresh installation of Ubuntu Dapper (which was not the smartest way indeed!).

I booted my laptop using the Ubuntu Dapper’s live CD. I was suprised that the Dapper’s installer was only available upon starting a GNOME session. Running a live CD had been very slow. I clicked the “install” icon and tried to go through the steps, but the computer froze. I booted my laptop using a live CD again, clicked install, and the laptop froze in another step. It was very strange: there was no apparent stratches on the CD. Since I cannot reproduce the exact error (ie. freezing during different steps), I doubt someone can pay attention to such a vague bug report.

After my laptop froze for 4 or 5 times, I decided to install Ubuntu Breezy and upgrade later. Fortunately, I still had my Ubuntu Breezy CD so I did not need to burn another one. The installation went well.

After installing Ubuntu Breezy, I used Synaptics to upgrade the packages and installed all libraries I need. I went to bed. Next morning, I copied my documents from my Windows partition back to my Ubuntu home directory. My laptop had been restored completely by noon.

Eventually, I installed (E)TPS on my laptop. It took so much effort to install just a theorem prover!

So the morals of the story are :(

  • Don’t work under the root/admin account
  • Never use -f on rm again

The End.

October 03, 2006

[root@dimsum-cart /usr/local/tps/]$ rm -fr /bin (Part 1)

This is way too embrassing!

Two weekends ago, I was trying to install the TPS theorem prover in my Ubuntu laptop so that I could work on my CAS 734 (Formalized Mathematics) assignments without connecting to the servers at school. One of the installation instructions asked the user to remove everything in tps/bin directory before compiling a fresh executable. I typed “rm -fr /bin [enter]” (note the slash before “bin”!!!). After I hit enter, I realized something was really, really wrong!

My first rescue attempt was to restore the /bin directory. The problem is that I cannot open a new shell: /bin/bash is gone! Even if I can open a new shell, I cannot copy files: /bin/cp is gone! The synaptic package manager cannot install the basic utilities because the installation scripts cannot be executed: /bin/[whatever file/directory operations] are gone!

My second instinct was to backup the files. I inserted my flash drive and the drive cannot be mounted: /bin/pmount is gone! I was to email the files to myself but I could not: /bin/firefox and /bin/mozilla-thunderbird are gone!

Realizing my (initial) rescue effort has been unsucessful, I went to my desktop and look up ways to read ext3 filesystem from Windows. In three minutes, I found a free software that allow me to rescue my files from the ext3 partition. I used it to copy about 1G of files from my Ubuntu’s home directory to Windows no problem. :)

To be continued…

October 02, 2006

Grace Hopper Celebration

The Grace Hopper Celebration of Women in Computing will be held October 4-7 in San Diego. I’m really excited about it and I plan to blog some of its sessions daily.

September 28, 2006

“Inviting you to participate in WMSCI 2007″

This year, I have received about 10 emails from the infamous “Professor Nagib Callaos”, the organizer of the WMSCI “conference”. Today I got another one:

From: “Prof. Nagib Callaos”
Subject: Inviting you to participate in WMSCI 2007
Date: 27 Sep 2006 14:35:40 -0400
To: CLARE/nospam/@scl.csd.uwo.ca

Dear Clare M. So:

We invite you to submit a paper/abstract to the 11th World Multi-Conference on Systemics, Cybernetics and Informatics (http://www.iiis-cyber.org/wmsci2007). IT will take place in Orlando, Florida, USA, from July 8-11, 2007.

We are e mphasizing the area of Knowledge Management which, we think, are related to your specific area.

All submitted papers will have an extensive reviewing process. A multi-methodological review will be applied in the selection process of this multi-disciplinary conference. Submitted papers or extended abstracts will have three kinds of reviews: double-blind (by at least three reviewers), non-blind, and participative peer-to-peer review. These three reviews will support the selection process of those that will be accepted for their presentation at the conference, as well as those to be selected for their publication in JSCI Journal. Details are given in the conference web site.

Of the papers presented, the best 10%-20% of the papers will be published in Volume 7 of JSCI Journal (www.iiisci.org/Journal/SCI) and sent free to over 200 university and research libraries

Also, we would like to invite you to organize an invited session related to a topic of your research interest. If you are interested in organizing an invited session, please, fill out the respective form provided in the conference web page. We will send you a password, so you can include and modify papers in your invited session.

More details about the reviewing process, organizing invited sessions and submissions deadlines can be found at our web site. (http://www.iiis-cyber.org/wmsci2007)

If the deadlines are tight and you need more time, let us know about a suitable time for you and I will inform you if it is feasible for us.

Again, we invite you to participate in the 11th World Multi-Conference on Systemics, Cybernetics and Informatics which in the past has had participants from over 80 countries.

Best regards,

Professor Nagib Callaos
WMSCI 2007 General Chair

If you wish to be removed from this mailing list, please send an email to wmsci.remove@iiis-sci.org with REMOVE MLWMSCI in the subject line.

Postal Address: Torre Profesional La California, Av. Francisco de Miranda, Caracas, Venezuela

This is the same conference that accepted a randomly generated paper from three MIT students in 2005. I am sick and tired of separating fake conferences from the good ones. For this kind of spam mail, I would not follow the instruction in the paragraph to unsubscribe myself from the mailing list - Such a reply confirms that I am “alive”. These fake conferences spam looks legit. Spamassassin often missed this kind of emails and delivers them to my Inbox.

As a rule of thumb, real conferences do not spam!

[Remark: September 28, 2006]

This fake conference’s organizer(s) may use different names from time to time, but the content of the spam should be the same. Beware!

September 22, 2006

Hello Kitty wearing a RedHat

I really could not resist this.

Mairin Duffy’s website at RedHat features nothing but a Hello Kitty wearing an authentic RedHat.

I need a picture of three Hello Kittys in an Ubuntu Linux circle!! :) (Apologies to all Fedora Linux users.)

[Update: September 24, 2006]

Chris pointed out that chipx86 has created a such Hello Kitty Ubuntu wallpaper on my request


Thank you very much!

[Update September 25, 2006]

Ryan (aka desrt) showed me he used this “Human Kitty” login manager.  He reminded me that many GNOME read Planet GNOME.

September 11, 2006

Salaam Behdad!

GNOME WSOP did not only find my way to work with Luca again. Behdad invited a bunch of GNOME-ists living Toronto and its surrounding area for a GNOME 2.16 release party at his place last Saturday.

[Just to show how far is Hamilton from Toronto for all Southern UK GNOME-ists.  It was like going out to Oxford from London Victoria station or to Cambridgeshire from London Stratford station. ;) Not too far at all.]

I talked to Jeff W (aka jdub) via IRC for the first time. Behdad showed me how Pango renders text rendering vertically. Ryan helped me to fix the Kanji font problem.

It was nice to meet all people there. The Persian food cooked by Behdad et al was awesome. Thanks goes to Behdad, Sara and Hossein for hosting the party!

September 08, 2006

Thoughts on GNOME WSOP

Ryan (aka desrt) has written his thoughts on SoC.

I agree on most things that Ryan said, except the fact that my mentor was for me to harass.  ;)   (Luca, if I have disturb you during some ungodly hours in Italy, sorry!)

Frankly, I did not expect my application to stand out among about 100 applications because I had not been involving in developing any software for GNOME and Linux.  Despite this fact, I maintained positive and optimistic about my application.  As you can see, a good attitute really helped!

It was really good to work with Luca again.  I have lost track of him after he left Bologna.  My colleages at UWO ORCCA have not forgotten Luca yet: They asked me say hello to Luca whenever I “see” him.  Many of them remembered him as a very resourceful and helpful person in terms of research and system administration in the lab.

The only thing I was not completely happy about was the media attention.  I don’t have any problem with GNOME’s official press release.  Some news attracted some (presumely male) readers to comment harshly on gender and computing.  I would like to say that many of my good CS profs/mentors are female.  All are rewarded for their good job being done.  If you don’t believe this, post a comment here and I can give you the names of these profs/mentors.  I am not an advocate for female in computing, but I am annoyed by comments that were purely based on stereotypes.

Did I mention money?  Money is good, but should not be the most important factor to work on this project.  At least I have some extra money to buy new furniture for my unfurnished room.  :)   I have been living like a poor student anyway.

August 31, 2006

Mathedit: Outcome and Bugs

I am sitting in my home in London ON now….

Over the last week, I have been fighting against some rough edges of Mathedit. There exists various way to make the program to crash after we had the basic editing functionalities “working”. (Note the word “working” is in quotation marks.)

Luca and I agreed that we made progress, but there has been some (unanticipated) difficulties in the problem. For instance, we spent time without coding trying to figure out the proper selecting behaviour. We also have some unexpected difficulties in dealing with the libxml2 library and some initial backbone of Mathedit itself.

For those who would like to have a glimpse of the current status of Mathedit, here it is:

  • Here comes a formula
  • Selecting a subexpression (SHIFT + arrow keys) [Correction: Sept 8, 2006]
  • Cut! (CTRL-X)
  • Instead of cutting the subexpression, we can put the it somewhere else (CTRL-V)

[Aside] Behdad invited me and some other GNOME-ists to “GNOME release party” at his home in downtown Toronto next Saturday. Yay!

Gnome-Screen: Integrated Gnome Terminal and GNU Screen

The integration part between gnome-terminal and screen program is done. Now any command/data can be transfered between screen, vte, and gnome-terminal.
Here are some screen shots:

1) Creating a new screen session

2) Create a new screen tab:

This will generates a new screen session in a new tab.


The last updated source/patch files are available at:

August 28, 2006

Surviving FM’06 and Moving

A few things happened during the last week

FM was great. The tutorial on software doc by Dr Dave Parnas was great. I appreciate his humour and energy, but the tutorial itself was a bit long (9am - 5:30pm). Other than attending the tutorial and talks, it was a good chance to mingle with other students. (I had a conversation with Ryan L on how bad the Chinese font rending under Ubuntu Gnome.)

Over the weekend, I moved everything to my new place in Hamilton.  Since I don’t own any furniture other than the ones in my London ON home, I had to buy new ones.  My parents helped me out because they have a car and I can’t carry heavy items.  Now my brand new (children’s) bed from Ikea and desk has been all assembled and ready to go for September.

I have a couple burning questions for Luca.  I hope to catch him on skype later today!!!!

August 26, 2006

Scrollable screen

Finally, scrollable screen is out. #:-S ! Here is a screen shot:


As shown, a GNU Screen program is loaded inside vte and scrolling the screen content is transparent to vte. Scrolling is done using my implemented functions in screen and the pipe protocol described in gscreen design.

Source/Patch files:

There are some minor updating issues, specially when the content is selected by mouse, that I’m working on.

August 24, 2006

Remark

I tested the new behaviour of switching not only for mail, and this is the result of 500 set of 4 switches (mail -> contacts -> calendar -> tasks -> memos). Results for almost all the components are satisfactory - constant times rounding 0,1 seconds. But we can observe a soft tendency of mail to grow, which wasn’t perceptible with less number of iterations (see the post below).

August 22, 2006

patch

Patch and changelog (for libbonoboui).

After exploring many debugging outputs and gdb stack traces I realized that an accelerator was changed whenever the node of the xml tree that represented a specific menu widget was marked as “dirty”. In the process of merging the several xml trees a node could be set dirty depending on the command that represent. Some commands need to be synchronized; this sync is transferred to the node, for example in impl_bonobo_ui_sync_menu_state. But the problem that this function had was the chaotic addition of accelerators which made an expensive growth of structures, memory leaks included.

The patch respects the fact that we can have a widget with multiple accelerators and that the same accelerator can be added many times in the same accelerator group. The code only avoid the accelerator addition if it has been added previously to the same widget (which is the common case).

A chart with the difference of the old and new behaviour of component mail switching (200 switches).

200 switches

After each switch, evo sleep, for avoiding the linux scheduler interference. Other charts didn’t take into account that, but it doesn’t matter, because the effects and conclusions were the same. For example, the following chart represents a massive 200-switching. The old version never stops growing and the new one become stable in a specific threshold, determined by the end of an epoch in the Linux scheduler (probably evo should be at the end of the runqueue, but starvation doesn’t happen).

200 switches

* Edited * I’ve changed the patch because it had a little problem of memory leaking. Thanks Benoît Dejean for your remark!

GNOME WSOP in NewsForge

Another article about the GNOME WSOP is up in NewsForge:

I do expect many people to be skeptical about GNOME WSOP initially, but I don’t think someone socially and geographically close to my McMaster lunch crowd had been one of them. Let’s take a look to this paragraph

“[sip] One developer who had initially expressed doubts about WSOP promoted the program in his college, causing one of his fellow students to apply.”

and the next paragraph

So, the student in question, had her proposal accepted, and she’s now working on the GTK widget to render MathML.

Ah! My GNOME WSOP application really did surprise Ryan (aka desrt)! My application was accepted, so? ;) I think Ryan had been mis-represented. He really did ask one of the department’s secretary to send out the GNOME WSOP announcement fairly early (so I had enough time to ask my mentor, Luca, to review my application for a few times before sending it in). Umm….I don’t know that Ryan was one of those people working behind the scene in WSOP until now!

[Update August 24, 2006]

Yesterday, one of the grad student representatives reported my involvement in WSOP in the student forum:

It would be better to cite some other press releases of GNOME WSOP. Now I am crossing my fingers that the fellows at Mac would not read the NewForge article too carefully! :(

Using the trackback function in wordpress, I found a Japanese translation of the original NewForge article:

August 21, 2006

GParted: Weapon of Mass Destruction

With the growing capacity of the USB flash drives, I tried to shrink the shared partition in my laptop from 5G to 2G. Many people I know say good things about Partition Magic, but I don’t have a copy personally. So I tried to find some free (and possibly open source) software. Here I found GParted. It is available via Ubuntu’s synaptic package manager.

After I typed “gparted” in the command line, a window pops up:

Hey! I know the consequences of (re)partitioning the harddrive. The same message can probably be delivered without getting into the politics. :)

August 18, 2006

Mathedit: Copy and Paste in Action!

I was beating the bush during the last week archiving nothing. Mostly I was looking up and trying out different API to do cut & paste. Luca was not feeling well earlier this week so I was lost. Luca is well today and I presented him my burning questions this afternoon (evening in Italy!) regarding to implementation and design issues. Spending one hour talking to Luca was more valuable than spending four nights trying out different things. So here is the current status of the project.

Now we can copy a sub-formula

and paste the formula

As of now, I still have some issues regarding to pasting. In theory, we can paste the formula anywhere we want. In practice, how we handle situations such as pasting the formula

  • inside a token element (ie <mn>123|45</mn>)
  • in a 2D element that is currently “full” (ie <msub>a b | </msub>)

Luca asked me to split the token element at that point and include all into a single <mrow>. Similar treatment is applied to 2D elements.

I has been looking ahead what to do with cutting. After cutting out a formula, the formula may be “malformed” (ie. missing argument). As of now, a missing argument is rendered as a red question mark. This is not the main issue, however. What bother us is that such a red question mark does not have a position defined. I need to talk to Luca about this.

[Aside] Knowing Maria Soler is in Aarhus, Denmark, I don’t know why Aarhus has been popping up in my life during the last year! My UK boss last fall was from Aarhus. One of the PhD students in my UK office was from Aarhus. The postdoc in my UK office got his PhD in Aarhus….. :)

August 17, 2006

Toward gscreen

In order to use our pipe protocol described in gscreen design, a number of functions has been implemented in screen code so far:

  •  :new (generates a new screen session)
  •  :switchTo n (switches to screen session number n)
  •  :showWindows (returns a list of current screen sessions)
  •  :copy (enables copy mode, and returns the marked data)
  •  :paste data (pastes the data in current screen session)
  •  :scroll +n (scroll down n lines)
  •  :scroll -n (scroll up n lines)
  •  :scroll n (go to line n in scroll buffer)
  •  :getlinedata n (returns the content of line n of scroll buffer)
  •  –control-fds = fdnumber (adds the fdnumber to the list of fds that screen listens to their events)

The Gobject based gscreen class is implemented too. In this class two pipes are created, one from g-t/vte to screen and the other from screen to g-t/vte. The pipes are created in the gscreen_session_fork_command method and after that screen program with –control-fds option equal to created pipes is forked. gscreen will be called inside vte_terminal_fork_command in vte.c file.

I’ve hacked g-t a little bit and added a new menu item called “New screen Session”. By clicking on it, a new screen session , using our pipe protocol and :new command, will be generated.

August 16, 2006

GNOME and Ubuntu Stickers for Laptops

During lunch yesterday, I saw Ryan (a GNOME SoC student, aka desrt) walking into the student lounge with his MacBook running Ubuntu Linux and his GNOME bag from Guadec’06. There was a black GNOME feet and an orange-red Ubuntu sign on the MacBook.

me: Ryan, how did you get those GNOME and Ubuntu stickers?

Ryan L: They are not stickers. I painted them by windows clingers. (glass paint whatever!)

He opened his MacBook and showed me his silver “Powered by Ubuntu” sticker next to the keyboard. I have never seen such a sticker before. Too bad my cellphone does not have a camera or I would put the pictures of Ryan’s MacBook here.

[Update: August 18, 2006]

The “Powered by Ubuntu” stickers can be obatained from System76 for free!

August 12, 2006

More accelerators

The increase of time of g_memmove() at quick_accel_add() is due to some accelerators that are added and never removed. For each iteration we have 42 accelerators more which will remain in memory till evo is closed. Specifically, they are only 6 generic accelerators (*Control**Shift*s, F1, *Control**Shift*w, F9, *Control*w, *Control*q) but that are added 7 times. The 7-times-addition happens for all the others too, but every time they are added with a different closure.

I uploaded here the log where we can see the mentioned problem. There are 100 switches, every one starts with the word “ITERACION #”, then the last accelerators are removed (I print the pointer to the closure and the current number of accelerators) and are added the new needed (I print some data like id of widget, accelerator and closure, number of accelerators, position in the vector and time of g_memmove).

Beware of RSI

Many of my colleages know that I have tendonitis, a form of Repetitive Strain Injury (RSI), on my arms.

This problem started when I was preparing my MSc thesis last year. I went to my doctor last August and he prescribed me a semi-rigid brace on my right arm. I did not start any physiotherapy right away because of my internship in London, UK last fall. Luckily, I could wear the brace while travelling without much trouble with the security officers - there is a medal plate in the brace!

I saw another doctor upon returning to Canada in January. She sent me to a local hospital to do some tests and asked me to start physiotherapy right away. I have had physiotherapy at least once every week since February. My arms are getting better (in terms of not feeling numbness when typing), but the progress has been slow. Two weeks ago, my physiotherapist suggested me to try acupuncture: There is a certified acupuncturist in the same clinic. Well, acupuncture reminds me of some really doggy places in Hong Kong. Since Acupuncture has been already a widely-accepted therapy in Canada, I decided to give it a try. My first acupuncture appointment will be on next Wednesday.

This problem has been affecting many of my daily activities. Working on my computer, which is an absolutely essential activity, is greatly affected: I need regular breaks to control the situation. I also need to go grocery shopping often, always with a backpack. Note that the food packages in Canada are the size between the ones in the UK and the US. Last but not least, I can no longer doing piano accompanying in ballet classes or for instrumentalists. This profession used to greatly supplement my income.

Some steps have been taken to combat this problem. Although I have been using chopsticks on a daily basis for the last 20 years, I use fork and knifes instead in order to reduce stress on my hands and arms. In my office at university, I make sure that the position of the monitor and the keyboard is proper so that I don’t add stress on other muscles. (One of the counsellor at my university suggested voice-activated software. First, I cannot see anyone who can program using some voice-activated software. Second, those software are for Windows only!!)

Anyone here has/had some form of RSI? If yes, how do you deal with this problem?

[Update: August 15, 2006]

The Microsoft Natural Ergonomic Keyboard (4000) is on sale for CDN$49.99 in BestBuy.ca (CDN$59.26 [GBP] [US] [Euros] including all taxes and shipping). I ordered one yesterday afternoon. It will be arriving next week.

I have also installed workrave in my linux laptop (will install in the Windows partition later). It is a very neat tool.

Thanks to all who replied!! :)

August 10, 2006

accelerators never die

The last findings have been very interesting.

The following chart shows the behaviour of gtk_widget_add_accelerator(), method invoked by bonobo_ui_sync_menu_state. Here is where the time increases. Each point represents the sum of the times of all the add_accelerator in a switch, so there are 100 switches:

timing
Analysing the code we reach finally a g_memmove at quick_accel_add(), with the following behaviour:

gmem
Moreover, if we print the number of accelerators at an accelerator group the value always grow, like if some of the accelerators hasn’t been removed at the deactivation of the component in a switch.

August 08, 2006

em_folder_view_activate()

em_folder_view_activate() is, according to sysprof, the function which consumes an important amount of time in a switching. This function calls a lot of methods. I measure the time of its methods and keep the more significant for elaborate the following charts:

- for 100 switches: 100it_emfv

- for 400 switches: 400it_emfv

The first remarks:

- The the behaviour of time growth seen at previous charts continue; I mean the drastic hop that suffer the switching between iteration 20 to 50 (+/-).

- I haven’t found a specific method responsible of the increase of time, almost all of them increase their time, although bonobo_util_set_ui() is always the function which takes more time.

August 07, 2006

Running GNOME Desktop Increases Power Consumption?

One of my colleages at McMaster, Ryan (aka desrt), wrote that GNOME desktop can use up a lot of battery power because every application keeps waking up and doing “nothing”. Since I don’t usually work far away from any power outlet, I don’t know how quick a GNOME desktop can eat up battery power.

If every application keeps waking up, I can see the laptop battery won’t last long. This post reminds me of running antivirus or antispy software under Windows. Such a software actively checking for threats coming into the computer. The battery life of my laptop is greatly shortened as the result.

(Aside: I must admit that it was Ryan who let me know about GNOME’s WSOP.  Thanks Ryan!)

gnuLinEx and Iberia

Yesterday I flied from Santiago to Tenerife with the Spanish airline Iberia and I found a great surprise on my seat: a CD of Linex, the Linux distribution of Junta de Extremadura.
cd

Moreover, the air assistant promoted the distro when she had to talk to the passengers… “gnuLinEx is free software, total virus absence…”.

And everywhere we could find advertising of LinEx: on the cloth where we lean the head, the refreshing towel and other stuff (exemple:)

things

Congratulations to Junta de Extremadura! I’ve loved this initiative, Linux closer than ever to the people don’t know about it.

(and congratulations to my blog provider for deleting almost the whole post and making me re-edit it ’) (twice!)

August 06, 2006

Come back

Ok, there’s a lot of days I don’t post. I’ve been at Galicia, with my grandparents and I had few opportunities to connect to the net.
In these days I had profiled Evo in many stages of the component switching and I had take more timing tests of situations I considered relevant to understand the profiling.
I put timers in the functions component_view_activate and component_view_deactivate, which are called in every switch. For mail (the component with the worst behaviour) the time of activation is, firstly, over the time of deactivation and both times increase in every iteration. But after many iterations the time of deactivation increases over the time of activation.
For example, the first switch takes:
deactivate: 0,030000; activate: 0,340000
And after 300 iterations we get:
deactivate: 1,360000; activate: 1,120000
Due to this increasing of the time of mail deactivation I got in this chart the increase of component contacts, which should deactivate mail.

Besides, sysprof says that the responsible of the bottleneck in components activation/deactivation is the processing of xml. I’m right now analysing that set of functions. Perhaps the best way for optimise this part of the code is specialisation by eliminating communication in xml. Is it an sacrilege?

August 05, 2006

GtkMathView: Cut and Paste

I have definitely made progress in my GNOME WSOP project in the past week. Yesterday and earlier today, I and Luca fixed and added some desirable “selection” behaviour such as

  • Enable selecting from right to left as well as from left to right
  • Erase selection upon clicking elsewhere on the formula

One big thing about the last few days was to deal with the mix of C and C++ in the same application: GtkMathView is in C++ and libxml2 is in C. There are structs in both C and C++ to represent XML elements that I need. Consequently, some XML functions are for the C struct and some for the C++ struct. Upcasting and downcasting of the structs look really ugly!

There are still some small things to fix in the “selection” behaviour. To mark an important milestone of the project, Luca suggested me to investigating ways to cut and paste in Gtk applications. He knows there exists a “Gtk clipboard”. Anyone here knows a good tutorial or reference of it?

August 02, 2006

Selecting Math Expressions in Action

(My hackergotchi is up in the Planet WSOP page!)

Yes! We can finally select some math expressions without crashing the program:

This prototype is not completed: Many features are to be implemented. The current prototype may be inconsistent with the spec that Luca and I came up. During the next few days I should point out the “bad” behaviour and hopefully add some new ones.

August 01, 2006

An animation of screen’s usage

These days I’ve been looking at most of the webpages that have some info related to screen program. I found this animation very interesting:

The image “http://gentoo-wiki.com/images/9/9f/Screen_animated.gif” cannot be displayed, because it contains errors.

Source

July 31, 2006

GNOME WSOP on NCWIT

Here is another article about the GNOME WSOP’06:

Gnome WSOP article

(Chris, you are quick! I have not finished my post and you have commented on it already.)

I don’t get why some slashdotters have been so hostile on this subject because I have been brought up in a gender-balanced environment. One of the guys from my high school’s graduating class successfully pursued his career in nursing. Many girls, including me, participated in the classical guitar courses in my high school. The teacher for the COBOL course in my high school was female. When I was working in a local ballet school as a piano accompanist, a handful of boys participated in dance classes.

Although UWO (where I got my BSc and MSc) has a women’s college, I did not apply for this campus because I could not enter CS disciplines in the university from there back at that time. Some girls from my high school, who intended to attend UWO, applied because it offered higher and more scholarships than any other campuses within the same university. The guidance counsellors in my high school said, “Sorry, guys! You cannot apply for Brescia (the women’s college).” There was a catch: Guys from other campuses could sign up for the classes in Brescia!

July 29, 2006

Google Language Options: Pig Latin, Klingon

I was trying to add some language options for my google search. Google aims to support many language including the following ones:

I guess the “Hacker” language is, as its name suggests, from computer hackers. Other languages look like they are spoken in the middle earth or the outerspace. Any ideas??

July 28, 2006

Positions within a MathML expression

Luca and I are running into problems on how positions within a mathematical expression is specified. We need a good definition of a position so that we can specify the beginning and end of a selection. As the underlying datastructure, MathML is used.

There are many MathML tags for indicating the structure of the expression. We then decided that the starting and finishing position of a selection must be within token elements. Token elements do not indicate structure and are those that contains, for example, operators (<mo>), numbers (<mn>) or idenitifers (<mi>). We then decided that the starting and finishing position of a selection must be within token elements. After we were first happy with this definition, we found some problems that this definition:

  • How about selecting a square root and the subexpression of it? A square root sign is renderable but is not indicated by token elements (ie. <msqrt><mn>144</mn></msqrt>).
  • We can select “nothing” by having the starting position at the end of one token element and the finishing position at the beginning of the next one (ie. <mrow><mn>1[</mn><mo>]+</mo><mn>1</mn></mrow> where square brackets indicates selection).

I suggested another representation emphasising the renderable parts is needed. Luca pointed out that any other representation would be like LaTeX or MathML in some way and doing so is just reinventing the wheel. We decided to stick with the original definition and say that a position is also defined in <msqrt>. Having too many exceptions is not good, but so far we only have one obvious one. The second problem is still not addressed at this point.

[I think another problem case would be <mphantom> (hiding everything undernearth). Since this is Luca’s favourite element, we will have a peek at it. ;) ]

gscreen design

In order to make screen and gnome-terminal communicate with each other, we first decided to change the screen program’s code to expose a library interface. However since:

1) screen’s code is old fashioned. i.e. it has many global variables which is not desirable for a shared library and

2) screen and g-t are under different licenses.

It is not feasible to make the screen program as a shared library object.

Thus we decided to have a third program as the messenger between g-t and screen. ”Pipes” (or file descriptors) are going to be used to read/write commands from/to screen. 

The flow would be:

When g-t is loaded, it will create an instance of screen with the pipe fd as its parameter. Screen would be modified so that each time a command is written to the pipe, it would react properly.Each terminal would have one instance of the screen fd. Each screen fd can have multiple sub-screens.

To make the pipe bidirectional we actually need two file descriptors:·  

screen –> g-t for:

o        Scroll back buffer contents,

o        Copy,

o        Get current screens,·

g-t –> screen for:

o        Create a new screen,

o        Switch screen,

o        Search,

 o        Paste,

o        Show tab for current screens

Notes: 

Semaphores will be used to prevent deadlock.

A protocol is also needed to make the communication happen.One endpoint of a pipe will write a command to it, the command will be read and interpreted by the other endpoint and proper reaction would be performed.

Protocol initial design:·

:newScreen  options (readonly/writeonly) \r\n· 

:switchTo  screenID \r\n·        

:copy numberOfChars \r\n data data ….data \r\n·

:paste numberOfChars \r\n data data … data \r\n·        

:find searchLiteral \r\n·        

:getScreens \r\n·        

:showTab screen1 options \r\n screen2 options \r\n  …

(To send commands to screen ‘-X’ option can be used.) 

Ottawa Linux Symposium

I spent last week at OLS. It was GREAT.I had the chance to work on my project’s design issues with the help of my two incredible mentors: Behdad and Kosai.  The most useful part for me was the tutorial sections. Here is the list of talks that I enjoyed: 

  • Write a real, working Linux driver
    • I’m still playing around with my USB device.
  • A Step by Step Introduction to Writing a Linux Filesystem
  • Debugging Linux kernel using Kdump
    • If Kosai wasn’t there, I wouldn’t have understood much!
  • Xen 3.1 and the Art of Virtualization
    • Very interesting.
  • GIT - A Stupid Content Tracker
    • Well presented.
  • I’d love the idea behind Reverse Engineering USB Drivers
  • There was a BOF about Women in Linux: Speed Mentoring in which they “made” all the participants (including students and mentors) to talk to each other for about 10 minutes (not less, not more !). I met great mentors there.
  • Why Userspace Sucks - (Or, 101 Really Dumb Things Your App Shouldn’t Do), I recommend everyone to read the abstract here. I’ll try to get the slides too.
  • Wow:  3 myths, 2 lies, and 5 truths about Linux kernel development.

 P.S.1. I have slides and sample code for the first three tutorials. Please contact me if you wish to receive a copy. 
P.S.2. Ottawa is very beautiful in summer. Here is a picture of Parliament Light Show.
ottawa-119_1.JPG 

Kosai: If you want high quality picture, please let me know.

July 24, 2006

Fake Computer Science Conferences?

Last April, I was shocked that three MIT graduate students got a randomly generated paper accepted in a conference. Just in case you have forgotton this incident, here are some of the news reports:

Just a recap, The three MIT CS graduate students wrote a software, SCIgen, to randomly generate research papers. They submit one randomly generated paper to WMSCI 2005 and the conference accepted the paper. I followed this case in these students’ SCIgen blog last year. It was interesting to see many people donated money to the three graduate students to present such a paper in the conference. (These students got enough money to hold their own session as the result!) I did not donate any money to them, but still applauded for their heroic efforts.

Basically, the reputation of the WMSCI conference was destroyed. The same conference still goes on for this year. Using google, I found many researchers still submit their publication to WMSCI 2006! Now I am wondering if these authors heard about the SCIgen incident, or they chose to be ignorant about the scientific quality of the conference.

[Update (July 25, 2006): ACM SIGDOC’s March’05 newsletter had an announcement of WMSCI 2005. What were the editors thinking???]

July 22, 2006

Quick Progress Report

We’ve been defining the XML tags we will use in a file to maintain user data in lieu of a database. In addition, I’m getting a crash course in GUI programming using the Rhythmbox sourcecode as an example. My lappy battery is down to 4% so I’ll call it a night.

Selecting Meaningful Math Expressions

Just a recap, a part of my GNOME WSOP project is to define the so-called “selection” behaviour of mathematical expressions. The behaviour is defined using Presentation MathML, by which the mathematical expressions are stored.

Luca and I have agreed on most of the “selection” behaviour. On one hand, we want to have the users to select as freely as possible. On the other hand, we want to restrict such a selection to be meaningful. We came up with four different groups of MathML constructs: token, inline, two-dimensional and table. Elements in each group somewhat share some similar behaviours. For example, we allow one to select $[ a + b + c ] + d$ (inline) but not $[a^{2]}_{1}$ (two-dimensional). When some selection is disallowed, we try to select the whole expression. For example, $[a^{2]}_{1}$ would actually mean $[a^{2]}_{1}]$.

That’s all for the higher level details. Luca and I try to get down to the lower level details next week!

July 21, 2006

Some charts (II)

With the following chart I demonstrate the influence of the mail component in the last chart of yesterday. I took the same measure - switching components 50 times, but here only contacts, calendar, tasks and memos are involved. Note the difference of results, specially of contacts.

Yesterday (with mail): Mixed switching

Today (without mail): Mixed switching (4 components)

Moreover, time results are lower in the execution not influenced by the mail component.

And the following chart is a detail of the results of mail component published yesterday, where we can see the specific threshold of time increasing (around the 25th iteration).

Mail switching - detail

The next step… more sysprof!

wsop-first screen-shot of evince-mozilla plugin!



Evince version : 0.5.3 source version
O.S. : Ubuntu - Dapper 6.0.6

Project steps;
-apt-remove evince
-compiled evince, form source, installed dependent packages.
-apply, plugin-patch recompiled evince with mozilla option, solve some autotool, and plugin dependent problems
-after successful installation, firefox crashes because of plugin dependent error, fixed it!

All projects published in planet-gnome/wsop2006

p.s. (for turkish community) sth happened but we will learn later, alltogether...

July 20, 2006

Some charts

I’ve tested more cases of components switching and here I post the charts which summarize the results.

* Mail: Ok, we see it yesterday, this strange increase of time when switching 50 times the mail component, but only from a threshold.

Mail switching

-> And what about the other components? Will they suffer the increase of time, too?

Let’s see…

Contacts: linear time… (except the first or second execution, this is common for the following components).
Contacts switching

Calendar:

Calendar switching

Tasks:

Tasks switching

Memos:

Memos switching

Mixed: We switch in the order Mail-Contacts-Calendar-Tasks-Memos. This is a bit special. Here, time increases again with a different multiplier factor for each component, although calendar, memos and tasks are similar.

*Edited* This is the right image, the one I removed hasn’t got data in correct order. Nevertheless, the conclusion is the same, because the disorder wasn’t important.

Mixed switching

July 19, 2006

Simplifying Code?

Ok, this is not a WSOP-related entry again. But I think this topic may interest many readers.

When I was an undergraduate, I heard some guys talked about a including-as-much-as-possible-in-one-line practice when writing C code but never paid attention to them.

I had a meeting with my supervisors at McMaster yesterday. I showed him a demo of my experiment. My (pseudo-)supervisors, Bill Farmer and Jacques Carette, were interested to see what I got. A major part of the experiment was written in the Maple programming language. Jacques is the “King of Maple”: He knows how to make code easier to comprehend and more time/space efficient. Bill asked me to send my code to Jacques for a code review and I did so after the meeting. I thought my code was clear but with a couple efficiency issues.

Jacques got back to me quickly on the same day. Other than reducing a Maple procedure from $O(n^2)$ to O(n), he put as much as he can put in one line while preserving readability. For instance, he put a 7-line procedure all into one line by eliminating extra placeholder variables etc. Wow! Other than remembering the standard software engineering practice, here are some Maple-specific coding tricks:

  • Eliminate useless “return” (Note: Return value in last statement of a Maple procedure is returned by default)
  • Instead of writing a long if-else statement, use “table dispatch”. That is, use a hash table to store a condition-procedure pair.
  • “read” inside code is bad (Note: the filename is taken as absolute path)

Timing tests

After take many profiles with sysprof, I wanted to measure time of switching.

* Syscall times() at the function e_shell_window_switch_to_component();
fprintf() of the component switched.

* Evolution starts up. Load of the last active component (contacts).
Time of switching: user 0,200000 seg, system: 0,020000 seg

* Switch of components once. Command: Ctrl + [1,2,3,4,5]
Component_id: mail;  Time of switching: user 0,400000 seg, system: 0,020000 seg
Component_id: contacts; Time of switching: user 0,120000 seg, system: 0,000000 seg
Component_id: calendar; Time of switching: user 0,320000 seg, system: 0,020000 seg
Component_id: tasks; Time of switching: user 0,070000 seg, system: 0,000000 seg
Component_id: memos; Time of switching: user 0,080000 seg, system: 0,000000 seg

* Switch many times from memos to mail.
It takes always the same time:
Component_id: mail
Time of switching: user 0,310000 seg, system: 0,000000 seg
We see that the time is less than the first time (due to the cache…).
But the component memos takes a little more time:
Component_id: memos
Time of switching: user 0,120000 seg, system: 0,000000 seg
-> Does it depends from which component we did the swtich?
Let’s take more timings.
What happens if I switch indiscriminately from task to mail? Ah! The times are different in every execution. For example:
Firstly:
Component_id: mail
Time of switching: user 0,340000 seg, system: 0,000000 seg

Component_id: tasks
Time of switching: user 0,150000 seg, system: 0,010000 seg

Component_id: mail
Time of switching: user 0,330000 seg, system: 0,000000 seg

Component_id: tasks
Time of switching: user 0,140000 seg, system: 0,000000 seg

Component_id: mail
Time of switching: user 0,350000 seg, system: 0,000000 seg

And later, when we do a lot of swiching, time increase (both mail and task):

Component_id: mail
Time of switching: user 0,450000 seg, system: 0,010000 seg

Component_id: tasks
Time of switching: user 0,180000 seg, system: 0,000000 seg

Component_id: mail
Time of switching: user 0,460000 seg, system: 0,000000 seg

Component_id: tasks
Time of switching: user 0,240000 seg, system: 0,010000 seg

Component_id: mail
Time of switching: user 0,550000 seg, system: 0,000000 seg

Component_id: tasks
Time of switching: user 0,250000 seg, system: 0,000000 seg

Then, I tested again mail-memo switch. No more identical times (like
the first test):

Component_id: mail
Time of switching: user 0,390000 seg, system: 0,000000 seg

Component_id: memos
Time of switching: user 0,160000 seg, system: 0,000000 seg

Component_id: mail
Time of switching: user 0,430000 seg, system: 0,000000 seg

Component_id: memos
Time of switching: user 0,240000 seg, system: 0,000000 seg

Component_id: mail
Time of switching: user 0,440000 seg, system: 0,010000 seg

Component_id: memos
Time of switching: user 0,250000 seg, system: 0,000000 seg

–> Any pattern?? Don’t know…

Let’s try other tests.

I put an extra button on the ESidebar. When it’s selected, it switches 100 times to the component mail.
It’s funny; the first and the second call takes:
Time of switching: user 0,420000 seg, system: 0,050000 seg
Time of switching: user 0,320000 seg, system: 0,000000 seg
And the last call #100:
Time of switching: user 1,340000 seg, system: 0,000000 seg
Note that the time increases for each new call. WHY?

More timing tests will be needed.
And I need a trace of this time increasing too!

July 18, 2006

gJournaler Wishlist

Here are a few things that gJournaler should to be able to do eventually. This list is in no particular order. For WSOP the end game is simply to get the library function working, with import, export of BibTeX and basic search functions. Import Import both BibTeX and EndNote Citations. Also, import function that converts many [...]

gJournaler Screenie!

Due to popular demand and thousands of emails and phonecalls about the project (thanks mom ;) ) we have the first and ever gJournaler screenie. This is preliminary ofcourse but it’s a great start.

Ok, I admit, it needs color too. But the basic idea is that on the left, under search, there will be a folder system where you can virtually categorize your PDFs. Call it a *playlist* if you want to use an iTunes analogy. To the right of that you’ll notice three panes, again borrowing the idea from iTunes, where you can select individual authors, publications and title. That way if you remember just one of those you can narrow your search. The calendar above will help you select it by publication date.
Lastly, the bottom pane shows your whole list. A right click gives you access to editing options.
The import/export functions will allow BibTeX type. The idea is that assuming everything works together, a user will make a PDFList in the library, choose the list, choose Export, and voila! Instant bibliography! Now hows that for cool?
Screenshot of gJournaler

July 17, 2006

Zidane Headbutt Game

Well, this game is not brand new. A day or two after the World Cup was over, a flash “Zidane Headbutt Game” was out in a corner of the cyberspace. Because of its popularity, it looks like the particular web account had exceed its maximum bandwidth per month. Two days ago, I managed to find the same game and had some fun.

Zidane Headbutt Game screenshot

(See http://www.addictinggames.com/zidaneheadbuttgame.html)

GtkMathView and MathML in a Nutshell

GtkMathView is a open source library for MathML that Luca, my WSOP mentor, develops and maintains during the last 6 years. It is available as a package in the Ubuntu (and probably Debian) Linux distribution. Two sample applications are included in the distribution: mathmlviewer and mathmlsvg. As their names states, mathmlviewer renders a MathML expression in a new window and mathmlsvg translates a MathML expression into a SVG (Scalar Vector Graphics) file.

This software is a cool tool not only because it is an useful: It is also a research “toy” as well. Since the birth of MathML as a World Wide Web consortium standard, many applications such as the Mozilla web browser started to support MathML. In theory, GtkMathView can be included as a plug-in to other applications such as AbiWord. After several chat conversations with Luca, I was convinced that the existing MathML authoring and rendering tools are inadequate in terms of editing mathematical expressions. We try to archieve something that no one (or not many people) have thought about.

So what is MathML anyway? MathML is a markup language for mathematical expression. Many methods, such as using Plain HTML or images, are insufficient for encoding mathematical expressions. Part of MathML, which is called Presentation MathML, controls the notation of mathematical expressions in web documents. It is like LaTeX but for Another part of the specification, which is called Content MathML, encode the semantics of mathematical expressions without implying any particular notation.