Acadiana Open Source Group
While the Acadiana Macromedia Multimedia User Group has been around for a number of years and the recently formed Acadiana .NET User Group (requires Silverlight) has added to the number of user groups in the Acadiana area, there was still a void left by the long since defunct Linux user group of the area that needed to be filled. To that end, I decided to spearhead an effort to start a local user group for the open source software community.
The Acadiana Open Source Group now has a web site, a Facebook group, and a first meeting scheduled for the end of April. So, if you're in the Acadiana area or know someone who is, tell them about AOS! I've sent out press releases to various media sources, sent Facebook invites to friends, and will likely end up posting flyers in various places around nearby UL campus before the meeting date. I want to pack the conference room we have reserved and have a large number of return visitors for the next meeting, so bring it!
Dual-Booting XP and Kubuntu on a Sony Vaio
So it turns out the Holy Grail, Promised Land, or whatever you want to call it, does exist after all. After a number of different approaches and attempts, I finally got my Sony Vaio VGN-NR298E dual-booting Kubuntu and Windows XP. The solution turned out to be a well-known one: nLite.
With it, I was able to not only roll the drivers for my SATA drive into a custom XP CD, but also SP2 as well. It also offers options to include other drivers as well as post-SP2 Windows hotfixes and custom configuration options. I have to give major kudos to the nLite folks, as I imagine I would have given up at attempting to do this had it not worked as splendidly as it did.
So, without further ado, here's the final recipe for succes in this endeavor. Obligatory disclaimer: I take no responsibility should you not have the same success or suffer damages by following these instructions. Other obligatory disclaimer: The only reason I went to this much trouble to dual-boot to XP is because I can't find another solution that allows me to play my games.
- Download nLite. Use it to make a local copy your Windows XP CD.
- Download the standalone Service Pack 2 installer. Point nLite to it as a service pack to include.
- Download the Intel 82801HEM/HBM SATA AHCI Controller drivers. Extract them for unattended installation and point nLite to them.
- At this point, you can choose other drivers to include on the CD. Below is a list of those that are relevant to the Vaio. Be sure to have either Ethernet or Wifi drivers included in the CD or on a storage medium that Windows can recognize natively without external drivers.
- I ran into a small issue at this point that may or may not be pertinent to your case: the only machine on which I had a CD burner available was a Linux server machine. nLite was helpful in this regard, though, and offered an option to make the ISO file it created mkisofs-compatible. Using this, I was able to copy the ISO over the network to the Linux server, use mkisofs to test it and cdrecord (man page examples on this utility are helpful) to burn it.
- Boot the custom CD. Note that you no longer have to hit F6 at the point where you normally would to install custom drivers; the installer will simply detect that they're available on the CD and load them from there. Installation should be pretty normal after this point. Partition your drive however you like, being sure to leave enough room for Kubuntu to load. You'll probably notice the installer forces you to leave 8 MB free, presumably for the NT boot loader. Once you're in Windows, you can reset your screen resolution and manually install any drivers you didn't roll into the CD. Once you're connected, install any further Windows updates that might be necessary.
- Once XP is set up to your liking, pop the Kubuntu CD in, boot from it, and access the installer on the desktop once KDE has loaded. In order to not have Kubuntu overwrite your XP installation, you'll have to opt to partition manually. You'll notice that the installer sees the 8 MB that XP made you reserve earlier. I'm not sure why, but the installer sees this as free space. At any rate, I just consolidated that space into the Kubuntu partition and let it set aside its 3 MB to load GRUB. I'm not sure how to keep the NT boot loader and not load GRUB, so if you prefer that route, you'll have to dig around on your own to find out how. Set up your root and swap partitions and continue.
- Installation should again proceed fairly normally. Once you've loaded your installation for the first time, connect your machine to an ethernet cable and launch Adept, the package manager GUI for Kubuntu. Do a search for Windows and you should find a package called Windows Wireless Drivers. Install this for wireless if you need it. Beyond that, install updates and you should be good to go.
And that's all there is to it, folks. It was a wild ride to figuring out the process, so I hope my efforts help someone else looking to do the same thing. Cheers!
IE6 Compatibility Testing via Virtualization
In my last entry, I noted that I was testing my use of SWFUpload in both IE6 and IE7. You may wonder how I managed this. Google has plenty of information on "hack" methods to get both versions of IE to coexist on a single XP installation.
If you have the machine power for it, though, there is a method that is actually supported by Microsoft to accomplish this. It employs virtualization which is becoming increasingly popular in the computing world. It is useful for two particular applications: to make server environment installations independent of the host operating system and hardware and to allow multiple operating systems to coexist on the same hardware without the need for partitioning storage devices.
In 2003, Microsoft bought out a company called Connectix which specialized in virtualization software, one of their main products being Virtual PC. Microsoft subsequently released a rebranded version of VPC as a free download.
Once the need to test applications on IE6 and IE7 for cross-compatibility was realized, Microsoft also began sporadically releasing a freely downloadable series of up-to-date Windows XP images with IE6 pre-installed and expiration dates after which the images would no longer function. The latest image is set to expire in early June 2008.
With Microsoft pushing adoption of Windows Vista and IE7, it's uncertain as to whether or not Microsoft will continue releasing these VPC images. However, it does appear that Microsoft plans to continue developing Virtual PC. Therefore, if you have an extra Windows XP license to spare, this arrangement is a nice and relatively lightweight solution to making IE6 and IE7 available for testing on the same machine.
More SWFUpload
So I ran into a little issue with SWFUpload. The user reporting the issue was using the latest version of IE6 on Windows XP. When they clicked a button set to call selectFiles on the SWFUpload instance in use, IE would display a JavaScript error stating something to the effect of, "Exception thrown and not caught." When I actually checked the contents of the exception instance, the actual problem was reported as "Invalid function name."
Working my way backward through the chain of execution, I could see that IE recognized selectFiles. At this point, I thought to check the Adobe Flash Player version to ensure that it matched the version of the SWFUpload Flash component that I was running. Sure enough, it was outdated. Once I installed version 9 and restarted IE, everything worked as expected.
I haven't tried this on IE7 under a pre-9 Flash Player version (and in fact I'm not entirely certain you can get an older version of Flash Player that will run under IE7), so this may or may not also be possible under IE7 as well as IE6. If you want to test for the issue, simply catch any exception thrown when called selectFiles and alert the user accordingly.
SWFUpload
One of the tasks I was recently given at my job involved examining issues with a browser-based batch file upload component. The component that was being used, iBULC, required a separate installation of proprietary software on the client-side, had a rather clunky browser interface, and proved difficult to troubleshot. Rather than expending effort to get iBULC to work properly, I went in search of a new solution. That new solution is SWFUpload.
SWFUpload is a small file upload solution that supports selection and uploading of multiple files, all while exposing a flexible event-driven API to allow you to handle events on the client-side in whatever manner suits your needs. It has two components, a Flash file (supports Flash 8 and 9) and a JavaScript include. A little HTML and JavaScript allows you to include these two components in your application and define handler functions to intercepts whatever events might be relevant to your interface. I was amazed at how quickly I was able to get a solution working. The examples and bundled documentation are quite good.
I only experienced two issues with SWFUpload in the process of completing my task. The first was that ampersands were being HTML encoded in the POST request being sent by the SWFUpload Flash component to my PHP script on the server side for intercepting uploaded files. This caused PHP to be unable to parse the POST parameters correctly. Luckily, the issue had already been reported and a quick fix in the JavaScript component resolved the problem.
The other issue was in the Flash component not properly sending cookie values to the PHP script, even with the JavaScript plugin for handling cookies enabled. Apparently this issue is most likely due to a known bug in the Flash player for Firefox. The only method I was able to use to circumvent the issue required including cookie data as POST parameters and checking for them there in the server-side script. Obviously this is a quick-and-dirty solution and I hope I eventually get to apply a more proper solution.
One outside issue unrelated to SWFUpload that I also ran into in the process of completing this task was an odd error in Internet Explorer. Even though the page using SWFUpload ran fine in Firefox, IE consistently returned the error "Internet Explorer cannot open the Internet site, Operation aborted." For whatever reason, IE apparently doesn't like it when you try to run JavaScript within <script> tags inside a table if the JavaScript isn't contained within a function. An obscure bug, but an annoying one nonetheless. Moving the offending JavaScript to its own function appeared to fix the problem.
Outside of those issues, I was quite happy with the results. I was able to put the new solution together within an afternoon, it uses the native OS interface for multiple file selection, and it allows me to respond to the events that occur in the file upload process however might be necessary. I'd definitely recommend that you check SWFUpload out if you're in need of a similar solution.