Archive for December, 2006
The 20 Most Innovative Products of 2006
PC World has an article about the 20 Most Innovative Products of 2006. It’s a good read and their picks include Wii to Seagate 750GB disks.
myFeedz – personalized feed reading

Got to know of myFeedz today. It’s not a simple RSS reader application, or not a technorati clone. It understands and learns the kind of things you like to read, and presents them to you. You can specify the tags you are interested in and it will collect posts based on that. You can also let it know if it found something that was “off-topic” and does not interest you. It will try to avoid such items in the future. The look and feel of the site too is pleasing. And on top of this, it offers an RSS export facility, so you can set up the tags you are interested in, subscribe to the RSS feed and read all that in your favorite RSS reader.
Looks good. And if it does well on that “learning what you like” part, it can be a killer app!
Magnet HackFest01 Report
And it is over! We completed Magnet’s first HackFest at 5pm today. A bunch of hackers came together on 23rd December at 5pm, and hacked internals of systems, coded cool ideas, researched on future trends, watched movies, ate pizzas and vada pavs, goofed around, and had a tremendous experience in 24 hours.
As I already wrote yesterday, we settled in, brainstormed about ideas, and then played Quake. It was 9pm by then. Some had started working on their ideas, some were interested in playing more. We ordered pizzas. The pizza guy came in on the 27th minute (30 minutes, nahi to free, right?). Asked the pizza guy about who pays the bill if he gets late. Have seen and heard in the movies that the pizza guy has to take the loss. He said the company pays. The pizzas were good, and we were stuffed by the time we finished half of what we ordered.
That was right time for a movie. Juggled with a few options and finally decided to watch Resident Evil. Watched the first part, and half of the hackers were already on their computers by then. Some even watched the second part. It was getting pretty exciting by that time.
My first hack task was over, thanks to the automatic fix on the popularity contest plugin for WordPress. So I started looking around for other things. Wanted to try out Photoshop CS3, so kept that on download. Guess when I finished the download? No, not in the morning, it’s still not done! The Adobe Labs’ download process is a little finicky. For one, it requires you to login to download the beta. And then it would not work with wget / other download manager. I am on a Mac, and I started the download in Firefox. Now Firefox has this big annoying problem with downloads. If you loose connection in between, or pause the download, sometimes you have to start it all over again. I did not want to put a 685MB download on Firefox, but then I did not have wget on the Mac. So I said let me start the download, and download and compile wget in the meanwhile. I had been delaying it for quite some time anways. So I downloaded wget source code and went to compile it. Realized there was no gcc on the machine yet! Got the Mac OS X DVDs and installed the developer tools and gcc. The compile would still now work and failed with the error message: “C compiler cannot create executables”.
Now that was something I got for the first time! A little bit digging around, and reinstalling the packages did not solve the problem. Installed gcc-4 instead of 3.3 and then it was ready to be compiled. But by this time, I found out that though wget does not come with the Mac anymore, there is cURL. And I can do more things with cURL. So tried to hook up my CS3 download on cURL, but it wouldn’t go ahead without a login. Gave up on the attempts as the download was progressing well.
Started looking at doing something to show related contents from other blogs when you are seeing a blog entry. I already have a “related posts” plugin to WordPress, and thought it would be good to have links to other blogs who are related. Naveen did some research and found out Sphere – it does the same thing. Albeit with an unfriendly interface. And then I found out that Google too has a “related links” provision. Had seen some wonderful visualization done on the principle though. And I think this is still an open idea – visualizing the related content – similar to what LivePlasma does for CNet news via big picture.
I also wanted to solve some long pending problems during the hackfest. So took on doing something to manage the software updates for the Macs we have in office. We have 3 MacBooks, a PowerBook, a Mac Mini, and an iMac. I wanted to have a system for software update for the MacBook, so that we don’t have to download the updates individually on each laptop. Now if you know the Software Update process on the Mac, it’s pretty much automatic. There are not real options on the interface to point to an update repository. I had done some research on this earlier and knew that the Mac OS X Server has a feature to update all Macs from a single update server. We did not have the OS X Server, so I had to do something else. A lot of reading and some Google later, I found two things – the Software Update Enabler which allows me to point to a URL of my choice for getting the updates, and a shell script – sumirror – that can mirror the Software Update repository one machine for you. This was very much what we wanted, so I started working on it. A few hours of hacking, and we now have a solution that works for us. I modified the shell script to detect the requests made by the client, and which were not found (via 404 messages in httpd.log). Then took that list and got the IDs of the packages that were queried for. Remember, we did not want to download anything extra – the Mac software and updates are very heavy and I don’t want to kill my bandwidth on them. So I made it pick up only those software which the client checked for. After getting this list, it was a bit of processing on the software update catalog file to get the correct URLs to download the files, not downloading languages other than English, and testing things out. I am very happy that this worked, I wanted to do it for quite some time. I will write up a detailed note on this in the coming days, so if you want to do it, you can do it easily.
Did a lot of other research while all this was going on. I am actually thrilled that I learnt so many new things. Here are a few things I tried / read:
- SpeedDownload download manager for Mac. I am happy with cURL.
- Using Lucene to find related content
- Adobe Apollo – cross platform rich internet application development
- Read a few things about Apple internals at the Developer Connection
- Mash ups and APIs at ProgrammableWeb. Worth mentioning is Attendr (on the lines of Glancer) and liked Beam Me Up Hottie
- All the Google APIs, and especially the Google Calendar API. Vinay and Mohan are creating something based on that and the Flex Scheduling Framework now
- Got Firefox 2, which still does not fix the download manager problems
- Read about Yahoo!’s HackDay and Gutentag
- Watched Iain Lamb’s “The New Hacker’s Toolkit“
- Also watched Bounding by Pixar this morning!
- Bad that Orkut does not have any APIs now! There would be so much created if there were
- Downloading Parallels build 3306 beta now
- Learnt an easy way to send screen captures instead of web camera on a conference using Flash Media Server
- A little bit on Second Life
- The 2007 Web Predictions from Read/Write Web
- The MyBlogLog widgets – pretty interesting they are
- Am also excited about Spry and other things on Adobe Labs
- Tried getting Ethereal on the Mac, didn’t work – don’t want all GTK libraries on Mac yet
- Looked around HexEdit, setup Adobe Reader for Mac so that I can use digital signatures
- Looked at SearchMash – and the idea looks good
- Oh, and even installed CrossOver to run Windows apps
And then probably a few other things! I had downloaded the Photoshop CS3 setup on our server, using an SSH and lynx, and was downloading the balance 163mb after the connection broke. And a few minutes ago, the download completed. And vanished! I can’t find the file anywhere now. Will have to download the whole thing again now! This is really a pain.
Apart from that, it’s been a great hackfest! Vishal is working on profiling database queries for optimization, Kartik is working on having festival speak in Gujarati. Arun worked on shutting off all the servers from a single machine, and is looking into fax support for Asterisk. And I just heard some noises from Vinay and Mohan, looks like they got something done!
And here is an interesting panorama that Ameya took. Vinay, Arun and Mohan interviewed me and Kartik – about programming, hacking and general questions. This photo is of that time.
What are we doing this weekend – hacking!
Kartik, Naveen and Ameya have organized Magnet’s first HackFest this weekend. Eight of us are here, ready to hack, and stuff our stomachs with pizzas and pesticides (err.. Coke). We already have some stuff going on. Participants so far are: Kartik, Naveen, Ameya, Vishal, Vinay, Mohan, Arun & Me.
Kartik kicked off the HackFest and told everyone about the schedule. We logged in at 5.15pm and will be logging out tomorrow 5.00pm. Till then, we are in the office, no one stepping out (except the organizers
We brainstormed ideas of what we can hack on! Shortlisted a few, and after the pizza party, things will start rolling.
Till now, people have just got their feet wet. Researching a little bit here and there. Most of the research by the way, has gone in getting Quake working on all the machines here. Couldn’t join the arena from Linux / Mac yet. The Frag Match is over, and the winners are announced – Kartik and Vinay. I didn’t know Kartik was so good at Quake (or that the rest of us are so bad
I started on finding more about the popularity contest plugin to WordPress, to fix the spam comment problem I had – it was taking even the spam comment counts in calculating popularity. Surprisingly, it just worked today, without my changing anything. Not sure what changed. I reviewed the code, ran it, and it worked! Looks like my aura is really getting stronger!
Have made a list of things I want to work on. Let’s see where we reach!
I have put up some photos in the gallery under HackFest01, will be posting more as I process them! Will also post updates here.
The Asterisk Saga
We worked on an Asterisk setup project two weekends ago. It was a rocking experience. And Ameya, one of the heroes in the story, has written up a nice saga on it! Credits to the whole team that worked on it, and thanks to Ameya for writing this up!
Here you go on the Asterisk Saga!
It was Friday evening, Time to party. Not just yet! We came to know about this project. The Client’s requirement was to setup a working Asterisk Voice over IP server. This would enable them to route internal and external calls using a computer, a Digium ISDN card, and the Asterisk software. Seven companies had laid their hands and minds on it. Sounds interesting? Yes on a weekday it would be.
The client had a server with Asterisk installed on it. But it was not working. Many people, including some regarded as experts in the field, had tried to solve the problems for the last two weeks, but everyone failed. And the client wanted us to get this working before Sunday – at any cost – as there was an important presentation to the CEO of one of the largest telecom companies in India. Does it get any bigger than this! Of course it does. Read on…
To give you a little background, we have an Asterisk based phone system setup in our office. Nirav – our Chairman – had blogged about the problems we faced setting it up with the ISDN line. Sudish – the client – read this post after a Google, and got his ISDN connection working when he followed those instructions. That’s why he called us up, after some failed attempts from many.
Nilkanth, our Systems Team Leader, and a true hero in this story, informed the team about the project. The server was physically located in another city, and we had shell access to it. Nirav had setup most of the things on the Asterisk Server in Magnet. And Ali knew some part about dial plans. Rest of the team knew only the basics of the technology till that Friday evening. Then What?
What else? We jumped in to the battle like brave warriors, The first enemy to tackle was getting hold on more than the basics and doing that with a timer. We had just one plan. “Ground work first” and all the detailed documentation, long process can come in later. Quick analysis seemed the need of the hour and the only trigger we had was a couple of Samosas and chai. Not a bad start at all. The first strike from our team was a detailed check- list of priorities, delegation of all the duties on the list to the best to be working on them. Who knows better than our Nilkanth of his team capabilities?
Now, things started like this for us. Ali left early that evening. Nirav and Nilkanth were working on the server to fix the issues. The Asterisk server was not able to route outgoing calls at that time. There were lots of errors and warnings. We found many files edited by different people. Initially, we tried fixing them. We grouped the errors, set priorities, and got on to them. But the setup was all messed up. It was 6pm by then. Nirav had to leave so, he told us which important files need attention and left. So there was Nil, Arun and me. We tried to fix those errors one by one. But it still did not work. We decided to re-compile Asterisk. We took a backup of current configuration, downloaded the version the client wanted, and re-compiled. We re-configured things. Now we had fixed all the errors – the log files were clean. The outgoing calls from command line were working fine. But, the incoming calls were not coming in – seemed like they were going to a blackhole! Various Voice over IP clients like eyeBeam, SJPhone were showing the Error 403!! It was 3am Saturday by then. We had already decided that no matter what happens, we are going to get it working and only then we will leave for home. Challenges don’t push us down, they make us rise higher!
The spirit of the team and determination to get over the problem helped us to stay focussed. Each of us motivated the other person.
We rebooted the system since we had re-compiled and re-configured, but… we invited more trouble!! The server was unable to detect the Digium card that connects the software with the ISDN line bearing the telephone connections. Oops!!!
This was like adding insult to an injury! We were stuck and no one could suggest how to proceed. We Googled the error. We decided to insert the card in a different slot on the computer. We called up Sudish, who was awake with us and asked him to plug-in the Digium card into another slot. He immediately arranged some person on the site and did exactly as we asked. The machine was rebooted again. And the error still showed up!
After some deep debugging, Nil figurred that the problem is due to Kudzu. Kudzu is a hardware detection agent on RedHat Linux, and it was detecting the card, but not able to understand what it was. We shut off Kudzu on the server, and that got the card back to life!
It was Saturday morning now, and the phones were still not working. Vishal – our CTO – pitched in and we all started working on identifying what’s really causing the problems. Vishal’s jumping in encouraged the team and showed his commitment. He brought a new perspective and was really helpful in checking our assumptions and also researching.
Sudish had a hair pulling time while all this was happening, as the time for the presentation was approaching very quickly. He had all his hopes on us. Did that pressurize us? No we were honoured by the trust.
Sudish was very cooperative in all this… he was with us, offered us his ideas, showed great faith in us and supported us thoroughly. As a matter of fact he was also awake with us to help us. What more can we expect?
We then took a new approach. One closed door did not stop us. We just looked out for another one. We started observing the issues from another angle and brainstormed to analyze a little differently. We divided work: we took turns to download, research, try on our server, communicate with client, think / plan, take care of needs etc. This helped each ones point of view bring new solutions.
Right then, we found that some of the pre-requisites for the operating system were not installed on the server. We downloaded and installed all those hoping that it would fix it! Lady luck was not in our favor, and doing this too did not make the system work! The day went in configuring and re-configuring the setup. Trying out different combinations to see if something would work. The same setup files that worked for us, and a lot of other people, did not work on this particular server.
Sunday morning…and we were all stressed. The client had urgent requirement, the team was working continuously on this from Friday morning, putting their best efforts. Vishal was with us and Nirav in the loop. Nirav actually logged onto the server remotely during break timings of his seminar and tried to solve the problems. Unfortunately, he could also not solve it. This was really getting hot now!
Sunday morning, we spent half an hour discussing the problems and possible solutions with Nirav. He encouraged the team and showed his support. He told us that he will get back to us on chat by evening. But I had some intuition and I told him… “hopefully we will tell you that things are working.. by evening”.
By late morning, we were getting close. We had fixed most of the problems. We were now able to receive calls on the server. We could make outgoing calls from the common line and the interactive voice response system was working too. But the extensions were not registering with the server yet. We re-considered everything. We had a very good dial plan, we had all files configured correctly. We had provided all dependencies to the kernel. So there was very little chance of any problem with all that. Now the only thing that could have some problem was – well, Asterisk itself!
We planned to install the latest version again. We compiled Asterisk 1.2.13 keeping the configuration and the other libraries files intact. Vishal started eyeBeam software phone client and to his surprise, it registered! Catching hold of his excitement, he tried it again. And it worked again. He tried calling, and that worked too! Within a minute, all of us were on it. And every single thing worked! We checked the incoming calls, outgoing calls and the calls within network.. everything working fine! The final compilation helped us fix the issue. We setup our final extension dial plan. And called the client from the working software phone, and gave him the good news! It was Sunday afternoon, and our afternoon tea was unforgettable that day! Not less meaningfull than a medal that said “GREAT” and “ON TIME”.
And now, of course the moral of the story! First of all, weekends don’t need to be the same, they can be more intersting than you are prepared for. Teamwork, Dedication and Planning can take you out of the most difficult situation. We did well but that would not be enough if our planning was not to do it on time and that made all the difference. So conclusion – we understood the final goal, we chalked the steps to get there. We started as a team and finished as a team. We left each work to the best in the team. We enjoyed the challenges. We went back to the drawing board when one option did not work. We assured and updated the client at all times to find more faith and trust each time.
I think that’s one rocking weekend one can have, I could not learn and experience more in 48 hours. Waiting for such interesting weekends ahead!
(People in the photo above, L to R: Ali, Jayesh, Nilkanth, Arun, Ameya. Thanks to Prakash for the creative work!)
