I don’t remember where I got this info, it must have been some of the movie oriented blogs, but here it is: at the very end of the closing titles for
X-Men 3, the movie continues (not more than 20–30 seconds) with… well, I’ll let you see it for yourself, don’t want to spoil it
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
The story continues from where we left off last time. Ubuntu 6.06 just came out and I decided to try it outside of the VM (I used VMWare exclusively for my Linux experiments before). Being brand new I hoped that most if not all of the devices in my laptop (now 2 years old) will be recognized. I also knew that the boot loader should be smart enough to recognize previous MBR and not kill it but offer it to me as another item in the boot menu.
The installation was generally smooth, not counting the fact that I was unable to use the “normal” install disk (desktop Ubuntu) but had to go for “alternative” install disk. For some reason, the desktop install (that also duals as a live CD) would not boot and would get stuck at the “mounting file system” phase. Alternative install disk only offers non-graphical UI, but that’s fine. There were more questions than XP and Vista combined asked me during the installation, but that is to be expected.

The installation was, subjectively (did not measure) the longest, but not by much. The fastest to install was Vista, then XP and then Ubuntu, but the differences are not huge. Looking at the device manager (screenshot to the right), the OS has recognized all of my devices, including wireless adapter. All of my hard drives were recognized too (external USB is nicely marked with an overlay icon), including XP and Vista partitions (mounted as read-only), screenshot to the left. Then I noticed that Wi-Fi is not working and even worse – the wireless card is not enabled, is not up, and cannot be turned on.
And that’s where the agony began. I’ll save you the trouble of finding out what’s wrong with my setup – took me quite a while until I found several forum posts, blog posts and finally this wiki page that made me understand what’s going on. You see, the wireless chipset I have is Broadcom BCM4309, which is 802.11a/b/g compliant. There are no official drivers and none of the computer manufacturers officially supports Linux, so you can’t get drivers from anywhere.
Actually, I was not completely right - the driver seems to be included in Ubuntu 6.06, but what you are lacking is firmware. For legal reasons, the Ubuntu team can’t distribute it but you can “get it” yourself. My complaint is that, as a user, I should have been warned about this and not have to search for the answer on the Internet and look into the system log (yes, the missing firmware problem is actually reported in the system log).
So how do you get the firmware? Why, you “steel” it from another driver, for example, one of the latest Dell Windows drivers. Insane? You bet, but it works. But you do need to install firmware cutter tool (the package name is bcm43xx-fwcutter), the instructions are on the wiki page I linked to. There are also differences in where the extracted firmware should be put, but you can see the location in the system log.
This is not all. In order to get “normal” UI for discovering and connecting to wireless networks that use WPA (you are using WPA and not WEP, right?) you have to do even more tinkering. Turns out you have to disable the built-in wpasupplicant and install Gnome Network Manager applet (again, see the wiki page for info). During the process, there are least two configuration files that you need to edit, both on a place that requires administrative privileges. At last, after all that, I was able to connect. Because you need a password for the WPA, Ubuntu stores it in some kind of secure storage for which yet another password is needed, plus you get asked for it every time you log in to the system (screenshot to the right).

Once online, everything worked just fine. The system updated itself (even kernel was updated in a first batch of updates!) and still continues to do so (see screenshot on the right). I was even able to get on the MSN Messenger using Gaim (screenshot to the left). Quite cool. Not everything is nifty– the suspend/hibernate functions do not seem to be working at all. The system does not react properly on closing the lid while manually hibernating the machine caused it to lock up in text mode. Both Vista and XP work just fine, except that Vista forgets the desktop resolution when waking up from the standby.
All in all, it was roughly as bad/good as I expected. Some amount of tinkering was necessary, even though not as much would have been necessary if only Ubuntu folks managed to warn me that even though my wireless chipset is recognized, the firmware can’t be installed. Ah well, maybe in the next version 
One more thing: the order of installation for these 3 OSes turned out to be just right. XP installed first, then Vista recognizing it offered it in the boot menu, then Ubuntu recognized XP and listed that in the menu, but the loader is actually Vista’s and offers the two choices I just mentioned. So, to boot XP I have to wait for Ubuntu’s GRUB, then choose Windows XP, then I get Vista’s loader and choose “Earlier version of Windows”. Slightly involved, but works just fine.
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
By “code packaging” I mean separating your code (on a high level) into manageable chunks (“components”) ready for (re)use. On Windows, this would generally be a DLL.
Windows was originally written in C (and to some extent now probably C++) so its packaging mechanisms are C based too. Unfortunately, this means that support for C++ had to be “bolted on” in some way, which resulted in a mess. Just think about it – should I export a class, or some of its methods? How should I export static members? How do I link with component of this particular library? Is this library static or is it import library (can’t guess by extension)? If I link dynamically, can I/should I link with another “component” of the same library statically? Where the hell are the boundaries?
I was reminded of all these questions while trying to build and link a 3rd party C++ library. One of the symbols just wasn’t exported properly. Even though I knew what was wrong, I was unable to fix the problem because the macros that control __declspec(dllimport) and/or __declspec(dllexport) were impossible to mentally unwrap.
Contrast this to Java/.NET packaging – from the very beginning, the packaging is well defined. The linking is always dynamic (at least for .NET, not sure for Java) which on a surface might seem too crude but in reality simplifies things – less choice is sometimes better (you can still do the ILMerge if you wish). The visibility of symbols is explicit both on the VM level and via keywords in each of the languages that compile into IL. “Linking” is always directly to the final DLL (there are no separate artifacts to use because all the metadata you need is directly in the final image).
While this is better from the standpoint of less hassle when designing libraries, there is one much bigger advantage here that is often overlooked – when packaging is complicated, we tend to avoid the issue altogether. Sometimes this leads into monolithic designs because separating/refactoring into “components” is difficult if for no other reason than packaging. When packaging is easy, this is a no-issue and leads into better designs for everyone: library designer and library consumer.
This has been one of the top few features of the .NET that I prefer over native/C++ development. Garbage collector is nice and some .NET/C# features like (asynchronous) delegates are cool, but packaging is the feature that saved me a lot of boring work while building my libraries, which left me more time to deal with real issues.
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
After the generally uneventful Windows XP installation I proceeded with Windows Vista beta 2 installation. I expected from Vista to recognize already installed Windows XP and not to destroy its MBR, but to “envelope” it and offer me to boot from either. That worked just fine, except for the weird wording – in the boot menu, Vista is called “Microsoft Windows” and XP is called “Earlier version of Windows”. Generic and imprecise, but fine.
Once I booted into Vista, I was delighted to find that all hardware has been recognized and working properly (the driver for the modem was automatically installed through Windows Update), including Aero glass! I was surprised to find already about 6 important updates, but since Wi-Fi worked just fine, I immediately installed them.
Two things were not quite right, of which one is minor and another huge disappointment (that Microsoft for sure will have to fix by the time they ship). The minor thing is that everything but antivirus is built in, so you have to download the antivirus separately. Since Vista is still in beta, not many manufacturers advertise Vista compatibility. Fortunately, there is at least one that is freely downloadable – avast! (the exclamation mark is part of the name).
The major thing is that Vista does not dynamically lower the speed of the processor at all! Modern laptops are equipped with processors that don’t need to run at their full speed all the time. In fact, most of the time the processor would actually run at the lowest possible speed. You’d think this would not make much of a difference. Well, it does. The temperature rises all the time if the processor is running at the max speed and as a consequence the ventilator is on most of the time, which is really annoying.
What’s really strange is that advanced mobile features have been heavily touted by various Microsoft Vista evangelist and I expected this to be better supported than in XP. The new UI for battery/performance settings is generally speaking better in the sense that it allows greater degree of customization, but it’s worth nothing at the moment because some of this just plain does not work. You can see the new streamlined “all the ways to suspend/hibernate/shutdown” dialog on the screenshot to the right (click opens a full size image).
Fortunately, there is a utility out there that can help you taming your processor speeds called RMClock. Some level of proficiency with how processors generally operate is necessary though – if you don’t know what FSB speed, multiplier and processor voltage are, then you’re stuck because the utility is completely undocumented. But it’s not too complicated either – simplified, the technology works by lowering the voltage to the processor and decreasing the FSB multiplier. RMClock will detect properly the minimal and the maximal multiplier and is able to deduce correct voltage to go with it. Thus, it is enough to set things up as on the screenshot to the right – I added the min and the max value and then two more in between, the utility calculated the rest.
Besides from this, there were no serious problems with Vista. It does eat a lot more memory than XP and the GUI is quite demanding on your video card. Windows Explorer is quite different from what you might be used to (I use Total Commander so it’s not a big problem) and so are many other system utilities. Overall, it’s looking good. Not quite worth 6 years wait, but obviously better than XP, especially for us developers (WPF absolutely kicks GDI32/GDI+ ass!).
Random coolness screenshot – while trying to exit Vista, I got the message as on the screenshot to the right. Turned out Visual Studio 2005 and Document Explorer (the app that shows MSDN Library help) got stuck waiting for each other to exit) and Vista noticed it. Instead of either waiting endlessly for them to exit or silently killing them, it notified me and let me decide. Nice!
Next: installing Ubuntu 6.06 – is Linux still struggling on the desktop or is it ready for widespread use?
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
I’ve been wanting to add a bit (for quite some time) to another fine piece of commentary from Jeff Atwood about the software maintenance. As usual, Jeff quotes several great sources on the topic and adds its own bits of wisdom – if you haven’t seen it, it’s well worth a read.
My recipe for a successful maintenance would be very simple – make the original developer of the code responsible for it for as long as he is in the company. This will weed out the pathological cases where an “architect” will create a monstrosity and then leave off to another shiny project, while poor maintenance developers would clean up the mess for years to come.
I’ve seen this in action – developers are much less ready to spend time fixing the architecture when they know they won’t have to touch it afterwards. Once they do, they realize that whatever issue they skip in the design/development phase they will have to pay for dearly in the maintenance phase.
This technique works remarkably well, and is easy to implement.
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
Continuing from where we left off last time, it was clear I will have to install all three OSes onto the internal hard drive. This made partitioning somewhat complicated, as I needed to have at least two partitions for each OS (assuming that 20GB per OS will not be enough for day-to-day work).
Fortunately for me, just before scrapping everything on all of my drives, I have discovered GParted – small, bootable Linux CD that has nothing but a partitioning tool running. And what a tool it is – understands about a dozen of file systems, can resize, move, copy them and do all other kinds of nice things. Great tool for a great price – completely free.
So, I had one 60GB drive and another 120GB. Split was simple – each OS gets 20GB for the “system” partition and 40GB for the “data” partition. I created all the partitions in the GParted with no problems. Finally the time came for Windows XP installation.
As expected, the installation was quite uneventful. Windows XP does not ask a lot of questions and about half and hour to forty-five minutes later I had a clean Windows XP SP1a installed. I did not go with the SP2 version immediately because the physical installation CD is “tied” to my laptop – I did not have to enter my serial number nor to activate the copy.
Then I hit the bummer – the wireless did not work. I completely forgot how sucky the Wi-Fi experience is with the original Windows XP (as opposed to SP2). Fine, I’ll just pull up my “drivers and utilities” Dell CD and it’ll all sort itself out.
Except it didn’t. The Wi-Fi driver installation was aborted with the message (I paraphrase) “You don’t have the required hardware” (?!?). So, out of the box, you can’t get wireless working with the provided CD?!? Mind you, I used matching Windows version and driver version, all from original Dell CDs. Even more interesting, even wired ethernet did not work out of the box?
Now that wireless did not work, I decided to put SP2 first and then the latest drivers. After that, everything worked fine. I did have to install several other drivers (sound, touchpad etc), but all was good from there. It did take a while for all the updates after SP2 to install – despite very fast Internet connection, some updates depend on the presence of other updates and/or optional components, so you end up waiting for several waves of updates.
In the end, except for the Wi-Fi issue, XP installed with no problems. Next time, installing Vista beta 2.
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
Before you declare me mad
, here’s the reasoning: I am developing a P2P application using the .NET Framework and until recently my primary (and only) OS was Windows XP and my IDE was Visual Studio 2005. I have never been particularly happy with the GUI of my app (not the way it looks, but how hard was it to get it that way from a coder’s perspective) that I wrote using Windows Forms 2.0.
The timing is right to go for something better – Avalon, or Windows Presentation Foundation as it is called by marketing folks (WPF). But I do not want to install beta software on my primary OS, so I struggled with virtual machines (VM). VMWare works rather well, but WPF makes really cool 3D GUI effects cheap, assuming hardware acceleration works, which is not the case for the VM. So I went all the way and decided to install Windows Vista – beta 2 just came out.
As for Ubuntu, this has to do with two things – geek curiosity and tools availability for the server side of my product. I have decided to give Ruby on Rails a chance after some sour experience with ASP.NET 2.0 (a lot more on this in a series of posts to follow). Ruby on Rails, Ruby, Web servers like lighttpd and the database like PostgreSQL are all available on Windows and that is what I will use to develop. However, all of these tools are more readily available on the Linux platform, so for the occasional experiments (and ultimately hosting) I will try to use Linux. Ubuntu is the most popular distro of the moment, so not knowing much about Linux anyway I went for it.
Here’s what I had: a relatively modern laptop (specs in my earlier blog post) with a hard drive completely occupied by a single NTFS partition with a Windows XP on it. In order to install 2 other OSes, I decided to buy an external USB drive to get more space. I did not want to carry around another power supply since USB ports carry enough power for a small 2.5” drive so I got myself a Western Digital Passport 120GB. This should give me enough space to install Vista and Ubuntu, each getting 60GB, just as much as XP at the moment had (which in practice proved more than enough).
The idea was that I will install Vista and Ubuntu on a USB drive and have the laptop boot from that drive when attached, otherwise to boot from an internal drive. For my day-to-day needs the XP on an internal drive will continue working fine and when I need to do some WPF or Ruby on Linux I can just attach the USB drive.
How naive I was in my expectations. First of all, even if I tell Vista to install itself to the USB drive, it will write a bit of stuff on my XP partition. This has to do with the fact that all Windows systems (or is it Intel platform that dictates this?) insist using drive 0 for a system partition (the one were boot related files are, see this KB article). I did not like that because I wanted to isolate all 3 OSes from each other completely. Grumbling, I let the install continue.
Installation went well, but when it came time to boot into the Vista, the computer went BSOD. Argh
. I’ve never seen a Windows to go BSOD before it was even fully installed. Then it occurred to me that I just assumed my laptop will run Vista (with full eye candy) without actually checking it. With great fear in my heart, I booted into XP and installed upgrade advisor. Sure enough, it reported that my laptop was completely Vista capable, including full Aero experience (thanks to the non-discreet video card that I have – ATI Radeon 9600 [Turbo] Pro). Hmm – if it is not hardware, what is it?
Booting in text mode showed that the last driver loaded was crcdisk.sys. I don’t know why, but the following never crossed my mind:
- crcdisk.sys might just be the last driver to load before Windows would boot; thus, the crash might have nothing to do with any of the disk drives
- even if there was a problem with a disk drive, it is more likely to be related to the USB drive than to the internal drive
So I went on and rebooted several times trying safe mode and other variations, but no luck. I even reinstalled Vista once or twice trying different regional settings (as if that would be the problem, what was I thinking). I removed Dell utility partition thinking it might be confusing Vista installer in some way. Finally, I got so irritated I backed up all my data and removed ALL partitions from ALL drives.
Installing Vista beta 2 on a USB drive did not work in exactly the same way – so that was the problem all along. Once I tried installing it on my internal drive, everything worked fine (more or less, details on each OS installation in the next posts). I deleted everything again and started from scratch.
Coming next: (re)installing Windows XP – how hard can it be?
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
The story that got huge number of votes on the digg this week has been MP3 recording of a guy who tried to cancel his AOL account. As expected, he has been pressured to stay with the AOL but along the way the AOL representative got carried away and became irritating and insulting.
After the story was posted, probably afraid of even more negative PR, AOL decided to fire the guy. Now, I symphatize with the AOL customer (just listening to the recording annoyed me) but I think he has been a victim of the pressure AOL and other Internet providers put on their representatives (to keep as many customers as humanly possible), not some rogue representative. The competition in the USA is fierce and generally a lot more ruthless than here in Europe.
Recent example: every now and then we get bothered via cold calls to change the telecom provider. When we get the chance to speak, we politely explain that we are using Free Internet line for everything (TV, phone and Internet) and the calls ends more or less instantly. Along the same lines, a guy came to our building offering cable TV (and Internet) and when we mentioned that we used Free, he just said “oh, you’re all settled then, don’t need this”. He didn’t try to persuade us that cable TV is better, nor that our current service sucks – he either knew that it would be pointless, or he didn’t work on percentage of households converted (I guess it’s the latter).
I don’t know which side is “right” – are the Americans too aggressive or are we Europeans too laid-back?
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
I think that Half-Life 2 Episode One is the first game ever that I bought in advance without waiting for any kind of review. Half-Life and Half-Life 2 were that good. Judging by the reviews all around the world, almost everyone agrees.
In short, the game rocks. It’s just Half-Life the way we know it. Still, the pacing, the levels, the guns, the puzzles – they all fit together flawlessly. This time though Alyx has a much more prominent role and stays with you as your side-kick most of the time. The episode is short (5–7 hours) but it’s just the first part of the trilogy. The price is just right, about one third of what you’d pay for a full game.
I don’t want to spoil it for you by revealing something but I will give you a screenshot. This is a scene from City 17; in order to read a sign you’ll need to know how to read Cyrillic
Anyway, it reads “stacionar” which means “ambulance station” (very roughly translated). Judging by a few other signs with Cyrillic text and AFAICT all the text is in Russian. Now we finally know where City 17 is 
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5