Books I am reading

I got a lot

of new books recently. I’m trying to read:

So far, I have only finished Blink (it was an audiobook, too). I’ve read bits of Beck’s book, and it’s awesome

. I’ve also been flipping through Programming Ruby, which is going okay. I started using ruby to write some scripts for work. I am also 2 chapters in Gelernter’s HtWPP.

Next on my queue is Brad Cox’s OOP book, as well as Transaction Processing by Newcomer.

For fun, I hope to read The Curious Incident of the Dog in the Night-Time, they say it’s great fun. I heard an interview with the author sometime last semester, and got the book before Christmas, I really ought to read it now.

Tomorrow is the last day of Spring Break.

Polyglot

自從 Jeri 從北京回來後,我常常會跟她在電腦上聊天。她的中文在短短的6個月內進步了很多,我們几乎可以不用英文來談話了。看她這樣努力地學中文,對我自己學日文也有了幫助。像Jeri一樣,我每天也會跟我在日本的同事寫日文。慢慢地,我開始可以用日文來表達自己的思想了。每個星期我也會下載一些日本的電視節目,從開始一點都看不懂,到了現在以經看懂一大半了。我希望有一天,我的日文可以像我的英文一樣的流暢。到了那時候,我想我又會在學別的語言了。

Recemment, j’ai commencé d’apprendre un petit peu de coréean en essayant de commencer une conversation avec les filles coréanne en haut. J’ai commencé par télécharger des videos d’instruction sûr l’internet. Il y a en totale 60 leçons, et j’ai déja fait les premieres 5 leçons. Elles ne sont pas très vites, en fait, elle vont un peu lentement avec beaucoup beaucoup de répetitions. Souvent je n’ai pas le patience pour les voir jusqu’à la fin. J’ai déja appris les mots pour s’introduire, et je viens d’apprendre des mots pour les numéros. La pronunciation n’est pas très difficile, mais il y a certains complications. Il n’y auras pas des grandes problèmes, mais pourque je puisse pronouncer les mots proprement, sans doute, je devrai pratiquer souvent.

最近,夜中に全然眠れません。毎朝の4,5時ぐらいにならないと眠れません,今週は春休みだから大丈夫だけど。来週,学校はもう始まりますし,自分の睡眠時間を直せなければ大変だなあ。毎週の月,水,木曜日の朝9時も地学のクラスがあります。僕は起きれなかったから,出席しなかった場合が多かったし,この状況で続けば絶対合格できなさそう。困ってるんですね。

Of all three languages, I’m the least comfortable with Japanese. Hopefully I didn’t make any glaring mistakes. (Later: with the help of Dr. Atsushi, I revised parts of the Japanese section)

Sending Messages

Last week, a lot of things sorta clicked together for me.

My key revelation is: It’s better to send a message asking for something to be done, than to explicitly invoke the functions yourself

.

The first step into reaching conclusion began when I was talking to Miguel on the T after watching Hide and Seek. He told me he’s been reading a bit into the permathread that is SOAP vs. REST. I remembered two things from that conversation, 1) Schema validation is used only at development time, there is no need to schema validate incoming messages in production, and 2) in a REST-like system, the URL pointing to the service is analogous to the monikers used in COM and Bonobo.

The first point provided a nice introduction to last week’s inter-blog discussion about truth in WS.

Which leads to the 2nd point.

Prof. Rasala has been teaching this class on Web Services since last year. When he was preparing for this class last year, I would go to his office every week and do a brain dump of the stuff I know about Web Services. Oftentimes, we will then have a pleasant discussion about what the XML Web Services vision is and how it works, etc.

Unlike me, Prof. Rasala first learned to use the XML Serialization before learning any of the APIs from System.Xml. While I shared the same enthusiasm when I first learned how to use XmlSerializer (Miguel will attest to that), I soon learned that XML Serialization has its limitations and eventually settled down on using XPath as my favorite way of traversal XML documents. I got especially keen on XPath once I realized that XPath can be implemented on top of different storage mechanisms. Since then, I’ve been trying to convert Prof. Rasala to the XPath camp. I think I succeeded last week.

Similar to how monikers condenses a set of method calls into a single string, XPath does a similar thing with XML infosets. In the contest of Web Services, while everything already works in this fashion, using URL+query strings is a lot more economical and copy-n-pasteable than blobs of XML in a SOAP envelope with various WS-Addressing headers. The last is basically what Miguel pointed out on the T.

Most of this maps pretty close to how Smalltalk works already, but after reading Don’s entry on Indigo, I’m curious to see if there’s an extensibility mechanism (other than the wonder doesNotUnderstand:

) which will allow me to have direct control over the mapping of selectors to methods. In Indigo-speak, I’m searching for the equivalent to:

        void ProcessMessage (Message m);

An Update from Me

Haven’t been writing for quite a while. I just upgraded my installation of WordPress to the new and spiffy 1.5, so I figured I should write an update.

I have been pretty busy at school lately. On top of normal school stuff , tutoring (and grading) CSU 213, I’ve been also teaching my twice a week class on XML. I also did a guest appearance in Prof. Lorenz’s Object-Oriented Design class last week, so that got me to download a new Squeak image and brush up my Smalltalkin’

skills.

On the Mono front, I plan on tackling Bug 63360 this weekend (hopefully), after talking to Carl (at XDevConf) and Prof. Rasala from school. It will also be nice to finish up the work on 68711 that has been lingering since Christmas as well.

I had dinner with Anthony last night at my favorite Thai place in Coolidge Corner , it’s good to see him. I wish him good luck in SoCal.

The week before Thanksgiving

Two weekends ago, I started porting BitTorrent to .NET using Azureus as a guide with my friend Pete. We got the different message types mostly sorted out and started working on the BEncoder. The hacking came to a halt when I found out that Pete is going LISA for a week. Now that LISA is over and Pete is back in Boston, hopefully we’ll be able to get some more done before the Thanksgiving holiday.

Last week I decided to buy my first desktop computer, because I’m sick of endlessly shuffling files around to come up with some free disk space. With my iPod half full, the My Music

directory on the Windows laptop filled up a third of the Windows laptop’s disk immediately. After hearing from Miguel about how nice it is to have a file server at home, I decided to get in the game as well.

I have no idea how Dell stays in business, well actually, how others can compete with Dell. I spent $600 last week and I’ll be getting a P4 desktop with a 17" LCD screen delivered this week. When computers are this cheap (the low-end models start from $350 or so), companies like TiVo and others selling specialty hardware will have to work extra hard to compete.

A little secret: the key to getting a good deal at dell.com is to keep track of techbargains.com. Just keep track of when the sales start and end, clip a few coupons, and suddenly, everything is much cheaper.

I updated my blog’s to use the awesome Kubrick theme. I’d like to customize it a bit, and will probably start with making my own banner instead of using the default blue.

After seeing how well the blogspot editor works, I also got htmlarea working in my WordPress post interface. It sure is pretty, but it’s not working as well as the one offered by blogspot.

More Node Loving

This morning, Mike came up with a plan to restructure the NodeSelection / NodeView work I did awhile ago and I spent the early afternoon implementing it. The patch is now attached on bug 69288.

We still have this ongoing issue, though — as Peter pointed out in 50975 a year ago (!), Gtk.NodeStore should implement Gtk.TreeModel (69287).

Mike has been working hard preparing the upgrade to 2.4 bindings. There will probably be a devel release of the Gtk# later today. The NodeSelection / NodeView patch will not make it into today’s release, but I’ll commit it to CVS immediately after the release is out.

The patch will probably need some more loving, particularly the bit that handles the CellRenderer attributes (see TreeNodeValueAttribute.cs). I’m also looking forward to some API review, I think there are definitely some bits that could be better polished.

On another note, my order of new trackpoint caps arrived this morning (Mr. UPS woke me up at 8). Now I’m using the new “soft dome cap” on both my X24 and X31. The new style cap is so much better than the old style.

After reading Don’s blog on Media Center 2005, I went ahead and installed the new Royale / Energy Blue theme on my XP laptop. More and more, I can’t tell my NLD laptop apart from my Windows laptop.

My moment of fame (for 0.5 sec): On the NLD announcement page, if you click on the Gaim Icon (in yellow) and pay attention to the content of the Buddy List, you’ll find me there.

Maps

As a foreign student who have lived in the US for the past 7 years, 3 under Clinton and the past 4 under Bush, I’m finding this country growing less welcoming and less appealing.

Four years ago, as I was about to start college, I remember thinking to myself, “life has been pretty good in the past 4 years, I can see myself becoming an American.”

. Ever since the Patriot Act was proposed, I have been feeling less and less inclined to “becoming American”

.

From this map produced by USA Today, it looks like the America that I loved is rapidly shrinking.

One thing that I find repulsive is the self-righteousness from many people on the Right. More than ever, I find the frequent pronouncements of “America is still the greatest nation on earth” to be arrogant, ignorant and illusional.

Maybe there is hope, that it is not only about Red states and Blue states, the Left and the Right, as Jon Stewart so poignantly said on Crossfire. Maybe we should look at this as different shades of purple:

.

Here is a page with links to more maps of the 2004 election.

This just in: Greg Palast says Kerry won.

New

: Interactive map from the New York Times.

*

On a more Mono-related note, we made 2 releases on Election Day, 1.0.4 and 1.1.2. However, the pages to the packages and installers didn’t get updated until Wednesday afternoon. Hopefully it’s all sorted now.

Election Day

I tried to install a Wiki this afternoon, for organizing the work I’m doing for Professor Lorenz. I tried PhpWiki, MoinMoin and PmWiki.

In the end, I chose PmWiki, cuz it’s so much easier to install than the others. The rest of them are a mess.

There was a scare just now. All my entries disappeared. I thought I had messed up the MySQL database and lost all my entries. I was just about to start re-importing the old entries from LiveJournal, but I popped into #wordpress and asked for some help. Turns out it was a simple cookie/cache problem. Whew!

Here’s a link to My Wiki.

Comments work again

It was very nice to receive a Thank-you note from Ecmel Ercan from Turkey. He told me that comments were broken, but I have just fixed it.

I watched Game 4 last night at a friend’s house down the street. It was amazing! At the moment when Foulke handed the ball to Mientkiewicz for the 3rd out in the 9th inning, the room just went silent. At that moment, no one understood that the Red Sox just won the World Series. And then we cheered, and jumped up and down!

As Tim wrote on his blog (we live on the same street), even though there wasn’t a lot of people walking about during the game and the streets were quiet, the atmosphere in Fenway was buzzing with excitement last night.

I’m wearing my Manny Ramirez (MVP!) t-shirt all day today.

Gtk.NodeSelection

Since Mono entered the 1.0 beta cycle in early June, I haven’t really been writing code. Throughout the whole summer, I spent most of my time thinking about doing releases and packaging for Mono instead.

Since Mike was here last week, I figured I ought to work on improving the NodeStore stuff. I started thinking about it Thurdsay afternoon, and after a few false starts (and some embarrasing bugs), I got it working on Friday night after dinner.

Here’s the patch.

Mike is in the middle of preparing the Gtk# tree to move to the latest version of Gtk, but this should get merged when he’s done with that.

With this patch, you can now do something like this:

void OnButtonClicked (object o, EventArgs a)
{
	NodeSelection selection = view.Selection;
	foreach (ITreeNode node in selection.SelectedNodes)
	Console.WriteLine (node.ID);
}

The selection methods in NodeSelection all support ITreeNode, that means you can kiss Gtk.TreeIter goodbye!