April 30, 2006

links for 2006-04-30

Filed under: Bookmarks | Lindsay @ 12:17 pm

April 29, 2006

links for 2006-04-29

Filed under: Bookmarks | Lindsay @ 12:17 pm

April 28, 2006

The Lost Realization of Portable Virtualization with Windows

Filed under: Virtualization, Reviews | Lindsay @ 9:05 am

A while back I wrote a post about how using VMs has made my life as a developer significantly easier. Two of the items on that list were things I hadn’t tried yet but just assumed were possible: loaning my VM with a co-worker if I was on vacation so they could continue work in my evironment and bringing my VM home on my portable harddrive instead of my laptop. But I wrote too soon (and I apologize for not testing that first!). When I finally decided to try out the VM at home, I ran into problems with Windows activation. And this issue would rule out the loaning to my co-worker scenario as well. Apparently VMs virtualize all of your “hardware” except for the processor in your host computer. Since the processor changed from my work computer to my home computer, it triggered the activation.

Now, for work, I have an MSDN license and could potentially get a volume license which would eliminate the re-activation, but I have several problems with that solution:

  • I spent a large amount of time setting up my base VMs and then configuring the development environments on copies of them. I don’t want to (nor do I have time) to start all over again building my chain.
  • I didn’t just want to use this for work. I wanted to install Windows XP with my personal retail license in a VM and be able to carry around some personal apps on it.
  • I just have a problem with the fact that I’m one person using one VM with a retail licensed copy of Windows and I can’t move the VM from machine to machine on a frequent basis (multiple activations would cause you to be locked out pretty quick with a retail license). I don’t think that kind of usage actually violates the intention of the Windows EULA and might fall under the wide umbrella of “fair use”, but it’s certainly not piracy, and shouldn’t be penalized as such!!

So I did some research and came up with an extremely cumbersome potential solution that was a variation on an activation file restoration procedure (which I won’t expand on since I was advised of legal repercussions) and asked in a VMWare forum if anyone had tried my solution or knew another workaround. Someone responded with a quote from the Windows EULA:

The term “COMPUTER” as used herein shall mean the HARDWARE, if
the HARDWARE is a single computer system, or shall mean the
computer system with which the HARDWARE operates, if the HARDWARE
is a computer system component.

you may install, use, access,
display and run only one (1) copy of the SOFTWARE on
the COMPUTER.

These statements above are contradictory as far as VMs are concerned. What is a COMPUTER really when you’re talking about a VM? It’s only because the processor is used by both the guest and the host that they might be considered a single COMPUTER. This leads me to think that VM use under normal circumstances is in violation of the EULA: if you’re running a VM with an installation of Windows on a Windows host, then you have two copies of the SOFTWARE running on the same COMPUTER. So is the VM a COMPUTER itself? I’ve seen many people ask “If I have a VM do I need a separate Windows license for the guest OS or can I use the host’s?”. And though I’ve seen different answers, they’re all basically either someone getting no official answer from Microsoft or someone saying that, yes, you do need a separate license, which indicates the VM is it’s own COMPUTER.

So you can’t have it both ways: that’s just not fair to consumers. It either is an independent COMPUTER or it’s not. If it is, then I should be able to use my licensed copy of Windows via a VM hosted wherever I want because the VM is a self-contained COMPUTER. If it’s not, then I only need one license to run a VM with Windows on a host of Windows since they’re both on the same COMPUTER and it still shouldn’t matter whether I used my VM on one or more COMPUTERs as long as each COMPUTER had a valid license for Windows.

To me, not being tied to your hardware is a major promise of Virtualization! Yeah, VMs are great for enterprise-level server resources allocation and for Q/A testing and for IT departments to deploy to workers as a replacement for PC images, but they have so much potential for consumer applications as well. Being able to wrap up things in a nice tidy package and have them accessible as long as there’s hardware close by that can run them is liberating and opens up so many possibilities.

  • If a VM is not an independant COMPUTER, then you could release things such as Virtual Appliances for Windows which are currently only possible under Linux and other free OSes.
  • Software vendors could release demo versions (or full for that matter) of their software on VMs which would mean no installation and uninstallation hassles for users and ensure that the environment was properly configured to best show off the software.
  • Companies could save hardware costs for their telecommuting employees by allowing them to just use a VM on their home computer for VPN access and the company’s licensed software.
  • And, of course, there’s still the idea of travelers not being required to carry a laptop through airport security.

But those possibilites and many more are currently eliminated by Windows activation.

TAD always tells me that I should write a letter to someone when I get upset about something, so this time I decided to take his advice. Here’s my request to Microsoft:

Dear Mr. Gates and Mr. Ballmer,

The time has arrived for Microsoft to come out with an official policy on licensing the Windows OS for use in VMs one way or the other. Either VMs are independent COMPUTERs or they are not and the licensing restrictions need to be fully defined for whichever situation is the case. Regardless of that decision, a way for the user to identify to the Windows installation that it is on a VM should be put in place. That being done:

  • If VMs are independent COMPUTERs, the activation scheme must be changed so that activation is not triggered by moving a VM to other HARDWARE.
  • If VMs are not independent COMPUTERs, then the license at whichever host COMPUTER the VM is running must be automatically picked up by the VM, or an easy method must be provided for the user to “register” the VM with the Windows host to avoid re-activation.

Don’t deny the benefits of Virtualization to your customers! Please realize that your customers, who have paid you for their licenses, are not pirates and shouldn’t be treated as such. Demonstrate the respect you have for your customers by sheilding them from the inconvenience of the torture of having to endure hours on the phone trying to get someone help them unlock their copy of Windows that has been activated too many times for lack of foresight of this reasonable VM usage.

Thank you for your focus and efforts in resolving this issue.
Love, Your pal,
Lindsay

» » » » » » » » » »
, , , , , , , , ,

April 27, 2006

links for 2006-04-27

Filed under: Bookmarks | Lindsay @ 12:18 pm

April 26, 2006

links for 2006-04-26

Filed under: Bookmarks | Lindsay @ 12:17 pm

Using conditional special functionality with XSLT imports

Filed under: HowTo, XSLT | Lindsay @ 10:34 am

I solved this problem for someone recently and thought it might be useful to other people in the same situation.

The Problem: how to trigger special functions in a common XSLT file…

There are several XSLT files, one with common functionality shared between all of the others which will be imported into the others. Particular templates in Common.xslt had parts that only needed to be activated if the Common.xslt was imported in specific “host” XSLTs. The problem is that there’s no way to know from Common.xslt whether it should do the special functionality because its unaware of it’s host.

The Soultion: xsl:imports overriding

This can be fixed by exploiting the template overriding property of <xsl:import>. You can create a template in Common.xslt that contains a value you may test for and override it in any of the host XSLT files that need to use that special functionality.

Common.xslt

<xsl:stylesheet version=“1.0″ xmlns:xsl=“http://www.w3.org/1999/XSL/Transform”>
<xsl:output method=“html” version=“4.0″ indent=“no” />

        <xsl:template name=“caller”>common</xsl:template>

        <xsl:template name=“commontemplate”>
                <xsl:variable name=“usespecial”><xsl:call-template name=“caller” /></xsl:variable>
                <xsl:variable name=“whichtype”>
                        <xsl:choose>
                        <xsl:when test=“$usespecial = ’specialfunction’”>special</xsl:when>
                        <xsl:otherwise>normal</xsl:otherwise></xsl:choose>
                </xsl:variable>
                The main XSLT uses <xsl:value-of select=“$whichtype” /> functionality.
        </xsl:template>
</xsl:stylesheet>

SpecialFunction.xslt

<xsl:stylesheet version=“1.0″ xmlns:xsl=“http://www.w3.org/1999/XSL/Transform”>
<xsl:import href=“common.xsl” />
<xsl:output method=“html” version=“4.0″ indent=“no” />

        <xsl:template name=“caller”>specialfunction</xsl:template>
        <xsl:template match=“/”>
                <html><body><xsl:call-template name=“commontemplate” /></body></html>
        </xsl:template>

</xsl:stylesheet>

Results:

<html><body>
The main XSLT uses special functionality.
</body></html>

NormalFunction.xslt
“caller” template is missing…

<xsl:stylesheet version=“1.0″ xmlns:xsl=“http://www.w3.org/1999/XSL/Transform”>
<xsl:import href=“common.xsl” />
<xsl:output method=“html” version=“4.0″ indent=“no” />

        <xsl:template match=“/”>
                <html><body><xsl:call-template name=“commontemplate” /></body></html>
        </xsl:template>

</xsl:stylesheet>

Results:

<html><body>
The main XSLT uses normal functionality.
</body></html>

You can modify this to make as many different types of special functionality as you need.

» » » » » »
, , , , ,

April 24, 2006

links for 2006-04-24

Filed under: Bookmarks | Lindsay @ 12:17 pm

April 22, 2006

links for 2006-04-22

Filed under: Bookmarks | Lindsay @ 12:17 pm

April 21, 2006

links for 2006-04-21

Filed under: Bookmarks | Lindsay @ 12:18 pm

April 20, 2006

links for 2006-04-20

Filed under: Bookmarks | Lindsay @ 12:17 pm

April 19, 2006

links for 2006-04-19

Filed under: Bookmarks | Lindsay @ 12:17 pm

April 18, 2006

links for 2006-04-18

Filed under: Bookmarks | Lindsay @ 12:18 pm

April 17, 2006

Google Physics

I find this quote from the Washington Post about the new Google Calendar pretty thought provoking:

With Google Maps, they were starting to control space, and here they are starting to control time.

Welcome to the Googleverse.

links for 2006-04-17

Filed under: Bookmarks | Lindsay @ 12:18 pm

April 16, 2006

Getting great Prints on the Canon i9900 with Photoshop

Filed under: HowTo, Photoshop | Lindsay @ 11:30 pm

I love taking pictures and creating graphics. I can spend hours editing photos and crafting kaleidoscopes and other interesting things in Photoshop. I have super quality, top of the line (when I purchased it) Canon i9900 wideformat photo printer that I couldn’t have been more excited to bring home and play with. But after several attempts, it wasn’t long until I rarely printed any of my images.

Printing has always been a frustrating process. Pictures have always turned out too dark, too low-contrast or with horrible color casts. Getting a good print always meant a lot of test copies or strips while I tweaked levels or curves and held my breath as the print came out. It never looked like it did on my screen. I wasted way too much ink, paper and time trying everything from installing new printer drivers, screen calibration techniques, and untold combinations of printer settings and profiles. And I was always disappointed. Until yesterday.

I think I have finally figured out a way to make my prints come out reasonably close to what I see on my monitor and it’s a method that seems to work consistantly across different types of pictures with different color combinations. I wanted to share what I found since I’m sure I am not the only Canon I-Series printer owner who’s had the same types of frustrations and Canon doesn’t seem to offer much documentation or help on how to optimize your prints. Having said that, you still may have to do some tweaking (using my exact numbers may just get you in the ballpark) but the core of the “secret” should be easy to apply to your own prints.

Prepping your image for print

  1. Calibrate your monitor. This is very important. There are many methods to do this. Photoshop comes with Adobe Gamma as one alternative, for instance. If you have access to one, I highly suggest using the Spyder 2, which is what I was able to do. If you can’t calibrate your monitor, there’s no point in continuing the steps. You’ve got to have a decent representation of colors on your screen.
  2. Open your image in Photoshop. Go to Edit->Assign Profile. If it’s not already selected as your Working RGB, choose sRGB ICE61966-2.1.
    sRGB Profile Assignment
    This step has many schools of thought, but again, this is what worked for me.
  3. Do whatever adjustments to the image to make it look how you would like it to look once printed such as color adjustments, levels, curves, cropping, etc.
  4. Click on the top layer in your layers list and create a new Levels adjustment layer on top of it: Layer->New Adjustment Layer->Levels
  5. With RGB selected in the Channel list, enter 1.35 in the middle box for Input Levels
    RGB Channel in Levels - Set mid Input Level to 1.35
  6. Here’s the secret! For each of the Channels (Red, Green, Blue but not RGB), if the histogram (black wave looking thing) doesn’t reach all the way to the right, slide the little white triangle towards the left until it meets the border of the histogram. See the next two images for details (my example picture only needed Green and Blue adjusted).
    Levels - Green Channel
    Levels - Blue Channel
    Update: After testing some more images where the histogram didn’t span all the way to the left (unlike my first tests), I have found that you should also move the black triangle on the left if it doesn’t border the histogram edges.
  7. This step may vary depending on the picture. I have found that adjusting the midtone Input Levels in the Green channel down (within the range from 0.90 to 0.75) and the Blue channel up (up to about 1.10) seems to correct some color casts. This seems to depend on which colors I want to tone down in the print and is the main thing you’ll have to tweak if it doesn’t come out right the first time.
    Update: I seem to have found a pattern here… if you don’t have to move the the triangles in the histogram, leave the value at 1.00, otherwise use the values specified above fpr the appropriate channel. The midtone value for Red can also be changed, in the same value range as Green.
  8. In the Options section on your Print->Print with Preview screen, make sure when you print that the Printer Profile chosen the same one that you chose for the image at the first step: sRGB ICE61966-2.1. Having the two profiles match seems to make a difference. Also, it is important that Let Photoshop Determine Colors is set for Color Handling.
    Print with Preview Options
  9. On the Canon printer properties dialog, make sure that Color Adjustment is Manual so that the printer will trust Photoshop to make the color choices.
    Color Adjustment - Canon print dialog
  10. Print it out!

Your image will probably look pretty washed out on your screen. This is to be expected.

Screen without adjustment level Screen with adjustment level
Without adjustment level With adjustment level

When you print and compare it to your monitor, make sure that you turn off (click the eye) the printing adjustment layer. Your print should look like the “original” without that layer. If it’s close but not quite, tweak the numbers for midtone Input Levels on the Blue and Green channels. After a few times you should get a feel for what those numbers need to be.

This is not a perfect method, but so far it has taken about 90% of the guesswork and frustration out of printing for me. Again, I don’t know that it will work for other people, so please let me know if it does or doesn’t! And please, print out some SMALL tests before you waste a lot of paper and ink! Good luck!

» » » » » » » » »
, , , , , , , ,

April 14, 2006

1337 Eyechart

I love this