Monday, December 31, 2007

Happy new year..

Unlike American culture, we Korean celebrate new year more than 'Merry Christmas'. In more detail, new year has two sorts. Solar (regular new year) and lunar ( aka Chinese new year ).
Anyway, for all of you who read this post, I wish truly your 'Happy new year.'

Monday, December 24, 2007

Emacs code folding with python

I tried out several packages. outline-mode, allout, ecb, and hide-show. hide-show was the only package that I can work with for 'code-folding'. By the way, it is surprising that ECB didn't have code folding mode, even for major languages like C/C++.

Using hide-show is very easy. No need to install extra package.
M-x hs-minor-mode will activate it.

The basic functions are:
hs-hide-block
hs-show-block

And, maybe this will be useful:
hs-show-all

It has a short cut, too. I am not used to it, at this time. Shortcut makes sense, but I call this by M-x. Maybe when I'm tired of function name, I will use their short cut key because I generally avoid my own short cut.

Tuesday, December 18, 2007

when thunderbird doesn't minimize to system tray,

issue 'kdocker thunderbird' when brining it up.

Monday, November 26, 2007

/proc/[pid]/smaps and Perl Linux::Smaps

Recently, I came across a topic about 'Memory usage'. In a doc of KDE memusage issue and a post from here, measuring memory usage is tricky especially when the process is involved with shmem and shared libraries. At the end of the doc, a reply is posted that 'from linux-2.6.14, smaps is supported.'
Okay... 2.6.14 was published in 2005. Catching up Kernel update should not be neglected like this. :) I definitely have been LAZY.
Anyway, smaps is very useful to see actual memory mapping with content of a process. Analyzing it seems awkward. So, I searched any useful tool at least making total of RSS. It seems like Perl people came up with something. ( I respect Perl hackers. ) Search for Linux::Smaps in CPAN.. Sounds very cool utility.

Wednesday, November 14, 2007

Result of new install

As mentioned, I recently wiped out my laptop and newly installed gentoo. ATI with AIGLX still has problem with Xcomposite (xorg). I thought 'well.. I will just wait and try 8.43 driver a few months later.' Right. I am no longer young and enthusiastic, but wait until someone fixes the problem.

Another issue is my Korean language pack. skim does not work with QT4, but Gentoo ships qt4 by default. I love newer version, always. But, going back to nabi for this was face-frowning situation. It's getting close to 10 years livinig in the US, I am using Korean less and less. I meet Korean people, but in the work, I use English mostly. More importantly, when I use computer, I tend to search more English websites than Korean websites. So, no Korean language until it is fixed with qt4. Again, I am getting old :)

Monday, November 12, 2007

ATI and AIGLX support

1. Recently, ATI announced that fglrx-8.42 will support AIGLX.
2. Gentoo recently put compiz-fusion in their main repository

Although some people had problem with AMD64 platform, I decided to try it out. Nothing wrong with Ubuntu Gutsy with Xgl, I always feel slightly uncomfortable on non-gentoo linux. SO!! I wipe out and reinstall gentoo on my laptop. Currently, emerge -uDN world is running before X11 install. Once X11 is installed, I will download recent fireGL driver.

Sunday, November 4, 2007

Emacs and Info page.

It's 1:43am. If usual day-light-saving was applied, it is 2:43am. I woke up in the middle of the night without any reason, and couldn't go back to sleep. I thought about, 'This is a perfect chance to catch up my researches deferred for many months!'

But, I couldn't start any of project. I was not just for programming at this moment. Instead, I decided to catch up some emacs stuff. Emacs became my favorite editor for 6 months. My previous post revealed that I was a vim user. I used it for 8 years, and I switched to Emacs. When I started to use Emacs this year, I thought 'Why do people cry about emacs so much?' As vim was not intuitive, Emacs was not either. Advanced stuff in Vim requires extensive knowledge, Emacs needs it, too. First, it started with curiosity, after 6 months later I realize why Emacs is so much a great editor.

Info must be one which makes emacs great editor. In my opinion, info page in Emacs is one of the greatest documentation tool. It had some of topics I already read from the web, or other sources. If someone starts to use linux, I will recommend to learn how to use Info page. Because, documentation accessibility is great. It is like a good book shelf for many topics. It is very well organized. I would like to have chances to visit as many pages as possible.

Luckily, I still remember core of vim. I found myself editing files using vim when I sshed to servers. I could bring Emacs over X forward, but these servers were mostly configured by vim. I guess it's momentum. I would not give up Vim, because it is also a great tool, but I would not spend time to research about vim anymore.

Sunday, October 28, 2007

Documentation..

I found myself writing a lot of documentation from my work. Usually, I write a documentation only on source code. This helps me tracking what I did. I have a request to publish this in clear form to read, not in source code comment level. So, I revise my projects and move documents into HTML form. I remind the first time I came to work here.
Our department did NOT have CMS. No central documentation system. The defense word was, 'we are small.' I didn't bother to start one like tikiwiki. I actually enjoyed not documenting my work :) We have issue tracking system, but it is not used for programming issue. We purchased it long time ago, and I feel very sorry that we are stuck to this.
Back to documenting story, my best option to publish my work was HTML. When I listed number of my projects, gosh it went up to 20. It is still growing. Sure, I worked a lot. :)
I am moving on. I don't know what will be my next job, but excited to relocating to my new place in Atlanta, GA !!!

Monday, October 15, 2007

Suffering by cold

It's been a while that I didn't post any. Something big occurs these days, but not complete yet. When that happens, I will post.
One of major thing happened that I can reveal is "COLD". My big son suffered by this for 2 weeks. It got to worse to 'pneumonia'. Only thing I could do was just watch him fighting through it. After his recover, my little one suffered by the similar symptom. It had not worsened to pneumonia. However, it must have been very painful for 4 month old baby.
My wife was the next. She can not finish a sentence without intervened by cough. And once she starts to cough, it sounds very bad. She lost her voice significantly. She is recovering at this stage. I guess she need a week or two for complete recovery.
Now, I picked up a cold last weekend. Last saturday, it started with small escalated temperature. And, it is getting worse and worse. I don't cough, but headache is the most annoying. It is very bad for a programmer :(
Worse part is, I have no sick leave left. A hahaha. It was very nice to have a month of paternity leave when Jaron was born. :) I don't regret. Since I am a healthy young man, I think I can fight through this disease without any sick leave. Luckily, I don't cough. So, people don't feel get spread by me.
When Jake was sick, he had 103 F temperature. That must be very hard for him. I feel so much sorry about him, and I appreciate him to finish his sickness.

Monday, August 13, 2007

One main advantage of using/programming in KDE

IPC is a common problem for system programming. If IPC mechanism is designed poorly, the cost comes when the software needs scalability. However, designing full blown IO framework upfront is painful. ( Blocked forever is the worst case, and I may not want to think of non-blocking or asynchronous by signal yet. ) If this bothers, I recommend using DCOP interface.
Example will explain better. I am reading documents using 'kpdf'. And I want to trace my reading on this document. One application of this log will be my reading speed on this document.
If you are running KDE, dcop server is already running. If not, dcop server can be still manually started. Assuming we have dcop server, try this command.

$dcop

Then, a list of dcop(pable) application will appear. Then,

$ dcop kpdf-6961 kpdf currentPage
223

Walla. It gave me current page that I am on. If you play with dcop a little further, you will be amazed that it can be a better way to talk to another process. Registering a function to dcop(pability) isn't hard either. If IPC should be considered for local application, this approach should be very appealing.

Wednesday, August 8, 2007

krusader

I used konqueror as my file manager. konqueror supported enough features that I needed. A few days ago, I read something about KDE. I think it was about KDE4. In the article, krusader was mentioned and today I installed it. It was amazing. It had more than I needed, however having these feature in hands definitely should help.
I love KDE. Mostly this preference comes from my laziness.

Monday, August 6, 2007

compiz-fusion.

I have succeeded in installing compiz-fusion. I liked shift-switcher. I am greedy that I want shift-switcher to provide a mode change by short cut key. Currently only way to change mode from 'cover' to 'flip' can be done through menu, only. I hope this can be done ;)
In the meanwhile, I bound a short cut for CompizConfig. Ctrl + Super + Alt + 'C'. Couldn't bring any other unique combination without conflict.

Saturday, August 4, 2007

KDE struggles on my new hardware

I am so depressed. I hope I know KDE framework better to fight through my favorite KDE applications. I sent a bug-report about amarok and konqueror, but I know I just gave them a burden without much of useful information. I couldn't attach any useful clue.

When I brought up amarok for the first, it gave me a pop up of 'want to install MP3 plugin?'. At that time, my wireless was struggling. So, 'not now' was my answer. After that, amarok wouldn't respond at all. I thought it remembers my network carrier as a wireless. So, I dropped ndiswrapper and plug in for eth1 (wired network). Not working still.. I am using audacious instead.

Konqueror is better than this situation. But, I can not bring many features as I expect. It is a big cost for very young and new hardwares.
To make all this worse, my right hand wrist is picking up a soaring pain. I am still young to have a joint problem :(

Friday, August 3, 2007

I am alive

I know that I am not a popular blogger, and nobody cares if I haven't pinged to my readers. But, I do anyway. Hey, I am alive :)

Okay, I got my new laptop which dragged me several days. I audaciously tried gentoo linux on brand new Dell 1521. It has 2x64bit turion with 2GB of memory. ATI Xpress 1270 onboard VGA. I was very brave to give gentoo on it, and I struggle, now.
Dell 1521 is introduced in the market only 2 months ago and its HW parts are very new. And it is 64bit processor.. sigh..

Thursday, July 26, 2007

Bye, Xemacs 21. Move to Emacs 23

I was a vim user for long time. And I moved to emacs world about 4 months ago.
I am getting used to it more and more. I especially liked lisp syntax to configure the environment. Currently, I am working on writing emacs plugin to look up english dictionary. I need urllib or socket with some nice parser. Anyway, getting into it and enjoying emacs.
One thing I couldn't bare on Xemacs was that it was not friendly with Korean Language system in KDE, I believe it starts from X layer. Before I fight with UTF-8 on Xemacs, I looked up emacs.kldp.org and found Emacs 23 supports UTF-8 with Korean enabled out of the box!
I tried it out, and loved it. I migrated custom.el from .xemacs to .emacs file.
It is very radical move because Emacs 22 is still not in stable tree.
But, I got what I wanted and life goes on.

Wednesday, July 18, 2007

Gentoo: tip for KDE

Yesterday, I mentioned that I am thinking of gentoo for my office machine and will be planned for later. Wrong! I did it yesterday a while after I posted the article. I admit that I was nervous a little bit because the machine contains many bits and pieces for work. If any of them failed to be migrated, it will cost me extra recovery time.
Then, I thought, "Why not?". It does not cost me loss of data. It only costs me extra work for recovery. As long as, I can bring data back, that's fine.

Things went okay. I backed up most or all of necessary data, and restored them back including pg dbs. My tool for window manager is still KDE. It took me just about a day to bring up. Full blown kde-meta compilation will take longer than that. And, slow.
To make KDE responsive and fast, I do this.

# emerge kdebase-startkde ( for basic kde)
# emerge konsole ( I always need terminal with enhanced control )
# emerge kicker kmenuedit

You can think of KDE with only these three for XFCE, stripped down version of Gnome. Then, build in anything that will be needed. For example, my favorite amarok.

# emerge amarok.

:)

Tuesday, July 17, 2007

Linux: Gentoo vs. Ubuntu

I am a big fan of gentoo. I believe it is the most flexible Linux distribution. My laptops were gentoo. However, in my workplace, I use Ubuntu. My supervisor does not like tweaked solution, and I understand. If I am a manager, I don't want to solve problems harder than necessary. Our deploying target is RedHat AS and my environment is already not matching and it does not need to match. Anyway, my package will be installed with install script. Why not use Gentoo?

I would like to. That is currently a big dilemma. We are pretty busy this summer, but after the summer, let's consider :)

Thursday, July 12, 2007

gentoo on slow system

This is a dilemma. Modern operating system does not like slow system with not enough memory. Let me give my old laptop as an example. This is Celeron 1.1Ghz with 256MB ram. Cache size is 256Kb. First, Windows XP, the mostly used OS these days, can survive barely with fresh install from original recovery CD (Home edition). But, as patches and service packs are added up, getting sluggish. Eventually, fully patched machine will give unusably slow machine. To use this computer, exposing to risk of unpatched status is inevitable.

Second, Windows 2000. Ha ha ha. Unless somebody has a too much time to experiment how long it takes for fully patched with gazillian times of reboot. I don't want to try, but I can imagine myself stuck in this ugly box patching and rebooting repeatedly.

Then, linux becomes the key. However, current ubuntu/kubuntu desktop release will not be happy with 256Mb ram. It will be as slow as Windows XP. We can use debian or ubuntu server and start from there. Light window manager like fluxbox or window maker with small but powerful system monitor like conky will do it. Personally, I prefer fluxbox.

When eagerness to offload unused kernel module or strip down application thanks to USE flags comes into play, gentoo brings serious dilemma. As much I don't want to be stuck updating windows machine, as the same I don't want to be stuck looking at compiling screens.

I can just compile and leave. What if emerge process failes in the middle? Okay, then use the box while compiling. That's what I do. Then, the machine is usable, but not fun. Especially, when emerging, it already lost sometimes half, sometimes fully lost cpu resource. Plus, firefox is slow!!
But, the result will be the cleanest.

The last thing that I want to see is 'update candidate, glibc.'

Wednesday, July 11, 2007

gentoo: ndiswrapper can't find CONFIG_NET_RADIO

I was very interested in tickless kernel for longer battery life on laptop. So, when I saw kernel-2.6.22 on portage, I began to emerge. Although it was 3:00 in the morning, I couldn't go to sleep without finishing the job.

My gentoo system is very slow machine. 5 year-old Intel Celeron (256KB cache) with 256MB ram. Taking so long time for kernel compilation was bothersome especially in sleepy brain. Well, finally finished, (GOSH! forgot to check how long it took. Kernel compile does not leave a log in /var/log/emerge.log )

By reboot, I found two things broken. My sound and ndiswrapper. ndiswrapper 1.44 ebuild was complaining CONFIG_NET_RADIO. At first, I thought, 'I forgot to visit networking section.' :) But, before menuconfig, grep 'NET_RADIO' .config on /usr/src/linux surprised me. Nothing!!
Okay, if an application is complaining an non-existing CONFIG option in kernel, most likely this must be gone. I found this entry from googling:
http://bugs.gentoo.org/show_bug.cgi?id=179951

I turned on new config, CONFIG_WIRELESS_EXT, and spent compiling kernel in sleepy brain once again, rebooting, touching /etc/portage/package.mask and package.keywords for ndiswrapper, and emerging... And it was solved. modprobe successfully loaded ndiswrapper.

Thursday, June 28, 2007

oracle: data with single quote

When using java, prepared statement can insert string with single quote easily. I tried to achieve the same thing with python. I finally got prepared statement using cx_Oracle, but it was very ugly and unintuitive.
I tried this task with postgresql hoping for a better solution. Things were worse in Postgres. I knew that my favorite psycopg2 does not support prepared statement, yet. But, the rest of the drivers, such as pypgsql and all others that I have researched, were in the same status.

Anyway, I found this this link:
http://catherinedevlin.blogspot.com/2005_07_01_archive.html

Oracle had a different idea. Different quote operator. q'| |'. Like python block quote('''), it relieves single quote when wrapped around it.

Insert into tbl(txt) values ( q'|Hello world's geeks.|' );

Coming back to work after the vacation

Thanks to my second son, Jaron, I had a wonderful vacation. It was the best and the busiest vacation that I had. Actually, I came back early this week. I already spent three business days in my office. I was afraid of the big eagerness of leaving my office, but that wasn't too much bad. I sit down nicely and processed pending jobs.
Programming skills needed time to get up to speed. English was troubled for a while, Korean much more fluent :) I hope my kids pick up Korean first.

Now, the good days of vacation is over and the life resumes with an additional responsibility. I don't mind, though. Maybe, Jake will object?

Thursday, June 7, 2007

my new family.

On May 26th, 2007, my second son, Jaron, was born. Having paternity leave now. Yeah~~~. It was the same hospital, the same level, but the room was the other side of hall as we were there two years ago. Funny thing is that not my wife but I am having emotional fluctuation mostly toward happy side with a little bit of tears ( Shame on ME, a man with tear! )
Anyway, his first image brought a deja-vu. He looks exactly the same with my first one, Jake. When getting a chance, I want to show pictures of my sons side by side. My wife and I took a picture on purpose when we put Jaron in the baby basket for the first time. We successfully took the same angle, the same pause, but in different clothes two years ago as we took Jake. If somebody sees these pictures side by side, 'Hmmmm,... Why did you change baby's clothes on discharge from the hospital? Were you guys bored enough?'

Wednesday, May 23, 2007

Python twisted part 2

Several days ago, I have introduced python twisted (and I just mentioned perl POE. ) The application that I have created on that day needed a new feature, Control Port. It wasn't a big deal. I opened another port with separate protocol that I have defined and spit back CSV of requested report. CSV can be easily turned into a graph. Supporting XML seems like too much for this but can be done easily thanks to BeautifulSoup. I also supported 'stop the daemon' for fun. Took me just 1 hour !!
The beauty of this was that control part seamlessly communicates with collectors because they are running under the same application. At the same time, I do NOT need to think about Threading and locking. How nice it is !!

Thursday, May 17, 2007

python twisted

It is just over 1 year that I have used twisted. I actually used Perl POE before I used twisted. It does not matter which one is chosen. Python users will use twisted, Perl users will use POE. They both are very useful. Personally, I prefer twisted simply because I am a python user.
These are called asynchronous high level network framework. Sometimes word 'abstracted' is attached in introductory contents.
First thing we have to focus is what it is. 'Abstracted' or 'High level' can be best described as 'Protocol Implemented'. I do not have to worry about protocol specifics. I just call methods from objects instantiated from twisted.SomePackage. And asynchronous means, not synchronous. Then, someone may ask what is synchronous? Let's simplify that 'synchronous' is similar way to have conversation between human beings. One person asks, and wait until the other responses. Peers don't speak at the same time. In asynch mode, they do. More in detail can be found in Unix Network Programming ( a.k.a UNP ). There are more in detail about asynchronous communication (non-blocking, signal driven, etc.) I recommend reading UNP for network programmers. Chapters about Async-communication was the best.
With these network frameworks, any network driven application can be very simplified in terms of number of lines of code. Especially, server applications processing custom protocols are very simplified. Buffer handling/IO handling is almost trivial and the performance is even faster thanks to async IO's better utilization of bandwidth.

This morning, I have written another network server processing message from various servers. The key word is 'This Morning'. That's right. I wrote this in low degree of hours. Actually, in 2 hours. I just process the message and stuff into sqlite3, and my life goes on. If I have to write the same code in C, it should take up at least 1 day. :)

Tuesday, May 8, 2007

Stripping HTML tag

I had to write a module to 'word count' a web page. This required to strip the HTML tags out of the url read. I quickly googled, but I felt that this kind of easy problem doesn't even need googling. So, I came up with simple solution.

This is very rough test code written using BeautifulSoup.

http://lucky.umd.edu/code/strip-htmltag.py

Tuesday, May 1, 2007

My tool set

1. springnote.com and basKet:

These are my note takers. I normally use springnote.com because of accessibility. 'Hey, it is another Korean website.' Sorry :)

2. Google tool set:

I do not have to explain what are google tool set. Google always brings one of the essential tools for life. Beginning with gmail, there are calendar, map, earth, doc, personalized google portlets, blog(Of course!), analytics, talk, and most infamous Google SEARCH! I can not live without google.

3. flickr, kflickr, flickrapi(by Beej)

This is one that google couldn't rule. I tried to use picasa from google, flickr really ruled. My pictures and my family's pictures are posted there.

4. kdissert, vym for brain storming.

There is a project called 'freemind'. I used to use it but after I migrated to KDE from gnome, I used kdissert instead. vym helps kdissert. 'freemind' is not a bad tool, but I like simplicity to use in kdissert.

5. bloglines for news read

I use this not only for news reader, but also for good article keeper with 'important' tag. That is very useful.

6. KDE desktop with Gentoo, Ubuntu

When using linux, I chose KDE for my desktop. I started with bare gnome about 7-8 years ago when I first used Linux ( At that time, I just started computer science degree ). Then I moved to blackbox, later it became fluxbox. Then, I moved back to gnome after CPU hits GHz and 512 Mb became general PC memory size. And then, I settled in KDE. KDE is just very easy and well-balanced desktop environment.

7. keychain for ssh-agent

Because of my work, I have to jump from machines to machines. Without this, typing up my password everytime should not be imagined!!

8. Other utilities for fun

Such as amaroK, mplayer, etc.

Thursday, April 26, 2007

One thing at a time...

I am not saying that things should be accomplished in steps. I am talking about myself.

My mindset is one thing at a time. Once a subject takes over my mind, that thing has it all. When I learned and worked computer programmings before my son was born, I used to hadve topics of programmings in all of my mind. I thought about coding when driving, walking, and sitting on my desk. This was very productive way so that I was always ready to jump in.

Not any more. My son has my mind all. I need a warm-up period for my brain to get up to speed when coding. Evaluation of 'Okay, what is the situation that I am in? ' takes longer than I used to evaluate. Worse thing is that I forget all of my work as soon as I see the pictures of my son on my desk.
Back in my young life, I was indulged in playing guitar. After my high school, I practiced my guitar like professional. At least 10 hours a day, and 12 hours straight playing was easy. I remember that sometimes I couldn't speak. I lost my verbal ability temporarily because of music. One thing at a time went very extreme.

My wife mentioned that she felt that she lost a bit of her short term memorization after having our first son, Jake. Biologically, that was a proper side effect of pregnancy. But, me??? I was not the person carrying a baby and suffering for 10 months. But, why am I losing my memory? And ability to concentration?

To tell the truth and conclusion, this is good. I have never been happier than these days. Especially, we will have our second son in 6 weeks. I always thought I have been a lucky man with my basic needs were always met. But, these days are the happiest moment.
Losing my productivity is my side effect, but that's okay as long as I meet the expectation for my performance review. Eventually, I will get my productivity back. Enjoying with my family is more fun at this moment, and that's what my mind said, 'One at a time.'

Wednesday, April 25, 2007

Dynamic prefix of PYTHON

autoconf suggests --prefix switch. Probably, anyone who has compiled a package from source(such as apach or mysql) may be familiar to this switch. If we look into a little further, any binary file needs to be copied into memory (we call this process image), all of file locations must be known beforehand. Therefore, compiling C/C++ sources requires where to find other objects, especially if the objects are *.so.
Then, once it copied into process memory, the process doesn't care where this object file came from. This is a different problem. Probably, anyone who has compiled a package from source for multiple versions suffered for libraries of different versions. One of the primary reason is that compiled object remembers wrong places for library, but different object file exists there as the same name. 'make clean' or 'make distclean' should be used in proper time.

Python, on the other hand, is an interpreted language. Compilation is not required. (*.pyc matters, but let's simplify at this moment. ) Python searches library at runtime, and it loads the library at runtime. So far, no difference. But, the library location does not need to be known beforehand. The most beautiful thing is that the location can be determined by looking at stack frame! This can eliminate the needs of compilation '--prefix' switch.
Consider this segment of code.

http://lucky.umd.edu/code/dynamic-prefix.py

This segment of code is very simple (6 lines of code including spaces.) It just prints what is the absolute path of the executable. Regardless how it is called, it should return the same path. If we have [Arbitrary App Home] and, under this [Arbitrary App Home] are subdirectories of bin, etc, and lib. And bin subdir has executable runme.py. Regardless of how runme.py was called, it knows where it is and set right value of the [Arbitrary App Home]. Therefore, we don't need --prefix at all.

This is VERY Nice.

Monday, April 23, 2007

begin to flickring..

I started to use flickr.
I thought about using picasa first, because I like what google is doing. While I was playing with Gdata client, picasa client wasn't in the package. There were Java and .Net client, but no python. Since there were 3 posts on picasa python client/library, I could wait until they release the code. Or I checked flickr and found flickrapi written by beej. :)
I just uploaded 80 pictures from infamous cyworld. Since cyworld didn't expose an interface downloading pictures, I had to work around. It was annoying..

Tuesday, April 17, 2007

rundl132.exe

I was reading a book when my wife was complaining about her laptop. During our conversation, she asked to me, "Do you know something about rundll-132 ?" Okay.. I said, I have heard rundll32.exe (I don't know much about it. Is it shared object manager? Linux doesn't even need this. How clean it is to give an identity of being static or shared in compile time! )
Where did the number 132 come from? First, it is not a power of 2. So, when my wife called me, I saw that it is 'rundl132.exe' which tries to have a similar look of 'rundll32.exe' Quick googled and found that it is malicious code. I actually applauded for this nice name. This guy who wrote this malicious piece has a sense of humor :)
Well, anyway, it was a nice piece of joke.

Monday, April 2, 2007

Saturday, March 31, 2007

Beryl is going to be Coral.

http://forum.beryl-project.org/viewtopic.php?f=34&t=5484

Beryl was a fork of Compiz, but both converged. (Compiz plugins are running on Beryl.) This merge makes sense. I hope both teams with similar proficiencies to lead Beryl/Compiz successful. Coral is not official, yet. But, community seems to like it.

Monday, March 26, 2007

So far, So good with Xemacs

This time, I am using Xemacs for longer than the last time I tried. Especially, after exchanging Caps_Lock with Control_L. My last finger was relieved so much thanks to this. I would like to say that the machine is not properly configured for emacs if Caps_Lock insists to be 'Caps Lock' key.

For windows XP, Microsoft released a utility called 'Ctrl2Cap' for this purpose. I ran into somebody explaining regedit to do this. It was not only ugly, but also NT based. So, another googling brought me to microsoft website, which was the exactly what I was looking for.
Ctrl2cap must be installed from command line prompt. And it required reboot which xmodmap on Linux didn't require. Hey, what do I expect on Windows? I have decided not to compare Windows and Linux long time ago... If it wants to be rebooted, reboot the box.

One problem for this. I was using Windows XP from rdesktop connection. Windows by default does not allow to display 'shutdown' menu from rdesktop session. I just guessed if Windows have 'shutdown' command from the prompt. YEP, there it was. Rebooting windows from command prompt is reasonable command and it was there. I issued 'shutdown -r -f' and it rebooted without any pain. Xemacs on both of my systems.

Friday, March 23, 2007

opened an account in playtalk.net

Okay, you may ask 'What in the world IS PLAYTALK? ' Simple answer is another blog posting service. ( No. I am too much simplifying.. ) Another answer is that it is a community of people who connect each other by posting very short comments.

Why is that? Well.. sometimes I may not want to post full blown blog entry for many reason. But, leaving a log for this shortly can be done in this website. Input method is not only from a computer but also from a cell phone.

You may say, 'Hey, it is Korean.' Sorry, I still speak in Korean. Looked in carefully, you may find a link called 'international'. They try to be English friendly, but how good will depend on their contribution to keep it up.

Tuesday, March 20, 2007

Yet, another IDE

I have been looking and comparing Xemacs and Eclipse. Now, I am bringing up another one.
The title seems very weak, but I was very impressed by spe.

While I was playing with spe, I wondered 'what spe stands for?' So, I clicked on about menu. There it says Stani's Python Editor. Okay. I clicked on the Homepage hyper link, and I got Error and googled it and found http://pythonide.blogspot.com/
Interesting tool like this have wrong link brought some sympathy for short, but later I guessed if it is supported by blender, then not so bad.
I found this when I was searching for PyCrust. spe uses PyCrust integrated. The biggest advantage of spe is evaluator. The reason why I love python is, I feel very comfortable with Python. Everything looks easy with it. But, still I needed to look up pydoc many times just for function signature. My short term memory is pretty at idiotic level. :(
What spe makes me excited is, at least, I can reduce time for looking up function header. Its editor uses space over tab character for indentation. 'Copy and paste'able to Xemacs. Nice...

Monday, March 19, 2007

Mylar

I ran into this project when I was googling about making Xemacs IDE environment.

Eclipse is a heavy-weight, but very feature rich framework for developers. Eclipse provides very nice view for Java developers. However, they provide C/C++ (CDT), Python (PyDev), and basically all plugins for all languages. I am sure that I can find some plugin which somebody made for some reasonable reason.

Mylar is an eclipse plugin and it gives a different perspective when watching a source code in BIG project. I lost demo presentation clip link, but it can be found very easily at mylar home. I installed eclipse 3.2 and tested Mylar quickly. Hyper link from a source code is a nice feature but, it was not available in 3.2. They said it is available in 3.3. I stopped research at this point, because I have many jobs to finish. But, definitely, this is worth learning.

Sunday, March 18, 2007

Emacs..

I am a vim user. I have been using Vim since the beginning of my linux life. About 2 years ago, I started to get interest on emacs, but I have never had a chance to approach to it. Partly because of busy tasks always drew me back to vim to get the job done. Partly because I am lazy... And I never stick to Emacs for more than 3 days.

Now I am trying to get Emacs once again. I installed Xemacs and got a annoying terminal bell when I made a mistake on the editor. A temptation to go back to vim.. But, I googled and set the visual bell. It is annoyingly in complicated place like:

Options -> Advanced(Customize) -> Emacs -> Environment -> Sound -> Visual Bell

And I suffered to toggle the value to non-nil. What made this application one of the best editor in opensource group? Sure, I saw too many configurable places which I have no idea. Let's try to stick to Xemacs for a while and see why it is a good editor!

Wednesday, March 14, 2007

Windows compatible OS in Open Source

I have run into an interesting project called, ReactOS. Different from wine, it provides a full OS like linux, but interestingly it is Windows compatible in binary level (binary executables and device drivers, too!! ) . This sounds like a good alternative when Microsoft stop supporting WinXP.

Friday, March 9, 2007

Beryl from svn

I decided to check out beryl from svn and compile on my own. Before I went there, I researched a little bit and found many people suffered from compiling beryl with many issues. I said 'lets see how tough it is' and changed myself in fighting-with-compile mode.

Unfortunately, big fight did not happen. I had about three issues, but that was it. I am sure if it was Gentoo, this issues must not be the big problem.

1. AM_PATH_PYTHON issue.
It was specifically ubuntu issue. Ubuntu ships automake 1.4 by default. But AM_PATH_PYTHON macro was added later than this. So, it was a simply old package problem. Well, aptitude remove and installing newer package was quite easy.

2. GL/glxtokens.h was not found.
Beryl svn check-out obviously had this file under beryl-mesa directory. But actual make line didn't have -I entry for this directory. I wondered if it was a bug, or there was a missing piece to expose this directory for the compilation session. Well, either didn't matter to me. My laziness just symlinked GL directory under /usr/local/include and life goes on...

3. Several missing library issues.
It was a matter of time to resolve these issues. Mostly I needed to fill the gap, modify makeall script to bypass packages which were successfully built, and then rerun makeall. Missing libraries actually were basically required '-dev' packages to be installed. I missed gentoo so much while fixing these problems.

Basically this was it. And I could run beryl with Wall plugin. I have found beryl added more features including bypass opacity which freed me 'XLIB_SKIP_ARGB_VISUALS' for rdesktop.

Well, now the next question is, why did I do that? When I develop my current project, my PC is soaring for resources and I turn down beryl for that. I just compiled the package I don't use often? It looks like, but this tells how much I like beryl.

Wednesday, March 7, 2007

How much do you enjoy programming?

http://agile.egloos.com/2807583

This article introduced the book 'iWos'. The key question that he mentioned was "How often do you write a program for yourself? Do you have a project which have been maintained for more than a year? Isn't it unreasonable to expect somebody else develop code worth more than a year although you don't have one worth more than a year? "

When I looked back myself, I felt ashamed.


dynamic loading using dlopen API in C++

I just ran into this problem randomly this morning.

Think about the problem that overladed functions in C++ are in .so file and we need to load them in dynamic manner. If it is in C, it is fairly easy because we can not use the name which is already defined. One to One relationship. So, C compiler can map the symbol name as a function name in the symbol table. Nice.

Okay, in C++, simple function name will not work as a symbol name in the symbol table. One example is the overloaded functions. So, C++ compiler needs to generate other necessary information attached to the function name for symbol table. This process is called 'Name Mangling'. Unfortunately ANSI C++ does not define how to mangle names. It's all up to compiler, which means, binary level compatibility is not preserved. One SO file per system !!

Therefore, in essence, overloaded functions can not be dynamic. In addition to it, to make any C++ function dynamic, they need to be in extern "C" closure without overloading support.

Now more complicated problem occurs when we need to load a class in dynamic manner. Non-static class member function needs an instance to be in the symbol table. But, dlopen() and building an instance makes an 'chicken and egg' problem. Thinking of this problem will be my next thing for fun thought, later.