<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-8646673</id><updated>2009-11-09T15:29:31.828-05:00</updated><title type='text'>navindra's blog</title><subtitle type='html'>populating &lt;a href="http://planetkde.org/"&gt;planet kde&lt;/a&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://navindra.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8646673/posts/default'/><link rel='alternate' type='text/html' href='http://navindra.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Navindra Umanee</name><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8646673.post-111353352128369743</id><published>2005-04-14T22:40:00.000-04:00</published><updated>2005-04-15T11:02:47.150-04:00</updated><title type='text'>Insulted By The Food Industry</title><content type='html'>Looking over the list of ingredients for a can of lentils at the grocery store:&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;Lentils, water, salt, &lt;b&gt;flavours&lt;/b&gt;.&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;FLAVOURS?&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I feel so insulted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8646673-111353352128369743?l=navindra.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://navindra.blogspot.com/feeds/111353352128369743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8646673&amp;postID=111353352128369743' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8646673/posts/default/111353352128369743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8646673/posts/default/111353352128369743'/><link rel='alternate' type='text/html' href='http://navindra.blogspot.com/2005/04/insulted-by-food-industry.html' title='Insulted By The Food Industry'/><author><name>Navindra Umanee</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03567218451430834838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8646673.post-110923015801398837</id><published>2005-02-24T02:28:00.000-05:00</published><updated>2005-02-24T12:41:50.373-05:00</updated><title type='text'>kde.rb: Why You Should Use Ruby</title><content type='html'>I have been having a lot of fun with Ruby lately.  &lt;br /&gt;&lt;br /&gt;I now have a Ruby-based renderer for &lt;a href="http://dot.kde.org/"&gt;KDE Dot News&lt;/a&gt;.  The great thing is that I've dumped all the articles and comments from Zope onto the filesystem and it works.  It works great... so far.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ruby-lang.org/"&gt;Ruby&lt;/a&gt; is the latest technological craze from Japan by a guy named matz.  It has weird stuff like "objects" in it.  You could take the number 1, and because it is an object, you can make it &lt;a href="http://www.rubygarden.org/ruby?DuckTyping"&gt;quack like a duck&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It gets much worse.  Did you know that I can connect from anywhere on the Internets, or at the very least within throwing distance of a Unix Domain Socket, to my running dot.rb instance, and inspect and change anything on the fly?  &lt;br /&gt;&lt;br /&gt;Yes, it's possible and it's working and it doesn't have any significant overhead.  I could give KDE Dot News a sickly blue corporate background, post goatse links, clear the cache tables, or call the garbage collector, all on the fly from any strategically located VT100.&lt;br /&gt;&lt;br /&gt;All just for &lt;a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/129168"&gt;a few lines of code&lt;/a&gt;.  The distributed stuff works because of &lt;a href="http://www.rubycentral.com/articles/drb.html"&gt;an anomaly called DRb&lt;/a&gt; -- I don't really know why the rest works.&lt;br /&gt;&lt;br /&gt;If you're a KDE developer, you should really give &lt;a href="http://developer.kde.org/language-bindings/ruby/"&gt;Korundum&lt;/a&gt; a serious look.  This stuff could blow .Net and Java away.&lt;br /&gt;&lt;br /&gt;So, anyway.  About dot.rb.&lt;br /&gt;&lt;br /&gt;Management-wise, dot.rb's 100% filesystem-based backend is nothing less than a godsend compared to having to deal with a gigantic opaque database.&lt;br /&gt;&lt;br /&gt;It's also pure bliss to be able to write dynamic HTML code using Ruby's &lt;a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/128625"&gt;heredoc&lt;/a&gt; and &lt;a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/129963"&gt;powerful string interpolation&lt;/a&gt; features.  Ruby has all sorts of template engines but I didn't have to bother with any of that.  Never again.&lt;br /&gt;&lt;br /&gt;I am so glad to be getting away from the &lt;a href="http://cvs.sourceforge.net/viewcvs.py/squishdot/Squishdot/demo/Squishdot_posting_html.dtml?rev=1.5&amp;view=auto"&gt;headache that is DTML&lt;/a&gt;.  Dot's HTML code finally looks tractable, since there is much more sharing and consequently much less code.&lt;br /&gt;&lt;br /&gt;dot.rb is fast on ext3, practically instantaneous on my localhost, and &lt;a href="http://navindra.blogspot.com/2004/10/kde-dot-news-mysql-versus-ext3.html"&gt;even faster on ReiserFS&lt;/a&gt;.  I've run it on the same machine as the Dot, in parallel to the "production" site, and it was still fast while current Dot (and wiki) crawled.&lt;br /&gt;&lt;br /&gt;dot.rb uses 10 times less memory and half the diskspace than present Dot at its worse (meaning several weeks without packing the DB and a few hours of uninterrupted memory leaking).&lt;br /&gt;&lt;br /&gt;Of course, dot.rb hasn't been on any kind of load like Zope is.  I've tested dot.rb with the full KDE Dot News db and at one point I had 5 simultaneous recursive wgets pulling content and it was still fast...  Incidentally, this is using Ruby's &lt;a href="http://www.webrick.org/"&gt;built-in webserver&lt;/a&gt;;  I implemented the logic in a few lines.&lt;br /&gt;&lt;br /&gt;But that's still not a realistic load and, of course, there are big gaps in the functionality which could easily close the performance divide come judgement day.  Hopefully by the time I'm finished we'll have a 10GHz machine waiting and that won't be a concern.&lt;br /&gt;&lt;br /&gt;The reason it's fast of course is that dot.rb is particularly optimised for typical usage patterns of the Dot.  Right up front I cache the most recent 100 articles and accompanying comments in a nice little forest of objects.  I've also got a dynamic cache table that starts out empty and keeps the most frequently accessed article trees around.&lt;br /&gt;&lt;br /&gt;The HTML pages are completely dynamically generated, including Flat Forty and the All Articles list -- both of the latter tend to kill present Dot.  I do however use a two-level string interpolation in Ruby and cache strings at the first level.&lt;br /&gt;&lt;br /&gt;I lightly process all the site articles up front, compute interesting stuff like previous and next links (present Dot only computes those for the 10 most recent articles, dot.rb does it for all articles) and keep a table of the skeletons around.  If you think that would kill startup time, it doesn't really.  dot.rb still loads in a fraction of the time that it takes Zope to boot up.  If you think it kills memory, nope, doing OK.&lt;br /&gt;&lt;br /&gt;To make a long story short, I'm basically making an educated guess about the typical dot reading patterns and optimising for that.  This kind of optimisation isn't really feasible in Squishdot since it lies on top of the huge layers of abstraction that is Zope.&lt;br /&gt;&lt;br /&gt;Of course, I haven't solved the problem of searching.  Stuff like searching on Authors, Titles and Categories should be quite easy and will already be quite useful since this is a function &lt;a href="http://www.google.com/"&gt;Google&lt;/a&gt; cannot readily do for us.  What still bothers me is searching the full article and comment bodies for content.  I have some ideas, and no, my hierarchical filesystem isn't likely to pan out for this particular case...  I will probably need to build an index of some kind or else I could tap Google search for hints and zone in on the search.&lt;br /&gt;&lt;br /&gt;Not that searching is working very well for Dot present anyway.  Basic searches like the aforementioned-ones work somewhat erratically, others kill the server.  Having that Search box on the site-wide footer of the Dot right now is all but meaningless when the thing doesn't work.  I guess it's comforting to have it there and it does help maintain the illusion that we have search.&lt;br /&gt;&lt;br /&gt;Phase 1 of dot.rb, which is rendering and viewing, is basically done minus search.  Phase 2 will be to implement actual posting, which I anticipate to be fairly easy given all that's already been done.  Phase 3 will be to implement some sort of management interface for the editors and will probably be slightly tricky...  some of those premature optimisations might just come back and bite me.&lt;br /&gt;&lt;br /&gt;Sadly, all of this is going to have to wait.  Ruby is way too addictive and I need to spend a month or three away in detox, for my own good.  Also, I need to get away from some of &lt;a href="http://www.poignantguide.net/ruby/"&gt;those crazy people&lt;/a&gt;.  Hopefully these issues will be addressed in Ruby 2.0.&lt;br /&gt;&lt;br /&gt;Did I mention &lt;a href="http://developer.kde.org/language-bindings/ruby/"&gt;Korundum&lt;/a&gt;?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8646673-110923015801398837?l=navindra.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://navindra.blogspot.com/feeds/110923015801398837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8646673&amp;postID=110923015801398837' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8646673/posts/default/110923015801398837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8646673/posts/default/110923015801398837'/><link rel='alternate' type='text/html' href='http://navindra.blogspot.com/2005/02/kderb-why-you-should-use-ruby.html' title='kde.rb: Why You Should Use Ruby'/><author><name>Navindra Umanee</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03567218451430834838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8646673.post-110317124522596168</id><published>2004-12-15T23:30:00.000-05:00</published><updated>2005-02-24T00:28:44.603-05:00</updated><title type='text'>Failed My Driving Test</title><content type='html'>I failed my driving test today.  That sucks.  It really sucks.  I usually excel at tests and the such, so outright failure can be quite depressing and embarrassing.&lt;br /&gt;&lt;br /&gt;I mulled around a bit in Montreal downtown after that.  Thought I'd maybe watch SpongeBob SquarePants since there was nothing better, but walked out after 2 minutes.  Ended up spending time at &lt;a href="http://www.chapters.indigo.ca/"&gt;Indigo Books&lt;/a&gt; and dragging my feet around &lt;a href="http://futureshop.ca/"&gt;Future Shop&lt;/a&gt;, not buying anything of course, since that would turn out to be a waste of money when boxing day sale comes around.&lt;br /&gt;&lt;br /&gt;Four qualified people have told me that I'm a safe driver and have good driving technique.  Even the examiner said that I had scored high on general technique, including parallel parking, and encouraged me to take the test again post-haste.  He even went to the pains of telling me the best ways to get around the system and schedule my next test as soon as possible.&lt;br /&gt;&lt;br /&gt;The examiner was a nice guy, although he chewed off my head, lectured me, and flat out refused my request, when I asked him if he could give me the instructions in English.  I take my tests very seriously, and English is my first language, why run the risk of not knowing what he's talking about in a real-time situation? (&lt;i&gt;anglements&lt;/i&gt;? What the hell is that?  Oh &lt;i&gt;blindspots&lt;/i&gt;.  Of course I know about &lt;i&gt;blindspots&lt;/i&gt;...)&lt;br /&gt;&lt;br /&gt;Apparently that was a no-go though...  in Quebec, you sometimes have to put up with the self-appointed language police and all that.  Besides, he said, I speak French very well and should take the chance to practice it.&lt;br /&gt;&lt;br /&gt;So why did I fail?  It's not the examiner's fault I failed.  &lt;br /&gt;&lt;br /&gt;Right when I left the property I burnt a red light -- an immediate failure, but we continued the test anyway.  The worst part of it is that I burnt a &lt;i&gt;second&lt;/i&gt; red light at the end of the test when about to re-enter the grounds.  It boggles my mind as to how that was possible and I spent all afternoon mulling about it.&lt;br /&gt;&lt;br /&gt;I suppose the fact that I had spent most of the previous night fretting about the test hadn't helped, I suppose I &lt;i&gt;had&lt;/i&gt; been nervous and somewhat spaced out (although that wasn't apparent to me at the time), I suppose the sun in my face didn't really help and I suppose a wholly unfamiliar rental car where I couldn't even feel the gas pedal only made matters worse.  &lt;br /&gt;&lt;br /&gt;In the end though, I'm just not really sure how I could have screwed up like that.&lt;br /&gt;&lt;br /&gt;Worse than failing the test itself, it is no comfort, and certainly no confidence-builder, to think that if I hadn't had someone beside me while driving, I could have easily been in an accident or dead already.  &lt;br /&gt;&lt;br /&gt;In Montreal, with the kind of public transportation that we have here, not being able to drive isn't much of a problem.  But I probably wouldn't &lt;A href="http://www.caldrive.com/"&gt;survive in California&lt;/a&gt; for long without a car.  I'm just going to have to spend more money on additional lessons and try harder not to get myself killed for next time.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; I easily got my license on January 5th, the second time around. Thank you for the encouragement!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8646673-110317124522596168?l=navindra.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://navindra.blogspot.com/feeds/110317124522596168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8646673&amp;postID=110317124522596168' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8646673/posts/default/110317124522596168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8646673/posts/default/110317124522596168'/><link rel='alternate' type='text/html' href='http://navindra.blogspot.com/2004/12/failed-my-driving-test.html' title='Failed My Driving Test'/><author><name>Navindra Umanee</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03567218451430834838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8646673.post-109919523471331086</id><published>2004-10-31T01:30:00.000-05:00</published><updated>2004-10-31T01:03:02.056-04:00</updated><title type='text'>KDE Dot News: FootNotes Goes Drupal</title><content type='html'>As some of you might know, KDE Dot News initially started off as a clone of the now-defunct GNOME Gnotices site.  &lt;br /&gt;&lt;br /&gt;In principle, Gnotices was a great idea that worked spectacularly well for the GNOME project -- at least at the beginning.  Whereas KDE news had been a painful process with typically only one person taking the initiative to manually update a static webpage, Gnotices demonstrated that project news left in the hands of the "unwashed masses" could handily beat a one-man show, no matter how good the intentions of the latter.  The key was evidently adequate infrastructure.&lt;br /&gt;&lt;br /&gt;In the end however, Gnotices suffered from severe editorial neglect, and when the GNOME community turned hostile and grew rebellious, Gnotices took a turn for the worse.  The site was harming the GNOME project and the webmasters decided to put their foot down.  Severe restrictions were implemented on the site but it never recovered. The restrictions just made matters worse and made GNOME look even more neglected.  Gnotices dropped off the net altogether and was eventually replaced by the independently managed FootNotes site, with a less than stellar transition.&lt;br /&gt;&lt;br /&gt;In fact, it seems that the GNOME website has gone back to the dark ages.  It seems hardly maintained (no news of GNOME 2.8.1?) compared to the old days where, although it looked amateurish, it was vibrant and alive because the community made it what it was.  I reloaded it every day.  Mind you, I'm not saying the designed-by-committee KDE frontpage doesn't suck in its own right (oh!  I can &lt;i&gt;theme&lt;/i&gt; it.  sometimes.  oh CSS!  such joy!), but at least the content is there, always fresh, and people like Steve still care for it.&lt;br /&gt;&lt;br /&gt;KDE Dot News was based on the same technology as Gnotices and consequently followed some of the same principles, but, in contrast, the dot has always had a stronger editorial and admin presence.  The same crowd that attacked Gnotices did sometimes come over to KDE Dot News but attacking us tended to be more of an uphill battle, with diminishing returns, such that matters have tended to stay under control.  Furthermore, our growth has been nothing like that of Slashdot, so personal attention remains possible without having to resort to ugly discriminatory hacks such as a mob moderation system.  &lt;br /&gt;&lt;br /&gt;I was happy to choose Squishdot/Zope at the time because the interface was so simple, so easy, yet so effective.  Although it did and still has limitations and bugs, it really was "good enough" and for the near future still is.  I believe the dot design is in principle very clean and very effective, to the point that some of the limitations grow on you and even start masquerading as features (e.g. lack of formal user accounts).  I'd like it to stay this way as much as possible and it will.&lt;br /&gt;&lt;br /&gt;Yes, to give credit where credit is due, we all blatantly stole ideas and designs from Slashdot.&lt;br /&gt;&lt;br /&gt;Unfortunately, the dot has problems -- problems that grow worse day by day.  As simple as Squishdot is, it perhaps owes a lot of that simplicity to Zope.  Not surprisingly however, Zope is no simple beast.  Zope is powerful, fantastic for rapidly developing a site and exploring possibilities, but maintaining it or trying to understand it for the purposes of optimisation isn't a trivial matter if you don't have proper resources. &lt;br /&gt;&lt;br /&gt;To pick an example, the database grows larger every day and gets slower and slower until it is "packed" -- and then the process just starts over.  This is partly due to the implementation of Squishdot but trying to solve the problem always involves having to deal with the complexity of Zope or, worse, attempting to bypass it by using external resources.  I may be naive, even proudly so, but something that aspires to the simplicity of the dot shouldn't have to depend on something of the complexity of Zope.&lt;br /&gt;&lt;br /&gt;Havoc always used to say you could trivially solve the Zope problem by throwing more RAM/CPU/disk at it, but in truth we depend on the kindness of friends (such as &lt;a href="http://pem.levillage.org/"&gt;LeVillage.org&lt;/a&gt;) and we owe it to our friends not to abuse that kindness.  &lt;br /&gt;&lt;br /&gt;(Incidentally, I think &lt;a href="http://log.ometer.com/2004-10.html#29"&gt;Havoc's rant on Python&lt;/a&gt; is right on the money.  I hate it that stuff like the obvious "help(File)" doesn't work in Python and searching for its documentation is ridiculously hard to a newbie because you have to know "File" is indexed under "built-in types".  At least, that was the case for the old version of Python I'm using for the dot.)&lt;br /&gt;&lt;br /&gt;So I'm looking for solutions.  I have big, vapourous, ideas that will not be realised within the next four months, not until I'm out of school (and, hopefully, safely at Google) but that I'm determined to see through.&lt;br /&gt;&lt;br /&gt;I was therefore quite fascinated to learn that Stro &lt;a href="http://www.stroven.org/blog/?postid=52"&gt;had problems of his own&lt;/a&gt; with FootNotes.  The main problem seemed to be the beast that is MySQL, which was apparently faltering in a similar way to the Zope DB.  Essentially, PHP-Nuke was abusing MySQL almost as badly as Squishdot is abusing Zope.  The solution for Stro was to move to Drupal.&lt;br /&gt;&lt;br /&gt;I have to admit, I never really liked FootNotes.  The site was complex, ugly, buggy, (and slow, though easily faster than the dot) and the content was often, in my opinion, just as poor as the old Gnotices site, often consisting of minor app announcements and the such.  Not very elegant at all, and the GNOME project doesn't really give it much visibility or credibility.  &lt;br /&gt;&lt;br /&gt;The transition does pique my interest though.  What was particularly nice was that Stro converted all the old PHP Nuke articles and comments over to the new structure, a touch and a sign that he cares and is competent.  This time, GNOME content and history didn't drop off the face of the planet as it did with the Gnotices to FootNotes transition.  &lt;br /&gt;&lt;br /&gt;Drupal looks vastly simpler than PHP Nuke on the surface and FootNotes seems to benefit automatically.  The URL structure looks fairly clean and it seems straightforward to maintain link compatibility with PHP Nuke, although Stro hasn't done this yet.&lt;br /&gt;&lt;br /&gt;On the other hand, Drupal still has its bugs and weaknesses.  KDE Developer Journals, based on Drupal, never remembers logins and the new FootNotes is no different.  This is incredibly aggravating but apparently nobody cares and the bug has survived in Drupal/PHP for many months.  Further playing around, the thread display controls seem badly broken and ineffective.  And I hate that stupid PHPSESSID variable that appears in the URL from time to time.&lt;br /&gt;&lt;br /&gt;There are some features on the dot that don't seem to be present on Drupal, so it might require modification.  And if I'm going to move the dot to a new CMS, near-total backward compability will be a primary requirement and the dot's existing hierarchical structure must be maintained.  This might be possible with Drupal but might also be against Drupal's "one SQL query" philosophy.  Even if it could be convinced to do otherwise, we'll probably end up with the same MySQL performance problems as PHP Nuke.  Speculation.  &lt;br /&gt;&lt;br /&gt;I have done some digging on MySQL, and drawing from my own admin experience of it (both KDE Wiki and KDE Forums use it), I'm not at all keen on transitioning from Zope to MySQL.  And from what I gather, FootNotes/Drupal/MySQL is still quite resource intensive.  &lt;br /&gt;&lt;br /&gt;It'll definitely be interesting to watch the evolution of FootNotes and learn from Stro's experience.&lt;br /&gt;&lt;br /&gt;So, yeah.  So there.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8646673-109919523471331086?l=navindra.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://navindra.blogspot.com/feeds/109919523471331086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8646673&amp;postID=109919523471331086' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8646673/posts/default/109919523471331086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8646673/posts/default/109919523471331086'/><link rel='alternate' type='text/html' href='http://navindra.blogspot.com/2004/10/kde-dot-news-footnotes-goes-drupal.html' title='KDE Dot News: FootNotes Goes Drupal'/><author><name>Navindra Umanee</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03567218451430834838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8646673.post-109798975054608633</id><published>2004-10-17T01:10:00.000-04:00</published><updated>2004-10-17T17:12:26.270-04:00</updated><title type='text'>KDE Dot News: Ext3's Miserable Failure</title><content type='html'>As &lt;a href="http://navindra.blogspot.com/2004/10/kde-dot-news-mysql-versus-ext3.html"&gt;I mentioned previously&lt;/a&gt;, I have been musing a lot about KDE Dot News lately.&lt;br /&gt;&lt;br /&gt;After some interesting discussion about the merits of ext3 vs ReiserFS vs MySQL vs Zope, I thought I'd put it to the test.  I have zero, absolutely zero, free time to waste on such things, but in the end the lure was just too much.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Zope&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I'd been somewhat negligent. I hadn't packed the &lt;a href="http://www.zope.org/"&gt;Zope&lt;/a&gt; DB for 4 months. The nasty, horrible, consequence of that was that Data.fs was a whooping 2 gigabytes in size.  So I took an hour or so to pack the DB, resulting in a more reasonable size of 260M.&lt;br /&gt;&lt;br /&gt;Then I spent a couple of hours setting up a parallel Zope server for experimentation, as well as implementing the necessary code for dumping the Zope DB to the filesystem in the aforementioned hierarchical structure.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ext3&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Since I like testing code as I'm implementing, I only dumped the directory structure in the first step.  Evidently this resulted in a hierarchical directory structure -- nothing but 55000 directories.  The results were horrific.&lt;br /&gt;&lt;br /&gt;Ext3 takes up a whooping 220M holding nothing but directories.  Nothing but directories.  Yet it takes up almost as much space as the entire Zope DB, which actually has more stuff in it than just the dot.kde.org data.&lt;br /&gt;&lt;br /&gt;Ostensibly unfazed, I implemented the remaining code necessary to dump the full monty, including article headers, bodies, meta-information and any file attachments.&lt;br /&gt;&lt;br /&gt;The resulting dump takes up 930M.  Even worse, global file operations (e.g. &lt;i&gt;find&lt;/i&gt; or &lt;i&gt;du&lt;/i&gt;) from the root are extremely slow.  Slow as hell.  I think ext3 is going to be absolutely hopeless here, although the running time of file operations is not that bad when kept local or lower down in the structure.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;tar.gz&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Still curious though, I made a tar.gz of the directory structure.  Perhaps not surprisingly, that takes up only 700K compared to the ridiculous 220M for ext3.  I tried the same thing with the full dump and that takes up 60M compared to ext3's gig.  Help me, Jebus.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ReiserFS&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Simon Edwards had previously suggested that &lt;A href="http://www.namesys.com/"&gt;ReiserFS&lt;/a&gt; might be up to the task.  KDE Dot News does not have reiserfs.  We're running &lt;a href="http://www.arklinux.org/"&gt;Ark Linux&lt;/a&gt; and Bero, one of the dot admins, strongly favours ext3 (to put it politely). &lt;br /&gt;&lt;br /&gt;&lt;A href="http://ktown.kde.org/"&gt;KTown&lt;/a&gt; to the rescue! That worthy machine has tons of space and tons of resources, so it made a suitable victim. Don't nobody tell the sysadmins.&lt;br /&gt;&lt;br /&gt;I was astounded to find that the entire directory structure took less than 200K on reiserfs. That's stupidly less than even what the tar.gz takes up. Hans, you da man, man.&lt;br /&gt;&lt;br /&gt;The bad news is that the full monty still takes up a huge 700M on reiserfs.  However, it is fast.  Very fast.  Very very fast compared to ext3.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;tar&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;As suggested by a reader, I also took a look at the results for the uncompressed tar files.  Directories take 30M and the full dump takes 270M.  The latter result is very interesting, because one might deduce from it that there is a lot of room for improvement in ReiserFS in terms of space usage.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Summary of Results&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tr align="center"&gt;&lt;th&gt;KDE Dot News&lt;/th&gt; &lt;th&gt;Zope&lt;/th&gt;  &lt;th&gt;tar&lt;/th&gt; &lt;th&gt;tar.gz&lt;/th&gt;  &lt;th&gt;ext3&lt;/th&gt;&lt;th&gt;ReiserFS&lt;/th&gt;&lt;/tr&gt;&lt;tr align="center"&gt;&lt;th&gt;Directories&lt;/th&gt;  &lt;td&gt;-&lt;/td&gt; &lt;td&gt;30M&lt;/td&gt;&lt;Td&gt;700K&lt;/td&gt; &lt;td&gt;&lt;font color="red"&gt;200M&lt;/font&gt;&lt;/td&gt; &lt;td&gt;&lt;font color="green"&gt;200K&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr align="center"&gt;&lt;th&gt;Full Monty&lt;/th&gt;  &lt;td&gt;260M&lt;/td&gt;&lt;td&gt;270M&lt;/td&gt;&lt;td&gt;&lt;font color="green"&gt;60M&lt;/font&gt;&lt;/td&gt; &lt;td&gt;&lt;font color="red"&gt;930M&lt;/font&gt;&lt;/td&gt; &lt;td&gt;700M&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Speed-wise, I'm not giving any numbers since I tested reiserfs and ext3 on two different systems; although, I did try to make sure both were mounted noatime and so on. &lt;br /&gt;&lt;br /&gt;Nonetheless, I can say that it seemed like ext3 took as many minutes as reiserfs took seconds to perform global operations.  There was essentially an order of magnitude of difference across the systems.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusion?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;So I'm not sure what to do.  700M in reiserfs represents 4 entire years of articles and comments on the dot.  The information is uncompressed and in plain text  (excepting binary file attachments). Given that, perhaps the space usage is reasonable. I had also envisioned using some form of revision control for articles, so that would just take up more space.&lt;br /&gt;&lt;br /&gt;Space-wise, Zope is winning here.  At least still for a few weeks, until it grows horribly out of control again.&lt;br /&gt;&lt;br /&gt;On the other hand, ReiserFS could easily have the speed advantage.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8646673-109798975054608633?l=navindra.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://navindra.blogspot.com/feeds/109798975054608633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8646673&amp;postID=109798975054608633' title='28 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8646673/posts/default/109798975054608633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8646673/posts/default/109798975054608633'/><link rel='alternate' type='text/html' href='http://navindra.blogspot.com/2004/10/kde-dot-news-ext3s-miserable-failure.html' title='KDE Dot News: Ext3&apos;s Miserable Failure'/><author><name>Navindra Umanee</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03567218451430834838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>28</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8646673.post-109785290493306170</id><published>2004-10-15T11:05:00.000-04:00</published><updated>2004-10-15T11:08:24.943-04:00</updated><title type='text'>KDE Dot News: MySQL versus ext3</title><content type='html'>I've been musing a lot about &lt;a href="http://dot.kde.org/"&gt;KDE Dot News&lt;/a&gt; lately.&lt;br /&gt;&lt;br /&gt;The site is currently host to over 55000 articles and comments all stored in &lt;a href="http://www.zope.org/"&gt;Zope&lt;/a&gt;'s internal DB format. Yet, the structure is completely hierarchical.  Every article/comment has a single parent but may have one or more children.&lt;br /&gt;&lt;br /&gt;This structure could easily be represented on a filesystem such as ext3 using directories and plain text files holding the information.&lt;br /&gt;&lt;br /&gt;My question, for anyone with the experience and know-how, is:  How efficient would it be to store all the dot's articles and comments on the filesystem?  How would this compare to storing the information in, say, a MySQL database?&lt;br /&gt;&lt;br /&gt;Remember that when you access an article/comment, you usually want to access all the descendants as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8646673-109785290493306170?l=navindra.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://navindra.blogspot.com/feeds/109785290493306170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8646673&amp;postID=109785290493306170' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8646673/posts/default/109785290493306170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8646673/posts/default/109785290493306170'/><link rel='alternate' type='text/html' href='http://navindra.blogspot.com/2004/10/kde-dot-news-mysql-versus-ext3.html' title='KDE Dot News: MySQL versus ext3'/><author><name>Navindra Umanee</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03567218451430834838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8646673.post-109755046427357084</id><published>2004-10-11T23:04:00.000-04:00</published><updated>2004-10-12T00:02:47.790-04:00</updated><title type='text'>I Killed The Dot</title><content type='html'>While investigating a resource leak in AMP (Apache/MySQL/PHP) on the dot machine, I had the brilliant idea of &lt;i&gt;strace&lt;/i&gt;'ing an out-of-control Apache process.  &lt;br /&gt;&lt;br /&gt;Result: The Dot Is Dead.&lt;br /&gt;&lt;br /&gt;We're waiting for a reboot, sorry guys.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8646673-109755046427357084?l=navindra.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://navindra.blogspot.com/feeds/109755046427357084/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8646673&amp;postID=109755046427357084' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8646673/posts/default/109755046427357084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8646673/posts/default/109755046427357084'/><link rel='alternate' type='text/html' href='http://navindra.blogspot.com/2004/10/i-killed-dot.html' title='I Killed The Dot'/><author><name>Navindra Umanee</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03567218451430834838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8646673.post-109737303243478495</id><published>2004-10-09T21:28:00.000-04:00</published><updated>2004-10-09T21:51:44.203-04:00</updated><title type='text'>Google's Billboard Challenge</title><content type='html'>I have &lt;a href="http://www.cs.mcgill.ca/~navindra/google/e.html"&gt;posted my take&lt;/a&gt; on the now so-very-old &lt;A href="http://www.google.com/"&gt;Google&lt;/a&gt; &lt;a href="http://www.google.com/googleblog/2004/07/warning-we-brake-for-number-theory.html"&gt;billboard challenge&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It was more of an excuse to brush up on certain skills, but this last week I've just been kicking myself and agonising over the fact that I decided to use the classical factorial formula to calculate e. That formula is evidently not suitable for what I was trying to do and seems inherently bounded for a stream approach.&lt;br /&gt;&lt;br /&gt;There are &lt;a href="http://mathworld.wolfram.com/Digit-ExtractionAlgorithm.html"&gt;rumours of the existence&lt;/a&gt; of a digit-extraction algorithm for e but I have yet to see it or if I have seen it, I have yet to gr0k it.  Is it too much to ask for a simple damn formula or explanation for calculating the value of any digit of e without having to read through pages and pages of theory?&lt;br /&gt;&lt;br /&gt;Evidently my math skills need much work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8646673-109737303243478495?l=navindra.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://navindra.blogspot.com/feeds/109737303243478495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8646673&amp;postID=109737303243478495' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8646673/posts/default/109737303243478495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8646673/posts/default/109737303243478495'/><link rel='alternate' type='text/html' href='http://navindra.blogspot.com/2004/10/googles-billboard-challenge.html' title='Google&apos;s Billboard Challenge'/><author><name>Navindra Umanee</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03567218451430834838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8646673.post-109734031551659242</id><published>2004-10-09T13:35:00.000-04:00</published><updated>2004-10-09T15:07:36.953-04:00</updated><title type='text'>Dijkstra's Computing Science</title><content type='html'>I'm surprised to see Richard and Chris speaking of "Computer Science" in the UK.  I suppose nobody calls it &lt;a href="http://www.cs.utexas.edu/users/EWD/transcriptions/EWD12xx/EWD1284.html"&gt;Computing Science&lt;/a&gt; anymore.&lt;br /&gt;&lt;br /&gt;Although I'm doing CS in Canada, when I was an undergrad, they refrained from teaching us specific stuff like C, C++, Unix or DOS -- except for the bare minimum necessary to bootstrap ourselves.  They taught us programming and how to think.  We learned syntax and the joys of semi-colons on our own during the weekend.  They made a point of telling us that.&lt;br /&gt;&lt;br /&gt;A university course on HTML would have been especially inconceivable!&lt;br /&gt;&lt;br /&gt;Things are certainly different nowadays and, for better or worse, the university has moved forward with the market demand.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8646673-109734031551659242?l=navindra.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://navindra.blogspot.com/feeds/109734031551659242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8646673&amp;postID=109734031551659242' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8646673/posts/default/109734031551659242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8646673/posts/default/109734031551659242'/><link rel='alternate' type='text/html' href='http://navindra.blogspot.com/2004/10/dijkstras-computing-science.html' title='Dijkstra&apos;s Computing Science'/><author><name>Navindra Umanee</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03567218451430834838'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry></feed>