I don’t notice it often, but I keep my laptop plugged in and on for longer and longer nowadays. And except for Firefox (which I ditch and switch back every two weeks) everything else swims along fine.
If you’ve installed the AIRSDK (and it’s dead easy, just extract and copy it somewhere), you’ve got a lightweight cross-plaform VM to program apps in. Best of all, it works with HTML and Javascript.
In about an hour, I hitched up a calculator application. It’s very easy:
Every now and then I find myself defending Apple and its products. Besides the unusual (over here) honor of owning two Apple computers, I’ve not indulged in any obvious Apple fandom. I like their products, and I smile when I hear OS X being compared to Windows. Regardless, one of the more stupider criticisms of late that I’ve heard is vendor lock-in and how being on OSX somehow locks your data up. This is obviously precipitated by Tim Bray’s unswitch and a couple of other related posts. This is a rebuttal.
OS X is an operating system and it does nothing special to pack your data in and hide it. “Vendor lock-in” occurs probably when you use Apple’s applications. iApps, possibly, or those bundled with the OS. Solution? Don’t use the bundled applications, or use them alongside open data stores. Let’s take my Dock. There’s Adium, which is a port of the opensource Gaim, Skype which is platform independent, Safari, which I use alongside Del.icio.us & Google Bookmarks; Netnewswire, which is an RSS reader and which syncs everything up to Newsgator, the built-in Terminal, ITunes which might take my music ratings along with it (big deal), downloading songs using Transmission, Bittorrent & XTorrent, Textmate which afaik is just a text editor, and Photo Booth, which just takes pictures and stores them as images in my Pictures folder. My email client is Gmail.
Otoh, I use the plethora of opensource tools made available to me through Darwinports: Netstumbler, wget (which is my download manager), curl, and other opensource tools like Neoffice, etc.
I can’t see no vendor lock-in here (sic). Please move on.
Just a quick note (will expand later, hopefully) to let you know that Barcamp Hyderabad 3 happened and I was there ‘Twas a fun event, and a good two days away from work.
A request to unconference organizers tho: no wifi sucks big time.
I’ve stopped working on JRuby, but I’m keeping an active RSS eye on the project. It seems very promising. Meanwhile, my slides are up on SlideShare.
I’m going to write a bit about Ruby in Java land. Much of this post stems from the Sun stall at FOSS.in: to put it mildly, it was perhaps the most enthusiastic stall I’ve seen at a conference ever. The energy of the guys there was incredible and their enthusiasm to show things off (and Sun does have a lot of nice things to show off: dtrace, ZFS, glassfish) really made me give a second glance to the entire Java + Ruby thing: JRuby, or a Ruby implementation in Java, and Rails deployment via the Java Enterprise stack. I’ve been playing around with it for a day, and I’ve got just one thing to say. It’s cool
A bit of a background: I’m not a Java guy. Repeat, not a Java guy. So when people say that the Java toolset is amazing, I’ve always not understood what they meant. Who needs toolsets, widgets, a GUI, an administrative console; when you’ve got SSH & shell scripting? The last four months developing SlideShare however, have been a bit of a revelation: managing servers is a tough job. Our current stack includes a lighttpd->pound->mongrel chain, and monit to watch these processes and start them off if something goes wrong. Lots of glue code, and solutions that seem hacks now (a separate uploader mongrel, anyone?). Anyways, the role of a sysadmin sucks: big time, and the toolsets to manage a traditional *nix environment requires too much of manual work. [Stuff such as Puppet might negate this, but I digress…]. So it was kinda really nice to switch on Glassfish, drop a .war into an autodeploy directory and watch the application come alive. And have an actual GUI console to manage all this stuff, read up on the logs, configure routes & services, etc.
I’ve not done much: just installed Glassfish, played around with asadmin start-domain domain1 and the console, and then installing Jruby and the easy Java + Ruby integration. Look at this code, for e.g.:
#!/usr/bin/env jruby
require 'java'
set = java.util.TreeSet.new
set.add "foo"
set.add "Bar"
set.add "baz"
set.each do |v|
puts "value: #{v}"
end
string = java.lang.String.new
string = "Vishnu"
puts string
Sweet ain’t it? One of Ruby’s selling points has always been that it’s easier to drop into a low level language (C) and write extensions for expensive functionality, thus negating Ruby’s slow performance. But stuff like the code sample above should make it pure nirvana for expensive operations. I haven’t compared speeds yet: I’ll do that soon using a simple Web framework like Camping & then a simple Rails app (i.e. Camping/WebBrick on Ruby and JRuby and Camping/Mongrel vs Camping/Glassfish: if I can get it running). JRuby isn’t perfect yet: Rails applications aren’t officially supported, but I hope to get a useful app deployed on localhost soon, and if there’s interest, deploy it to my slice. It’s an upward slope though for me, since the whole Java deployment scene [making a WAR] seems so bloody complicated (why, oh why?) but a good indicator for good Ruby/Rails deployment on JRuby would be to just type in rake deploy and have your code get into the whole Glassfish stack.
I’ve been learning the ins and outs of the metaclass. That sounds cool, but it’s badly named: the term singleton class succinctly describes the concept. To prove my Ruby fu, I decided to implement Polymorphisms in Ruby. The hole is this:
class Test
def a
puts "Hello World"
end
def a(p)
puts "Hello #{p}"
end
end
test = Test.new test.a
…will choke, because unlike C++, Ruby doesn’t understand multiple definitions of functions. It just redefines them, so as soon as the second function a is defined, the first is overwritten. (And since the second definition has a required parameter, changing its arity, the compiler intepreter chokes.)
Enter Morphable. Include this in your class, and methods automatically polymorph depending on their arity. self.included, self.method_added, and method_missing voodoo. There’s no tests (no TDD for me, yet) and no benchmarks (although with the amount of wizardry going on, it’ll be slower). It’ll also for sure break complex meta programming in your own classes
Refactored:
#!/usr/bin/env ruby
require 'morphable'
class Test
include Morphable
def a
puts("Vishnu Gopal")
end
def a(love)
puts love
end
def add
puts "No numbers given!"
end
def add(a, b)
a + b
end
end
test = Test.new
test.a
test.a("Love me blind!")
test.add
puts test.add(100, 200)
Download Morphable here. [I’m in the process of setting up a public Subversion/Trac repository. That’ll be available soon].
Condensed: One gora, a madrassi and two longdas (of whom only one deigns to be online) attended Kai Voigt’s MySQL Cluster talk at ValueOne today. Here are my thoughts:
First off, the talk was pretty interesting, and any talk that has a live demo in it has my vote on being useful and down to the metal. An interesting overview of the whole process, including what clustering means and an honest appraisal about its pretty crippling deficiencies in 5.0 [no on-disk store, no persistence, anyone?]. 5.1 is supposed to Make Things Better, but Fulltext Search is still hazy.
Which made me think about memcached and how similar clustering as it stands right now is to danga’s (semi)beast. Except of course, the pretty important difference of having an SQL interface to the data on top. Well guess what, I’m not the first person (Google Cache link) to think about this, and
even a thread on memcached lists asks this question. Multiple levels of caching seems to be the way to go though, right from Squid (or better yet, Varnish) down to an in-memory cache.
Right now, stuff that looks really cool for server deployment (from my 2 month experience at Slideshare):
Xen and virtualization. Dom0 Gentoo boxen running Gentoo kernels optimized for a web/app/db etc (see EngineYard [movie]).
Solaris and ZFS pools for reliable local storage (clashes with 1, (open)Solaris is not even yet domU). S3 or homegrown MogileFS-ish platforms for distributed storage.
S3+EC2 (reduce latency to S3 via an EC2 stack and make S3 behave like memcached or better.)
Well, I want to play with all of these seven. Good news is that Leopard will have dtrace (and possibly even ZFS), the cool things from Sun, and I’ll be able to play with the rest on my Mac anyways.
So, something more now to answer what I’ve been up to the last few months. Making SlideShare, that’s what!
SlideShare is a cool tool to share your Powerpoint (and OpenOffice) presentations w/o emailing it to them. We however have got a unique take on the concept, so go check it out.
Kapil’s post (and Amit’s) has way more details, and if you want the scoop from a higher authority, skip to Techcrunch.
A question that I’ve been asked by every one of my friends back home. Two(+) months is long enough for an answer, don’t you think? So, well, here goes my attempt at a reply.
A quick background: first time I’ve been out of home, first time living alone, and my first job. Many of these impressions about Delhi might be colored by those firsts, and they probably are. Witness my to-do list for the first week I was here [reproduced verbatim, and thoughts that come to mind soon after] (as promised):
Paper, and notebooks to write. A daily diary, as is my habit.
Waste paper basket.
Detergent. Clothes need ‘a washing.
Old newspapers. Borrowing a trick first learnt from my dad, this makes for a quick after-meal cleanup.
Paper plates.
Arrange for washing clothes (+ironing). In the months past, with the exception of a weekly washing of my unmentionables (some of which will soon be relegated to toxic waste), I’ve only washed proper clothes twice, both times when a maid that’s supposed to come absconded. As an aside, paid help in Delhi is very cheap (imagine paying somebody 150 bucks[$4] a month to clean your room and wash your clothes), and equally unreliable.
L.C.D. Monitor. The one I’m seeing this stuff on.
Hair brush. Eventually bought two, and never used either one. Rue my fashion sense
Plastic covers. To put stuff in, very useful.
Bathroom slippers.
Small mirror. Which my flatmates promptly broke. I shaved without a mirror twice (kind of easy to do actually) before they replaced it with a life sized one.
Scissors, stapler and blade.
Cellotape.
Tissues.
Which makes for a proper pedestrian todo list. Enlightening then, is the fact that the only thing that I thought of buying before I came to Delhi was the monitor. That and get an internet connection as soon as possible. Real Life does make you get your priorities straight.
Delhi is fun. It’s big, traffic signals are kilometres apart, and “close by” has a new definition altogether. Ashok, for example, lives close by. So does Vivek (a la Torque fame), but to reach either of em, I have to travel around 10-20 mins by auto. I haven’t traveled around much, but to the places I have: near ones like Priya’s and Saket (both of em malls and PVRs with ze Bangalore-ish trendiness), farther away ones like the Parliament House and India Gate and CP (and the inside of an MP’s flat courtesy Anil), and even farther places like Nizamuddin, it’s been a really cool experience. There is a lot to condense in one post, so you’ll have to take my word for it, Delhi is a good place to be. And also, surprisingly unpolluted.
There is a lot that interests me about Delhi. I’ve started reading newspapers (mostly because my usual Google News updates don’t work with my schedule right now) and the local supplements always mention tons of cool stuff to do. Like plays, shows in art galleries, fashion shows, pop performances, foreign dance scenes, film festivals and so on. It doesn’t do much for the techie in me, but I’d love to frequent places like this. Especially art & design shows. Unfortunately, work eats into around 90% of my time, and the rest I happily sleep. In other news, my plans to go to the gym and become Hrithik Roshan is also arrested coz of this very reason. =)
There’s a good 90% of my time then that I haven’t talked about. The work that I do at Uzanto. There’s a lot to tell there too, and I’ll take that up later. We’re working on something really interesting. I’m not allowed to tell more, but invites will soon become available to people who clobber me with affection.
Indian State Encourages Microsoft Removal. Guess which state? I’ve seen though what e-governance initiatives in Kerala tend to be about, and how “technology-aware” the government is. Trying to link this news to the fact that Kerala is the most literate state in India (debatable, again), etc. is just well… pathetic.
To the assorted legions of my blog-readers ;-), a big sorry! In hindsight, I should have expected this big delay before I could post (since I chose not to chug my laptop along) - the problem of course, is that I don’t have a box at home. My Mac Mini (which I did choose to take along) stays at the office where it has a monitor, keyboard and mouse attached. [The lesson of course is that, despite being an incredible device, the Mac Mini can’t do what it’s not designed to. Ergo, BYODKM. But, as usual, I’m digressing.]
One word to encapsulate my Delhi experience. Eventful. Five words? A huge fricking learning experience :-). My to-do lists, (which I’ll post soon) should be illustrative, but I learnt a lot about the big L these past two weeks. It’s been nice too - have had no real horrible experience so far, and in general, I’ve really liked it.
Making good friends has always been a problem for me (because I’m a bit of an introvertish freak) but hopefully in time, I’ll make em. To counteract that however, I’m very happy being alone and I find lots of things to keep me occupied. Reading books - something that I couldn’t do much the last six months - is what I’ve been doing mostly. Five books in 2 weeks is pretty good :-). And yup, digging out movie festivals and going to em (detailed posts later). I gotta go now. But hopefully, I’ll get a monitor soon and things will be back to my usual erratic self.
I demand a public apology. You bungled up the BPL transition horribly, and you have to make amends. Face the facts: it’s been over two months since BPL Kerala went pink, and the customer experience has continued to be horrible. If there’s a way to acquire a controlling stake and then integrate a different operator service into your framework, you’ve shown us that this is not it, definitely.
Constant “network busy” errors, wacky billing errors, zero availability of the 111 customer service number (on purpose, perhaps?), changing helplines and recharge shortcodes without any definite intimation, taking down your value-added-services almost at a whim, and the best of all - forced re-submission of all registration data! Just because you are all pretty in pink (and orange and whatnot) doesn’t mean that customers will flock to you.
And what a letdown! The huge “Hutch is coming” feeling that permeated the state and the immense publicity of the launch-day gala made me think, “Wow, I’ll finally get to use a real operator.” Call forwarding, call waiting, put a call on hold, maybe even GPRS and some 2G VAS. But nope, you gave me hell on earth. If I want to make a call from my cell - to any other mobile operator, including intra-circle calls - I have to face on an average, on bad days, at least a 2 minute delay while I work out the network busy errors: there’s no clear-cut solution except to press “redial” again and again and again. And when finally the call does get through, bad reception and voice quality, crackling and interference and sometimes even connections to completely different numbers! We are not living in the 1980s any longer! And just because this state happens to be way down (geographically) doesn’t mean you get to play frisbee with us.
What I’d like is some kind of admission that there are problems. Some kind of data that says that you are working on these issues because on-the-road user experience is way worse now than two months ago. The only positive indication seems to be the way coverage has improved, but that’s such a small piece of the pie. Instead, every one of the bland customer-support personnel seems intent on regarding mistakes during the transition with an all-in-a-day’s work attitude. The axiom seems to be “The customer will always suffer”.
There was a particularly funny incident (in that sad but funny way) during one of the earlier days. Hutch (and earlier, BPL) provide a status SMS immediately after the call gets over which has the amount of money that I spent on it. That’s the useful information, the rest of it are ads. But I’m digressing. By design, these annoying messages are only delivered once after a call. On that fateful day, around every three minutes I would receive that very same message on my cell. Irritated, I called up, to face an irate customer-care rep who got angry at me for disturbing him in the dead of the night (It was around 1). While on a personal level I pity the customer-care reps, the technical bungling that had to happen for a frickin disaster like this only proves my point. Didn’t you have a plan before you ventured into the merger?
Do give me some indication that the tide is changing. Be (wo)man enough to admit that you made mistakes too. An SMS that I got today said I’ll have call-waiting and forwarding enabled finally. Is that true, or is it more promises not delivered? Or is it something like what I like to call the Hutch-recharge-loop: when I call 141 to recharge, it says “Call 500,” and when I call 500, it says “Welcome to Hutch. BPL Mobile is now Hutch. Call 141 to recharge.” How is any uninformed customer supposed to recharge his mobile connection?
Do not bungle up again. Please. I like the image that Hutch offers to the media a lot. The cool kid on the block, the cool ads, the really cool understated media presence. I’d really love to be a Hutch customer. But give me respect.
The monitor attached to my Mac mini went up in smoke yesterday, leaving me unable to use that sweet machine. Going back to Windows for a while is giving me something akin to a withdrawal syndrome. No joke.
I recently bought a Mac mini (yay!yay!) and it started up and asked me for a name. This got me thinking about how I name computers. My first several computers (A 286, 386, and a 486) remained nameless, but every one of them after that had a nice glorious name.
Almost always female, this name was devised mostly at the spur of the moment, often from books that I’d be reading then. Ione for example, a lean P-166 machine, was named after one of the AIs in Peter F. Hamilton’s Night’s Dawn trilogy (btw, that’s still one of the best non-core Scifi books I’ve read till date).
My bro named my current primary machine (An Athlon 1800). He calls it BLAZE. It’s a name that I’m admittedly not too fond of :-). There was also a machine called Seven (A P3-500) of the Seven of Nine fame. My notebook (A Centrino) is Athena, the Greek Goddess. You get the drift ;-).
What’s up with those machines now? Ione, which currently my mom very sporadically uses, is probably going to be given away soon. Seven, which I’d been using until now as my secondary box is going to be offloaded to her, and Blaze, well, it still has a few years up its sleeve, especially with a stock new 7800GT7900GT in its innards. My notebook is still the box I do most of my work on, although I’m slowly offloading a lot to my Mac.