<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Fumbling Forward</title>
	<atom:link href="http://blogs.herod.net/javafx/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.herod.net/javafx</link>
	<description>Steven Herod's adventures with JavaFX</description>
	<lastBuildDate>Fri, 09 Oct 2009 09:13:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Links for JavaFX SJUG Talk</title>
		<link>http://blogs.herod.net/javafx/2009/10/links-for-javafx-sjug-talk/</link>
		<comments>http://blogs.herod.net/javafx/2009/10/links-for-javafx-sjug-talk/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 20:54:00 +0000</pubDate>
		<dc:creator>Steven Herod</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.herod.net/javafx/?p=72</guid>
		<description><![CDATA[JavaFX Presentation For SJUG
View more documents from Steven Herod.

Learn JavaFX

Core Language Tutorial
JavaFX.com
Amy Fowler&#8217;s blog entry on layout
Amy Fowler&#8217;s blog on layoutBounds

Books

Pro JavaFX

Video Code Support info

Media in JavaFX

Blogs

FX Experience
JFXstudio
Dean Iverson&#8217;s Blog
James Weaver&#8217;s Blog
Jonathan Giles&#8217;s Blog (Java Desktop Links of the Week)

TwitterFX

Project Kenai homepage
Run Current Version 

Third Party Components

JFXtras

Tweeters

JavaFX Twibe
@javafx4you -&#62; Official Sun marketing for JavaFX, retweets [...]]]></description>
			<content:encoded><![CDATA[<div id="__ss_2168867" style="width: 425px; text-align: left;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="JavaFX Presentation For SJUG" href="http://www.slideshare.net/sherod/javafx-presentation-for-sjug" onclick="pageTracker._trackPageview('/outgoing/www.slideshare.net/sherod/javafx-presentation-for-sjug?referer=');">JavaFX Presentation For SJUG</a><object style="margin:0px" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=javafxpresentationforsjug-091008154259-phpapp01&amp;stripped_title=javafx-presentation-for-sjug" /><param name="allowfullscreen" value="true" /><embed style="margin:0px" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=javafxpresentationforsjug-091008154259-phpapp01&amp;stripped_title=javafx-presentation-for-sjug" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/" onclick="pageTracker._trackPageview('/outgoing/www.slideshare.net/?referer=');">documents</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/sherod" onclick="pageTracker._trackPageview('/outgoing/www.slideshare.net/sherod?referer=');">Steven Herod</a>.</div>
</div>
<p><strong>Learn JavaFX</strong></p>
<ul>
<li><a href="http://java.sun.com/javafx/1/tutorials/core/" onclick="pageTracker._trackPageview('/outgoing/java.sun.com/javafx/1/tutorials/core/?referer=');">Core Language Tutorial</a></li>
<li><a href="http://javafx.com" onclick="pageTracker._trackPageview('/outgoing/javafx.com?referer=');">JavaFX.com</a></li>
<li><a href="http://weblogs.java.net/blog/aim/archive/2009/09/10/javafx12-layout" onclick="pageTracker._trackPageview('/outgoing/weblogs.java.net/blog/aim/archive/2009/09/10/javafx12-layout?referer=');">Amy Fowler&#8217;s blog entry on layout</a></li>
<li><a href="http://weblogs.java.net/blog/2009/07/09/javafx12-understanding-bounds" onclick="pageTracker._trackPageview('/outgoing/weblogs.java.net/blog/2009/07/09/javafx12-understanding-bounds?referer=');">Amy Fowler&#8217;s blog on layoutBounds</a></li>
</ul>
<p><strong>Books</strong></p>
<ul>
<li><a href="http://www.amazon.com/Pro-JavaFX-trade-Platform-Technology/dp/1430218754" onclick="pageTracker._trackPageview('/outgoing/www.amazon.com/Pro-JavaFX-trade-Platform-Technology/dp/1430218754?referer=');">Pro JavaFX</a></li>
</ul>
<p><strong>Video Code Support info</strong></p>
<ul>
<li><a href="http://javafx.com/docs/articles/media/format.jsp" onclick="pageTracker._trackPageview('/outgoing/javafx.com/docs/articles/media/format.jsp?referer=');">Media in JavaFX</a></li>
</ul>
<p><strong>Blogs</strong></p>
<ul>
<li><a href="http://fxexperience.com/" onclick="pageTracker._trackPageview('/outgoing/fxexperience.com/?referer=');">FX Experience</a></li>
<li><a href="http://JfXstudio.wordpress.com/" onclick="pageTracker._trackPageview('/outgoing/JfXstudio.wordpress.com/?referer=');">JFXstudio</a></li>
<li><a href="http://pleasingsoftware.blogspot.com/" onclick="pageTracker._trackPageview('/outgoing/pleasingsoftware.blogspot.com/?referer=');">Dean Iverson&#8217;s Blog</a></li>
<li><a href="http://learnjavafx.typepad.com/" onclick="pageTracker._trackPageview('/outgoing/learnjavafx.typepad.com/?referer=');">James Weaver&#8217;s Blog</a></li>
<li><a href="http://jonathangiles.net/blog/" onclick="pageTracker._trackPageview('/outgoing/jonathangiles.net/blog/?referer=');">Jonathan Giles&#8217;s Blog (Java Desktop Links of the Week)</a></li>
</ul>
<p>TwitterFX</p>
<ul>
<li><a href="http://kenai.com/projects/twitterfx" onclick="pageTracker._trackPageview('/outgoing/kenai.com/projects/twitterfx?referer=');">Project Kenai homepage</a></li>
<li><a href="http://herod.net/twitterfx/TwitterFX.jnlp" onclick="pageTracker._trackPageview('/outgoing/herod.net/twitterfx/TwitterFX.jnlp?referer=');">Run Current Version </a></li>
</ul>
<p>Third Party Components</p>
<ul>
<li><a href="http://jfxtras.org/" onclick="pageTracker._trackPageview('/outgoing/jfxtras.org/?referer=');">JFXtras</a></li>
</ul>
<p>Tweeters</p>
<ul>
<li><a href="http://www.twibes.com/group/JavaFX" onclick="pageTracker._trackPageview('/outgoing/www.twibes.com/group/JavaFX?referer=');">JavaFX Twibe</a></li>
<li><a href="http://twitter.com/javafx4you" onclick="pageTracker._trackPageview('/outgoing/twitter.com/javafx4you?referer=');">@javafx4you</a> -&gt; Official Sun marketing for JavaFX, retweets most JavaFX tweets.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogs.herod.net/javafx/2009/10/links-for-javafx-sjug-talk/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Writing a JavaFX application that detects and blocks Twitter Spammers.</title>
		<link>http://blogs.herod.net/javafx/2009/07/writing-a-javafx-application-that-detects-and-blocks-twitter-spammers/</link>
		<comments>http://blogs.herod.net/javafx/2009/07/writing-a-javafx-application-that-detects-and-blocks-twitter-spammers/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 05:56:33 +0000</pubDate>
		<dc:creator>Steven Herod</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.herod.net/javafx/?p=67</guid>
		<description><![CDATA[Like alot of people I&#8217;ve been plagued by the vast number of spammers who follow you on twitter, either out and out spammers, or mis-guided &#8216;SEO&#8217; and &#8216;Online Marketing&#8217; people who seem to think that having a vast array of followers is the path to millions of dollars.
The structure of Twitter means that their follows [...]]]></description>
			<content:encoded><![CDATA[<p>Like alot of people I&#8217;ve been plagued by the vast number of spammers who follow you on twitter, either out and out spammers, or mis-guided &#8216;SEO&#8217; and &#8216;Online Marketing&#8217; people who seem to think that having a vast array of followers is the path to millions of dollars.</p>
<p>The structure of Twitter means that their follows are mostly benign, but they do clutter up your follower list and of course inflate your follower count (I&#8217;d prefer to have 40 people hanging on my every word than 4000 fakes).</p>
<p>So this application, tentatively named &#8216;Spank&#8217;em&#8217; (but in desperate need of a better name) is intended to use the Twitter API to retrieve your followers and then use heuristics to categorize each follower as good or evil.  It will then allow you to do some manual tweaking and finally allow you to block the lot in a single click.</p>
<p>Sounds useful?  Oh, and it&#8217;s going to be built in <a href="http://www.javafx.com/" onclick="pageTracker._trackPageview('/outgoing/www.javafx.com/?referer=');">JavaFX</a>, using the new Twitter API implementation I&#8217;m slowly working on and contributing (hopefully) to the <a href="http://www.jfxtras.org" onclick="pageTracker._trackPageview('/outgoing/www.jfxtras.org?referer=');">JFxtra</a>&#8217;s project.  (Basically it lets me work through in improving the API with a real app, but without all the complexity of TwitterFX.</p>
<p>If I maintain the motivation, I&#8217;m going to blog my way through the creation of the application.  This hopes to inform folk learning JavaFX, and hopefully attract the attention of others who can give me suggestions for improved approaches&#8230;</p>
<p>Below are some mockups of what the UI might look like, feedback appreciated.</p>
<p><img class="size-full wp-image-63" title="login screen" src="http://blogs.herod.net/javafx/wp-content/uploads/2009/07/login-screen2.png" alt="login screen" width="450" height="400" /><img class="size-full wp-image-65" title="retreival of followers" src="http://blogs.herod.net/javafx/wp-content/uploads/2009/07/retreival-of-followers1.png" alt="retreival of followers" width="450" height="400" /><img class="size-full wp-image-64" title="main interface" src="http://blogs.herod.net/javafx/wp-content/uploads/2009/07/main-interface1.png" alt="main interface" width="746" height="527" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.herod.net/javafx/2009/07/writing-a-javafx-application-that-detects-and-blocks-twitter-spammers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JavaFX and Hardware Acceleration (Take 3)</title>
		<link>http://blogs.herod.net/javafx/2009/07/javafx-and-hardware-acceleration-take-3/</link>
		<comments>http://blogs.herod.net/javafx/2009/07/javafx-and-hardware-acceleration-take-3/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 03:52:27 +0000</pubDate>
		<dc:creator>Steven Herod</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.herod.net/javafx/?p=53</guid>
		<description><![CDATA[Firstly, forget everything I said in part 1 and part 2 of this series.
I&#8217;m serious.
Mind clear?
Right, lets begin again.
Judging by what I&#8217;ve learned over the last two days I should really be calling this blog enter &#8216;getAccelType() and its idiosyncracies&#8216;, not &#8216;JavaFX and Hardware acceleration&#8216;.
The first thing you need to know is that JavaFX will [...]]]></description>
			<content:encoded><![CDATA[<p>Firstly, forget everything I said in <a href="http://blogs.herod.net/javafx/2009/07/javafx-effects-and-hardware-acceleration/">part 1</a> and <a href="http://blogs.herod.net/javafx/2009/07/javafx-effects-and-hardware-acceleration%E2%80%A6-take-2/">part 2</a> of this series.</p>
<p>I&#8217;m serious.</p>
<p>Mind clear?</p>
<p>Right, lets begin again.</p>
<p>Judging by what I&#8217;ve learned over the last two days I should really be calling this blog enter &#8216;<strong>getAccelType() and its idiosyncracies</strong>&#8216;, not &#8216;<strong>JavaFX and Hardware acceleration</strong>&#8216;.</p>
<p>The first thing you need to know is that JavaFX will use your machines GPU capabilities if they exist.</p>
<p>The second thing you need to know is that getAccelType() may not report the correct answers unless you take some explicit steps to ensure that occurs.</p>
<p>Here is a summary</p>
<p><strong>What does getAccelType() do?</strong></p>
<blockquote><p>From the javafxoc: Returns a <code>String</code> representing the type of hardware  acceleration, if any, that is used when applying this <code>Effect</code> on the given <code>GraphicsConfiguration</code>.</p></blockquote>
<p>It would appear to return 1 of 5 of values for each effect</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/OpenGL" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/OpenGL?referer=');">OpenGL</a> (Mac)<br />
<em>Seen on MacBook Pro&#8217;s with the appropriate video cards</em></li>
<li><a href="http://en.wikipedia.org/wiki/Direct3D" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Direct3D?referer=');">Direct3D</a> (Windows)<br />
<em>Windows only, widely seen on Windows platform</em></li>
<li><a href="http://en.wikipedia.org/wiki/SIMD" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/SIMD?referer=');">CPU/SIMD</a> (Any platform)<br />
<em>Believed that it uses the SSE (or like) extensions on your CPU, this is the method seen on MacBook&#8217;s with Intel video cards</em></li>
<li>CPU/Java (Any platform)<br />
<em>Meaning of this one isn&#8217;t immediately apparent, but its been observed on Linux platforms</em></li>
<li>Intrinsic (Any platform)<br />
<em>&#8220;Intrinsic just means the “platform” handles the filtering operation. For instance Reflection is implemented using Java2D operations, no shaders, no special software loops, so it’s marked “intrinsic” &#8221;<br />
</em></li>
</ul>
<p><strong>When should you use it?</strong></p>
<p>Never.  Probably.  Chris Campbell from Sun remarked <em>&#8220;people aren’t supposed to know about getAccelType()&#8221;. </em></p>
<p>I suppose it could be useful if you specifically wanted to test for Direct3D or OpenGL prior to adding lots of effects, but I would strongly suggest you do some benchmarking first to see if its going to make a difference&#8230; (See below)</p>
<p><strong>How should I use it?</strong></p>
<p>Well, you probably shouldn&#8217;t, but now that you&#8217;ve decided you need to use it, here is the caveat you need to know.</p>
<p>You need to make any decision about hardware capabilities you are running on at the appropriate point in time in your application, otherwise you are going to get the wrong answer (it will erroneously return CPU/SIMD not the Direct3D you should get under Windows).  Note this erroneous answer has no relationship to what JavaFX will actually use, for instance, you may get the return value of &#8216;CPU/SIMD&#8217; and then JavaFX will happily go on and use Direct3D.</p>
<p>When is this time?  Well, its either &#8216;at any time&#8217; in <strong>a signed Webstart app with the appropriate security permissions</strong>, or at the &#8216;right time&#8217; in an unsigned webstart application.  When is the he right time you ask?</p>
<p>Dmitri Trembovetski (from Sun) notes this as:</p>
<p>&#8220;Note that this (ed: requirement for signing) becomes an issue only if the application explicitly initializes effect’s peers by calling Effect.getAccelType() before the runtime has a chance to do so.&#8221;</p>
<p>This means you need to call your effects tests AFTER the runtime has done its full initialization, in Dimitri&#8217;s example, he does this the use of FX.deferAction after the creation of the Stage<br />
<code>FX.deferAction(function():Void {<br />
accel = for (effect in effects)<br />
“{effect.getClass().getSimpleName()}.getAccelType(gc)={effect.getAccelType(gc)}”;<br />
});</code></p>
<p><strong>Final points</strong></p>
<p>This need for signing, or testing and the right time is probably going to change in the future, as we said in part 2, a bug has been raised and indications are it will be corrected but as <a href="http://en.wikipedia.org/wiki/Donald_Knuth" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Donald_Knuth?referer=');">the man</a> reportedly said, <a href="http://en.wikipedia.org/wiki/Optimization_%28computer_science%29" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Optimization_28computer_science_29?referer=');"><em>premature optimization is the root of all evil</em></a> so my advice, just get busy writing apps and don&#8217;t try and outfox the runtime with conditional effects.</p>
<p>Below is the full sourcecode of Leadfoot as of today, this will run in an unsigned Webstart app.  This is effectively Dimitri&#8217;s code now, so&#8230; um thanks <img src='http://blogs.herod.net/javafx/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I owe you a beer (or vodka or orange juice).</p>
<p><code><br />
/*</code></p>
<p>package leadfoot;</p>
<p>import javafx.scene.Scene;<br />
import javafx.scene.control.ListView;<br />
import javafx.scene.effect.*;<br />
import javafx.stage.Stage;<br />
import java.awt.GraphicsEnvironment;<br />
import javafx.scene.shape.Rectangle;</p>
<p>def gc = GraphicsEnvironment.<br />
getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();<br />
def effects = [<br />
Blend {}<br />
Bloom {}<br />
BoxBlur {}<br />
ColorAdjust {}<br />
DisplacementMap {}<br />
DropShadow {}<br />
Flood {}<br />
GaussianBlur {}<br />
Glow {}<br />
Identity {}<br />
InnerShadow {}<br />
InvertMask {}<br />
Lighting {}<br />
MotionBlur {}<br />
PerspectiveTransform {}<br />
Reflection {}<br />
SepiaTone {}<br />
Shadow {}<br />
];<br />
var accel : String[];</p>
<p>Stage {<br />
scene: Scene {<br />
content: [<br />
Rectangle { width: 10 height: 10 effect: GaussianBlur {} }<br />
ListView {<br />
width: 350<br />
items: bind accel<br />
}<br />
]<br />
}<br />
}<br />
FX.deferAction(function():Void {<br />
accel = for (effect in effects)<br />
&#8220;{effect.getClass().getSimpleName()}.getAccelType(gc)={effect.getAccelType(gc)}&#8221;;<br />
});</p>
<p>You can<a href="http://herod.net/leadfoot/Leadfoot_25.jnlp" onclick="pageTracker._trackPageview('/outgoing/herod.net/leadfoot/Leadfoot_25.jnlp?referer=');"> run the final version here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.herod.net/javafx/2009/07/javafx-and-hardware-acceleration-take-3/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>JavaFX effects and hardware acceleration… (Take 2)</title>
		<link>http://blogs.herod.net/javafx/2009/07/javafx-effects-and-hardware-acceleration%e2%80%a6-take-2/</link>
		<comments>http://blogs.herod.net/javafx/2009/07/javafx-effects-and-hardware-acceleration%e2%80%a6-take-2/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 10:44:24 +0000</pubDate>
		<dc:creator>Steven Herod</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.herod.net/javafx/?p=46</guid>
		<description><![CDATA[&#60;security&#62;
&#60;all-permissions/&#62;
&#60;/security&#62;
Note, this entry has been superceeded by Take 3, you can read it for historical context/further explanation, but you should forget its conclusion, JavaFX webstart apps DO NOT require signing to use Direct3D.
Well, there is a reason I call this blog Fumbling Forward.  
So, its been an interesting day.  It wasn&#8217;t very long after [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 328px; width: 1px; height: 1px;">&lt;security&gt;</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 328px; width: 1px; height: 1px;">&lt;all-permissions/&gt;</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 328px; width: 1px; height: 1px;">&lt;/security&gt;</div>
<p><em>Note, this entry has been superceeded by <a href="http://blogs.herod.net/javafx/2009/07/javafx-and-hardware-acceleration-take-3/">Take 3</a>, you can read it for historical context/further explanation, but you should forget its conclusion, <strong>JavaFX webstart apps DO NOT require signing to use Direct3D.</strong></em></p>
<p>Well, there is a reason I call this blog Fumbling Forward. <img src='http://blogs.herod.net/javafx/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So, its been an interesting day.  It wasn&#8217;t very long after posting my blog entry that I started getting feedback from people, mainly a growing sense of mild alarm related to the answers people were receiving from running the application.</p>
<p>It seemed a far too many people were getting the CPU/SIMD answer when they were expecting Direct3d.</p>
<p>Thus, the investigation began!  First there was the bug I had in my app in the way I was passing GraphicsConfiguration to the effects, but after that was fixed, still no joy.</p>
<p>Well, there was <strong>some</strong> joy, thos running code locally were getting the right answers, but from the website &#8211; nothing.</p>
<p>It turned out the problem was related solely to Webstart versions of Leadfoot.</p>
<p><a href="http://steveonjava.com/" onclick="pageTracker._trackPageview('/outgoing/steveonjava.com/?referer=');">Stephen Chin</a> (jf<a href="http://jfxtras.org/" onclick="pageTracker._trackPageview('/outgoing/jfxtras.org/?referer=');">xtra&#8217;s</a> dude and erstwhile <a href="http://www.amazon.com/Pro-JavaFX-trade-Platform-Technology/dp/1430218754/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1248172765&amp;sr=1-2" onclick="pageTracker._trackPageview('/outgoing/www.amazon.com/Pro-JavaFX-trade-Platform-Technology/dp/1430218754/ref=sr_1_2?ie=UTF8_amp_s=books_amp_qid=1248172765_amp_sr=1-2&amp;referer=');">author</a>) eventually tracked the problem down, it seems that Direct 3D is only enabled if you run your application from Webstart as a signed application, and specifically, request the appropriate security permissions.  Stephen has raised defect RT-5193 at javafx-jira.kenai.com</p>
<p>So, you can start the <a href="http://herod.net/leadfoot/Leadfoot_25.jnlp" onclick="pageTracker._trackPageview('/outgoing/herod.net/leadfoot/Leadfoot_25.jnlp?referer=');">new version</a> which is self signed, and with the appropriate security tags in the JNLP.   Let me know how you go!</p>
<p><strong>Summary</strong></p>
<p><strong> <span style="text-decoration: line-through;">Webstart JavaFX apps require </span></strong><span style="text-decoration: line-through;"><a href="http://learnjavafx.typepad.com/weblog/2009/01/absence-of-malice-in-javafx.html" onclick="pageTracker._trackPageview('/outgoing/learnjavafx.typepad.com/weblog/2009/01/absence-of-malice-in-javafx.html?referer=');"><strong>signing</strong></a><strong> and the appropriate &lt;security&gt; </strong><a href="http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/syntax.html#security" onclick="pageTracker._trackPageview('/outgoing/java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/syntax.html_security?referer=');"><strong>tags in your JNLP</strong></a><strong> file. </strong></span><strong>NO, they don&#8217;t!<br />
</strong></p>
<div>Thanks to all those that played along with sorting this out, especially <a href="http://jonathangiles.net/blog/" onclick="pageTracker._trackPageview('/outgoing/jonathangiles.net/blog/?referer=');">Jonathan Giles</a> for putting up with my &#8216;could you try again&#8217; requests and <a href="http://twitter.com/osbald" onclick="pageTracker._trackPageview('/outgoing/twitter.com/osbald?referer=');">Richard Osbaldeston</a> (who is available <a href="http://www.linkedin.com/pub/richard-osbaldeston/4/77b/691" onclick="pageTracker._trackPageview('/outgoing/www.linkedin.com/pub/richard-osbaldeston/4/77b/691?referer=');">for hire</a>!) for spotting my JNLP stuff up.</div>
]]></content:encoded>
			<wfw:commentRss>http://blogs.herod.net/javafx/2009/07/javafx-effects-and-hardware-acceleration%e2%80%a6-take-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JavaFX effects and hardware acceleration&#8230;</title>
		<link>http://blogs.herod.net/javafx/2009/07/javafx-effects-and-hardware-acceleration/</link>
		<comments>http://blogs.herod.net/javafx/2009/07/javafx-effects-and-hardware-acceleration/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 12:33:11 +0000</pubDate>
		<dc:creator>Steven Herod</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.herod.net/javafx/?p=30</guid>
		<description><![CDATA[Note, this entry has been superceeded by Take 3, you can read it for historical context/further explanation.  The comments of this blog are also of value as they lead to what I&#8217;ve restated in &#8216;Take 3&#8242;
This post was sparked today by Jonathan Giles and his optimization of Josh Marinacci&#8217;s particle accelerator demo.
One of the questions [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><a href="http://blogs.herod.net/javafx/2009/07/javafx-effects-and-hardware-acceleration…-take-2/"><em>Note, this entry has been superceeded by </em></a><em><a href="http://blogs.herod.net/javafx/2009/07/javafx-and-hardware-acceleration-take-3/">Take 3</a>, you can read it for historical context/further explanation<strong>.  The comments of this blog are also of value as they lead to what I&#8217;ve restated in &#8216;Take 3&#8242;</strong></em></p></blockquote>
<p>This post was sparked today by <a href="http://JonathanGiles.net/blog/?p=521" onclick="pageTracker._trackPageview('/outgoing/JonathanGiles.net/blog/?p=521&amp;referer=');">Jonathan Giles and his optimization</a> of <a href="http://jfxstudio.wordpress.com/2009/07/10/particle-o-rama/" onclick="pageTracker._trackPageview('/outgoing/jfxstudio.wordpress.com/2009/07/10/particle-o-rama/?referer=');">Josh Marinacci&#8217;s particle accelerator</a> demo.</p>
<p>One of the questions I asked after he posted his blog entry was &#8220;Do you know if hardware acceleration being used for your effects?&#8221;</p>
<p>He didn&#8217;t know, and to be honest, I wasn&#8217;t entirely sure how to check myself.</p>
<p>So, I whipped up this test called Leadfoot (because it&#8217;s all about Acceleration <img src='http://blogs.herod.net/javafx/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>It&#8217;s a JavaFX 1.2 app, and you can run it using webstart by clicking <strong><a href="http://herod.net/leadfoot/Leadfoot_25.jnlp" onclick="pageTracker._trackPageview('/outgoing/herod.net/leadfoot/Leadfoot_25.jnlp?referer=');">here</a></strong>.</p>
<p>Here are some of the answers so far:</p>

<a href='http://blogs.herod.net/javafx/2009/07/javafx-effects-and-hardware-acceleration/screenie/' title='screenie'><img width="150" height="150" src="http://blogs.herod.net/javafx/wp-content/uploads/2009/07/screenie-150x150.jpg" class="attachment-thumbnail" alt="MacBook with GMA850" title="screenie" /></a>
<a href='http://blogs.herod.net/javafx/2009/07/javafx-effects-and-hardware-acceleration/sceenie2/' title='sceenie2'><img width="150" height="150" src="http://blogs.herod.net/javafx/wp-content/uploads/2009/07/sceenie2-150x150.jpg" class="attachment-thumbnail" alt="WinXP nVidia 9800GT" title="sceenie2" /></a>
<a href='http://blogs.herod.net/javafx/2009/07/javafx-effects-and-hardware-acceleration/screenie3/' title='screenie3'><img width="150" height="150" src="http://blogs.herod.net/javafx/wp-content/uploads/2009/07/screenie3-150x150.png" class="attachment-thumbnail" alt="MacBook Pro (Interestingly this machine, when booted under Windows 7 reports CPU/SIMD)" title="screenie3" /></a>

<p>What does it all mean?  <del datetime="2009-07-20T17:14:33+00:00">Well, &#8220;CPU/SIMD&#8221; apparently is hardware acceleration.</del> I&#8217;m still not entirely sure!  I believe <strong>CPU/</strong><strong><a href="http://en.wikipedia.org/wiki/SIMD" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/SIMD?referer=');">SIMD</a></strong> relates to the fact it is using the SSE instructions on the CPU.  Which is NOT by my definition, the GPU on your video card.  So the question remains, under what circumstances does GPU aceleration actually occur?</p>
<p>More news: Other users have reported <strong>OpenGL</strong> (On a MacBook Pro, see gallery) and <strong>CPU/Java</strong> (On Ubuntu and on Windows with an older Toshiba laptop)</p>
<p>Below is the source code, feedback welcome!</p>
<p><code><br />
/*<br />
* Main.fx<br />
*<br />
* Created on Jul 20, 2009, 8:38:21 PM<br />
*/</code></p>
<p><code>package leadfoot;</code></p>
<p><code> </code></p>
<p><code>import javafx.stage.Stage;<br />
import javafx.scene.Scene;<br />
import javafx.scene.control.ListView;</code></p>
<p><code> </code></p>
<p><code>import javafx.scene.effect.Blend;</code></p>
<p><code>import java.awt.GraphicsConfiguration;<br />
import java.awt.GraphicsDevice;<br />
import java.awt.GraphicsEnvironment;<br />
import javafx.scene.effect.Bloom;<br />
import javafx.scene.effect.ColorAdjust;<br />
import javafx.scene.effect.DisplacementMap;<br />
import javafx.scene.effect.DropShadow;<br />
import javafx.scene.effect.Flood;<br />
import javafx.scene.effect.GaussianBlur;<br />
import javafx.scene.effect.Glow;<br />
import javafx.scene.effect.Identity;<br />
import javafx.scene.effect.InnerShadow;<br />
import javafx.scene.effect.InvertMask;<br />
import javafx.scene.effect.Lighting;<br />
import javafx.scene.effect.MotionBlur;<br />
import javafx.scene.effect.PerspectiveTransform;<br />
import javafx.scene.effect.Reflection;<br />
import javafx.scene.effect.SepiaTone;<br />
import javafx.scene.effect.Shadow;</code></p>
<p>import javafx.scene.effect.BoxBlur;</p>
<p>/**<br />
* @author steven<br />
*/</p>
<p>function getAccelerationFaults():Object[] {</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 1441px; width: 1px; height: 1px;">def gc = GraphicsEnvironment.</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 1441px; width: 1px; height: 1px;">getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();</div>
<p>def gc = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();</p>
<p>var returnVal:Object[];</p>
<p>var blend:Blend = new Blend();<br />
insert &#8220;blend: {blend.getAccelType(gc)}&#8221; into returnVal;</p>
<p>var bloom:Bloom = new Bloom();<br />
insert &#8220;bloom: {bloom.getAccelType(gc)}&#8221; into returnVal;</p>
<p>var boxBlur:BoxBlur = new BoxBlur();<br />
insert &#8220;boxBlur: {boxBlur.getAccelType(gc)}&#8221; into returnVal;</p>
<p>var colorAdjust:ColorAdjust = new ColorAdjust();<br />
insert &#8220;colorAdjust: {colorAdjust.getAccelType(gc)}&#8221; into returnVal;</p>
<p>var displacmentMap:DisplacementMap = new DisplacementMap();<br />
insert &#8220;displacmentMap: {displacmentMap.getAccelType(gc)}&#8221; into returnVal;</p>
<p>var dropShadow:DropShadow = new DropShadow();<br />
insert &#8220;dropShadow: {dropShadow.getAccelType(gc)}&#8221; into returnVal;</p>
<p>var flood:Flood = new Flood();<br />
insert &#8220;flood: {flood.getAccelType(gc)}&#8221; into returnVal;</p>
<p>var gaussianBlur:GaussianBlur = new GaussianBlur();<br />
insert &#8220;gaussianBlur: {gaussianBlur.getAccelType(gc)}&#8221; into returnVal;</p>
<p>var glow:Glow = new Glow();<br />
insert &#8220;glow: {glow.getAccelType(gc)}&#8221; into returnVal;</p>
<p>var identity:Identity = new Identity();<br />
insert &#8220;identity: {identity.getAccelType(gc)}&#8221; into returnVal;</p>
<p>var innerShadow:InnerShadow = new InnerShadow();<br />
insert &#8220;innerShadow: {innerShadow.getAccelType(gc)}&#8221; into returnVal;</p>
<p>var invertMask:InvertMask = new InvertMask();<br />
insert &#8220;invertMask: {invertMask.getAccelType(gc)}&#8221; into returnVal;</p>
<p>var lighting:Lighting = new Lighting();<br />
insert &#8220;lighting: {lighting.getAccelType(gc)}&#8221; into returnVal;</p>
<p>var motionBlur:MotionBlur = new MotionBlur();<br />
insert &#8220;motionBlur: {motionBlur.getAccelType(gc)}&#8221; into returnVal;</p>
<p>var perspectiveTransform:PerspectiveTransform = new PerspectiveTransform();<br />
insert &#8220;perspectiveTransform: {perspectiveTransform.getAccelType(gc)}&#8221; into returnVal;</p>
<p>var reflection:Reflection = new Reflection();<br />
insert &#8220;reflection: {reflection.getAccelType(gc)}&#8221; into returnVal;</p>
<p>var sepiaTone:SepiaTone = new SepiaTone();<br />
insert &#8220;sepiaTone: {sepiaTone.getAccelType(gc)}&#8221; into returnVal;</p>
<p>var shadow:Shadow = new Shadow();<br />
insert &#8220;shadow: {shadow.getAccelType(gc)}&#8221; into returnVal;</p>
<p>return returnVal;<br />
}</p>
<p>Stage {<br />
title: &#8220;Leadfoot&#8221;<br />
width: 250<br />
height: 400<br />
scene: Scene {<br />
content: [<br />
ListView {<br />
width: 250<br />
items: getAccelerationFaults()<br />
}</p>
<p><code> ]<br />
}<br />
}<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.herod.net/javafx/2009/07/javafx-effects-and-hardware-acceleration/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>TwitterFX &#8211; What next?</title>
		<link>http://blogs.herod.net/javafx/2009/07/twitterfx-what-next/</link>
		<comments>http://blogs.herod.net/javafx/2009/07/twitterfx-what-next/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 04:46:08 +0000</pubDate>
		<dc:creator>Steven Herod</dc:creator>
				<category><![CDATA[twitterfx]]></category>

		<guid isPermaLink="false">http://blogs.herod.net/javafx/?p=28</guid>
		<description><![CDATA[Work begain on TwitterFX the weekend after the public release of JavaFX 1.0 and has continued, through fits and starts up until today.  
Currently, it is a reasonably feature complete Twitter client based on JavaFX 1.1 and the question I have been asking myself is, where to from here?
As it stands today, the major [...]]]></description>
			<content:encoded><![CDATA[<p>Work begain on TwitterFX the weekend after the public release of JavaFX 1.0 and has continued, through fits and starts up until today.  </p>
<p>Currently, it is a reasonably feature complete Twitter client based on JavaFX 1.1 and the question I have been asking myself is, where to from here?</p>
<p>As it stands today, the major outstanding activity is to port the application to JavaFX 1.2 and to use the native controls and new features released in the latest version.  </p>
<p>Basic work has been undertaken to accomplish this work, there is a moderate amount of effort to get the application back to the point of running again, but further work is required to refactor code which relies on Java 1.1 features which have had their underlying API&#8217;s modified.</p>
<p>This is not terribly complicated, but I&#8217;m reluctant to do a straight port of the application and instead want to invest my time and effort in reassessing the goals of TwitterFX.</p>
<p>As it stands today there are a couple of possible thoughts which are not at all mutually exclusive.  What I&#8217;d like to do is throw it open to the user base for comment and feedback.</p>
<p><strong>Thought One &#8211; Split out the Twitter API code into a separate project.</strong></p>
<p>I think its of value to have a separately evolving project which offers a JavaFX interface to the Twitter API, and that this library be able to be freely included in other projects which may need to communicate to Twitter.</p>
<p><strong>Thought Two &#8211; Use TwitterFX as a reference JavaFX application</strong></p>
<p>Consider if TwitterFX is stripped back to the functionality only available in the JavaFX Common/Desktop/Mobile profiles.  Work can then be mainly on the internals and use the application as a &#8216;reference&#8217; for building a medium sized app in JavaFX that targets mobile and desktop (and potentially TV).</p>
<p><strong>Thought Three &#8211; Rework the internals for clarity and performance</strong></p>
<p>Currently the under the covers impl of TwitterFX is in my opinion, somewhat haphazard which is making maintenance harder than it should be.  There is also a significant amount of static initialization, which is why start up is relatively slow and why its initial memory footprint is higher than it could be.</p>
<p><strong>Thought Four &#8211; Simple vs Complex</strong></p>
<p>Much of the progression of TwitterFX was driven by attempts to become feature comparable with TweetDeck on the basis of it being the most popular and feature rich Twitter client.  However, Desktop Tweetie (Mac only) was released during the development of TwitterFX and it became apparent to me that there is another, just as significant group of users &#8211; those who like something which is functionally limited, but is elegantly implemented.</p>
<p>To a certain extent the advanced mode/simple mode toggle did for a while cater for this, but I remain convinced as to if I am fully satisfying either audience.</p>
<p>For instance, Thought Two (A reference JavaFX application) would by definition result in a much simpler application, however other people have suggested it could also become a full social networking client, like a Seismic Desktop or Digsby.</p>
<p><strong>Thought Five &#8211; Show me the money</strong></p>
<p>Would you pay for this thing?  Discuss.<br />
(I have a Wife and Child who would quite like Daddy to have something show for all the nights and weekends he works on this thing).</p>
<p><strong>Conclusion</strong></p>
<p>Anyway, I wanted to throw this out there to let people know where my mind is at and have them opt in.</p>
<p>PS  TwitterFX is now licensed under BSD (It&#8217;s no longer GPL 2)</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.herod.net/javafx/2009/07/twitterfx-what-next/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Animated GIF&#8217;s in JavaFX, a word of warning&#8230;</title>
		<link>http://blogs.herod.net/javafx/2009/06/animated-gifs-in-javafx-a-word-of-warning/</link>
		<comments>http://blogs.herod.net/javafx/2009/06/animated-gifs-in-javafx-a-word-of-warning/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 00:12:52 +0000</pubDate>
		<dc:creator>Steven Herod</dc:creator>
				<category><![CDATA[twitterfx]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://blogs.herod.net/javafx/?p=25</guid>
		<description><![CDATA[I&#8217;ve learned many things over the course of putting together TwitterFX, and for the most part, I&#8217;ve failed to share them with the world!  
I hope to change this over the coming weeks/months, but in the meantime, here is a tidbit.
One of neat things about JavaFX is the ease with which one can place [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve learned many things over the course of putting together TwitterFX, and for the most part, I&#8217;ve failed to share them with the world!  </p>
<p>I hope to change this over the coming weeks/months, but in the meantime, here is a tidbit.</p>
<p>One of neat things about JavaFX is the ease with which one can place Image and ImageView elements into your applicaton.</p>
<p>Not only does JavaFX support feedback on image loading and powerful effects, it will automatically render any GIF animation.</p>
<p>There is a however a caveat!  Animated GIFs</p>
<p>JavaFX provides no way (that I can tell) to detect if an image is an animated GIF, or to control said GIF (for instance, to stop the animation)</p>
<p>Furthermore, the rendering of animated GIFs in JavaFX seems to be quite inefficient at this time and if you think you are going to add animation to your application easily by dropping in an animated GIF I wouldn&#8217;t recommend it.</p>
<p>In my experience, you can expect placing an animated GIF in your UI will cause your application to consume around 20% + more of CPU time on a Core 2 Duo!  This may occur even if the image is hidden, but ceases after the image is removed from the scene graph.</p>
<p>Native JavaFX <a href="http://java.sun.com/javafx/1.2/docs/api/javafx.animation/javafx.animation.Timeline.html" onclick="pageTracker._trackPageview('/outgoing/java.sun.com/javafx/1.2/docs/api/javafx.animation/javafx.animation.Timeline.html?referer=');">Timelines</a> or the two Progress Indicator classes <a href="http://java.sun.com/javafx/1.2/docs/api/javafx.scene.control/javafx.scene.control.ProgressIndicator.html" onclick="pageTracker._trackPageview('/outgoing/java.sun.com/javafx/1.2/docs/api/javafx.scene.control/javafx.scene.control.ProgressIndicator.html?referer=');">ProgressIndicator</a> and <a href="http://java.sun.com/javafx/1.2/docs/api/javafx.scene.control/javafx.scene.control.ProgressBar.html" onclick="pageTracker._trackPageview('/outgoing/java.sun.com/javafx/1.2/docs/api/javafx.scene.control/javafx.scene.control.ProgressBar.html?referer=');">ProgressBar</a> l are a more efficient and powerful way of providing progress indicators or animation.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.herod.net/javafx/2009/06/animated-gifs-in-javafx-a-word-of-warning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TwitterFX: New dev version out (0.20b)</title>
		<link>http://blogs.herod.net/javafx/2009/01/new-dev-version-out-020b/</link>
		<comments>http://blogs.herod.net/javafx/2009/01/new-dev-version-out-020b/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 11:27:24 +0000</pubDate>
		<dc:creator>Steven Herod</dc:creator>
				<category><![CDATA[twitterfx]]></category>

		<guid isPermaLink="false">http://blogs.herod.net/javafx/?p=20</guid>
		<description><![CDATA[It can be access here:  http://herod.net/twitterfxdev/TwitterFX.jnlp
It includes

Fix for counts on new tweets since scrolling changes
Fix for duplicate new tweets since scrolling changes
Now announces itself to Twitter as a proper client (Tells the world you are using TwitterFX)
Switched to using https:// instead of http:// for all conversations with Twitter

I&#8217;m behind on a new &#8216;proper&#8217; version, I [...]]]></description>
			<content:encoded><![CDATA[<p>It can be access here:  <a href="http://herod.net/twitterfxdev/TwitterFX.jnlp" onclick="pageTracker._trackPageview('/outgoing/herod.net/twitterfxdev/TwitterFX.jnlp?referer=');">http://herod.net/twitterfxdev/TwitterFX.jnlp</a></p>
<p>It includes</p>
<ul>
<li>Fix for counts on new tweets since scrolling changes</li>
<li>Fix for duplicate new tweets since scrolling changes</li>
<li>Now announces itself to Twitter as a proper client (Tells the world you are using TwitterFX)</li>
<li>Switched to using https:// instead of http:// for all conversations with Twitter</li>
</ul>
<p>I&#8217;m behind on a new &#8216;proper&#8217; version, I just don&#8217;t want to officially release anything thats too dodgy!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.herod.net/javafx/2009/01/new-dev-version-out-020b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First Post!</title>
		<link>http://blogs.herod.net/javafx/2009/01/first-post/</link>
		<comments>http://blogs.herod.net/javafx/2009/01/first-post/#comments</comments>
		<pubDate>Sun, 25 Jan 2009 11:56:31 +0000</pubDate>
		<dc:creator>Steven Herod</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[non-tech]]></category>

		<guid isPermaLink="false">http://blogs.herod.net/javafx/?p=3</guid>
		<description><![CDATA[Well, its time to start blogging about my JavaFX experiences.  I&#8217;m sure the world is waiting with baited breath!
]]></description>
			<content:encoded><![CDATA[<p>Well, its time to start blogging about my JavaFX experiences.  I&#8217;m sure the world is waiting with baited breath!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.herod.net/javafx/2009/01/first-post/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
