- Flash based
- Removable battery
- 512MB+ capacity
- USB 2.0
- FM
- FM and Voice Recording
- Built-in Speaker
- FM Transmitter
- Expandable media
- Color Display
Scripting languages like Tcl/Perl/Python/Python can be embedded into a big program written in a traditional language or like extended by writing glue code to existing libraries written in traditional languages. The latter is definitely much easier, especially with a generic tool like SWIG or a specific one like Pyrex. Most Python experts recommend extending rather than embedding.
However, there are times when embedding is more useful. Also, in many commercial settings, it's sometimes impossible to convince management to write the program in a high level language like python. It's far easier to sneak in, I mean embed ;-), a language into a big C/Java program or framework. A language ideally suited for this is lua, for several reasons. The winning points in personal opinion are (in no particular order):
I've spent some more time with ruby. I'm not decided yet whether I like it. Perl was my first very high level programming language (unless you count Bourne Shell) and I fell in love with Perl when I learnt it. Even though I've moved on to Python for most of my stuff, Ruby reminds me of some of the nicer aspects of Perl. There's no question that Ruby is definitely a bettern Perl than Perl, at least syntax wise (as far as performance is concerned, Perl is still king).
Ruby syntax quite different from mainstream programming languages like C++/Java/C# because of statement modifiers and all those weird characters. On the other hand, it's object oriented syntax (i.e class definitions etc) is more traditional. There are private and protected methods. However, instance variables are always private and require method accessors (though it's easy to define them). Python is quite different, there is no protection at all at class level. On the other hand, Ruby classes are always "open", so you can just add another public method to access class internals. You can happily add attributes to objects after they've been instantiated in both languages (though ruby syntax is a bit tricky).
Oh, by the way. I didn't like the online book "Programming Ruby" first edition by the Pragmatic Programmers. Personally, I also didn't like "Pragmatic Programmer" very much, I think The Practice of Programming is a much better and lesser hyped book, but I am digressing. Coming back to Ruby, I found Ruby in a Nutshell a better a read.
One aspect of Ruby that I found frustrating is that most existing documentation covers Ruby 1.6 and there doesn't seem to a good changelog between 1.6 and 1.8 or even what's the changelog from 1.8.x to 1.9. Python changelogs on the other hand are very comprehensive and readable. And finally, of the three languages (Perl, Python and Ruby) Python development appears to be moving forward the fastest. Perl 6 is horribly developed and Ruby 2.0 and Ruby VM also seem to be badly delayed. In contrast, python appears to be making steady progress. Even projects like Jython, IronPython and PyPy have a vitality that's lacking in Perl and Ruby development. However, I must admit that Parrot development appears to be picking up recently and at least one Ruby VM, YARV, appears to be moving along quite well.
I've now started learning ruby in earnest. Why, you may ask? Because it's out there ;-). I made two earlier attempts to start on ruby but didn't really get going. This time I am starting in earnest with the Programming Ruby (1st Edition) book which is conveniently available online. First impressions: Language looks clean - it's definitely more "pure" than Python.
The line noise Perl like syntax (@, @@, #{}) is a distraction, but I can live with it. No bytecode yet. Performance is a bit of a concern. Rite is horribly late (though not as bad as Perl's Parrot). More opinions after I dig in a bit.
I guess this is old news (especially if you read Slashdot) but VMWare has released a runtime version of their VM software calld VMware Player as a free download. I have always been a fan of Virtual Machines and other emulators. QEMU has been my favourite so far with it's kqemu accelerator module. I frequently use it to test different Linux distros and Live CDs. I've also got Windows 2000 and Windows XP running under qemu at tolerable speeds. However VMware Player performance is quite amazing.
Another thing that makes VMware Player so interesting is that it runs very reliably on Microsoft Windows. If you are a reluctant Windows user (because of restrictions at work) or a Windows user wanting to try out Linux, get the VMware Player and download the Browser Applicance Virtual Machine. "Browser Appliance" is a working Ubuntu Linux image. Though it's an older version, it's a full fledged working installation, so you can install additional packages or even upgrade over the network. The VMware configuration file is a simple text file and can be tweaked to install your own OS if you desire but "Browser Appliance" is a great way to play with VMware Player before you try more advance things.
Two comment spams turned up immediately after I made my last blog post. So I checked the comment preferences if there is a spam blocking option, and found an option for word verification. Nice job blogger :-). I'd like to preserve anonymous comments from real peope, so word verification has been immediately turned on for comments. I apologize for the small inconvenience.
There appears to be a growing feeling among some Bangaloreans that their beautiful city has been destroyed by marauding invaders. Like all such sentiments, there is a germ of truth in this. Even I, an "outsider", miss the nice and quite city that I first came to about fourteen years back. The city has grown massively, the infrastructure is in shambles and commuting in the city is a nightmare. But is all this due to the massive immigrant population?
Well, the superficial answer is yes. The real answer is that successive Governments have spectacularly failed to address the inadequacies of Bangalore's infrastructure to address the massive immigrant population. Just look at the incredible delay in getting the International Airport project started. The immigrant population pays a lot of money in the form of taxes, probably more than the rest of Karnataka put together. However, this blog is not about the Goverments' failure either.
Several other people who complained about abusive treatment they have had with Auto drivers, Policemen etc just because they didn't know the local language. If that in itself is not appalling enough, certain "educated locals" in the list, actually had the gall to essentially say these people deserve what they get because they don't know the local language. One brilliant individual went one step further and commented that if you didn't like it you can "go back".
I am truly shocked. I do get a general feel of discontent among the general public because of the poor infrastructure, high prices, astronomical propery prices and rents. I can sympathize with them to some extent. But to have your own cubicle neighbours sport an attitude that you are an outsider who has come in and messed up Bangalore! That's a bit hard to digest.
By the way our internal list is not just employees of my company alone. There is a good cross section of people of people from various IT big names in Bangalore. May be I am making a big issue of some comments from a small but vocal bunch of idiots, but I am really so agitated that I had to make this blog. Now that it's out of my system, I can get back to my regular tech oriented blog ;-).
Speaking about popularity, it seems that at least some people actually read it. It helped catch the attention of at least two of my old friends. N Murali from my school days in Shri Nehru Vidyalaya, Coimbatore and Davi Gupta from my M.Tech days at IIT Kanpur.
So I'm going to make another sustained effort to keep my blog reasonably alive.
I am a big fan of AMD. I have a Athlon XP based system for my parents in my home town, Coimbatore. I have a Pentium 4 based Home PC that given by my company at my home in Bangalore. My company has a nice option of two desktops (one at office and one at home ) or one laptop. I don't like lugging around laptops, so I had opted for two desktops. Recently I have been considering buying my own laptop or switching to a laptop at office and building my own system at home. I decided to switch to a laptop at office and build my own AMD64 based desktop.
I am planning to assemble mine, so what I am going to say now is not a problem for me personally. However, I am very puzzled by the complete absense of advertisements for AMD based systems recently in Bangalore Times of India. I used to see frequent ads a few months back but recently I haven't seen a single one. LG started advertising AMD based LG MyPC but now you only see LG ads with a Intel Inside logo. Same story for HCL. I don't even see the occasionaly ads that I used to see for non-branded AMD based systems. Call me a conspiracy theorist, but is this Intel's literal monopoly marketing muscle at work? Why are there so many advertisements for Intel based systems when AMD based ones give much more value for money?
Yesterday's first Debian Developer's conference went off very well. Many thanks to Prof. Sadagopan, S. Nagaran from HP and all the other organisers that worked in the background. The event did not have high visibility, so I was pleasantly surprised when about a hundred people turned up. You can read more about the event in Natarajan's Blog and Ramki's Blog.
The meet was a wonderful experience for me and I met a lot of interesting people. I have been wanting to meet the folks behind the fantastic IndLinux effort and I had the good opportunity to meet Ramakrishna Reddy. We happen to live pretty close to each other and I hope to attend their developer meet the coming week.
I met some very interesting GNU fans, I don't remember all the names. I do remember Alok. We were talking about GNU Emacs and emacs-multi-tty. I would've loved to chat some more, but unfortunately I had a train to catch to my home town. Speaking about my home town, I met some guys from PSG College of Technology, Coimbatore. I was happy to find some users of my tamil-gtk2im package :-).
They are a very enthusiastic bunch of people, and that's the thing I've been missing about these meetings. You meet so many so many like minded people at meet ups and it's a lot of fun. I think I've missed out a lot by not attending such meets, including the Bangalore Linux User's group meets that used to be regularly held a while back. The BLUG meet is back the coming weekend and I'll definitely try to attend this time.
send-hook '~t <blog_addr>@blogger.com' 'set content_type="text/html"'But nothing seems to work. I have to set the content-type manually by typing "^T" in the Compose menu :-(.
The website isn't completely ready yet, so I thought I should post this on my blog.
____________________________________
First Annual Bangalore Debian Developer ConferenceSaturday, August 20, 2005 2:30pm-6:30pm (Pre-announcement)
The first annual Bangalore Debian Developer Conference will be held at theInternational Institute of Information Technology (IIIT,) Bangalore on Saturday, August 20, 2005 2:30pm-6:30pm. Debian and Free Software developers from Bangalore meet for a half-day interaction on Debian. The conference focus will be technical in nature. Being the first conference and with very few volunteers, we are organizing this conference as a low-key, techie conference. The main objective of this conference is to create a network and ecosystem for Debian Developers in Bangalore.
The target audience is: current or aspiring Debian developers, interested and sophisticated users of Debian GNU/Linux distribution from Bangalore. During the conference a few of attending developers will give talks about particular topics about or otherwise affiliated with Debian GNU/Linux.
Prof.S. Sadagopan, Director, IIIT-Bangalore has kindly agreed to inaugurate the conference.
The schedule will be published during the conference and isn't finalized yet. The broad topics will include discussions on potential development initiatives Debian developers could take up, sharing experience by Debian developers who have contributed and other experience sharing. This conference also aims at defining goals for the next one year among participants for Debian GNU/Linux based activities. The conference registration is free. However, interested participants are expected to be pre-registered. Please visit http://www.iiitb.ac.in/debconf/register.html to register yourself for the conference. You can also register by sending mail to: debconf-bangalore@iiitb.ac.in. Please visit the IIIT-B website for details of the venue and how to reach.
________________________________________________
Acknowledgement: This year's Bangalore Debian Developer Conference is being organized in collaboration with and support from IIIT-Bangalore.
This posting was made by S. Nagarajan (snagrajn@yahoo.com) who's driving this effort to DebianIndia@yahoogroups.com and I am posting this here to reach a wider audience.As some of you may be aware there are only two Debian Developers in India. This is an abysmally low number, and I have to admit that I personally haven't done much to address this problem. I thank S. Nagarajan for taking this up and hope this mini conference helps to get more developers involved.
By the time Perl 6 project started, I had found Python and more or less switched to it for most of my programming needs. Even though I missed the crispness of perl, and had trouble accepting whitespace significance in a programming language long after I stopped programming in Fortran, I learnt to appreciate Python's clean design. However, I still followed Perl development and used to read Larry Wall's Exegesis talks on Perl 6. IMHO Perl 6 changes the language too radically and it's simply taking too long to release. I am sure Perl 6 will be released sooner or later, but it's so different from Perl that I wonder if it will be really relevant. I think many people have or would have moved to Python or Ruby tired of waiting for Perl 6.
Mind you, I am not saying that Perl is dead. Far from it. C has managed to survive mostly unchanged for over 25 years. Perl is a wonderful language and I still believe every Unix programmer should learn the language. I am sure Perl would be in any good Unix programmer's toolbox for a long time to come. My only question is whether that'll be true for Perl 6? Or would people migrate to Ruby which is closer in spirit to Perl than Python.
In case you're wondering, I did spend some time with Ruby. I think it's a nice language, but I didn't find a compelling advantage over Python to switch. Python's evolution is very well managed and I believe Python has and will continue to borrow some of the nice features from Ruby.
Kumar Appaiah comments "If you are really bothered about resource-hungry Evolution, how can you prefer Thunderbird, which is, if anything, worse than Evolution when it comes to resources?". Well, that's not been my experience. Evolution starts other processes in the background (evolution-alarm and evolution-data-server) besides launching it's own copies of spamd if I turn on junk mail checking. Still, I decided to give it another try and configured three IMAP accounts and a usenet account (same as my thunderbird) and here's the resource usage
30984 rganesan 16 0 170m 79m 17m S 0.0 15.8 1:37.58 evolution 8428 rganesan 16 0 223m 51m 22m S 0.0 10.2 1:36.69 mozilla-thunderbird
Even though the VM size comes up smaller, combined with the other background processes, evolution's VM size comes up much higher. Besides, I guess it doesn't really make sense comparing the VM size, it's the RSS which really matters. Evolution also shows up other quirks when talking to Myrealbox IMAP server. Myrealbox's IMAP server doesn't appear to be fully standards compliant but still Evolution's quirks are very strange. Some folders appear twice and the Sent folder doesn't show up at all. The second quirk is especially annoying and strange because when I try to subscribe folders the missing folder shows up as already subscribed. On my other E-mail account on Fastmail, Evolution does not appear to take into account the folder prefix that I give (I tried both INBOX and INBOX.). Any way, despite these issues, I am actually beginning to like the look and feel of Evolution. It's a really polished UI, I'll probably play around with it some more.
I switched to using IMAP because I wanted an account accessible from multiple machines (I don't like carrying a laptop). But IMAP has the added advantage that I can easily switch between mail clients as I please :-). Kumar also comments that he prefers mutt any day. I like mutt too and I use mutt for all my pop accounts (including gmail). However, mutt's IMAP support is not good enough for me because, first it doesn't cache and second working with multiple folders is not easy.
Aaditya comments if I have tried evolution. Yes, I have. It occupies too much screen real estate and consumes too much resources for my taste (just check the number of background processes it needs). However, I'd probably give it another shot because my office has already moved to Exchange and will probably move to Exchange calendaring pretty soon. I've checked that Evolution exchange connector does work as advertised.
I must say it's quite galling for a guy like me who runs a lean and mean desktop with fluxbox (earlier WindowMaker) and screen) inside a plain rxvt without background images to see so much bloat in modern GUI apps. I mean, I remember having a tough time reconciling with Emacs memory bloat. Oh well, I am getting old I guess.
Leena Dasnurkar wants to know which programming language I am using with SQLite and BerkeleyDB. For this particular test I was obviously using C because the internal Btree API of SQLite is not exposed through any scripting language. However, for my applications I use SQLite with Python. As to which is better, I am biased towards SQLite. Despite the extensive documentation, I find BerkeleyDB's APIs pretty painful to use if you want transaction support. The big advantage with using an SQL engine like SQLite and Python is that if you really need to scale bigger it's easier to migrate to PostgreSQL.
E-mail posting was busted the last time I checked. If you see this in the blog, then it works :-).
10428 rganesan 15 0 221m 48m 21m S 0.0 9.7 1:28.20 mozilla-thunderbirdHowever, the resident size seems to keep relatively low (in fact lower than firefox), the UI is responsive and spam checking is pretty good.
In my test program (btree-test.c, sqlite-btree.h and btree.h), SQLite pulls ahead for a transaction size of 512 (512 * 128 = 64k bytes) on my ext3 partition. I assume it's the amount of data that's written inside a transaction rather than the transaction size that matters (I haven't verified this yet). Since SQLite database sizes are smaller than that of SQLite (approx 30% smaller in my tests, excluding the BerkeleyDB transaction log), I attribute SQLite's relative poor performance for smaller transactions to the design of the transaction log and the number of syncs to disk. These tests were with SQLite 3.1.6. I get similar results with SQLite 3.2.0.
Please try the programs above and let me know the results. Also let me know if I've goofed up with the code.
So here I am, grinning ear to ear with a 256kbps connection. If everything goes fine, I plan to upgrade to 384kpbs and eventually to 512kbps. By the way, the BSNL customer service is quite nice actually. You just need the right contacts ;-). The people who visited my home for the connection were uniformly courteous and helpful.
Preliminary data indicates that SQLite does slightly better for tmpfs databases for writes and much better for reads. On normal disks, sqlite seems to do a whole lot better for writes. I'll post the test program in a couple of days. I noticed that the SQLite Btree take up only one third the size of Berkeley DB Btree on disk. That may explain the performance difference because the test program is I/O bound. Please note that these results are very preliminary, I am still learning the APIs.
Speaking about APIs, Berkeley DB is obviously well documented. For SQLite I had to go by the (well) commented source and a test program. Berkeley DB's transaction based API is a pain to use. Despite the lack of documentation, I found the SQLite API much more cleaner and simpler to use. In my next blog I'll present some numbers and the test program.
I am looking for an embedded, transactional B-Tree database alternative to BerkeleyDB. You ask me what's wrong with Berkeley DB. Well, there are no technical issues but the license is not free for commercial use. Unfortunately I couldn't find one :-(. db-1.85 doesn't fit the bill because it doesn't support transactions. Same problem with gdbm. db.* looked promising but that requires a schema definition.
I already knew about SQLite and remembered reading that it's B-Tree API could possibly be used independently. This was in the back of my mind for a long time, so I set to find out if that's the case. I found that the SQLite's B-Tree API provides a surprisingly clean and complete B-Tree interface with transaction support. There is a TCL based test suite (test3.c) that serves as a good example of how the API can be used.
I am writing a test program to excercise the API. I'll blog my progress.
Today was the online round for Google India Code Jam. I didn't make it. I didn't really expect to make it, so I am not too disappointed. The competition is too good. In case you're curious, I came it at the 60th place; only the first 50 get through the next round. A majority of the participants were still in college. I wonder if I am none of the oldest participants around ;-).
I haven't blogged for a while now. I was practising for the Google India Code Jam and I had a bad shoulder pain (the doctor says muscle has gone into a spasm). Let's give a could shoulder to my shoulder (sorry, bad pun ;-). I had a fairly high opinion about my coding skills but the practise problems in the GICJ Arena and general Topcoder arena deflated my ego considerably :-(. May be I've rusted by 10+ years of coding in the industry, but it's more likely that I was never the coding guru that I was ;-).
Any way, I did participate in the evaluation round yesterday and managed to get a reasonably decent score. The server experienced lots of problems and the results are still not yet out. I think I'll make it to the next round, but I doubt I'll go much further. I was surprised at the amount of obvious cheating that went on in the contest.
Any way, I did participate in the evaluation round yesterday and managed to get a reasonably decent score. The server experienced lots of problems and the results are still not yet out. I think I'll make it to the next round, but I doubt I'll go much further. I was surprised at the amount of obvious cheating that went on in the contest.
This is not something new. I occasionally run into problems and it usually gets automatically fixed in a day. This time the line is dead for more than four days. I was not in town last weekend, so I didn't follow up. The line man was supposed to be at my home at 3:00pm today. I took a break from office and stayed at home from 3:00 to 5:00pm but he didn't show up :-(. Not that I am surprised. Looks like I need to stay at home the whole day tomorrow, without net access. I read somewhere that Frustration is searching for your glasses without your glasses. I can add waiting at home for your DSL connection to be fixed without your DSL connection.
Speaking of DSL connections, the line probably went dead last Thursday. I noticed that the modem sync LED kept blinking. Usually it gets fixed overnight. It didn't happen this time. I noticed that the phone line was also down only on Friday evening. Shows how frequently I use the land line ;-). Then I had to leave town, so it's now five days since the line went dead :-(.
An anonymous poster has commented if I've checked out balsa. I've checked it out before but wasn't too happy with it. I'll take another look and post my feedback soon.
This one qualifies as the first rant in my blog :-). I have been hunting for a good imap client to manager four imap accounts (yeah, I know that's a lot). Unfortunately I can't find one. My setup is somewhat unique. One of these accounts happens to be on myrealbox and since that's kind of a experimental box for Novell, the server keeps going down. Their imap server is also pretty lame (searches don't work) and has some strange quirks. The second problem is tha two of my accounts (including the myrealbox one) get too much spam. Less than 5% of the mails to these accounts are valid mails. Rather than filtering them on a GUI client, I have setup imapfilter with spamassasin to spam filter my mails offline. This results in mails suddenly disappearing from my inbox. Looks like some clients have trouble with that. I'll revisit my spam filter story some other time. Lets focus first on the mail clients.
Thunderbird is nice, seems stable, but bloats to 200MB of memory usage with just two imap accounts. That's unacceptable, so that's out. kmail did better on the memory usage front but it's imap support is pretty buggy. kmail appears to have problems with both unreliable servers and disappearing mails. I have been using it for quite a while but the problems still exist with the latest version I tried (KDE 3.3.2). So I gave up on it and tried evolution. Evolution seems nice but seems to take up too much screen real estate and too much memory. It also seems to have a strange quirk, showing an unread mail in the folder window when none exists (Evolution 2.0.3). I've used sylpheed before but it's still gtk 1.0 and looks ugly as hell. I found that the gtk2 version is packaged for debian. I am trying it now and liking it so far. I'll see how it goes.
Before I finish this rant, I owe a apology for the authors of these mail clients. I understand that bugs don't get fixed unless some one reports them first. I really should be filing but reports about the issues I found. I haven't done that yet.