<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://tedwise.com/wp-atom.php">
	<title type="text">Ted Wise</title>
	<subtitle type="text">Anything that interests me</subtitle>

	<updated>2010-03-12T15:17:43Z</updated>
	<generator uri="http://wordpress.org/" version="abc">WordPress</generator>

	<link rel="alternate" type="text/html" href="http://tedwise.com" />
	<id>http://tedwise.com/feed/atom/</id>
	

			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/TedWise" /><feedburner:info uri="tedwise" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>39.940043</geo:lat><geo:long>-75.597294</geo:long><entry>
		<author>
			<name>Ted Wise</name>
						<uri>http://tedwise.com</uri>
					</author>
		<title type="html"><![CDATA[Printing in color to the Savin C3535 printer from OS/X]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TedWise/~3/QDSSFBgYvig/" />
		<id>http://tedwise.com/?p=974</id>
		<updated>2010-03-12T15:17:43Z</updated>
		<published>2010-03-12T15:17:43Z</published>
		<category scheme="http://tedwise.com" term="Mac" /><category scheme="http://tedwise.com" term="foomatic-rip" /><category scheme="http://tedwise.com" term="Ghostscript" /><category scheme="http://tedwise.com" term="OS/X" /><category scheme="http://tedwise.com" term="printer driver" /><category scheme="http://tedwise.com" term="PXL" /><category scheme="http://tedwise.com" term="Savin C2410" /><category scheme="http://tedwise.com" term="Savin C2525" /><category scheme="http://tedwise.com" term="Savin C2824" /><category scheme="http://tedwise.com" term="Savin C2828" /><category scheme="http://tedwise.com" term="Savin C3030" /><category scheme="http://tedwise.com" term="Savin C3210e" /><category scheme="http://tedwise.com" term="Savin C3333" /><category scheme="http://tedwise.com" term="Savin C3528" /><category scheme="http://tedwise.com" term="Savin C3535" /><category scheme="http://tedwise.com" term="Savin C4040" /><category scheme="http://tedwise.com" term="Savin C4535" /><category scheme="http://tedwise.com" term="Savin C4540" /><category scheme="http://tedwise.com" term="Savin C5050" /><category scheme="http://tedwise.com" term="Savin C6045" /><category scheme="http://tedwise.com" term="Savin C6055" /><category scheme="http://tedwise.com" term="Savin C7570" /><category scheme="http://tedwise.com" term="Savin C9020" /><category scheme="http://tedwise.com" term="Savin C9025" /><category scheme="http://tedwise.com" term="Savin SDC555" /><category scheme="http://tedwise.com" term="Savin SGC 1506" />		<summary type="html"><![CDATA[<img src="http://tedwise.com/wp-content/uploads/2009/10/apple.gif" width="32" height="32" alt="" title="Mac" /><br/>This one has been bugging me for quite a while.  My office has a large number of multi-function printers and none of them have good support under OS/X.  It's easy to print to them in black and white by treating them as generic HP PCL/PXL printers, but they refuse to work as color printers.
Snow Leopard [...]]]></summary>
		<content type="html" xml:base="http://tedwise.com/2010/03/12/printing-in-color-to-the-savin-c3535-printer-from-osx/">&lt;img src="http://tedwise.com/wp-content/uploads/2009/10/apple.gif" width="32" height="32" alt="" title="Mac" /&gt;&lt;br/&gt;&lt;p&gt;This one has been bugging me for quite a while.  My office has a large number of multi-function printers and none of them have good support under OS/X.  It's easy to print to them in black and white by treating them as generic HP PCL/PXL printers, but they refuse to work as color printers.&lt;/p&gt;
&lt;p&gt;Snow Leopard supposedly has full support for the Savin printers, but it appears that support requires the Savin printers to have Postscript cards installed.  That's not the case at my office.  If you try to use the Savin Postscript (PS) printer drivers you'll end up printing page after page of Postscript gobbledygook.&lt;/p&gt;
&lt;p&gt;On-line recommendations for other printers insist that the PCL XL generic printer driver will print in color.  That doesn't work for the Savin printers.  The print dialog refuses to allow color as an option.&lt;/p&gt;
&lt;p&gt;To solve this problem we need to venture into the Unix heritage of OS/X.  OS/X uses the Unix CUPS printing system under the covers and hides it with pretty dialog boxes and System Preference pages.  If you look around you'll find PXL color drivers (PPD files) for the Savin printer drivers.  Those drivers are for &lt;a title="Linux" href="http://tedwise.com/category/computing/linux/"&gt;Linux&lt;/a&gt; (which also uses CUPS) and won't directly work on OS/X.  If you install one, you'll get a warning message from OS/X telling you that required software is missing.  OS/X will suggest using Software Update to get the required software.  That won't work either.  A little more spelunking around finally gave me the answer.&lt;/p&gt;
&lt;p&gt;First, &lt;a href="http://www.openprinting.org/download/printdriver/macosx/gplgs-8.64so-ub.dmg"&gt;download and install Ghostscript&lt;/a&gt; from the Open Printing group.  Ghostscript is an open source Postscript interpreter.  It takes the Postscript page description code that Mac software generates when printing, and converts it for use by the printer-specific drivers.  It's an OS/X package, so you'll have to double-click on the mpkg file to install it.&lt;/p&gt;
&lt;p&gt;Second, &lt;a href="http://www.openprinting.org/download/printdriver/macosx/foomatic-rip-4.0.2.211.dmg"&gt;download and install foomatic-rip&lt;/a&gt;.  This interfaces with Ghostscript to support the foomatic printer drivers.  This is also a mpkg file that needs to be installed.  You can't print yet using these two applications, they provide the "missing software" that OS/X complains about when you try to install the PPD printer drivers.&lt;/p&gt;
&lt;p&gt;After these two items are installed you can make use of the foomatic printer drivers.  The Savin color PXL drivers are &lt;a href="http://www.openprinting.org/driver/pxlcolor-Savin"&gt;available from openprinting.org&lt;/a&gt;.  Unfortunately, they're in Linux-specific RPM and DEB formats.  I converted them to a zip file that you can &lt;a href="http://tedwi.se/u/90 "&gt;download here&lt;/a&gt;.  Unzip that file and it contains the PPD printer driver files.&lt;/p&gt;
&lt;p&gt;If you want to get them directly from the source, instead of using the zip file, &lt;a href="http://www.openprinting.org/download/printdriver/debian/dists/lsb3.2/pxlcolor-savin/binary-amd64/openprinting-ppds-pxlcolor-savin_20090512-3lsb3.2_all.deb"&gt;download the DEB file from here&lt;/a&gt;.  From the command-line you'll need to extract the files out of the DEB file:&lt;/p&gt;
&lt;pre&gt;# ar xv openprinting-ppds-pxlcolor-savin_20090512-3lsb3.2_all.deb
# tar -zxvf data.tar.gz
# cd opt/OpenPrinting-Ricoh/ppds/Savin
# gunzip *.gz&lt;/pre&gt;
&lt;p&gt;That will get you the PPD printer driver files for the Savin printers.&lt;/p&gt;
&lt;p&gt;From here, it's normal OS/X printer installation.  Go to the OS/X System Preferences and click on Print &amp;amp; Fax.  Click the '+' icon to add a new printer.  Choose the IP option and for the Protocol, choose HP Jetdirect - Socket.  We make that choice because we're treating the Savin printer like an HP PXL printer.&lt;/p&gt;
&lt;p&gt;Enter the IP address of your Savin printer, and provide whatever Name and Location you like.  Once you enter the address, OS/X will most likely automatically choose the Savin C3535 PS printer.  If you're reading this, you already know that driver won't work for you.  Click on the Print Using drop-down and choose 'Other..'.  Use the file selector to find the PPD file for your particular printer, and open it.  OS/X will setup the printer and you can finally print in color!&lt;/p&gt;
&lt;p&gt;1. The primary reference for this information &lt;a href="http://www.linuxfoundation.org/collaborate/workgroups/openprinting/macosx/pxlmono"&gt;can be found here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;2. The Savin PXL color driver page &lt;a href="http://www.openprinting.org/driver/pxlcolor-Savin"&gt;can be found here&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TedWise?a=QDSSFBgYvig:Uy2kiaMuQ58:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TedWise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TedWise?a=QDSSFBgYvig:Uy2kiaMuQ58:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TedWise?i=QDSSFBgYvig:Uy2kiaMuQ58:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TedWise/~4/QDSSFBgYvig" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://tedwise.com/2010/03/12/printing-in-color-to-the-savin-c3535-printer-from-osx/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://tedwise.com/2010/03/12/printing-in-color-to-the-savin-c3535-printer-from-osx/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://tedwise.com/2010/03/12/printing-in-color-to-the-savin-c3535-printer-from-osx/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Ted Wise</name>
						<uri>http://tedwise.com</uri>
					</author>
		<title type="html"><![CDATA[Creating a circular gradient in iReport]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TedWise/~3/Eqkb18CHO-U/" />
		<id>http://tedwise.com/?p=965</id>
		<updated>2010-02-07T22:47:05Z</updated>
		<published>2010-02-07T22:47:05Z</published>
		<category scheme="http://tedwise.com" term="Java" /><category scheme="http://tedwise.com" term="circular gradient" /><category scheme="http://tedwise.com" term="iReport" /><category scheme="http://tedwise.com" term="JasperReports" /><category scheme="http://tedwise.com" term="PDF" />		<summary type="html"><![CDATA[<img src="http://tedwise.com/wp-content/uploads/2009/10/java.png" width="17" height="32" alt="" title="Java" /><br/>JasperReports is an extremely flexible tool for creating reports in Java.  Reports are defined as JRXML templates, compiled to JASPER binaries and run through the JasperReports run-time.  iReport is the GUI report writing tool that creates the JRXML templates.
A JRXML template is an XML file with a jrxml extension.  Here's an example of a very [...]]]></summary>
		<content type="html" xml:base="http://tedwise.com/2010/02/07/creating-a-circular-gradient-in-ireport/">&lt;img src="http://tedwise.com/wp-content/uploads/2009/10/java.png" width="17" height="32" alt="" title="Java" /&gt;&lt;br/&gt;&lt;p&gt;JasperReports is an extremely flexible tool for creating reports in &lt;a title="Java" href="http://tedwise.com/category/computing/java/"&gt;Java&lt;/a&gt;.  Reports are defined as JRXML templates, compiled to JASPER binaries and run through the JasperReports run-time.  iReport is the GUI report writing tool that creates the JRXML templates.&lt;/p&gt;
&lt;p&gt;A JRXML template is an XML file with a jrxml extension.  Here's an example of a very small template with a single parameter:&lt;/p&gt;
&lt;pre class="xml"&gt;&amp;nbsp;
&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span style="color: #000066;"&gt;version&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;encoding&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;jasperReport&lt;/span&gt; &lt;span style="color: #000066;"&gt;xmlns&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;http://jasperreports.sourceforge.net/jasperreports&amp;quot;&lt;/span&gt;
              &lt;span style="color: #000066;"&gt;xmlns:xsi&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;/span&gt;
              &lt;span style="color: #000066;"&gt;xsi:schemaLocation&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd&amp;quot;&lt;/span&gt;
              &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;comments&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;pageWidth&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;554&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;pageHeight&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;802&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;columnWidth&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;554&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;leftMargin&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;rightMargin&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt;
              &lt;span style="color: #000066;"&gt;topMargin&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;bottomMargin&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;parameter&lt;/span&gt; &lt;span style="color: #000066;"&gt;name&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;displayValue&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;class&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;java.lang.String&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;isForPrompting&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;pageHeader&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;band&lt;/span&gt; &lt;span style="color: #000066;"&gt;height&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;120&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
            &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;image&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
                &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;reportElement&lt;/span&gt; &lt;span style="color: #000066;"&gt;x&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;339&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;y&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;44&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;width&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;65&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;height&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;12&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
                &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/reportElement&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
                &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;imageExpression&lt;/span&gt; &lt;span style="color: #000066;"&gt;class&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;net.sf.jasperreports.engine.JRRenderable&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
                    &lt;span style="color: #339933;"&gt;&amp;lt;![CDATA[new com.report.jasper.CircularGradientImageRenderer(&amp;quot;#00FF00&amp;quot;)]]&amp;gt;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/imageExpression&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
            &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/image&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
            &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;textField&lt;/span&gt; &lt;span style="color: #000066;"&gt;isBlankWhenNull&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
                &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;reportElement&lt;/span&gt; &lt;span style="color: #000066;"&gt;x&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;339&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;y&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;44&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;width&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;65&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;height&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;12&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
                &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;textElement&lt;/span&gt; &lt;span style="color: #000066;"&gt;textAlignment&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;Center&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;verticalAlignment&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;Middle&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
                    &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;font&lt;/span&gt; &lt;span style="color: #000066;"&gt;fontName&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;DejaVu Sans&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;size&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;7&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
                &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/textElement&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
                &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;textFieldExpression&lt;/span&gt; &lt;span style="color: #000066;"&gt;class&lt;/span&gt;=&lt;span style="color: #ff0000;"&gt;&amp;quot;java.lang.String&amp;quot;&lt;/span&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #339933;"&gt;&amp;lt;![CDATA[$P{displayValue}]]&amp;gt;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/textFieldExpression&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
            &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/textField&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/band&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/pageHeader&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/jasperReport&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;&lt;/pre&gt;
&lt;p&gt;A common requirement when displaying values is to highlight them by displaying them with a background color.  But many background colors can cause values to be difficult to read or can make values illegible when reports are faxed or copied in black-and-white.&lt;/p&gt;
&lt;p&gt;To get around this, a circular gradient background can be used.  The resulting background looks like this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://tedwise.com/wp-content/uploads/2010/02/gradient_background.jpg"&gt;&lt;img src="http://tedwise.com/wp-content/uploads/2010/02/gradient_background.jpg" alt="" title="gradient_background" width="95" height="45" class="aligncenter size-full wp-image-966" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;iReport lets you place images on a report that can come from a physical file or can be dynamically generated.  In our case, we'll write a simple Java class that will generate the gradient background.  Note that the example provided here will only work when generating PDF reports.&lt;/p&gt;
&lt;pre class="java"&gt;&amp;nbsp;
&lt;span style="color: #000000; font-weight: bold;"&gt;package&lt;/span&gt; com.&lt;span style="color: #006600;"&gt;report&lt;/span&gt;.&lt;span style="color: #006600;"&gt;jasper&lt;/span&gt;;
&amp;nbsp;
&lt;span style="color: #a1a100;"&gt;import java.awt.*;&lt;/span&gt;
&lt;span style="color: #a1a100;"&gt;import java.awt.geom.AffineTransform;&lt;/span&gt;
&lt;span style="color: #a1a100;"&gt;import java.awt.geom.Rectangle2D;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #a1a100;"&gt;import net.sf.jasperreports.engine.JRAbstractSvgRenderer;&lt;/span&gt;
&lt;span style="color: #a1a100;"&gt;import net.sf.jasperreports.engine.JRException;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #808080; font-style: italic;"&gt;/**
 * Draws a colored, circular gradient background used in the report.
 */&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; CircularGradientImageRenderer &lt;span style="color: #000000; font-weight: bold;"&gt;extends&lt;/span&gt; JRAbstractSvgRenderer &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
    &lt;span style="color: #808080; font-style: italic;"&gt;/**
     * The gradient color.
     */&lt;/span&gt;
    &lt;span style="color: #000000; font-weight: bold;"&gt;private&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; rgb;
&amp;nbsp;
    &lt;span style="color: #808080; font-style: italic;"&gt;/**
     * Create a circular gradient image in a bounded square.
     *
     * @param rgb The gradient color.
     */&lt;/span&gt;
    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; CircularGradientImageRenderer&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; rgb&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
        &lt;span style="color: #000000; font-weight: bold;"&gt;this&lt;/span&gt;.&lt;span style="color: #006600;"&gt;rgb&lt;/span&gt; = rgb;
    &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span style="color: #808080; font-style: italic;"&gt;/**
     * Pull out a substring without returning null.
     *
     * @param value The value.
     * @param begin The beginning index.
     * @param end   The ending index.
     * @return The substring.
     */&lt;/span&gt;
    &lt;span style="color: #000000; font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;static&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; safeSubstring&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; value, &lt;span style="color: #993333;"&gt;int&lt;/span&gt; begin, &lt;span style="color: #993333;"&gt;int&lt;/span&gt; end&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
        &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; sub = &lt;span style="color: #ff0000;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;
&amp;nbsp;
        &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;value != &lt;span style="color: #000000; font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;value.&lt;span style="color: #006600;"&gt;length&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &amp;gt; begin&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
                end = &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AMath+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Math&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: #006600;"&gt;min&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;end, value.&lt;span style="color: #006600;"&gt;length&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; - &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
                sub = value.&lt;span style="color: #006600;"&gt;substring&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;begin, end + &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
            &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
        &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; sub;
    &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span style="color: #808080; font-style: italic;"&gt;/**
     * Parse a hex value without throwing an exception.
     *
     * @param value The value to convert.
     * @return The integer value.
     */&lt;/span&gt;
    &lt;span style="color: #000000; font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;static&lt;/span&gt; &lt;span style="color: #993333;"&gt;int&lt;/span&gt; safeHexParse&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; value&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
        &lt;span style="color: #000000; font-weight: bold;"&gt;try&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AInteger+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: #006600;"&gt;parseInt&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;value, &lt;span style="color: #cc66cc;"&gt;16&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
        &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;catch&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3ANumberFormatException+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;NumberFormatException&lt;/span&gt;&lt;/a&gt; e&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;;
        &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
    &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span style="color: #808080; font-style: italic;"&gt;/**
     * Convert a string hex color into a Java Color object.
     *
     * @param rgb The string value.
     * @return The Color object.
     */&lt;/span&gt;
    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;static&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AColor+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Color&lt;/span&gt;&lt;/a&gt; stringToRGB&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AString+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;String&lt;/span&gt;&lt;/a&gt; rgb&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
        &lt;span style="color: #993333;"&gt;int&lt;/span&gt; r = &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;;
        &lt;span style="color: #993333;"&gt;int&lt;/span&gt; g = &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;;
        &lt;span style="color: #993333;"&gt;int&lt;/span&gt; b = &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;;
&amp;nbsp;
        &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;rgb != &lt;span style="color: #000000; font-weight: bold;"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; rgb.&lt;span style="color: #006600;"&gt;startsWith&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;#&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
            r = safeHexParse&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;safeSubstring&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;rgb, &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;, &lt;span style="color: #cc66cc;"&gt;2&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
            g = safeHexParse&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;safeSubstring&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;rgb, &lt;span style="color: #cc66cc;"&gt;3&lt;/span&gt;, &lt;span style="color: #cc66cc;"&gt;4&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
            b = safeHexParse&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;safeSubstring&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;rgb, &lt;span style="color: #cc66cc;"&gt;5&lt;/span&gt;, &lt;span style="color: #cc66cc;"&gt;6&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
        &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color: #000000; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AColor+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Color&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;r, g, b&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #993333;"&gt;void&lt;/span&gt; render&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AGraphics2D+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Graphics2D&lt;/span&gt;&lt;/a&gt; g2d, &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3ARectangle2D+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Rectangle2D&lt;/span&gt;&lt;/a&gt; rect&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;throws&lt;/span&gt; JRException &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
        &lt;span style="color: #808080; font-style: italic;"&gt;// Save the Graphics2D affine transform&lt;/span&gt;
        &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AAffineTransform+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;AffineTransform&lt;/span&gt;&lt;/a&gt; savedTrans = g2d.&lt;span style="color: #006600;"&gt;getTransform&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
        &lt;span style="color: #993333;"&gt;float&lt;/span&gt; radius = &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #993333;"&gt;float&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AMath+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Math&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: #006600;"&gt;max&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;rect.&lt;span style="color: #006600;"&gt;getHeight&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;, rect.&lt;span style="color: #006600;"&gt;getWidth&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; / &lt;span style="color: #cc66cc;"&gt;2&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
        &lt;span style="color: #993333;"&gt;float&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt; fractions = &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;.0f, &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;.3f, &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;.0f&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;;
        &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AColor+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Color&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt; colors = &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AColor+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Color&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: #006600;"&gt;WHITE&lt;/span&gt;, &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=allinurl%3AColor+java.sun.com&amp;amp;btnI=I%27m%20Feeling%20Lucky"&gt;&lt;span style="color: #aaaadd; font-weight: bold;"&gt;Color&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: #006600;"&gt;WHITE&lt;/span&gt;, stringToRGB&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;rgb&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
        &lt;span style="color: #808080; font-style: italic;"&gt;// Paint a nice background...&lt;/span&gt;
        g2d.&lt;span style="color: #006600;"&gt;setPaint&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; RadialGradientPaint&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #993333;"&gt;float&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; rect.&lt;span style="color: #006600;"&gt;getCenterX&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;, &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #993333;"&gt;float&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; rect.&lt;span style="color: #006600;"&gt;getCenterY&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;, radius, fractions, colors&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
        g2d.&lt;span style="color: #006600;"&gt;fillRect&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;, &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;, &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #993333;"&gt;int&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; rect.&lt;span style="color: #006600;"&gt;getWidth&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;, &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #993333;"&gt;int&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; rect.&lt;span style="color: #006600;"&gt;getHeight&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
        g2d.&lt;span style="color: #006600;"&gt;draw&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;rect&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
        &lt;span style="color: #808080; font-style: italic;"&gt;// Restore the Graphics2D affine transform&lt;/span&gt;
        g2d.&lt;span style="color: #006600;"&gt;setTransform&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;savedTrans&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;&lt;/pre&gt;
&lt;p&gt;This simple class is provided with a drawing rectangle and context by JasperReports.  It uses the Java RadialGradientPaint class to draw the circular gradient.  This class was added in Java 6 so don't go looking for it in earlier Java versions.&lt;/p&gt;
&lt;p&gt;To make this work in iReport, you create two items.  The first item is the background image.  Drag an image widget from the tool palette to the report.  iReport will prompt you for an image to display in the widget.  Press cancel.  We're dynamically creating the widget so we don't need an image file.  Place the image widget wherever you want the value displayed, and size it appropriately.&lt;/p&gt;
&lt;p&gt;Next, select the Image Expression property and press the ellipsis button next to the field.  A pop-up window will appear.  In that window, type the name of the Java class that will dynamically create the gradient background.  The class we're using takes an RGB color as a String parameter, so a red gradient would be "#FF0000".&lt;/p&gt;
&lt;p&gt;&lt;a href="http://tedwise.com/wp-content/uploads/2010/02/new-com.report....-Image-Expression.jpg"&gt;&lt;img src="http://tedwise.com/wp-content/uploads/2010/02/new-com.report....-Image-Expression-300x289.jpg" alt="" title="new com.report.... - Image Expression" width="300" height="289" class="aligncenter size-medium wp-image-967" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Next, set the Expression Class property.  Set the property to 'net.sf.jasperreports.engine.JRRenderable'.  This tells JasperReports that the custom class is writing a rendered image.  You could also write a Java class that created a 'java.awt.Image'.  But that is a fixed-pixel size image that won't scale appropriately in a PDF.&lt;/p&gt;
&lt;p&gt;Finally, we drag a Text Field widget onto the report.  Place it on top of the image widget created earlier and size it identically.  If you find that the text field ends up behind the image, select the image, right click it and choose Send to Back.&lt;/p&gt;
&lt;p&gt;Don't look at the raw XML trying to find a z-order attribute, you won't find one.  JasperReports represents z-order by the order elements appear in the XML file.  Elements that appear last overwrite elements that appear earlier in the file.&lt;/p&gt;
&lt;p&gt;That's all there is to it.  You can change the size of the inner white circle by tweaking the Java class.&lt;/p&gt;
&lt;pre class="java"&gt;&amp;nbsp;
&lt;span style="color: #993333;"&gt;float&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt; fractions = &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;.0f, &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;.3f, &lt;span style="color: #cc66cc;"&gt;1&lt;/span&gt;.0f&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;&lt;/pre&gt;
&lt;p&gt;Move the center value (0.3f) up and down to find the right size.&lt;/p&gt;
&lt;p&gt;One last tip.  If you try to preview the report in iReport you might receive errors that the class can't be found.  Bring up the settings in iReport and add the path to the compiled class in the Classpath section.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TedWise?a=Eqkb18CHO-U:Z9PxmT-cldg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TedWise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TedWise?a=Eqkb18CHO-U:Z9PxmT-cldg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TedWise?i=Eqkb18CHO-U:Z9PxmT-cldg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TedWise/~4/Eqkb18CHO-U" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://tedwise.com/2010/02/07/creating-a-circular-gradient-in-ireport/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://tedwise.com/2010/02/07/creating-a-circular-gradient-in-ireport/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://tedwise.com/2010/02/07/creating-a-circular-gradient-in-ireport/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Ted Wise</name>
						<uri>http://tedwise.com</uri>
					</author>
		<title type="html"><![CDATA[Larry&#8217;s vision of the cloud]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TedWise/~3/yDMvQWgmBYM/" />
		<id>http://tedwise.com/?p=963</id>
		<updated>2010-02-02T14:13:07Z</updated>
		<published>2010-02-02T14:13:07Z</published>
		<category scheme="http://tedwise.com" term="Computing" /><category scheme="http://tedwise.com" term="Amazon" /><category scheme="http://tedwise.com" term="Cloud Computing" /><category scheme="http://tedwise.com" term="Google" /><category scheme="http://tedwise.com" term="Oracle" />		<summary type="html"><![CDATA[<img src="http://tedwise.com/wp-content/uploads/2009/10/computer.png" width="32" height="32" alt="" title="Computing" /><br/>While taking a trip to sun.com today, I noticed that it's already redirecting to oracle.com.  And at the same moment I noticed that the headliner at oracle.com is an announcement about the Oracle Cloud Computing Forum.  Given Larry's well know views of the cloud, I found this amusing.  And a vision of Larry running a [...]]]></summary>
		<content type="html" xml:base="http://tedwise.com/2010/02/02/larrys-vision-of-the-cloud/">&lt;img src="http://tedwise.com/wp-content/uploads/2009/10/computer.png" width="32" height="32" alt="" title="Computing" /&gt;&lt;br/&gt;&lt;p&gt;While taking a trip to sun.com today, I noticed that it's already redirecting to oracle.com.  And at the same moment I noticed that the headliner at oracle.com is an announcement about the Oracle Cloud Computing Forum.  Given Larry's well know views of the cloud, I found this amusing.  And a vision of Larry running a cloud conference immediately came to mind.  Here's how I imagine a Cloud Computing Forum run by Larry Ellison would go:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Larry&lt;/strong&gt;: "Welcome to the Oracle Cloud Computing Forum.  Please take a seat.  There's been lots of talk about cloud computing and we here at Oracle wanted to share our own corporate vision.  Ready?  Here goes.  There IS NO cloud!  It's all a bunch of CRAP!  It's the same thing we've been doing for TWENTY FREAKING years!  You want a cloud?  Go buy our hardware and software you CHEAPSKATES!  Thank you, that concludes our forum.  I'd like to open the mic for questions."&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Random Guy&lt;/strong&gt;: "Isn't a cloud more then just a web site?"&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Larry&lt;/strong&gt;: "No.  Next question."&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Other Random Guy&lt;/strong&gt;: "Is a cloud just outsourcing your IT?"&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Larry&lt;/strong&gt;: "How many times do I have to tell you?  There IS NO cloud.  And yes, it's just outsourcing your IT.  And only idiots would do that.  Buy our hardware and software."&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Final Random Guy&lt;/strong&gt;: "What about Amazon's and Google's vision of the cloud?"&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Larry&lt;/strong&gt;: "Google is just hotelling web apps and any idiot can do that in their own data center.  Amazon is just hosting a big virtualization server and any idiot can do that too.  You want to swallow that crap?  Fine.  I'll buy your &lt;a title="company" href="http://tedwise.com/my-company/"&gt;company&lt;/a&gt; and fire you for being stupid, or you can just buy our hardware and software.  Now everyone go home, the conference is over."&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TedWise?a=yDMvQWgmBYM:YAsRt4Fe_zA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TedWise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TedWise?a=yDMvQWgmBYM:YAsRt4Fe_zA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TedWise?i=yDMvQWgmBYM:YAsRt4Fe_zA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TedWise/~4/yDMvQWgmBYM" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://tedwise.com/2010/02/02/larrys-vision-of-the-cloud/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://tedwise.com/2010/02/02/larrys-vision-of-the-cloud/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://tedwise.com/2010/02/02/larrys-vision-of-the-cloud/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Ted Wise</name>
						<uri>http://tedwise.com</uri>
					</author>
		<title type="html"><![CDATA[Apple&#8217;s Trojan horse]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TedWise/~3/bqbR08nhPXU/" />
		<id>http://tedwise.com/?p=961</id>
		<updated>2010-02-02T14:08:25Z</updated>
		<published>2010-02-02T14:08:25Z</published>
		<category scheme="http://tedwise.com" term="iPhone" /><category scheme="http://tedwise.com" term="Apple" /><category scheme="http://tedwise.com" term="iPad" /><category scheme="http://tedwise.com" term="iPhone OS" /><category scheme="http://tedwise.com" term="OS/X" />		<summary type="html"><![CDATA[<img src="http://tedwise.com/wp-content/uploads/2009/10/iphone.png" width="17" height="32" alt="" title="iPhone" /><br/>Apple's trojan horse is the "computer as appliance".  They've managed to create devices that are almost as wide in scope and functionality as general computing devices but are easily accessible to non-technical people.  And, more importantly, don't need technical maintenance or an understanding of the computing underpinnings.
If it were just the App store, [...]]]></summary>
		<content type="html" xml:base="http://tedwise.com/2010/02/02/apples-trojan-horse/">&lt;img src="http://tedwise.com/wp-content/uploads/2009/10/iphone.png" width="17" height="32" alt="" title="iPhone" /&gt;&lt;br/&gt;&lt;p&gt;Apple's trojan horse is the "computer as appliance".  They've managed to create devices that are &lt;em&gt;almost&lt;/em&gt; as wide in scope and functionality as general computing devices but are easily accessible to non-technical people.  And, more importantly, don't need technical maintenance or an understanding of the computing underpinnings.&lt;/p&gt;
&lt;p&gt;If it were just the App store, then all of the new stores that other vendors have created would have propelled their devices off the shelves.&lt;/p&gt;
&lt;p&gt;If the iPad succeeds, it's because its an idiot-proof appliance.  And Apple isn't unique in knowing this.  Nobody has to setup their Kindle's file system.  Or figure out where that book they downloaded went.&lt;/p&gt;
&lt;p&gt;Do you want to know how the unreleased iPad works?  It works just like the &lt;a title="iPhone" href="http://tedwise.com/category/computing/mac/iphone/"&gt;iPhone&lt;/a&gt;.  It's the exact same operating system.  It's 90% of the same UI.  What are the major technical differences?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It's much faster.&lt;/li&gt;
&lt;li&gt;The OS now allows files to be exchanged both between iPad applications and with computers.&lt;/li&gt;
&lt;li&gt;It supports hardware bluetooth keyboards and custom on-screen touch keyboards.&lt;/li&gt;
&lt;li&gt;It has new UI elements that take advantage of a bigger screen.&lt;/li&gt;
&lt;li&gt;It supports external displays, aka the projector.&lt;/li&gt;
&lt;li&gt;And, lastly, it has a big, bright, sharp screen.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to the screen size and the CPU speed, the apps are going to be larger in scope.  There are apps for editing Microsoft Office files on the iPhone but no one uses them for more then display and minor touch-up.  The screen is too small, the device is too slow and it's too hard getting documents in and out.  The last two points will likely evaporate with the next iPhone refresh.  But the first one never will.&lt;/p&gt;
&lt;p&gt;But, at launch, Apple showed a mobile edition of iWork.  With a well thought-out gesture interface.  And, an application for drawing on the iPhone was reworked for large-scale drawing on the iPad.  You can run a sizable portion of Photoshop on the iPad.  And it makes sense to do it.  And, Mac software makers who weren't considering the iPhone are now announcing iPad plans.  Omni Group, who makes the Mac's equivalent of Visio, are halting existing development to create iPad versions of their applications.&lt;/p&gt;
&lt;p&gt;Why all this trouble?  Why not create a tablet running standard OS/X instead of iPhone OS?  After all, you could create an App Store for OS/X apps.  90% of Mac software doesn't even require an installer.  Again, it's because Apple is moving toward computing appliances.  Which means locked-down devices with restricted technical underpinnings.  And OS/X is wide open.  It has a standard filesystem.  It has drivers.  It has software that can get into the guts of the OS and need to be wiped to clear it out.  And for a consumer device you don't ever want to worry about, that's not good enough.&lt;/p&gt;
&lt;p&gt;The other vendors know it too.  Asus, the largest computer &lt;a title="company" href="http://tedwise.com/my-company/"&gt;company&lt;/a&gt; in the world, announced they aren't going to make a tablet.  Why?  Because they said Windows 7 can't compete with the iPhone OS on a tablet device.  And there's no way that mobile Windows can either.  And Android isn't close enough yet.&lt;/p&gt;
&lt;p&gt;If Apple is right, and this is a market that's been going either unserved or underserved by netbooks, then stand to make a killing.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TedWise?a=bqbR08nhPXU:giuVWGhl4U0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TedWise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TedWise?a=bqbR08nhPXU:giuVWGhl4U0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TedWise?i=bqbR08nhPXU:giuVWGhl4U0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TedWise/~4/bqbR08nhPXU" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://tedwise.com/2010/02/02/apples-trojan-horse/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://tedwise.com/2010/02/02/apples-trojan-horse/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://tedwise.com/2010/02/02/apples-trojan-horse/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Ted Wise</name>
						<uri>http://tedwise.com</uri>
					</author>
		<title type="html"><![CDATA[Steve Jobs holds forth at Apple town hall]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TedWise/~3/oRmjaRlKJfE/" />
		<id>http://tedwise.com/?p=958</id>
		<updated>2010-01-31T23:12:54Z</updated>
		<published>2010-01-31T23:12:54Z</published>
		<category scheme="http://tedwise.com" term="Mac" /><category scheme="http://tedwise.com" term="Adobe" /><category scheme="http://tedwise.com" term="Android" /><category scheme="http://tedwise.com" term="Apple" /><category scheme="http://tedwise.com" term="Flash" /><category scheme="http://tedwise.com" term="Google" /><category scheme="http://tedwise.com" term="HTML5" /><category scheme="http://tedwise.com" term="iPad" /><category scheme="http://tedwise.com" term="iPhone" />		<summary type="html"><![CDATA[<img src="http://tedwise.com/wp-content/uploads/2009/10/apple.gif" width="32" height="32" alt="" title="Mac" /><br/>Steve Jobs held an internal town hall at Apple after the unveiling of the iPad.  Since secrecy is so tight, many at Apple had no idea the iPad was coming.  He took questions and second-hand commenters say he had a few choice comments.
He said that Apple bought Lala because they wanted their talent [...]]]></summary>
		<content type="html" xml:base="http://tedwise.com/2010/01/31/steve-jobs-holds-forth-at-apple-town-hall/">&lt;img src="http://tedwise.com/wp-content/uploads/2009/10/apple.gif" width="32" height="32" alt="" title="Mac" /&gt;&lt;br/&gt;&lt;p&gt;Steve Jobs held an internal town hall at Apple after the unveiling of the iPad.  Since secrecy is so tight, many at Apple had no idea the iPad was coming.  He took questions and second-hand commenters say he had a few choice comments.&lt;/p&gt;
&lt;p&gt;He said that Apple bought Lala because they wanted their talent for the iTunes team.&lt;/p&gt;
&lt;p&gt;He said that Apple didn't go into the search business but Google went into the phone business.  He feels that the Android team at Google (not the entire &lt;a title="company" href="http://tedwise.com/my-company/"&gt;company&lt;/a&gt;) would love to kill off the &lt;a title="iPhone" href="http://tedwise.com/category/computing/mac/iphone/"&gt;iPhone&lt;/a&gt;.  And he feels that the Google "do no evil" corporate mantra is a bunch of crap.&lt;/p&gt;
&lt;p&gt;According to Jobs, Apple is going to update the iPhone/iPad faster then Google can with the Android.  He also said that the next iPhone hardware update was going to be an "A+" update.  He rounded out the hardware talk by stating that the next Mac refresh was going to "take it to the next level".&lt;/p&gt;
&lt;p&gt;Finally, he lamented that the "kick-ass" Adobe of old was now a "lazy" company and that Flash was a dead technology.&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;My take - Google has a split focus between their Google OS and Android.  What they're trying to accomplish - a netbook-like computing appliance, is EXACTLY what the iPad is.  Google's problem is they've decided that Android won't do what they want, so they've gone down the Google OS road as well.  This means they need double the resources and gain little between advances in one platform.  Google's approach is, ironically, the Microsoft approach.  Google is checking of technical functionality checkboxes at the expense of ease of use and paradigm shifts.  They'll probably sell a crap-load of Android devices but they're relegating themselves to the Microsoft second-tier in the mind of consumers.&lt;/p&gt;
&lt;p&gt;Will Apple really update their platform faster then Google will?  I have no idea.  They've let iPhone OS languish while the iPad was in development, we'll see if that picks back up now that the iPad is public.  The biggest problem for them is they're trying to forge new ground - looking for new approaches that differ from long-established solutions - like, a filesystem.  That's not a fast or simple process.&lt;/p&gt;
&lt;p&gt;From the hardware perspective its now assumed that the new Apple-designed A4 CPU will be coming to the iPhone.  Probably a speed-throttled version.  Maybe that's what Jobs means by an "A+" update.  It will probably have an increased screen resolution and a better camera.  Beyond that, I have no idea.&lt;/p&gt;
&lt;p&gt;And the Mac refresh he's talking about will be a switch to the new Intel i5 chipset.  This brings a significant jump in performance without a battery life impact.&lt;/p&gt;
&lt;p&gt;And finally, yes, he's correct.  Flash is a dead-end and it needs to die so that HTML5 moves forward.  Honestly, it's already happening at a much faster pace then I expected.  Google just announced they're killing IE 6 support in Google Docs and other web properties.  And YouTube and Vimeo now support HTML5 video in place of Flash.  That's coupled with announcements that, for the first time ever, the percentage of Flash-enabled user agents is dropping.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TedWise?a=oRmjaRlKJfE:1tuEXAEce6g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TedWise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TedWise?a=oRmjaRlKJfE:1tuEXAEce6g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TedWise?i=oRmjaRlKJfE:1tuEXAEce6g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TedWise/~4/oRmjaRlKJfE" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://tedwise.com/2010/01/31/steve-jobs-holds-forth-at-apple-town-hall/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://tedwise.com/2010/01/31/steve-jobs-holds-forth-at-apple-town-hall/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://tedwise.com/2010/01/31/steve-jobs-holds-forth-at-apple-town-hall/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Ted Wise</name>
						<uri>http://tedwise.com</uri>
					</author>
		<title type="html"><![CDATA[Don&#8217;t misunderstand Oracle&#8217;s purchase of Sun]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TedWise/~3/m_hw5ljblmQ/" />
		<id>http://tedwise.com/?p=956</id>
		<updated>2010-01-31T16:42:27Z</updated>
		<published>2010-01-31T16:42:27Z</published>
		<category scheme="http://tedwise.com" term="Computing" /><category scheme="http://tedwise.com" term="Eclipse" /><category scheme="http://tedwise.com" term="GlassFish" /><category scheme="http://tedwise.com" term="IBM" /><category scheme="http://tedwise.com" term="Java" /><category scheme="http://tedwise.com" term="JDeveloper" /><category scheme="http://tedwise.com" term="MySQL" /><category scheme="http://tedwise.com" term="NetBeans" /><category scheme="http://tedwise.com" term="OpenSolaris" /><category scheme="http://tedwise.com" term="Oracle" /><category scheme="http://tedwise.com" term="Solaris" /><category scheme="http://tedwise.com" term="SPARC" /><category scheme="http://tedwise.com" term="Sun" />		<summary type="html"><![CDATA[<img src="http://tedwise.com/wp-content/uploads/2009/10/computer.png" width="32" height="32" alt="" title="Computing" /><br/>I was reading a blog post about what will happen now that Oracle has purchased Sun.  The poster repeated a number of fallacies that I've seen around the web.
1. MySQL is dead now.
MySQL is dead?  No its not.  Oracle has owned InnoDB and never once used it against MySQL users.  They own [...]]]></summary>
		<content type="html" xml:base="http://tedwise.com/2010/01/31/dont-misunderstand-oracles-purchase-of-sun/">&lt;img src="http://tedwise.com/wp-content/uploads/2009/10/computer.png" width="32" height="32" alt="" title="Computing" /&gt;&lt;br/&gt;&lt;p&gt;I was &lt;a href="http://developers-arena.blogspot.com/2010/01/oracle-buying-sun-will-change-it.html"&gt;reading a blog post &lt;/a&gt;about what will happen now that Oracle has purchased Sun.  The poster repeated a number of fallacies that I've seen around the web.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. MySQL is dead now.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;MySQL is dead?  No its not.  Oracle has owned InnoDB and never once used it against MySQL users.  They own BerkelyDB and support and sell it.  Oracle is attempting to own every segment of the market from the "Enterprise" to the "tactical".  They're placing MySQL at the tactical end.  They'll sell you MySQL support and attempt to upsell you if they get the opportunity.&lt;/p&gt;
&lt;p&gt;I'm no Oracle fan but they're not attempting to kill any open-source projects.  They're continuing to fund Glassfish, Hudson, Netbeans and numerous other open-source projects.  They're even continuing to donate to Eclipse.  And they intend to increase the community involvement in the &lt;a title="Java" href="http://tedwise.com/category/computing/java/"&gt;Java&lt;/a&gt; language.&lt;/p&gt;
&lt;p&gt;2. &lt;strong&gt;Solaris/OpenSolaris is going to be killed off.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Oracle is looking to combat IBM.  IBM's "secret sauce" in the lucrative Enterprise space is owning the entire stack, from the hardware, to the OS to the software running on top of it.  That's why Oracle is keeping Solaris and the SPARC hardware.  They'll tell Enterprise buyers that they'll get the pinnacle of speed and reliability with carefully developed and tuned software running on their own hardware.&lt;/p&gt;
&lt;p&gt;3. &lt;strong&gt;Oracle's plans for Java aren't clear and Netbeans is history.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Oracle says they're increasing community involvement.  They seem to want to move at least some of the R&amp;amp;D for Java out to the community.  And, again, Netbeans isn't history.  The official Oracle roadmap lists an increase in funding for Netbeans.  They intend to use Netbeans as the "tactical" IDE offering, while using JDeveloper as the Enterprise one.  Personally, I'd move everything to Netbeans (or Eclipse) and kill off that piece-of-crap JDeveloper, but I'm not Larry.&lt;/p&gt;
&lt;p&gt;4. &lt;strong&gt;SPARC is dead - Oracle isn't a hardware &lt;a title="company" href="http://tedwise.com/my-company/"&gt;company&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Oracle &lt;em&gt;wants&lt;/em&gt; to be in the hardware business.  That's how they intend to compete with IBM.  They see IBM as their competition, not Microsoft.  They're increasing the hardware push and co-branding them as Sun/Oracle.&lt;/p&gt;
&lt;p&gt;5. &lt;strong&gt;OpenOffice and VirtualBox are dead.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Oracle is starting up a new division to work on OpenOffice and they're integrating VirtualBox with Oracle VM.&lt;/p&gt;
&lt;p&gt;I'm no great fan of Oracle's business.  They make overly complicated and buggy software and then charge you an arm and leg to make it work.  But the Oracle DB is hands down the best database server on the market.  Larry intends to own everything including the kitchen sink and will sell you any part of that vast array of software.  And if the software is free, he'll sell you the support instead.&lt;/p&gt;
&lt;p&gt;I would greatly prefer that Oracle start uniting platforms and move to an open source model but, at least at present, that doesn't appear likely.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;References&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://java.dzone.com/articles/oracles-roadmap-sun"&gt;http://java.dzone.com/articles/oracles-roadmap-sun&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.oracle.com/ocom/groups/public/documents/webcontent/038563.pdf"&gt;http://www.oracle.com/ocom/groups/public/documents/webcontent/038563.pdf&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TedWise?a=m_hw5ljblmQ:F0MmgCEnHgU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TedWise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TedWise?a=m_hw5ljblmQ:F0MmgCEnHgU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TedWise?i=m_hw5ljblmQ:F0MmgCEnHgU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TedWise/~4/m_hw5ljblmQ" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://tedwise.com/2010/01/31/dont-misunderstand-oracles-purchase-of-sun/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://tedwise.com/2010/01/31/dont-misunderstand-oracles-purchase-of-sun/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://tedwise.com/2010/01/31/dont-misunderstand-oracles-purchase-of-sun/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Ted Wise</name>
						<uri>http://tedwise.com</uri>
					</author>
		<title type="html"><![CDATA[Maven Micro-Tip: Get sources and Javadocs]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TedWise/~3/1ljah9ZBFnc/" />
		<id>http://tedwise.com/?p=953</id>
		<updated>2010-01-27T19:43:46Z</updated>
		<published>2010-01-27T13:52:33Z</published>
		<category scheme="http://tedwise.com" term="Java" /><category scheme="http://tedwise.com" term="Javadoc" /><category scheme="http://tedwise.com" term="Maven" /><category scheme="http://tedwise.com" term="Source code" /><category scheme="http://tedwise.com" term="Tip" />		<summary type="html"><![CDATA[<img src="http://tedwise.com/wp-content/uploads/2009/10/java.png" width="17" height="32" alt="" title="Java" /><br/>When you're using Maven in an IDE you often find the need for your IDE to resolve source code and Javadocs for your library dependencies.  There's an easy way to accomplish that goal.
# mvn dependency:sources
# mvn dependency:resolve -Dclassifier=javadoc
The first command will attempt to download source code for each of the dependencies in your pom file.
The [...]]]></summary>
		<content type="html" xml:base="http://tedwise.com/2010/01/27/maven-micro-tip-get-sources-and-javadocs/">&lt;img src="http://tedwise.com/wp-content/uploads/2009/10/java.png" width="17" height="32" alt="" title="Java" /&gt;&lt;br/&gt;&lt;p&gt;When you're using Maven in an IDE you often find the need for your IDE to resolve source code and Javadocs for your library dependencies.  There's an easy way to accomplish that goal.&lt;/p&gt;
&lt;pre&gt;# mvn dependency:sources
# mvn dependency:resolve -Dclassifier=javadoc&lt;/pre&gt;
&lt;p&gt;The first command will attempt to download source code for each of the dependencies in your pom file.&lt;/p&gt;
&lt;p&gt;The second command will attempt to download the Javadocs.&lt;/p&gt;
&lt;p&gt;Maven is at the mercy of the library packagers here.  So some of them won't have source code packaged and many of them won't have Javadocs.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TedWise?a=1ljah9ZBFnc:mV7mbRQdUps:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TedWise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TedWise?a=1ljah9ZBFnc:mV7mbRQdUps:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TedWise?i=1ljah9ZBFnc:mV7mbRQdUps:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TedWise/~4/1ljah9ZBFnc" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://tedwise.com/2010/01/27/maven-micro-tip-get-sources-and-javadocs/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://tedwise.com/2010/01/27/maven-micro-tip-get-sources-and-javadocs/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://tedwise.com/2010/01/27/maven-micro-tip-get-sources-and-javadocs/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Ted Wise</name>
						<uri>http://tedwise.com</uri>
					</author>
		<title type="html"><![CDATA[The HTML5 video mess.  See it today!]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TedWise/~3/QytTGXBlMsw/" />
		<id>http://tedwise.com/?p=947</id>
		<updated>2010-01-22T14:10:25Z</updated>
		<published>2010-01-22T14:10:25Z</published>
		<category scheme="http://tedwise.com" term="Web" /><category scheme="http://tedwise.com" term="Chrome" /><category scheme="http://tedwise.com" term="Codec" /><category scheme="http://tedwise.com" term="Firefox" /><category scheme="http://tedwise.com" term="H.264" /><category scheme="http://tedwise.com" term="HTML5" /><category scheme="http://tedwise.com" term="Internet Explorer" /><category scheme="http://tedwise.com" term="Ogg Theora" /><category scheme="http://tedwise.com" term="Safari" /><category scheme="http://tedwise.com" term="video tag" /><category scheme="http://tedwise.com" term="Vimeo" /><category scheme="http://tedwise.com" term="YouTube" />		<summary type="html"><![CDATA[<img src="http://tedwise.com/wp-content/uploads/2009/10/web.png" width="29" height="32" alt="" title="Web" /><br/>Two giant video web sites are now running HTML5 video betas.  This means that you can use their sites without having Flash active.  Vimeo's setup is especially impressive in that it very closely mimics the Flash experience.
If you don't know what HTML5 video is, its an HTML video tag that will play video [...]]]></summary>
		<content type="html" xml:base="http://tedwise.com/2010/01/22/the-html5-video-mess-see-it-today/">&lt;img src="http://tedwise.com/wp-content/uploads/2009/10/web.png" width="29" height="32" alt="" title="Web" /&gt;&lt;br/&gt;&lt;p&gt;Two giant video web sites are now running HTML5 video betas.  This means that you can use their sites without having Flash active.  Vimeo's setup is especially impressive in that it very closely mimics the Flash experience.&lt;/p&gt;
&lt;p&gt;If you don't know what HTML5 video is, its an HTML video tag that will play video in the browser without requiring a Flash plugin.  More importantly, the browser can interact with the video using &lt;a title="JavaScript" href="http://tedwise.com/category/computing/web-computing/javascript/"&gt;JavaScript&lt;/a&gt; to display video overlays, control "scrubbing" of the video, etc.  Pretty much any interaction you can do with the Flash plugin can be done with HTML5 video.&lt;/p&gt;
&lt;p&gt;The YouTube beta needs to be activated by going to &lt;a href="http://www.youtube.com/html5"&gt;http://www.youtube.com/html5&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The Vimeo beta needs to be activated by clicking on an easy-to-miss link at the bottom right of each video's description.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://tedwise.com/wp-content/uploads/2010/01/Espresso-Intelligentsia-on-Vimeo.jpg"&gt;&lt;img class="aligncenter size-full wp-image-948" title="Espresso, Intelligentsia on Vimeo" src="http://tedwise.com/wp-content/uploads/2010/01/Espresso-Intelligentsia-on-Vimeo.jpg" alt="" width="456" height="341" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Both betas remain active once you select them.  Why would you use the HTML5 version?  Because Flash is often a vector for &lt;a title="security" href="http://tedwise.com/category/computing/security/"&gt;security&lt;/a&gt; problems and because Flash video decoding uses a large percentage of CPU.  A small side bonus is that video scrubbing is smoother with the HTML5 version.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;But most of you won't be able to use the betas&lt;/strong&gt;.  Because both betas require a browser that supports the HTML5 video tag, but, in addition, also supports the H.264 video codec.&lt;/p&gt;
&lt;p&gt;There are three shipping browsers that support the HTML5 video tag: Firefox, Safari and Chrome.  But only Safari and Chrome support the H.264 video codec.  H.264 must be licensed before it can be legally used.  And that license is expensive.  And that license cannot be transferred with source code.  So, downloadable binaries can be licensed and can include H.264 but open source programs that are compiled by others can't be.  That means that Chromium, the open source version of Chrome, can't display H.264 video.&lt;/p&gt;
&lt;p&gt;Mozilla, the maker of Firefox, could probably afford the H.264 license, but they refuse to.  First, a high percentage of Firefox consumers use the source code from Mozilla, not the binaries.  Virtually every Linux distribution works this way.  Secondly, Mozilla, as an open source &lt;a title="company" href="http://tedwise.com/my-company/"&gt;company&lt;/a&gt;, feels that a licensed codec like H.264 is unacceptable.&lt;/p&gt;
&lt;p&gt;So Firefox (and Chrome) also support the open source video codec Ogg Theora.  But Apple doesn't.  And Google won't encode video in Ogg Theora for YouTube.  The first issue is video quality and bit rate.  H.264 has slightly better video quality at an equivalent bit rate to Ogg Theora.  For Ogg Theora to match H.264 video quality the bit rate has to be increased.  And for a web site like YouTube, that means all consumers have to have better Internet connections and Google has to pay a bigger bandwidth bill.  The second issue is hardware support.  There are hardware chipsets available (and in iPhones today) that decode H.264.  That means that the phone CPUs (which aren't that powerful) aren't taxed with decoding video, and that power usage when displaying video is greatly reduced.  The last issue is patents.  Apple isn't satisfied that Ogg Theora doesn't violate patents that exist around video decoding and they're unwilling to be the target of a law suit that goes after Apple's deep pockets.  Google, seemingly, doesn't care.&lt;/p&gt;
&lt;p&gt;So, the biggest single browser, Internet Explorer, doesn't support the HTML5 video tag.  The second biggest browser, Firefox, supports the tag but only displays Ogg Theora videos.  The third biggest browser, Safari, supports H.264 but not Ogg Theora.  And the fourth biggest browser, Chrome, supports both H.264 and Ogg Theora.  And the big video sites refuse to support Ogg Theora.&lt;/p&gt;
&lt;p&gt;It's a mess.&lt;/p&gt;
&lt;p&gt;This impasse will only be resolved when someone buys H.264 outright and releases it to the public or when Ogg Theora is improved, cleared of patent issues and gains hardware support.  Neither events seems likely anytime soon.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TedWise?a=QytTGXBlMsw:B3jYCrLytvo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TedWise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TedWise?a=QytTGXBlMsw:B3jYCrLytvo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TedWise?i=QytTGXBlMsw:B3jYCrLytvo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TedWise/~4/QytTGXBlMsw" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://tedwise.com/2010/01/22/the-html5-video-mess-see-it-today/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://tedwise.com/2010/01/22/the-html5-video-mess-see-it-today/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://tedwise.com/2010/01/22/the-html5-video-mess-see-it-today/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Ted Wise</name>
						<uri>http://tedwise.com</uri>
					</author>
		<title type="html"><![CDATA[It&#8217;s market share time again &#8211; who&#8217;s winning?	Windows, of course.]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TedWise/~3/KkVZPesUiOs/" />
		<id>http://tedwise.com/?p=945</id>
		<updated>2010-01-21T20:19:23Z</updated>
		<published>2010-01-21T20:19:23Z</published>
		<category scheme="http://tedwise.com" term="Computing" /><category scheme="http://tedwise.com" term="Apple" /><category scheme="http://tedwise.com" term="Linux" /><category scheme="http://tedwise.com" term="Market Share" /><category scheme="http://tedwise.com" term="Microsoft" /><category scheme="http://tedwise.com" term="OS/X" /><category scheme="http://tedwise.com" term="Windows" />		<summary type="html"><![CDATA[<img src="http://tedwise.com/wp-content/uploads/2009/10/computer.png" width="32" height="32" alt="" title="Computing" /><br/>ArsTechnica posted the latest operating system market share statistics.  As of December, 2009, Windows is still the lions share of the market at 92.21%.  OS/X is a very distant second at 5.11% and Linux trails at 1.02%.
The trend is very slightly downward for Windows.  It went from 93.66% in January, 2009 to 92.21% [...]]]></summary>
		<content type="html" xml:base="http://tedwise.com/2010/01/21/its-market-share-time-again-whos-winningwindows-of-course/">&lt;img src="http://tedwise.com/wp-content/uploads/2009/10/computer.png" width="32" height="32" alt="" title="Computing" /&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://arstechnica.com/microsoft/news/2010/01/windows-7-growing-faster-than-vista-overtakes-mac-os.ars?utm_source=rss&amp;amp;utm_medium=rss&amp;amp;utm_campaign=rss"&gt;ArsTechnica posted the latest operating system market share statistics&lt;/a&gt;.  As of December, 2009, Windows is still the lions share of the market at 92.21%.  OS/X is a very distant second at 5.11% and &lt;a title="Linux" href="http://tedwise.com/category/computing/linux/"&gt;Linux&lt;/a&gt; trails at 1.02%.&lt;/p&gt;
&lt;p&gt;The trend is very slightly downward for Windows.  It went from 93.66% in January, 2009 to 92.21% - a drop of 1.45%.  At that rate it would take Microsoft 30 years to drop below 50% market share.  But that rate won't continue.&lt;/p&gt;
&lt;p&gt;The trend is upwards for OS/X, 4.71% in January to 5.11% - an increase of 0.4%.  And its upwards for Linux, 0.90% in January to 1.02% - an increase of 0.12%.&lt;/p&gt;
&lt;p&gt;Another way to look at this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Microsoft lost 1.6% of their market share&lt;/li&gt;
&lt;li&gt;Apple gained 8.5%&lt;/li&gt;
&lt;li&gt;Linux gained 13%&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So Linux is increasing market share the fastest while Microsoft is losing share.  You can rack that up to the increased popularity of netbooks.  Which, despite the press, often come with Linux outside the US and don't get returned.&lt;/p&gt;
&lt;p&gt;On the plus side for Microsoft, Windows 7 is a hit.  It has easily outsold Vista for the same time period after launch.  And, the market share for &lt;span style="text-decoration: underline;"&gt;just&lt;/span&gt; Windows 7 is already larger then for OS/X.&lt;/p&gt;
&lt;p&gt;But, Microsoft's biggest problem is the fact that 68.63% (slightly over 2/3) of all Windows installations are XP or &lt;span style="text-decoration: underline;"&gt;earlier&lt;/span&gt;.  Those installations don't have a straight upgrade path to Windows 7.  That high bar for migration - coupled with strong on-line applications - makes upgrading them open to alternatives, from super-cheap Linux netbooks to high-end Macs.&lt;/p&gt;
&lt;p&gt;My guess is that we'll see the overall market share of Windows drop at an increasing rate and that Linux market share will grow at an increasing rate while OS/X will continue to increase at a modest pace.&lt;/p&gt;
&lt;p&gt;And all of this doesn't include mobile.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TedWise?a=KkVZPesUiOs:LdXIuzaW130:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TedWise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TedWise?a=KkVZPesUiOs:LdXIuzaW130:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TedWise?i=KkVZPesUiOs:LdXIuzaW130:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TedWise/~4/KkVZPesUiOs" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://tedwise.com/2010/01/21/its-market-share-time-again-whos-winningwindows-of-course/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://tedwise.com/2010/01/21/its-market-share-time-again-whos-winningwindows-of-course/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://tedwise.com/2010/01/21/its-market-share-time-again-whos-winningwindows-of-course/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Ted Wise</name>
						<uri>http://tedwise.com</uri>
					</author>
		<title type="html"><![CDATA[Will the next iPhone OS allow multitasking?]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TedWise/~3/vNJAT-zhwxU/" />
		<id>http://tedwise.com/?p=942</id>
		<updated>2010-01-19T22:13:36Z</updated>
		<published>2010-01-19T22:13:36Z</published>
		<category scheme="http://tedwise.com" term="iPhone" /><category scheme="http://tedwise.com" term="Multitasking" /><category scheme="http://tedwise.com" term="Slate" /><category scheme="http://tedwise.com" term="Tablet" /><category scheme="http://tedwise.com" term="UI" />		<summary type="html"><![CDATA[<img src="http://tedwise.com/wp-content/uploads/2009/10/iphone.png" width="17" height="32" alt="" title="iPhone" /><br/>It's not the hardware.  And it's not a fundamental software issue.  It's a combination of UI and trust.
From the UI perspective, Apple didn't want multiple apps running at the same time without visual feedback.  So the few apps that they allow, all provide it.  A background phone call shows as a [...]]]></summary>
		<content type="html" xml:base="http://tedwise.com/2010/01/19/will-the-next-iphone-os-allow-multitasking/">&lt;img src="http://tedwise.com/wp-content/uploads/2009/10/iphone.png" width="17" height="32" alt="" title="iPhone" /&gt;&lt;br/&gt;&lt;p&gt;It's not the hardware.  And it's not a fundamental software issue.  It's a combination of UI and trust.&lt;/p&gt;
&lt;p&gt;From the UI perspective, Apple didn't want multiple apps running at the same time without visual feedback.  So the few apps that they allow, all provide it.  A background phone call shows as a throbbing green bar at the top of the screen.  Data transfer shows as a throbbing blue bar.  Running audio shows as a play icon in the top status bar.  And that's about it.&lt;/p&gt;
&lt;p&gt;So to allow more background apps Apple will either have to create a new UI metaphor or allow apps to wire into the existing mechanism.  For example, allowing Pandora to wire into the play icon in the top status bar.  Apple doesn't seem satisfied with the "standard" approach, e.g., let the user remember what's running without visual feedback and use a task list to switch/kill between apps.  The Pre uses a card stack metaphor that technologists liked but the general public doesn't seem to have bought into.&lt;/p&gt;
&lt;p&gt;Beyond the UI metaphor issue is the question of trust.  Background apps chew up memory and battery life.  Both are very limited on small devices.  If you don't care how well or how poorly this is done, then you just let any app run in the background.  If you _do_ care then you need to validate that background applications don't chew up too much of either resource.  So it's entirely possible that Apple will require background apps to be "blessed" by running them through extra validation.  It's also possible that they'll just expand out the list of "special functions" that won't interrupt an app.  As a current example, creating an email from an &lt;a title="iPhone" href="http://tedwise.com/category/computing/mac/iphone/"&gt;iPhone&lt;/a&gt; app won't stop an app from running.  Perhaps they'll expand that list to include phone calls.  Right now, if your GPS is giving you driving directions and you get a phone call, you stop getting driving directions.&lt;/p&gt;
&lt;p&gt;Apple is taking their sweet time.  You couldn't do copy and paste on the phone for two years after its release.  Now Android reviewers are complaining that copy and paste doesn't work nearly as well on Android as it does on the iPhone.  Apple is trying to get the paradigm correct and work consistently and correctly everywhere.  Whether that approach is good enough or acceptable is a question that consumers get to answer.&lt;/p&gt;
&lt;p&gt;And then you throw the tablet into the mix.  It has a much larger screen and a rumored new UI paradigm.  And that has people guessing that the tablet will run multiple apps but the iPhone won't.  It looks like we'll find out more on the 27th.  Everything is just educated guesses until then.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TedWise?a=vNJAT-zhwxU:Ck10A3wzAAU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TedWise?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TedWise?a=vNJAT-zhwxU:Ck10A3wzAAU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TedWise?i=vNJAT-zhwxU:Ck10A3wzAAU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TedWise/~4/vNJAT-zhwxU" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://tedwise.com/2010/01/19/will-the-next-iphone-os-allow-multitasking/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://tedwise.com/2010/01/19/will-the-next-iphone-os-allow-multitasking/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://tedwise.com/2010/01/19/will-the-next-iphone-os-allow-multitasking/</feedburner:origLink></entry>
	</feed><!-- Dynamic page generated in 1.087 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-03-12 11:36:10 --><!-- Compression = gzip -->
