<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>libcoffee.net</title>
    <link>http://www.libcoffee.net</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>:: Just another Typo weblog ::</description>
    <item>
      <title>Thesis code completed</title>
      <description>&lt;p&gt;... Or so I hope?! Squashed a ton of bugs, stabilized &lt;span class="caps"&gt;API&lt;/span&gt; being used haphazardly between the RrdTool and Simulation sinks, sort of prettified Weathermap a bit more. Now I&amp;#8217;m just left with churning out the rest of the thesis and getting it onto the &lt;span class="caps"&gt;NICTA&lt;/span&gt; testbed&amp;#8230;&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;aesir:~/Projects/meshmon$ svn commit
svn commit:
Sending        html/index.html
Adding         html/overlib.js
Sending        html/weathermap.html
Sending        icons/Safemesh1.png
Sending        src/aodv.py
Sending        src/config.py
Sending        src/gatherers/rrdsink.py
Sending        src/gatherers/simulatesink.py
Sending        src/meshmon.py
Sending        src/nodes.py
Sending        src/plugins/RrdTool.py
Sending        src/plugins/Simulation.py
Sending        src/rendering/rrd.py
Sending        src/rendering/weathermap.py
Sending        src/threads.py
Sending        src/topology.py
Sending        src/webserver.py
Adding         src/wifi.py
Sending        weathermap/Weathermap.class.php
Sending        weathermap/weathermap
Sending        weathermap.conf.template
Transmitting file data .....................
Committed revision 61.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Sat, 27 Oct 2007 03:44:22 +1000</pubDate>
      <guid isPermaLink="false">urn:uuid:0092449c-b2cc-40f8-9a72-c2d6234b6367</guid>
      <author>zanglang@gmail.com (Jerry)</author>
      <link>http://www.libcoffee.net/articles/2007/10/27/thesis-code-completed</link>
      <category>University</category>
      <category>Code</category>
    </item>
    <item>
      <title>End of semester anxiety</title>
      <description>&lt;p&gt;Simplest way to describe my thoughts on not so far off future: .... (mind-numbing coding)  !!#$%#@ (thesis is due) ???? (Future? What future?)&lt;/p&gt;


	&lt;p&gt;The advanced security project and report is due on Friday. The report shouldn&amp;#8217;t be that big a problem as the minimum word count is just 5000 words / 20 pages. spent an unproductive day poking around with PyGTK, got a basic &lt;span class="caps"&gt;GUI&lt;/span&gt; up and running with Glade and Python, wired together some signals, and still need to test them in Scratchbox. Left the labs half way while trying to implement the Kismet core, which hopefully I can finish by tomorrow. Afterwards need to work on &lt;span class="caps"&gt;GPS&lt;/span&gt; tracking and some minimum Bluetooth scanning&amp;#8230; Guh, it&amp;#8217;s scary. Thesis? Let&amp;#8217;s not even go there. &lt;span class="caps"&gt;NICTA&lt;/span&gt; is probably getting ready to outsource the project to prospective summer scholarship students. :P&lt;/p&gt;


	&lt;p&gt;At least life has been mostly uneventful. A moment of Zen = figuring out how to compose a beautiful lambda construct in Python, while nibbling on a salty pretzel.&lt;/p&gt;</description>
      <pubDate>Sun, 14 Oct 2007 23:58:15 +1000</pubDate>
      <guid isPermaLink="false">urn:uuid:c02a0fc8-836c-4876-ae98-d7fa73b8fbe5</guid>
      <author>zanglang@gmail.com (Jerry)</author>
      <link>http://www.libcoffee.net/articles/2007/10/14/end-of-semester-anxiety</link>
      <category>Rants</category>
    </item>
    <item>
      <title>Rails refreshed</title>
      <description>&lt;p&gt;I&amp;#8217;ve noticed that my &lt;a href="http://www.typosphere.org/"&gt;Typo&lt;/a&gt; blog has been slowing to a crawl these days, simply publishing a post or changing sidebar settings for the template took almost forever; Kexin noticed it when he was testing out comments too. A quick investigation turned out Typo has been hoarding a &lt;strong&gt;huge&lt;/strong&gt; (and I mean almost a gigabyte &lt;em&gt;huge&lt;/em&gt;) cache of every single &lt;span class="caps"&gt;GET&lt;/span&gt;/POST to the site, with 99.9% being things like this: (URLs censored to protect the guilty)&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;/var/www/typo/tmp/cache/META/META/ACTION_PARAM/
www.libcoffee.net/articles/permalink/blog_name=some_random_drug&amp;amp;day=27
&amp;amp;excerpt=http./www.xyz.com/pharmacy_stuff
/var/www/typo/tmp/cache/META/META/ACTION_PARAM/
www.libcoffee.net/articles/permalink/blog_name=another_random_drug&amp;amp;day=27
&amp;amp;excerpt=http./www.xyz.com/drugs_and_more_drugs&amp;amp;month=06
&amp;amp;title=untitled#trackbacks
...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Repeated ad naseum for Viagra, kitchen floor tiles and various unspeakables&amp;#8230; no wonder Typo seemed so slow. Anyway, a quick purge of /tmp/cache seems to do the trick. Rails is fast now! (Sort of.) :P&lt;/p&gt;</description>
      <pubDate>Sat, 13 Oct 2007 14:00:39 +1000</pubDate>
      <guid isPermaLink="false">urn:uuid:7bfdf7b8-d6a2-47bf-a18f-f14daa48abfc</guid>
      <author>zanglang@gmail.com (Jerry)</author>
      <link>http://www.libcoffee.net/articles/2007/10/13/rails-refreshed</link>
      <category>Rants</category>
    </item>
    <item>
      <title>GPS on Maemo</title>
      <description>&lt;p&gt;Received my &lt;a href="http://www.mobileplanet.com/d.aspx?i=154975"&gt;Holux M-1000B&lt;/a&gt; Bluetooth &lt;span class="caps"&gt;GPS&lt;/span&gt; module on Friday, and have been playing around over the weekend. I bought it on an eBay store for &lt;span class="caps"&gt;AUD&lt;/span&gt;$80 last week, took some time for it to get here but it was pretty well worth the wait! Turned it on after a good recharge and brief look at the user manual (only a few relevant pages in the manual, the rest of the documentation is in &lt;span class="caps"&gt;PDF&lt;/span&gt; form on the driver CD), and fiddled with &lt;a href="http://www.google.com.au/url?sa=t&amp;#38;ct=res&amp;#38;cd=2&amp;#38;url=https%3A%2F%2Fgarage.maemo.org%2Fprojects%2Fmaemo-mapper%2F&amp;#38;ei=_IH_RvnXKp_ogwPLuriFDg&amp;#38;usg=AFQjCNH4YHVu7nw0-ZukHzTirV1_bWcrtA&amp;#38;sig2=hUwJ8InM8YH0B8ojO1wC9w"&gt;Maemo Mapper&lt;/a&gt; to use it for positioning.&lt;/p&gt;


	&lt;p&gt;After pairing the &lt;span class="caps"&gt;N800&lt;/span&gt; with the &lt;span class="caps"&gt;GPS&lt;/span&gt; module it took a while to locate enough available satellites and confirm the current coordinates:&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://picasaweb.google.com/zanglang/Random/photo#5115956035255226322"&gt;&lt;img src="http://lh3.google.com/zanglang/Rv-G6JfnT9I/AAAAAAAAAEE/DzyHrwIrNuo/s400/maemo_mapper1.png" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;/p&gt;


	&lt;p&gt;Using &lt;a href="http://www.microsoft.com/virtualearth/"&gt;Microsoft&amp;#8217;s Virtual Earth&lt;/a&gt; hybrid maps (Google Maps and &lt;a href="http://www.openstreetmap.org"&gt;OpenStreet&lt;/a&gt; is available as well) and leaving the &lt;span class="caps"&gt;GPS&lt;/span&gt; running while on Chad&amp;#8217;s car (we were leaving the labs and I was hitching a ride home) plotted this route (red lines) on Mapper:&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://picasaweb.google.com/zanglang/Random/photo#5115956039550193634"&gt;&lt;img src="http://lh4.google.com/zanglang/Rv-G6ZfnT-I/AAAAAAAAAEM/yYQCTMpYZ04/s400/maemo_mapper2.png" /&gt;&lt;/a&gt;&lt;br/&gt;&lt;/p&gt;


	&lt;p&gt;The positioning isn&amp;#8217;t entirely accurate though &amp;#8211; when left on my table for some time, as you can see the coordinates start jumping all over the place. Probably due to weather and satellite communication strength, or by the fact that using it indoors affects the line of sight. The green lines were from me searching a route from my house to the Brisbane &lt;span class="caps"&gt;CBD&lt;/span&gt;, which is another feature I haven&amp;#8217;t played with much, but one I can foresee will be insanely useful when I&amp;#8217;m heading down to Melbourne in December.&lt;/p&gt;


	&lt;p&gt;Also tried setting up &lt;a href="http://geoclue.garage.maemo.org/"&gt;Geoclue&lt;/a&gt;, a geographical information framework, and osso-gpsd. Geoclue sits on the Maemo status bar, and there&amp;#8217;s a number of backend servers from which context data can be collected (See &lt;a href="http://vilunki.wordpress.com/2007/08/12/wrapping-up/"&gt;screenshot&lt;/a&gt;). Unfortunately it doesn&amp;#8217;t feel quite finished yet&amp;#8230; Plazes.com is a hassle to set up, Hostip doesn&amp;#8217;t provide quite enough information, and the GPSd backend took some hacking to get working. GPSd refused to run at first, and I had to dig around for some &lt;a href="http://maemo.org/community/wiki/bluetoothgps/"&gt;documentation&lt;/a&gt; on &lt;span class="caps"&gt;GPS&lt;/span&gt;/Bluetooth support on the &lt;span class="caps"&gt;N800&lt;/span&gt;. After playing around with the &amp;#8220;rfcomm&amp;#8221; commands, I made some changes to libgpsbt to recognize my Holux (it does a string comparison against a &lt;em&gt;hard-coded&lt;/em&gt; list of Bluetooth device names&amp;#8230; horrors!), and then get it to run as normal user. Once I got that out of the way, &lt;a href="http://pymaemo.garage.maemo.org/documentation/python_gps_examples/index.html"&gt;python-gpsbt&lt;/a&gt; worked beautifully! I&amp;#8217;m already chalking up plans for some future projects after this semester ends&amp;#8230; but that&amp;#8217;ll be a different story. :)&lt;/p&gt;


	&lt;p&gt;Overall, &lt;span class="caps"&gt;GPS&lt;/span&gt; on the &lt;span class="caps"&gt;N800&lt;/span&gt; is pretty good, although lack of maturity is still leaving much to be desired. If &lt;a href="http://arstechnica.com/journals/hardware.ars/2007/09/27/wimax-gps-coming-to-nokias-internet-tablets-in-2008"&gt;the tablet&amp;#8217;s next successor is really integrated with &lt;span class="caps"&gt;GPS&lt;/span&gt;&lt;/a&gt; as the &lt;span class="caps"&gt;FCC&lt;/span&gt; filings show, geographical/context-aware software could really be Nokia&amp;#8217;s killer app. Here&amp;#8217;s to hoping!&lt;/p&gt;</description>
      <pubDate>Sun, 30 Sep 2007 22:12:38 +1000</pubDate>
      <guid isPermaLink="false">urn:uuid:40c500a0-792d-4c7d-b384-ed5ed6f6bb9b</guid>
      <author>zanglang@gmail.com (Jerry)</author>
      <link>http://www.libcoffee.net/articles/2007/09/30/gps-on-maemo</link>
      <category>Technology</category>
    </item>
    <item>
      <title>Lucky&#9734;Star</title>
      <description>&lt;p&gt;Thus ends &lt;a href="http://en.wikipedia.org/wiki/Lucky_Star_(manga)"&gt;&#12425;&#12365;&#9734;&#12377;&#12383;&lt;/a&gt; Season 1. :( Where am I going to entertain myself with Konata&amp;#39;s antics for the coming weeks?!  The ending does wrap up the whole series quite nicely, although like others point out on SomethingAwful, the full OP sequence now looks low-budget compared to Hare Hare. I&amp;#39;ll be expecting badly choreographed &lt;a href="http://www.youtube.com/watch?v=okeq0uuldy0"&gt;Akihabara flashmob dances on Youtube&lt;/a&gt; anytime soon. (Or 3&amp;#8230; 2&amp;#8230; 1&amp;#8230;) &lt;a href="http://en.wikipedia.org/wiki/List_of_Lucky_Star_characters#Schoolmates"&gt;Yutaka and the others&lt;/a&gt; did come in a little too late in the series, I can never get used to Patricia&amp;#39;s weird high-pitch voice. Also, demanding more Tamura! :/&lt;/p&gt;


	&lt;p&gt;As a sidenote, kawaii Konata and Kagami models!&lt;/p&gt;


	&lt;p&gt;&#65288;&#65310;&amp;forall;&#65308;&#65289;b!!!!!&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://www.lucky-ch.com/info/img/nendo_konataAup.jpg" /&gt; &lt;img src="http://www.lucky-ch.com/info/img/nendo_konataA.jpg" /&gt;&lt;/p&gt;


	&lt;p&gt;Kagamin can be pretty cute when she&amp;#39;s not angry. ^^;&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://www.lucky-ch.com/info/img/nendo_kagamiAup.jpg" /&gt; &lt;img src="http://www.lucky-ch.com/info/img/nendo_kagami.jpg" /&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 20 Sep 2007 00:07:00 +1000</pubDate>
      <guid isPermaLink="false">urn:uuid:92e96532-b457-49a1-8522-3fe70d9910fe</guid>
      <author>zanglang@gmail.com (Jerry)</author>
      <link>http://www.libcoffee.net/articles/2007/09/20/lucky%E2%98%86star</link>
      <category>Otaku</category>
    </item>
    <item>
      <title>Backlog September '07</title>
      <description>&lt;p&gt;Long time no blog. :P&lt;/p&gt;


	&lt;p&gt;Just did my &lt;span class="caps"&gt;COMS4507&lt;/span&gt; Advanced Security seminar today, titled &amp;#8220;OpenID 2.0: A Platform for User-Centric Identity Management&amp;#8221;, which can be downloaded &lt;a href="http://docs.google.com/Present?docid=dvz24kr_5vq3289&amp;#38;fs=true"&gt;here on Google Docs&lt;/a&gt;.&lt;/p&gt;


&lt;center&gt;&lt;a href="http://docs.google.com/Present?docid=dvz24kr_5vq3289&amp;#38;fs=true"&gt;&lt;img src="http://lh5.google.com/zanglang/RvEdk3lASHI/AAAAAAAAADg/7Eh2iqVg0UI/s400/OpenID.png" border="1px" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br/&gt;

	&lt;p&gt;It was intended to be a critique of &lt;a href="http://portal.acm.org/citation.cfm?id=1179529.1179532"&gt;this paper&lt;/a&gt;, but in the end I&amp;#8217;ve placed more focus on introducing OpenID in general and then shifting into a critical discussion on digital identity management issues on the Web&amp;#8230; sometime between 1am and 7am while I was hacking away on the slides trying to get it done last minute. Yes, I know, bad habit. :P All in all, turned out decent. Went overtime by 11 minutes (Marius thought it was still okay), and I think I may have explained too little on the actual authentication process. Still needs work on untangling tongues while talking. Marius thought it was a 80-90% , for sure. Woot. :)&lt;/p&gt;


	&lt;p&gt;Spending much more time (than I should) on my &lt;a href="http://europe.nokia.com/n800"&gt;Nokia &lt;span class="caps"&gt;N800&lt;/span&gt;&lt;/a&gt; tablet, which I decided to finally splunk down the moolah for last month (A$660 exclusive of shipping, over eBay.com.au from Hong Kong), and which awesomeness cannot be simply defined by words alone. :) I really should have written a deep down and personal review of the tablet when I first got it, but my lack of blogging habits got to me first. Perhaps sometime, soon, soon. Anyway, the hackability of this slim little device is really promising. Maemo still has its rough edges, and unlike Ubuntu, still has a huge number of usages that are quite &lt;em&gt;literally begging&lt;/em&gt; to be implemented&amp;#8230; but the project really suffers from a lack of an active developer community like common Linux distributions. A &lt;a href="http://www.youtube.com/watch?v=IALqu7EKUTw"&gt;sneak peak into the upcoming Intel Midinux&lt;/a&gt; just has me idea factories churnin&amp;#8217;... When hasn&amp;#8217;t anyone thought of implementing gestures on Maemo yet??!&lt;/p&gt;


	&lt;p&gt;Meanwhile, still trying to get a bit more of the &lt;a href="http://telepathy.freedesktop.org/wiki/"&gt;Telepathy stack&lt;/a&gt; onto Maemo, and I&amp;#8217;m hoping to perhaps work on a port of Empathy, Tapioca or Colligo. Turns out the Glib library ported fine with minimal changes, but still having problems cross-compiling telepathy-salut / Bonjour on Scratchbox. I should pop on #maemo and ask the experts about it sometime.&lt;/p&gt;


&lt;center&gt;&lt;a href="http://picasaweb.google.com/zanglang/Random/photo#5111902659355363474"&gt;&lt;img src="http://lh4.google.com/zanglang/RvEgYnlASJI/AAAAAAAAAD0/WRyiVRVpYuA/s400/IMG_0379.JPG" /&gt;&lt;/a&gt;&lt;br/&gt;
&lt;strong&gt;The 3 loves of my (current) life &amp;#8211; My mom is going to be disappointed that this sample does not yet include a live human of the female gender. :P&lt;/strong&gt;&lt;/center&gt;&lt;br/&gt;

	&lt;p&gt;Kexin is having his interview on Friday, and it turned out his interviewed would be no one else but &lt;a href="http://live.gnome.org/NigelTao"&gt;Nigel Tao&lt;/a&gt;?! What an insanely small (open-source) world we live in! :P After exchanging much exclamation marks, we decided the best plan is just to focus on his enthusiasm on &lt;span class="caps"&gt;GNOME&lt;/span&gt;, and if possible, his very short one-day experience on &lt;a href="http://raphael.slinckx.net/deskbar/"&gt;Deskbar&lt;/a&gt;... Possible? The odds are rapidly growing. G&amp;#8217;luck, anyway. :)&lt;/p&gt;


	&lt;p&gt;Tutoring is going well, and I&amp;#8217;ve decided that actually being appointed for both courses which I&amp;#8217;ve applied in the first place is quite definitely the best accidental choice I&amp;#8217;ve made in my university years. Am currently thinking of continuing to tutor for another semester after my graduation, just so I can see the &lt;span class="caps"&gt;CSSE3005&lt;/span&gt; guys pull through. May I dare wish for another Tutor Award again this time?&lt;/p&gt;


	&lt;p&gt;Anyway, mid-semester break coming up soon. Will be working on thesis full-time, with Advanced Security project on sidelines (&amp;#8216;wireless penetration testing toolkit&amp;#8217; on Maemo). Much work to be done. Sigh, the life of a soon-to-graduate honours student.&lt;/p&gt;</description>
      <pubDate>Wed, 19 Sep 2007 23:16:21 +1000</pubDate>
      <guid isPermaLink="false">urn:uuid:1efd1b20-aebc-4298-a6ea-e18701d50916</guid>
      <author>zanglang@gmail.com (Jerry)</author>
      <link>http://www.libcoffee.net/articles/2007/09/19/backlog-september-07</link>
      <category>Linux</category>
      <category>University</category>
      <category>Rants</category>
      <category>Technology</category>
    </item>
    <item>
      <title>Craving for japanese food</title>
      <description>&lt;p&gt;Ahh&amp;#8230; for some reason or other, suddenly having an intense craving for a good &amp;#8216;&lt;a href="http://en.wikipedia.org/wiki/Donburi"&gt;donburi&lt;/a&gt;&amp;#8217; while reading Genshiken&amp;#8230;&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://upload.wikimedia.org/wikipedia/ja/0/01/Katsudon2.jpg" height=300 width=300 alt="Katsudon" /&gt;&lt;/p&gt;


	&lt;p&gt;/sudden manga-character-like motion with gleaming star in eyes/ That&amp;#8217;s settles it! Pork chop donburi (&lt;i&gt;katsudon&lt;/i&gt;) for tomorrow&amp;#8217;s dinner! :D&lt;/p&gt;</description>
      <pubDate>Thu, 05 Jul 2007 00:47:51 +1000</pubDate>
      <guid isPermaLink="false">urn:uuid:1461bed8-be16-4e51-9c37-a80be433dbaa</guid>
      <author>zanglang@gmail.com (Jerry)</author>
      <link>http://www.libcoffee.net/articles/2007/07/05/craving-for-japanese-food</link>
      <category>Rants</category>
    </item>
    <item>
      <title>Three Things I Learned about Software in University</title>
      <description>&lt;p&gt;Spotted &lt;a href="http://www.hanselman.com/blog/ThreeThingsILearnedAboutSoftwareWHILENOTInCollege.aspx"&gt;this&lt;/a&gt; on &lt;a href="http://programming.reddit.com"&gt;Reddit&lt;/a&gt; (many insightful and funny comments I&amp;#8217;d relate to), so I thought I&amp;#8217;ll hop in and make up a list. :) Not officially graduated yet, and don&amp;#8217;t have enough experience in work or hobby programming to make up a &amp;#8220;While not in college&amp;#8221; list, so here&amp;#8217;s my take on just the three things I learned about software in university:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;On programming: Code flows out better at the time period between 3am and 7am in the morning. Bugs are solved better at the time period between 8am and 12am in the morning (after a good nap and caffeine beverage).&lt;/li&gt;
		&lt;li&gt;On code quality: Time and effort spent notwithstanding, there is always  &lt;em&gt;A Bug&lt;/em&gt; in the code. There are no exceptions, period. (Or more commonly put, &amp;#8220;Bugs are a fact of life.&amp;#8221;)&lt;/li&gt;
		&lt;li&gt;On peers: As a twist on the old joke &amp;#8211; there are 10 types of people in the IT faculty. Those who &amp;#8220;get it&amp;#8221;, and those who don&amp;#8217;t. And never will, or simply do not care enough to do so. Way over-quoted, but really very bluntly mirrors the kind of people you meet.&lt;/li&gt;
	&lt;/ul&gt;</description>
      <pubDate>Sat, 30 Jun 2007 00:56:00 +1000</pubDate>
      <guid isPermaLink="false">urn:uuid:2aed8945-e75a-4ea5-9aeb-20ac688326f3</guid>
      <author>zanglang@gmail.com (Jerry)</author>
      <link>http://www.libcoffee.net/articles/2007/06/30/three-things-i-learned-about-software-in-university</link>
      <category>University</category>
      <category>Rants</category>
      <category>Technology</category>
    </item>
    <item>
      <title>Random thoughts on Comet</title>
      <description>&lt;p&gt;Went down to Gold Coast with Chad and Zee today to see a client &amp;#8211; a car sales agency, as a matter of fact. Young, chinese guy, smartly dressed. He had some pretty clear, not exactly in depth, but straight to the point requirements: See this (future rival) car auction website here, with its real-time bidding features? Now, build me one. In &lt;span class="caps"&gt;PHP&lt;/span&gt;, chop chop.&lt;/p&gt;


	&lt;p&gt;Ok, I kid&amp;#8230; not quite the exact words, but you get the gist. Logically, I should comment on said rival website a bit. It boasts a pretty sound design: access the bidding page, and it loads a Java applet seamlessly, draws a simple textbox and a Big Red Button (&amp;#8216;Bid&amp;#8217;), rotating carousel of car photos, and generic auction details. Bids show up in textbox while they occur, it is linked to offline auctioning as well, and you click on the Big Red Button to add $200 to current going price. I&amp;#8217;m guessing notifications are done either with sockets or dispatching &lt;span class="caps"&gt;HTTP&lt;/span&gt; calls, but judging by the speed of activity updates at times I&amp;#8217;m betting sockets. I forgot to check what language the server would be on. I&amp;#8217;m guessing &lt;span class="caps"&gt;PHP&lt;/span&gt;. So, let&amp;#8217;s reverse figure out the design:&lt;/p&gt;


	&lt;p&gt;Applet (on the client&amp;#8217;s Java VM) creates socket, server maintains an in-memory collections of connected (&amp;#8216;subscribed&amp;#8217;) clients, sends data stream down socket, applet read()&amp;#8217;s, updates.&lt;/p&gt;


	&lt;p&gt;Not too complicated, but in the age of APIs, Rails-killer frameworks and Web-2.0-ness, perhaps dwelling a little too low-level on the client side. Still understandable, I suppose even though everyone thinks applet&amp;#8217;s are &lt;em&gt;sooo 1995&lt;/em&gt;, there&amp;#8217;s still a certain supply and demand chain of Web 1.0 developers going on. Second mistake: no mention that the page uses Java &amp;#8211; the client casually but specifically mentions the fact that he ingeniously figured out it needed the &lt;span class="caps"&gt;JVM&lt;/span&gt;. That&amp;#8217;s one point off portability, and another off usability &amp;#8211; and no, while Java is inherently cross-platform, the browser plugins are horrible on lower-end machines. Why else did the applets trend blow over and people migrate to Web Start? (See &lt;a href="http://en.wikipedia.org/wiki/Java_applet#Disadvantages_of_applets"&gt;Wikipedia&amp;#8217;s take&lt;/a&gt;)&lt;/p&gt;


Now this is where &lt;a href="http://en.wikipedia.org/wiki/Comet_(programming)"&gt;Comet (wiki)&lt;/a&gt; seems to fit perfectly. So it was quoth:
&lt;blockquote&gt;Comet is a programming technique that enables web servers to send data to the client without having any need for the client to request it. It allows creation of event-driven web applications which are hosted in the browser.&lt;/blockquote&gt;
To explain further, instead of the &amp;#8220;pull&amp;#8221; paradigm in traditional &lt;span class="caps"&gt;HTTP&lt;/span&gt; apps where you query the server for a response, the server keeps clients updated by somehow &amp;#8220;push&amp;#8221;ing notifications of events to clients. (Some wavy hand motions through the air usually help to speed up comprehension.) Think &lt;a href="http://www.meebo.com"&gt;Meebo&lt;/a&gt; and chat on Gmail. Recommended reading: &lt;a href="http://en.wikipedia.org/wiki/HTTP_streaming"&gt;&lt;span class="caps"&gt;HTTP&lt;/span&gt; streaming&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Push_technology"&gt;push technology&lt;/a&gt;. Ok, perfect. Now implementing is the hard part, because simply reading a bunch of articles on Ajaxian last year doesn&amp;#8217;t count, so some research is in place&amp;#8230;

	&lt;p&gt;To tally current implementations,&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Wikipedia &lt;a href="http://en.wikipedia.org/wiki/Comet_(programming)#Implementations"&gt;lists several&lt;/a&gt; commercial and non-commercial Comet engines. There is the open source Cometd, and a number of articles that cover &lt;a href="http://www.phpclasses.org/blog/post/58-Responsive-AJAX-applications-with-COMET.html"&gt;the iframe/javascript method&lt;/a&gt;.&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://dojotoolkit.org"&gt;Dojo&lt;/a&gt; seems to be the prominent Javascript library for Comet, but I suppose basic Javascript + any Ajax library would do.&lt;/li&gt;
		&lt;li&gt;One notification-based implementation is in &lt;span class="caps"&gt;PHP&lt;/span&gt;, but it really just is a socket-server-client prototype.&lt;/li&gt;
		&lt;li&gt;Most immediately-available (?) engines either directly implement the server (as a &lt;span class="caps"&gt;HTTP&lt;/span&gt; daemon or middleware app &amp;#8211; I spot &lt;span class="caps"&gt;ICE&lt;/span&gt;!) itself, use &lt;span class="caps"&gt;J2EE&lt;/span&gt;, or a second medium for managing communications (e.g. Flash).&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Now, the problems,&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;The client insists on &lt;span class="caps"&gt;PHP&lt;/span&gt; (which, none of the three of us have mastered).&lt;/li&gt;
		&lt;li&gt;I believe he uses shared hosting, on Apache.&lt;/li&gt;
		&lt;li&gt;Note that there doesn&amp;#8217;t seem to be any directly pluggable libraries like the &lt;span class="caps"&gt;J2EE&lt;/span&gt; WARs to support &lt;a href="http://alex.dojotoolkit.org/?p=572"&gt;Bayeux&lt;/a&gt;...&lt;/li&gt;
		&lt;li&gt;And since installing custom Apache modules to extend and implement efficient streaming is likely out of the question&amp;#8230;&lt;/li&gt;
		&lt;li&gt;And Comet may require certain implementation shifts on the server side to work properly (e.g. not closing &lt;span class="caps"&gt;HTTP&lt;/span&gt; sockets prematurely)...&lt;/li&gt;
		&lt;li&gt;And from the Cometd mailing lists and other Googled sites, Apache (or at least, the fork version; I&amp;#8217;m not sure if this is what his hoster uses) seems to be notoriously bad in terms of scaling. Keeping 1000&amp;#8217;s of persistant connections open = need high efficiency.&lt;/li&gt;
		&lt;li&gt;And finally, though it&amp;#8217;s none of my business, I do worry about his quota and server hoster&amp;#8230; Don&amp;#8217;t they used to ban high-traffic generating software like &lt;span class="caps"&gt;CGI&lt;/span&gt; chat?&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Hmm, &lt;em&gt;dai pinch&lt;/em&gt;? Quick ideas,&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Scrap Comet. Poll server with Ajax calls every x seconds (where x is between 0.1 and 1).&lt;/li&gt;
		&lt;li&gt;Scrap performance. Just use the iframe/javascript method, and explicitly tell the client not to leave their browser for prolonged periods.&lt;/li&gt;
		&lt;li&gt;Scrap high-level stuff. Implement &lt;span class="caps"&gt;PHP&lt;/span&gt; sockets with &lt;span class="caps"&gt;PEAR&lt;/span&gt; library, and optionally use Java on client-side. Unlikely to work on shared hosting, isn&amp;#8217;t it?&lt;/li&gt;
		&lt;li&gt;We haven&amp;#8217;t asked for more in-depth details. Ask if possible to use mod_jvm. Highly unlikely though.&lt;/li&gt;
		&lt;li&gt;Scrap &lt;span class="caps"&gt;PHP&lt;/span&gt;. Move the whole darn site to Ruby on Rails! (We were joking over the &lt;a href="http://www.railsenvy.com"&gt;RailsEnvy&lt;/a&gt; videos after the meetup)&lt;/li&gt;
	&lt;/ul&gt;</description>
      <pubDate>Fri, 29 Jun 2007 01:51:07 +1000</pubDate>
      <guid isPermaLink="false">urn:uuid:c9bf547a-2fce-47c1-ae0a-80063670ba8a</guid>
      <author>zanglang@gmail.com (Jerry)</author>
      <link>http://www.libcoffee.net/articles/2007/06/29/random-thoughts-on-comet</link>
      <category>Technology</category>
    </item>
    <item>
      <title>Kitchen experiments: burgers and mustard meatballs</title>
      <description>&lt;p&gt;Woke up to a rainy Tuesday afternoon (yes, my sleeping cycle has been utterly destroyed by the advent of this month-long holiday) after a long night of gaming (&lt;a href="http://www.wesnoth.org/"&gt;Battle for Wesnoth&lt;/a&gt;&amp;#8217;s Scepter of Fire level). With pangs of hunger and half a pound of unplanned-of ground beef defrosting in the fridge, what&amp;#8217;s a guy to do but to make a nice hot thick burger? Randomly conjuring a recipe off the top of my head, I packed tightly a handful of beef, fried in an omelet pan with a little bit of oil, and sandwich between slices of cheap post-microwaved wholemeal bread. Not exactly good ol&amp;#8217; &lt;a href="http://en.wikipedia.org/wiki/Ramly_Burger"&gt;Ramly Burgers&lt;/a&gt;, but good nonetheless.&lt;/p&gt;


	&lt;p&gt;&amp;#8216;Crap, now what do I do with the rest of the beef?&amp;#8217; I thought (3/4&amp;#8217;s of a box = still a lot left over)... &lt;a href="http://base.google.com"&gt;Google-Based&lt;/a&gt; for some recipes and decided to pick a random one. Thus:&lt;/p&gt;


&lt;u&gt;&lt;strong&gt;Ingredients&lt;/strong&gt;&lt;/u&gt;

	&lt;ul&gt;
	&lt;li&gt;Ground beef 10 full tablespoons (I&amp;#8217;m just assuming that one meatball = 1 tablespoon scoop of beef)&lt;/li&gt;
		&lt;li&gt;Full-grain mustard half tablespoon (aka the first seasoning I found sitting in the fridge)&lt;/li&gt;
		&lt;li&gt;Soysauce (Original recipe called for worcester sauce. Didn&amp;#8217;t have any, so I just grabbed something salty and black. Approx. 4 tablespoons)&lt;/li&gt;
		&lt;li&gt;Milk&lt;/li&gt;
		&lt;li&gt;Salt and black pepper&lt;/li&gt;
	&lt;/ul&gt;


&lt;u&gt;&lt;strong&gt;Instructions&lt;/strong&gt;&lt;/u&gt;

	&lt;ul&gt;
	&lt;li&gt;Add beef, mustard, soysauce and seasoning to large bowl and mix. Pour in a liiitle bit of milk and mix, adding until I got a pasty consistency.&lt;/li&gt;
		&lt;li&gt;Heat up some oil in pan (I just reused the cooking oil and omelet pan from my mini burger adventurette).&lt;/li&gt;
		&lt;li&gt;Using a tablespoon, scoop some beef and shape into round balls (or whatever appropriate shape&amp;#8230; no one&amp;#8217;s stopping you from making square meatcubes&amp;#8230;) with fingers and place in pan. If your pan was too hot, you&amp;#8217;ll learn the very important lifelong lesson of how cooking can be very painful to a newbie this very instant.&lt;/li&gt;
		&lt;li&gt;Fry on all sides on medium-ish heat for about 5 minutes. Try splitting one with spatula or eating one to see if cooked.&lt;/li&gt;
		&lt;li&gt;Transfer to large dish layered with paper towelettes. Things are going to get messy with all these juices&amp;#8230;&lt;/li&gt;
		&lt;li&gt;Eat contentedly while watching anime.&lt;/li&gt;
	&lt;/ul&gt;


&lt;u&gt;&lt;strong&gt;Notes to self&lt;/strong&gt;&lt;/u&gt;

	&lt;ul&gt;
	&lt;li&gt;Possibly use less soysauce or none at all for better flavor.&lt;/li&gt;
		&lt;li&gt;Keep juices next time.&lt;/li&gt;
		&lt;li&gt;Herbs, onions, garlic or other veggie bits would be awesome.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;&lt;em&gt;Disclaimer&lt;/em&gt;: The author is completely untrained in the arts of cooking and food safety. By reading this statement you agree that he will not be held responsible for any ill effects, food poisoning, cooking accidents, mental trauma due to incredibly bad taste, or any related medical problems directly or indirectly caused by following the instructions recorded in this recipe blog-post.&lt;/p&gt;</description>
      <pubDate>Tue, 26 Jun 2007 17:16:09 +1000</pubDate>
      <guid isPermaLink="false">urn:uuid:5605900e-8f43-40e5-b8b2-c321ddac5624</guid>
      <author>zanglang@gmail.com (Jerry)</author>
      <link>http://www.libcoffee.net/articles/2007/06/26/kitchen-experiments-burgers-and-mustard-meatballs</link>
      <category>Rants</category>
    </item>
  </channel>
</rss>
