Baruch Even's blog

A geeks blog

Mon, 23 May 2005

THE Programming Language...
Category: Dev

is Python, even Google says so.

This post triggered by this thread.

Comments ()
cvsps memory diet
Category: Advogato

Hacked on cvsps to reduce memory usage, on a large 400MB CVS repository it needed over 500MB of memory to keep the details.

At first I've started to convert it from memory data structures to gdbm, but it got too tedious after a while.

I then found that the cached data on disk, which is a mirror of the memory data, is only 30MB. So I started to look around to find the culprit.

Apparently, there were some huge over allocations, where a log message has a max of 1K in that repository, 8K would be allocated, there were over 15K log messages. For each filename 4K were allocated, a max length for filename was 200 bytes. Revisions and branch information were kept in too large hashes where a linked list would do well. And a few other minor optimizations were needed.

All in all, memory requirement dropped from 500MB to less than 60MB, which is still a lot but liveable. Until such time that the repository grow too much.

I added a small statistics collector/reporter to the code to help guide my way and used the large repository as well as the gaim repository as a base for my decisions, it was fun.

I did notice a need for a statistics collector library for such a thing, it should report max, average, median and such data, I didn't do median because I was lazy. But between the max and average there is such a large difference that a median would help here. Dumping the data and showing histograms would be great for such a task.

Now I need to clear it up at work and submit the patches to the author. I've got one of those all-your-code-are-belong-to-us type of contracts but with a special clause for Open-Source projects, I still need to get permission for each new project to ensure it doesn't clashes with my work related tasks.

Comments ()
Tivo clone
Category: Advogato

It's been a while since I decided that I want to create my own PVR/DVR. A Tivo like device to replace the VCR.

I'll create one instead of buying one since I'm not US based so no-one provides any such toy around, and Tivo won't ship overseas. Probably because their hardware is NTSC only. The Bastards!

I'm considering using an Allwell iTV3036 unit as my base platform. But I'm still looking at other options. I'd also like it to serve as a DVD player (an all in one device), I'll probably hook it up to a coffee machine at the end :-)

The Allwell can be mine for about $400 but it only has a 300Mhz CPU which is not sufficient for encoding MPEG2/4 videos. I'll consider using an MPEG2 encoder PCI card to do that.

Another possibility is using my current 700MHz K7 machine by adding a tuner card and a TVout card. But then I won't have any use to the channels on my TV itself. Pretty wasteful. So I want something that has a pass-through mode so that it can actually act like a regular video.

Comments ()
Work
Category: Advogato

I've started to work full time on October 2001, working with Linux doing various things tinkering with firewall internals and other such fun.

Work sure does saps the time from open-source projects, I've hardly did anything during the past few months. LyX was the first casualty, my own Volume Normalizer suffered too. All I had time for is maintaining my few packages in the Debian project.

One often raised problem with Debian is the distribution of resources, and that it's hard to come by all the information and various services offered in Debian. Jamie Wilkinson (jaq) posted a link to a portal page that he created for his own use, my contribution is a generic portal page that generates a similar page by saving the email and name in a cookie. It was a couple hours of fun with Python and cgi programming in Python.

Comments ()
Misc
Category: Advogato

I've hardly done anything really productive lately, I mostly did small things like a small patch for Galeon, changing the look of my website, nitpicking on my resume and doing the usual steps in a job search.

In between I'm learning for my tests and working on my project course (Wavelet Image Compression)

LyX has switched to use some funky construct with templates from the Boost project so now I cannot compile the code from CVS, which also means I cannot work on LyX until I upgrade my compiler (currently egcs 1.12). I postpone this since I intend to switch to Debian unstable which already has gcc 3.0, hopefully this will make sure that nothing Lars will throw in LyX will kill the compiler.

But switching a distribution is such a tedious job, I'll need to find those things that I take for granted and make sure they are installed on the new distribution. I've done most of my preparations by now, I switched /home to another partition (on ext3) and have Debian unstable installed already though it needs updating, but that last mile of actually telling lilo to boot as a default to Debian instead of RedHat is not so easy to do, mentally mostly.

I'll get around to this, promise!

I've switched to using Mozilla some time ago, much better than Netscape 4.7x. I then switched to Galeon since it was even better than using Mozilla directly, even though it misses some features of Mozilla (parts of the Password Management don't work and changing style sheets is impossible), I'll try to tackle this sometime.

The best work I do on Open-Source/Free-Software projects is when it scratches an itch, when everything is perfect for me I have less inclination to do anything.

Comments ()
Posting Hebrew to websites
Category: Advogato

Finally I can post in Hebrew on websites (specifically on The Reading Moose). Until some time ago I used Netscape 4.7x as my browser, until it was rumored that Mozilla has Bidi support for logical Hebrew (most Hebrew sites are visual Hebrew, which is the only thing supported in NS 4.7x), I've installed Mozilla from CVS and got myself a nice Bidi capable browser. Only problem was that is was slow as hell.

Enter galeon.

I've installed Galeon the other day and got myself a Bidi capable browser that runs at a decent speed, as a bonus I got tabbed browsing which is great.

The last step involved a short research into the xkb mysteries and finding the tricks that are needed to get it to use an Hebrew keyboard mapping, and now I can post in Hebrew!

This replaces a hackish script I wrote in Python to post a text file to the website.

One problem though, to install Galeon I needed to upgrade to Gnome 1.4, I now have problems with PowerShell, it's terminals get locked! Anyone knows a cure?

Comments ()
Misc
Category: Advogato

Got myself a MP3 CD Player, the Pine SM200C. A pretty cool thing though I'm not really sure it fits into my budget (full time student), for my defense I claim it was an impulse buy.

This thing has 40 seconds shock protection time when playing mp3s of 128kbps, this is the thing that sold me since I mainly bought it for listening in the gym when running on the treadmill, something that usually means a bumpy ride. It's pretty slow to switch songs and when it's in random playing mode, pressing next-song key will go to the next sequential song and not the next random song. But overall it's a pretty good thing.

Speaking about the gym, I now have Calcaneal Spur from running on the treadmill, got some pills from the doctor and switched from the treadmill to the cross-trainer. The ride is less bumpy now.

I still haven't coded anything for a while, between school chores and a bit of rest.

Comments ()
Life
Category: Advogato

I will finish my studies this semester, with a worst time estimate of October, and optimistic estimate of August. And I've started to think about getting a job, the reason it came up is a job fare that is scheduled for next week.

With the short time I've started drafting my resume, the initial version is here. The English version is a translation of the Hebrew one so it's rather badly done.

Up until now I didn't had any "real" interview, for my first job I had a small chat with the Teaching Assistant, and then a small chat with the Professor in charge and I got the job. In my second work I got the job mostly based on the recommendation of a friend who already worked there, so the interview was also pretty short and simple. The third time I did a freelance job and managed to convince my client based solely on a job my friend (the same one) did, and delivered it. Now I'll probably need to go through the usual hoopla of several interviews and various tests and tricky questions.

I hate this stuff, I believe I'll do good there but I still don't like these tests and puzzles. It makes me reconsider my decision to go to work instead of continuing to an advanced degree. But it seems like I have far less inclination to continue formal studies now than hate of weird tests.

Well, sometime I'll need to do this anyway, so it's probably better I do it now and get over with it.

Update: Changed the URL due to rearranging the site.

Comments ()
Wavelet Project
Category: Advogato

I'm pretty much stuck with it now, I'm unable to find either source code for the wavelet transform I need (Gabor Wavelet Transform) or a clear explanation of the method to implement it. I've learned the math behind it pretty well, however this deals with the mathematical analysis of its convergence and invertiness, it has nothing on how do I go about doing the implementation. My friend picked up a book by Mallat and is reading it, I'll take it near the weekend and read it too. I hope it has something to hint about the implementation.

LyX and Python

I've finally succeeded in embedding Python into LyX, it was pretty simple in the end, However I found out that LyX doesn't have a simple way to export various queries, it has an export for actions like "word-forward" and "file-new" but nothing like "character-insert".

Anyhow, Lars (the LyX project overlord) decided that since LyX is kinda destabilized, he doesn't want to integrate this work or to continue working on it until LyX is stabilized for it's 1.2.0 release. I probably better get back to finish the InsetGraphics widget I was working on so far (the widget is mostly finished, the support stuff isn't).

Comments ()
Misc
Category: Advogato

I've updated to XFree86 4.0.3 hoping that it will have an updated SiS 6326 driver that will work with acceleration, apparently, it doesn't. I'm still stuck with a lousy video card that can do no acceleration. How annoying!

I've started looking into embedding Python into LyX, It appears to be a non-trivial task and I haven't figured yet how to do what is needed. Basically I want to be able to call a Python method in whatever file it is for some keyboard shortcut, I'll then need to give some hooks to Python to access LyX methods to be able to do something useful.

I've found that it's not going to be easy and I found no real example on how to do this (the example in the python 2.0 distribution is ridiculously simple), so I've dropped the idea for now. I don't have enough time to invest in this.

I'm pretty stuck with the wavelet project, I'm unable to find a clear explanation on how to implement the 2D Discrete Wavelet Transform, Specifically I need to implement the Gabor Wavelet Transform. I'm trying to chase references and articles but so far, I found nothing.

Comments ()
[0] 1  >>