Sunday, December 30, 2007
Tuesday, December 25, 2007
I did just that.. I installed evil inside the good.. Okay, don't worry.. I was not touched upon by angel and visited by God. I was talking about installing and booting Windows from inside Linux.
I used a VMM (Virtual Machine Monitor) called Qemu for this. Qemu came installed in my Dapper Drake.
I had some problems figurging out using the options. The options tell Qemu what to do and what hardware resources are available.
So here I what I did.
First, I create a virtual harddisk image using the utility qemu-img. Below is the command that I used. The below command creates a 4 GB virtual harddisk.
qemu-img create ./hda 4G
Second, I boot from Windows CD by specifying the cdrom device and also specify the virtual harddisk created by me in the earlier step. Once I execute the below command, I boot from the Windows CD and then go on to install Windows on the 4GB virtual harddisk.
qemu -hda ./hda -cdrom /dev/cdrom -boot d
I found that the performance of Windows running as a guest OS is not that bad. It is close to real.
Qemu, emulates a default set of hardware. For example, it emulates a RealTek NIC (Network Interface Card) to Windows. Windows installs the driver for the RealTek NIC. The last screenshot shows hardware configuration of the virtual machine.
I was trying to do all kinds of crap in trying to modify the faulty c:\boot.ini.. I was trying to mount the NTFS partition as read-write and I was today trying to boot windows from within Linux (using Qemu). I think I was thinking too complicated.
It just struck me as to why not I try this simple thing - Try booting from my Windows XP CD and get into recovery mode.. if there is one. To my surprise there was a recovery mode which just gave a command prompt. I just replaced my faulty boot.ini with the original backup. And thats it.. I am done!!
I had my windows boot as normal as before. :)
But it I learnt a great deal from the whole experience.. about mounting NTFS partitions and about loading Windows from within Linux.
Sunday, December 23, 2007
I found this wiki - Unofficial Starter's Guide to Ubuntu Dapper Drake - very useful for configuring fstab such that the windows ntfs partitions are mounted automatically during bootup. Now would you want your primary partition to be mounted with read/write access all times. I may not want that. NTFS partitions are anyways are mounted automatically as read-only by Dapper Drake. Unless you have a reason to modify some file in the NTFS partition, you may not want to mount it as a read-write partition. I had reason to mount my primary windows partition with read-write access. I had to modify the boot.ini file for windows to boot properly.
Even after modifying my fstab as given in the starter's guide and rebooting the machine, it still did not mount the intended NTFS partition. So I tried, mounting it manually using ntfsmount. I found this page on ntfsmount useful.
Here is what I got when I tried mounting manually.
Couldn't mount device '/dev/sda1': Operation not supportedWow!!! How did ntfsmount every figure out that my Windows was not shut down properly.
Windows did not shut down properly. Try to mount volume in windows, shut down and try again.
But I don't know how to process further. The only way I can recover my windows without re-installing is to modify the boot.ini file.
I need to figure out how to work around this problem.
Feeling tired and bored. I am going to try and solve this problem over this week.
But as I kept installing lot of software and some of which includes drivers for peripherals such as web cameras, I noticed that the boot time got really bad. As of yesterday, my windows xp home edition took around 4-5 minutes to load everything and stop showing the timer cursor on the desktop.
So I could not put up any more and so I was determined to find out what was causing the slowness.
I wanted to try out the following options to speed up the boot time and I wanted to do it in the order given below:
1.) Remove unwanted startup applications that get launched.
2.) Stop unwanted services permanently from starting.
3.) Look at the boot time logs to see if there were any errors or any drivers were taking time to get loaded.
For point 1.), it is fairly simple to stop applications from getting launched. You can goto Start->Programs->Startup and look at the applications that get launched at the startup of windows. You can either delete these applications under the "Startup" menu or drag and move them to directly under "Programs" or under any other menu item.
For point 2.), goto Start->Control Panel->Administrative Tools->Services to see the list of services available in the system. One of the columns tells you the state of the service - Started, Stopped or Automatic. You can know about what this service does by right-clicking on one of the services and then clicking on properties. Service is nothing but a program which runs in the background doing some job which is necessary. For example, Microsoft's indexing service runs in the background indexing files and directories. This indexing ensures that search is very fast.
Now, these services of course consume a good amount of CPU time thus making foreground applications slower.
After reading through the service's description, you will have a fair idea on whether or not you need this service to run. For example, if you don't have wifi at home, then you may not want this service which helps you configure wifi with ease. There are good number of services which run by default, which you may not want. Surprisingly, you may find services that get installed whenever you install applications. For example, when you install iTunes, there are services which get installed which help you detect a new version of iTunes and one which is used to detect an iPod whenever it is inserted. You may want to comment of the first service which is used to check for an updated version of iTunes. You can as well check for that manually. I have services from Google, HP, Symantec, etc. which got installed later.
There is a much easier and safer way of doing Points 1.) and 2.). You can use the application "msconfig" to modify startup programs and services. Launch "msconfig" from Start->Run.
It is easier this way, but why is it safer ?? Its safer because you can undo the changes that you have done.
I would love to post the detailed steps with screenshots. But unfortunately, my windows is screwed up and I am left with the option of only recollecting whatever I remember and write the same over here.
I am yet to talk about option 3.) which is much more dangerous and not recommended for novice users. In fact, having worked on windows internals and driver development in the past, I still managed to screw up my windows installation because of this option.
There are kernel (OS) traces which can be enabled whenever you want. This is primarily used during device driver development. The way you do it is that you specify the "/debug" flag in the file "boot.ini" under C:\. You may want to take a backup of boot.ini file before modifying it.
Debug traces will be diverted to the COM port. So you need to specify the baudrate and other com port details along with the "/debug" flag. Once you have done all that, you can connect the Windows machine being debugged (called as Target) to an Host PC through a Null-modem serial cable and view the debug traces. And if I remember correctly, once the booting and loading of drivers is done, it breaks at some execution point so that you get control from there on to continue debugging.
But I did a stupid assumption that giving "/debug" in the boot.ini and not giving other com port details will dump the debug traces on the same target machine. That was a wrong assumption. When I rebooted my windows with the modified boot.ini (containing "/debug" flag), it took sometime to boot. But I never got any debug traces on the screen. After sometime, the booting came to an halt and nothing happened. I think, the windows broke its execution for me to takeover. But without a second PC, I would never know what actually happened.
Before trying out the "/debug" flag option in boot.ini, I had tried an utility called BootVis.exe which was released by Microsoft earlier. It is not supported right now, but you can still download it from other places. This utility is supposed to profile and tell you where exactly we have the delay in the boot time. But when I tried this utility, it told me at the application level as to where the delay is, but I could not get any information about boot time delays. Thats the reason why I wanted to try the debug option in boot.ini.
So ultimately, my effort to optimize the windows boot time has left my windows installation useless.
I got an idea to recover my windows partition. All I had to do was just replace the modified boot.ini with the orginal boot.ini which I had backed up.
One way I could do this is from Ubuntu (yes, my PC is a dual-boot). I could mount by primary windows partition as a read/write and then modify the boot.ini.
I would like to explain about my experience trying to mounting NTFS partitions as read/write in a separate post such that it will benefit others as well.
So.. Wish me luck!! :)
Friday, December 21, 2007
Its a big big deal.. believe me.. and let me explain how.
But before I answer this question, let me explain what Virtualization is in layman's terms (for the sake of those who don't know what it is).
Virtualization is a general word which means that you emulate and present something while keeping hidden the actual resources in the background. In the context of this post, by Virtualization, I mean Operating System virtualization.
OS Virtualization allows you to actually boot an operating system (its called as a Guest OS) inside an Operating System (lets call this as the Host OS). While the Host OS uses the actual physical resources such as physical memory, the physical processor and physical storage (well.. this is not actually true because storage can again be virtualized), the Guest OS runs like just another application inside the Host OS.
But the Guest OS is made to believe that it is actually accessing physical resources such as Processor, RAM, Interrupt Controller, etc but in reality all these are emulated by a software layer called as Virtualization Managers or Virtual Machine Monitor (VMM) or better known as Hypervisor (cool word isn't it ;) - sounds like a devices' name from Star Trek!! ). Host OS doesn't have a problem with this as it sees the Guest OS as an application. Now you can have as many instances of Guest OS' running inside the Host OS (only limited by the processing capacity of the Host OS).
Virtualization is of different types - Emulation, Para-virtualization, Native Virtualization, OS-Level Virtualization and Application-level virtualization.
You can quickly learn more about the different types from the links here and here.
Now let me answer as to what's the big deal about Virtualization.
I have used virtualization (like booting Linux from within windows) for petty and stupid reasons such as not having permissions in the organization to use Linux boxes. Virtualization would be the only way out.
But Virtualization is being used for more useful application in building data centers.
Data centers are simply a group of servers which host a customers data inside it. The servers may be used individually or in groups (also known as clusters) to form a cloud of servers which work as one (this is better known as cloud-computing). Data centers are sometimes known as server farms.
In today's world every big organization maintains a data centers one way or other. Data centers are expensive to maintain and scale. Adding servers is expensive and you may still end up having may servers which may not be utilizing even half the computing power.
Also, data centers have this problem wherein upgrading the servers involves lot of effort. Let me explain. When you want to upgrade the servers, the administrators (yes its plural.. lot of people would have to be involved) would have to undergo the nightmare of ensuring that all the data and services are available/migrated on to a new set of servers before they can upgrade the already existing hardware. An easy way out for the administrators is to have redundancy. Which means that data and services would have to be mirrored (copied) at multiple locations. Now this only complicates the situation and cost. You have the added cost of these additional mirror servers (so the cost goes even higher) and you also need a SAN (storage area network) expert whose job is to ensure that data mirroring happens without problems.
This is where virtualization technology comes to rescue. Using virtualization, you can run multiple guest OS' on a single server. Each guest OS is a server.. a virtual machine. You can run multiple virtual machines until a point where computing power of the Host OS (physical server) is used very efficiently. The server which was running, say, at less than half the processing power before virtualization would now run at close to 100% of the processing power which multiple virtual machines sharing the processing power equally.
These virtual machines are controlled and configured using a virtual machine monitor (VMM) a.k.a Hypervisor. The VMM has the capability to change the configuration of the simulated resources which the virtual machines use. For example, the you can add additional processors for each of these virtual machines. For example, if you had configured the virtual machine to use a dual-processor, now using a VMM, you can add 2 more processors by doing few clicks and now you have your virtual machine running on a quad-processor configuration. This you can do as and when you find that the processing power is available. Additional processing power would be available either because you have stopped or moved a virtual machine to a different physical server or the existing physical server was upgraded with more processing capacity.
It is equally easy to upgrade the physical servers on which these virtual machines execute. All you would have to do is to save the state of these virtual machines (on to a file) and copy these saved instances on to a new server and then start these virtual machines.
Virtualization software have become more complex than what I have explained above. I will keep updating this post with the following:
- The recent virtualization techniques used by different VMMs such as VMware, Xen, Hyper-V, etc.
- The recent trends and competition between different Virtualization companies
- Finally a word on Linux kernel's in-built support for virtualization.
- References to other web sites which give more detailed and reliable information about Virtualization.
Tuesday, December 18, 2007
Both are loaded with cash and both trying to venture into each others space. While Microsoft is trying to make it big in Search and Advertising (but still without success), Google is attacking right in the heart of Microsoft's strong holds - their Operating System (OS) and Office Suite.
Article explains as to who Google is trying to venture in the OS domain by recently announcing the Android platform which directly competes with Windows Mobile OS and how Google Docs may threaten MS-Office.
Article, very informative and gives lot of insight on what the top execs at both the companies might be worried about each other.
Sunday, December 16, 2007
So I opened couple of links given below including Amazon's SimpleDB announcement.
- Amazon.com: Amazon SimpleDB, Amazon Web Services
- inside looking out » What You Need To Know About Amazon SimpleDB
- Amazon SimpleDB 101 & Why It Matters - GigaOM
It was really tough for me to understand what SimpleDB was all about. All I knew about Amazon was that it was a great online book store which has spread into other areas of online shopping. And more recently, I know Amazon for Kindle - their e-reader. By the way, here is one more latest review about Kindle. Probably, this mindset about Amazon was the reason why I could not understand (digest) the fact about SimpleDb.
You might consider me to be stupid and dumbfor having read the above links at least 4-5 times (except for the Amazon's web page where they explained about SimpleDB. I should have read that first) and then I slowly came to realize that SimpleDB was a web service which is available for you (or your company) to create, store, update and handle a database online.
Basically, you would setup an RDBMS such as Oracle and then have a web interface to update the database (backend).
What Amazon promises is that they seem to have all the storage and database related logic distributed over a network of servers (concept known as cloud-computing). If you are an organization, then you are readily use this web service for your database/backend requirements. The cost as Amazon claims is very nominal. Refer to their SimpleDB page for details of the cost.
You should probably read this article in CNet News about SimpleDB, which is more down to earth and is for non-geeky folks.
From the above article is when I came to know that wordpress.com actually uses SimpleDB as their backend. This is like a eye opener.
Look at the possibilities that it opens up for a startup which wants a reliable and fast backend.
I have been allergic to the DBMB/RDBMS and I have been particularly allergic to the word "Oracle". The main reason for this is that during my student days, the way concepts of DB and RDBMS were taught was horrifying and I started hating the subject.
But during my work years, I realized that I do like database concepts and I have designed a few decent DB schemas using MS-Access and given it a web interface. I had come up with simple tools such as bug tracker. Not bad for a guy who hated concepts of DB so much.. i tell myself.
Sunday, December 9, 2007
Today when I was reading this article in the NYT, I clicked a particular word and instantly it opened up a reference search "powered by Answers.com".
This I feel is very innovative and very useful for readers. Usually, you will copy and paste this word in your dictionary tool or one of the many only dictionaries, to know the meaning.
Update: This is funny :). When you try to double-click some word on this reference/dictionary page (the screenshot above), it doesn't do anything. It would have been good if they would allow me to search the meaning of other words from this page.
This what the Webkit home page has to say:
In his post, Bob Cringely reasons as to why Webkit is such a strategic project for Apple and why it would also be the driver for the rumoured iTablet (you find my previous post questioning as to whether Apple's PDA would click or not ?).
You may also find it interesting to read this post by Om Malik about Webkit's rise to popularity. Gives you a quick round up of where webkit stands compared to its competition.
Webkit is still evolving (but fast) and has a long way to go before winning hearts of hardcore Opera Mini fans like myself :). Read this post in Wap Review to know why Opera Mini 4.0 is better than Webkit on a Nokia (and I completely agree with that).
Web Browser Engine - This is the piece of software which downloads the html web page from the address specified by you, processes it and renders it back on the screen of the display device. The screen could be anything from your PC Monitor to an iPhone's touch screen.
Some of best engineers I've ever worked with.. :)
Sitting : Thats me - Mohasin
You can view the complete album by clicking below.
|Verizon Team Lunch|
Wednesday, December 5, 2007
The Yahoo! Top Technology Trends of 2007 gives an interesting view of products and services the users were searching for in the net in 2007.
Internet Video service YouTube leads the list of top technology trends. YouTube has become more of monopoly when it comes to internet video. Clear evidence that internet video is coming to be the most preferred form of watching content. Personally, I've starting watching lot of videos on YouTube, especially after I got a better broadband connection. As I mentioning in my previous post, on-demand viewing is the way to go in future.
An other interesting trend to notice this year was that, Apple with its products iPhone, iPod and iTunes (media download service) was all over the news. A total dominance in the news landscape. Steve does know how to generate buzz about any new product he introduces.
Also, point to note is that iPod is still more popular trend compared to iPhone. Also, iPod is the only media player in the top 10. Below Google trends show (blue indicates iPod and red for Zune) that iPod is far ahead in terms of popularity compared to Microsoft's Zune. Microsoft had introduce second generation Zune. Would have to wait and watch if they can ever make a dent in iPod's market share.
And last but not the least, 2007 was also a big year for gaming consoles. Nitendo's Wii, after its release in December 2006, was an instant hit. In fact, Wii has been selling more consoles in the first few months than what Xbox and PS2 took to sell it over a year. Nintendo made a huge come back after having been overshodowed by Sony and Microsoft for many years. But Nitendo is also having a problem with the current demand. Its supply-chain is unable to meet the demand which could become a huge problem over a period of time (a big booster for Sony's PS3 :)). Read this article from WSJ to understand the problem.
Sony launched its 3rd generation console - PlayStation3 (PS3) - November of 2006. While Sony lost ground to Wii in the initial months to Wii, recently it has overtaken Wii in terms of Sales in Japan.
Xbox 360 had a first comer advantage as it got released almost a year ahead of Wii and PS3. But it is never able to match the sales figure of Wii and PS3. But recently Xbox 360 was in news for one of the bestselling game series - Halo 3. Xbox 360 has been adding new features like the ability to download videos and games.
(I personally am a serious gamer and have a Playstation2 at home. But I have not tried any of the new consoles. So whatever I have mentioned above is from news and videos that I have been tracking on the net.)
Also, on the list are Facebook, the most happening Social Networking service and Wikipedia, the online reference for almost every topic in the world.
This what Yahoo! has to say on how it interpreted user's search queries into meaningful top trends of this year.
To come up with the Top Trends of 2007, we analyze search queries based on a number of factors, including absolute volume and growth versus previous periods, to see which themes and trends bubble to the surface. And of course, individual users and their searches remain anonymous.
The trends are categorized into different groups such as Top News Stories, Top environmental topics, Top troubled celebrities, Top Technologies, Top tags used in Del.icio.us, etc.
The trends give a beautiful and a quick snapshot of important happenings and events of last year. That the beauty of taking the common consensus of the millions of people from around the world in a indirect way... their search queries.
There are some very interesting results from these trends. But I really want to post it separately because I want the topic of the post to convey quickly what I found interesting.
Sunday, December 2, 2007
The article is good and is backed by good data and interviews from internet video/content producers. But the article missed out some of the key developments in the world of television and on-demand viewing of content.
Here are the points which I felt were missed out with respect to viewing content on-demand.
Video (or content, for that matter) is becoming "on-demand". TV Service providers (cable companies and telcos alike) provide a library of on-demand movies and shows which gets streamed as IP packets (IPTV as we call it) so that users can watch it at their convenience. So, basically, TV service providers understand this need of users to watch video at their convenient time.
Also, Set Top Boxes (STB) (device which your tv service provider installs to receive and show the video on your television) come with lot of value-added features. DVR is one such feature. DVR (Digital Video Recorder) capable STBs which come with inbuilt hard disk let you schedule and record shows/episodes which can be watched later at your own convenience. So, this again is an other form of on-demand viewing.
Apart from this there are companies like Vudu which are coming up with pure IPTV set top boxes which do not support broadcast television. These set top boxes always receive video on demand. Vudu for example is trying to achieve what Netflix does today. The only difference is that the movie library is available 24x7. You can browse through the library of movies on your television, watch a trailer, then buy/rent that movie on the television and the movie gets streamed to your television instantly (through the Set Top Box).
These boxes, I can bet, will at one point of time come enabled with capability to search and play video content available on the internet.
So the point is, PC may not be the preferred viewing option for video. Television is always the preferred option for viewing video. Television is here to stay one way or the other. What changes is how the content is going to be delivered to your television.
To deviate from the actual topic, what I am also not sure is how on-demand viewing is going to affect advertising. Advertising traditionally to some extent was targeted by the prime time slots. Of course, advertisers also take into account the kind of show that they want to target.
Advertising would be more targeted with on-demand viewing. Advertisers would want slots in the most watched and top-rated shows.
Also, I keep wondering if there would be any side-effects on human behavior because on on-demand viewing. I am not sure of what kind of effects these might be. When I compare my viewing patterns as a kid as against what my son/grandson might face in future, there will be a huge difference. For example, as a kids, I had a pre-defined time when my favorite shows/movies would be aired. My mom would want me (threaten) to complete my studies and home work for the day before I can watch these shows that gets aired at a particular time. If I had had on-demand facilities of viewing video, I would probably not have bothered to complete my home work on time :). Even, if I would complete my studies on time, I would have probably ended up watching television all night long because I could have ideally demanded to see any show I wished. The only restriction would have been my mom poping in every now and then asking me to go to bed :).
What about Parental Controls? With video/content being generated by almost everyone, how reliably can you rate these programs. Take YouTube videos for example. These are user rated videos and again the rating is a perspective of the group which rates these videos.
There are lots of such questions for which only time can give an answer.
The article states that online social networking behaviors and tribal behaviors are similar:
In tribal societies, people routinely give each other jewelry, weapons and ritual objects to cement their social ties. On Facebook, people accomplish the same thing by trading symbolic sock monkeys, disco balls and hula girls.The article acknowledges that there are major differences between these two:
“It’s reminiscent of how people exchange gifts in tribal cultures,” says Dr. Strate, whose MySpace page lists his 1,335 “friends” along with his academic credentials and his predilection for “Battlestar Galactica.”
As intriguing as these parallels may be, they only stretch so far. There are big differences between real oral cultures and the virtual kind. In tribal societies, forging social bonds is a matter of survival; on the Internet, far less so. There is presumably no tribal antecedent for popular Facebook rituals like “poking,” virtual sheep-tossing or drunk-dialing your friends.This approach to studying online social networking is good. In the sense, we can probably come up with new features in social networking sites based on what has worked on the real world Oral societies.
Then there’s the question of who really counts as a “friend.” In tribal societies, people develop bonds through direct, ongoing face-to-face contact. The Web eliminates that need for physical proximity, enabling people to declare friendships on the basis of otherwise flimsy connections.
To summarize quickly as to what Ramki has done till now with respect to MythTV is that, he has installed an Intex TV capture card on his PC and installed Mythbuntu as the second operating system. After this he has recompiled the kernel and drivers to make TvTime work with his Intex card. He has also tried generating xmltv file which is the program information file for MythTv. Right now, he is able to feed in the channel frequency numbers directly into MythTV and is able to watch and pause the programs. Next, as he says in his post is to make his MythTV point to the xmltv files that he has generated.
I personally have lot of questions on what he has done. I need to ask him this when I meet him.
But keep watching his blog where he intends to give more updates on his progress with installing MythTV.
For those who don't know what MythTV is.. it is a software which runs on Linux and which turns your PC into a DVR (Digital Video Recorder) where you can record programs in your PCs and watch them at your convenience. You can also pause Live TV and watch it again whenever you want to. This is the"better" alternative for Microsoft's Windows Media Center Edition of their Operating System.
PS: Ramki is a Delivery Head for the Fios TV team in Verizon India and he is my boss as well :)