Last few weeks were quite a hell for me. While struggling to finish all labs and seminars on time, I suffered quite strong pain in paranasal sinuses, which was followed by toothache and usual headache caused by lack of sleep and rest. Despite that, I managed not to break any deadlines. Not just that, but IGMP snooping project entered working state. Sometimes I can’t belive how I can stay alive… So, what’s with IGMP snooping… Long story short, IGMP snooping is functionality built in enterprise switches that gives it ability to read IGMP protocol, used for IPv4 multicast groups management. Switch that snoops IGMP can optimaly forward multicast traffic causing less congestion in contrast with usual non-snooping switch that broadcasts multicast datagrams. Few months ago, menthor of mine and I agreed to work on inserting IGMP snooping extensions in software implementation of network bridge. As my menthor is author of network stack virtualization in FreeBSD kernel and network simulator IMUNES, heavily based on virtnet and netgraph, this work is based on bridge implementation called ng_bridge, part of netgraph system included in mainline FreeBSD kernel. Right now, patch against FreeBSD-CURRENT version of ng_bridge.c contains about 1k lines of code, but there macros and debuging functions that will be trimmed out at some point of development. Thanks to menthor, I received FreeBSD mail alias and perforce account, so code was moved from my personal subversion repository to official one at perforce.freebsd.org. Few things are yet to be added, like applying few more rules from RFC4541, locking mechanisms for thread-safe execution, multicast group and multicast host timers… If everything goes well, I hope that code will be included in one of following stable releases from FreeBSD-8.x branch. Wish me luck ^^
So, I finally have time for a post. I don’t know have I already posted anything about AIESEC student organization and taking internship somewhere in Asia, but I can say now that this is not going to happen. Yet. h4z4rd and I tried to find one, but we had no luck, mostly because companies want someone who can stay for at least half a year and we can stay no more than two months. We hope to take an internship next summer, when we should be free of any faculty obligations forever. But, instead of internship, we decided to try WWOOFing. WWOOF (World Wide Opportunities on Organic Farms) is an organization which connects WWOOFers (h4z4rd and I) with hosts. WWOOFers search for hosts, pick one and contact him. Then host decides if he wants to accept the WWOOFer. If he does, WWOOFer visits host and works on organic farm, restaurant or/and  anything else for what host gives him place to sleep and food. The country of a choice is Japan. We applied for one month and our host (which name I won’t disclose) accepted us, what made us very delighted. Everything sorted out in no more than two weeks and went very smooth. Plane tickets were bit expensive, but we luckily had enough money to pay for them. So, preparations are undergoing and delight rises from day to day. If everything goes fine, I’ll spend August in Japan.
Few days ago I wanted to do some testing in one of my virtual machines. So I started it and in the time fsck was initiated in virtual machine, host machine started to freeze. I tought it happened due to recent upgrade of vmware modules patched (improperly?) for 2.6.29 kernel, so I downgraded kernel and modules, but with no luck. Being very pissed off, I installed virtualbox instead of vmware. Even then, machine started to freeze again… Logs showed errors reported by SATA driver and it could mean only one thing; hdd failure. SeaTools discovered and fixed 48 errors in my 750GB-7200.11 Barracuda, but the drive didn’t show much will to cooperate. In a meantime, I discovered that those 7200.11’s are very prone to errors so I decided to buy WD Caviar, Black Edition. Right now, I’m reinstalling Gentoo using WD for system partitions. In few days, I’ll visit a dealer from which I bought Barracuda and request new disk, as warrany didn’t expire yet.
I was Xfce user as long as I use Linux.  Well, I used Gnome for a month or two because I wasn’t aware that other environments even existed. Main reason for using not-so-bloated environment was a weak Celeron processor and small amount of RAM in my notebook. I did try several other desktop environments, including but not limited to KDE-3.5 and -4.1, GNOME, Enlightenment 17, but none of them seemed more usable or faster then Xfce.  Even when I bought new desktop machine pretty capable of running any DE, I decided to stay with Xfce, as new 4.6 version was about to be launched. But, that one wasn’t big suprise for me and I expected more. So, few weeks ago, after talking to a friend who works with me, I decided to try KDE-4.2. There are few things that I don’t like, but all-in-all, I’m really really satisfied with my new environment. It’s kewl when system that looks so nice (I do use desktop effects), has such small memory footprint (~315 MB). What I don’t like is Amarok2, so I had to recompile installation of KDE-4.2 with “kdeprefix” USE flag to be able to downgrade to Amarok-1.4 series. There is also new 2.6.29 Linux kernel, which will, I hope, bring peace into the code of ath9k driver, as well as significant performance improvement.
Since my last post, a lot of stuff happened. One semester ended, quite successfully, and new one has just begun. All courses seem to be very intresting and useful. One of them is named “Seminar”, which should be something like thesis work, but with less time you need to spend on it. It is first thing I’m working on with my new menthor and advisor, Miljenko Mikuc and his assistants Ana Kukec and Marko Zec. They are quite nice people with impressive backgrounds and I’m pleasantly suprised with amount of time and energy they already spent just to decide which area of research would satisfy most of my interests and their needs. Right now, I won’t disclose what the subject matter is, but I’ll just say that it includes (but is not limited to) FreeBSD’s netgraph subsystem and possible implementation of datalink layer protocol. So, I already have my hands on literature and network simulator. So far so good. Weekend after that, a friends of mine and I spended exciting four days in city of Vienna, Austria. We were accommodated in very nice hostel, not too far from city centre.  Rooms were very clean and useful, with plenty of electrical outlets, two LAN ports and WLAN (Internet is not free), shiny bathrooms and so on. Vienna is quite expensive, but with little effort, you can find places where you can eat Japanese, Chinese, Thai, Mexican and Italian food for descent prices. Before the trip, I bought Nokia N78 with WLAN and GPS support, so I’m grateful to all those people who don’t tend to encrypt their wireless networks, giving me chance to read my e-mail. Roaming streets of Vienna was good chance to test N78’s built-in GPS in real-life environment. All I can say that it is amazingly cheap and reliable way to stay on track. As I have plans to take a summer internship, I had to take international exam in english. Certificate should arrive in few days :-).  I just hope to find internship that lasts for just two months, because my vacation doesn’t last any longer. Cyaaz around.
I was always fascinated with Linux kernel and how this asm-C-macro mashup even gets compiled. Much more fascinating is that  moment of enlightenment when you realize that you actually can patch driver that handles your harddisks, if you are able to do so. Anyway, as network programming is area which intrigues me very much, I decided to research what happens in network subsystem of Linux kernel. As complete kernel newbie, I played with exporting sys_call_table and reimplementing syscalls. Even it is not a proper way, but Wile E. Coyote way, it is a lot of fun and gives a great intro into kernel mechanisms. Just do it in virtual environment. Even more cool things I recently discovered are NetFilter hooks which are pretty understandable and easy way to do anything with packets passing to networking subsystem. As PoC and to learn as much as I can, I started to code simple firewall using kernel implementation of connected lists (<linux/list.h>) which is really nice to have when no glibc is there. So, many ideas are appearing these days and I’m thinking off proposing draft for thesis work. Oh yeah, planning new trip to Vienna. Fun fun:-)
Ho Ho Ho. Even it is holidays time, I’m not slacking. So, I wrote my first Linux kernel module, as a part of research in enhanced kernel-based proxying with closed-source apps that doesn’t allow to use proxies. Lots of phun:-) I also manage to design GUI in Matlab (:-), and still I’m fighting with shell scripting in Windows, as part of HMM-based speech recognition project. Also lots of phun. There is a XMLDB-based project, which showed nice progress. I don’t know about eXist or Xindice, but Sedna is really unstable XMLDB and I’m not satisfied with it. This project is just a port project based on Informix ORDB. During that one, I learned a lot of C# and I must admit that it is a hell of language. Slow, but damn powerful. A recently finished project in distributed computing was presented to assistant professors and they asked h4z4rd and me if we could present it at class. As h4z4rd is having a nice time at CCC right  now, I’m having sex with designing presentation and recording desktop movies. ZESOI got two PS3s, so we took one and installed Gentoo Linux on it. It is going to be used for protein docking simulations. It is a quite nice machine. New Year’s trip was cancelled due to lack of funds:-D. Hey, so what, I run my code on Core2Quad now. That’s it for now, see you next year. Happy holidays.
So, as you can see, no blag activity here for more then a month. Let’s resume what happened. Nothing specially:-) My chase on MSc started and first midterms are done. Results? I must say that I am satisfied. Not with all but most of it. Even I mostly skip lessons because they are boring, material we learn is more or less intresting. So, I spent a little fortune on Amazon. I bought Cormen’s Introduction to Algortihms and I must say that book is quite nice to *learn* from, even if pseudocode is like it was found on crashed UFO. There is also Pattern Recognition written by two Greek fellows (Theodoridis and Koutroumbas), Tannenbaum’s and Maarten’s Distributed Systems and Database Systems (Hector Garcia-Molina, Jeffrey D. Ullman, and Jennifer Widom). I also bought some books with vegetarian recepies and some more about yoga and spirituality. I’m happy to see my little home library expanding:-) Oh, I also stumbled upon an old friend from High School on facebook so we went out together. It was a concert named CroReggaeTrip and we got a bit drunk and had a nice time, so I’m now hooked up on Stillness, a local band that played that night. So good to have account on local warez forums:-). There are also plans for New Years Eve in Prague. Roma, Milano and Vienna was considered too, but we voted on mailing list and Prague won. Train and plane tickets are pretty damn expensive, so we are stucked with buses, which are much cheaper, but there is no defined departures yet:-/ We considered renting a van (there is about ten of us), but it is also crappy to drive through 500km of snow after few days (and nights) of crawling such a wonderful city. Even Budapest seems to be cheapest solution, been-there-done-that last year, so no Hungary:-) Will write more about holidays, hopefully with good news:-) Oh, I’m quite excited about Xfce46 and OpenWRT-8.09 (yeah right, it will be nice if it would be called 8.12:-) hitting the streets soon. Happy hacking. Eh, yeah, I forgot to write about developing stuff. Nah, I didn’t forget. My code is compiling:-)
Eh, even I said that I choosed Tomato firmware, I changed my mind and reflashed Linksys with OpenWRT. Configuration was really smooth and everything works well. I must admit that I feel much more comfortable using CLI and editing real files then making changes in web interface. There was no time to make harder tests, but I think I can see nice bandwidth improvment. I also tried X-Wrt (webif) but I didn’t found anything that thrills me or that I can’t do with CLI so I removed it. It is so kewl to have package management inside such a small device. Also, I switched kernel on my laptop from gentoo-sources to tuxonice-sources. The thing is I wanted laptop to autohibernate when battery reaches critical state. Small script found in gentoo documentation did the job. /me likes.
As I am at parents house since friday, I am spending most of my time lying on the bed and watching documentaries. When I’m not slacking off, I’m testing spamassassin’s bayesian classificator learning script which I wrote recently, doing regular administration tasks and play with new Linksys WRT54GL router. After a few days of searching for advices and reading reviews, I finally decided to flash Linksys with Tomato firmware. I also considered installing DD-WRT and OpenWRT. A stock Linksys firmware wasn’t bad for me, but what I wanted is shell on MIPS machine. Someone would say that I could use a simulator, but I think it is like having an intercourse with a rubber doll. So, I didn’t need so many features provided by DD-WRT, which is also reported to freeze (manuall reboot needed in every few days). OpenWRT seemed to be quite nice l33t thingy, but it requires more time then I want to spend. So Tomato satisfied my needs, installation was smooth and everything works like a charm. Just in few hours, nice idea poped-up. Right now, I am building cross compiler for MIPS and I am looking forward to try it out with Linksys. Oh, almost forgot to mention that I managed to build OpenOffice-3.0.0_beta2. For now, it seems to be very nice and even there is no docx suffix in browse filters, it opened one without producing (visible) errors. Cheers