<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Blog in Black</title>
	
	<link>http://bloginblack.de</link>
	<description>Protecting the web from bad ColdFusion code (since 2003)</description>
	<lastBuildDate>Wed, 10 Mar 2010 00:38:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/BlogInBlack" /><feedburner:info uri="bloginblack" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>How much memory does my ColdFusion variable really use? – Part III</title>
		<link>http://feedproxy.google.com/~r/BlogInBlack/~3/abQUUPbGjFI/</link>
		<comments>http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-%e2%80%93-part-iii/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 20:12:23 +0000</pubDate>
		<dc:creator>kai</dc:creator>
				<category><![CDATA[Agent K and the rest of the world]]></category>
		<category><![CDATA[Agent K on CF]]></category>
		<category><![CDATA[Agent K on Java]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[CFML]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Memory]]></category>
		<category><![CDATA[Tuning]]></category>

		<guid isPermaLink="false">http://bloginblack.de/?p=1241</guid>
		<description><![CDATA[Finally, nearly the last part (there's one more coming...). In <a href="http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-–-part-ii/" target="_blank">part II</a> I talked about the different problems we'd run into using the instrumentation code out-of-the-box without modifying it for the special scenario of using it to size ColdFusion variables<p><a href="http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-%e2%80%93-part-iii/">How much memory does my ColdFusion variable really use? – Part III</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Finally, nearly the last part (there&#8217;s one more coming&#8230;). In <a href="http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-–-part-ii/" target="_blank">part II</a> I talked about the different problems we&#8217;d run into using the instrumentation code out-of-the-box without modifying it for the special scenario of using it to size ColdFusion variables. We declared those issues solved (sic!) <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  &#8211; so let&#8217;s have a look at some code and how to use it. All I&#8217;ve done was to grab the example from Heinz&#8217;s <a href="http://www.javaspecialists.eu/archive/Issue142.html" target="_blank">JavaSpecialists newsletter</a> and changed some of the signatures (from private to protected). I then wrote a class CFMemoryCounterAgent that simply extends MemoryCounterAgent and overrides some of the methods with modified versions to cater for ColdFusion (well, technically it&#8217;s probably overloading because I modified the signature&#8230;).</p>
<p>Also while I was at it &#8211; I added a second argument to sizeOf() and deepSizeOf() named ignoreFlyweights. That refers back to the last section of <a href="http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-–-part-ii/" target="_blank">part II</a> &#8211; it enables you to define if the (what we have defined as well-known) flyweights are going to be counted for the total memory usage or not.</p>
<p>This is the modified internalSizeOf() method, that&#8217;s being used to &#8220;filter&#8221; for the the two well-known &#8220;troublemakers&#8221; in CF as discussed in <a href="http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-–-part-ii/">part II</a>. When I was doing some further testing, I came across a few more scenarios that could cause the memory sizing to drift off, those have been added as well:</p>
<p></p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"> <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">long</span> internalSizeOf<span style="color: #009900;">&#40;</span><span style="color: #003399;">Object</span> obj, <span style="color: #003399;">Stack</span> stack, <span style="color: #003399;">Map</span> visited, 
   <span style="color: #000066; font-weight: bold;">boolean</span> ignoreFlyweights<span style="color: #009900;">&#41;</span> 
  <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>skipObject<span style="color: #009900;">&#40;</span>obj, visited, ignoreFlyweights<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> 
    <span style="color: #009900;">&#123;</span>	
      <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">Class</span> clazz <span style="color: #339933;">=</span> obj.<span style="color: #006633;">getClass</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
&nbsp;
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>clazz.<span style="color: #006633;">isArray</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> 
    <span style="color: #009900;">&#123;</span>
      addArrayElementsToStack<span style="color: #009900;">&#40;</span>clazz, obj, stack<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> 
    <span style="color: #000000; font-weight: bold;">else</span> 
    <span style="color: #009900;">&#123;</span>
      <span style="color: #666666; font-style: italic;">// add all non-primitive fields, non-CF memory tracker objects and non-SessionContext objects to the stack</span>
      <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span>clazz <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> 
      <span style="color: #009900;">&#123;</span>
        <span style="color: #003399;">Field</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> fields <span style="color: #339933;">=</span> clazz.<span style="color: #006633;">getDeclaredFields</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Field</span> field <span style="color: #339933;">:</span> fields<span style="color: #009900;">&#41;</span> 
        <span style="color: #009900;">&#123;</span>
          <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #003399;">Modifier</span>.<span style="color: #006633;">isStatic</span><span style="color: #009900;">&#40;</span>field.<span style="color: #006633;">getModifiers</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">!</span>field.<span style="color: #006633;">getType</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">isPrimitive</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> 
            field.<span style="color: #006633;">getType</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">&quot;coldfusion.runtime.NeoPageContext&quot;</span> <span style="color: #339933;">&amp;&amp;</span> 
            field.<span style="color: #006633;">getType</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">&quot;coldfusion.runtime.CfJspPage&quot;</span> <span style="color: #339933;">&amp;&amp;</span> 
            field.<span style="color: #006633;">getType</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">&quot;coldfusion.monitor.memory.MemoryTrackable&quot;</span> <span style="color: #339933;">&amp;&amp;</span> 
            field.<span style="color: #006633;">getType</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">&quot;coldfusion.monitor.sql.QueryStat&quot;</span> <span style="color: #339933;">&amp;&amp;</span> 
            field.<span style="color: #006633;">getType</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">&quot;coldfusion.monitor.memory.MemoryTrackerProxy&quot;</span> <span style="color: #339933;">&amp;&amp;</span> 
            field.<span style="color: #006633;">getType</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">&quot;javax.servlet.ServletContext&quot;</span><span style="color: #009900;">&#41;</span> 
          <span style="color: #009900;">&#123;</span>
            field.<span style="color: #006633;">setAccessible</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000000; font-weight: bold;">try</span> 
          	<span style="color: #009900;">&#123;</span>
              stack.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>field.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span>obj<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>        
            <span style="color: #009900;">&#125;</span> 
            <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">IllegalAccessException</span> ex<span style="color: #009900;">&#41;</span> 
            <span style="color: #009900;">&#123;</span>
              <span style="color: #000000; font-weight: bold;">throw</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">RuntimeException</span><span style="color: #009900;">&#40;</span>ex<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
          <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
        clazz <span style="color: #339933;">=</span> clazz.<span style="color: #006633;">getSuperclass</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
    visited.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>obj, <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">return</span> sizeOf<span style="color: #009900;">&#40;</span>obj, ignoreFlyweights<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span></pre></div></div>

<p>I&#8217;ve provided a <a href="http://bloginblack.de/wp-content/uploads/2010/03/CFMemoryAgent_0_1_1.zip">.zip file (version 0.1.1)</a> containing the source. If you don&#8217;t want to compile it yourself, just grab the CFMemoryCounterAgent.jar and apply it to your CF instance as described in <a href="http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-part-i/">part I</a>. The<a href="http://bloginblack.de/wp-content/uploads/2010/03/CFMemoryAgent_0_1_1.zip"> .zip</a> also contains a memorytest.cfm that should be self-explanatory and will give you an idea how it&#8217;s supposed to be used. If you want to compile it, the build file for Ant should do the trick &#8211; please note that there is a copy task in there that copies the file into the location of my CF installation&#8217;s lib folder. You pretty much would want to change that to copy the .jar file to a different location OR remove that copy task in the first place. Also &#8211; I&#8217;ve build and tested this on CF 8.0.1 on OS X. You need Java 5 or newer to run this in the first place and YMMV with other CF versions. If you try it and get weird results, let me know.</p>
<p><strong>Edit:</strong> The .jar file is compiled with Java 6 and the Ant file targets Java 6 as well. Make sure that you potentially recompile the source and change the Ant file if you try to run this on Java 5.</p>
<p>Please keep in mind that all results you&#8217;re getting from this are JVM-based estimations and sort-of right. Also, I would strongly discourage you to build totally messed-up code for the sake of saving 250 bytes or similar. Don&#8217;t forget that the JVM has a reasonably well-working garbage collection and the GC will collect most variables that you create on a page very quickly in the first place. The techniques shown here are more for information and to raise the behind-the-scenes awareness. Besides that, it&#8217;s just interesting to see how CF deals with the different variable types. The next (and final) post of this series will have a look at some results and try to explain those. Stay tuned.</p>
<p><a href="http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-%e2%80%93-part-iii/">How much memory does my ColdFusion variable really use? – Part III</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=How+much+memory+does+my+ColdFusion+variable+really+use%3F+%E2%80%93+Part+III+http://bit.ly/9CbnY3" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-%e2%80%93-part-iii/&amp;title=How+much+memory+does+my+ColdFusion+variable+really+use%3F+%E2%80%93+Part+III" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-%e2%80%93-part-iii/&amp;t=How+much+memory+does+my+ColdFusion+variable+really+use%3F+%E2%80%93+Part+III" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-%e2%80%93-part-iii/&amp;title=How+much+memory+does+my+ColdFusion+variable+really+use%3F+%E2%80%93+Part+III" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p><img src="http://feeds.feedburner.com/~r/BlogInBlack/~4/abQUUPbGjFI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-%e2%80%93-part-iii/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-%e2%80%93-part-iii/</feedburner:origLink></item>
		<item>
		<title>How much memory does my ColdFusion variable really use? – Part II</title>
		<link>http://feedproxy.google.com/~r/BlogInBlack/~3/HSS4VPAJnIU/</link>
		<comments>http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-%e2%80%93-part-ii/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 03:54:32 +0000</pubDate>
		<dc:creator>kai</dc:creator>
				<category><![CDATA[Agent K and the rest of the world]]></category>
		<category><![CDATA[Agent K on CF]]></category>
		<category><![CDATA[Agent K on Java]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://bloginblack.de/?p=1233</guid>
		<description><![CDATA[Here we go - part II of an approach into sizing ColdFusion variables from within ColdFusion. In part I I introduced the problem we're trying to solve, a general solution (JVM instrumentation) and also pointed you to the JavaSpecialists newsletter #142 for a working solution (from a Java point of view). Heinz also commented in part I and pointed out that there is a full-blown open source project named java.sizeOf() that provides a complete solution from a Java point of view.<p><a href="http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-%e2%80%93-part-ii/">How much memory does my ColdFusion variable really use? – Part II</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Here we go &#8211; part II of an approach into sizing ColdFusion variables from within ColdFusion. In <a href="http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-part-i/" target="_blank">part I</a> I introduced the problem we&#8217;re trying to solve, a general solution (JVM instrumentation) and also pointed you to the <a href="http://www.javaspecialists.eu/archive/Issue142.html" target="_blank">JavaSpecialists newsletter #142</a> for a working solution (from a Java point of view). Heinz also commented in <a href="http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-part-i/" target="_blank">part I</a> and pointed out that there is a full-blown open source project named <a href="http://sourceforge.net/projects/sizeof/" target="_blank">java.sizeOf()</a> that provides a complete solution from a Java point of view.</p>
<p></p>
<h3>How does it work?</h3>
<p>This post is geared towards the problems the out-of-the-box Java solution runs into. Let&#8217;s first have a look into two different ways of calculating the memory usage of a CF variable with the approach described so far.: sizeOf() vs. deepSizeOf() respectively shallow vs. deep. If you&#8217;ve done any work structs in ColdFusion this concept should be somewhat familiar (there are shallow copies/references as well as deep copies). In our use of the terminology <em>shallow</em> will refer to measuring the memory usage of the object itself and <em>deep</em> will refer to measuring the memory usage of the object as well as its fields (members) as well as the parent class(es) and their fields up the object hierarchy.</p>
<p>How does the code do this? Basically it&#8217;s using a stack and a hash map to keep track of what do to and what already has been measured. First step is to grab the CF variable (which is a Java object), check a few things (more below) and then throw all members of the object onto the stack for further processing. After that, the superclass gets processed the same way, more stuff gets thrown onto the stack and popped off the stack again when we&#8217;re running out of things to process and measure.</p>
<p></p>
<h3>Ignoring types</h3>
<p>This fact alone contains a few interesting surprises. When I started measuring slightly more complex CF variables than simple Strings or Numbers, I got crazy figures of several MB for a simple struct. That obviously couldn&#8217;t be right. Using Java reflection on a few CF variables, such as structs or arrays, I easily found the &#8220;culprit&#8221;: reference(s) to coldfusion.monitor.memory.MemoryTrackerProxy. Sounds like the CF 8+ server monitor subsystem to me, but I might be wrong. But anyway &#8211; following this reference along up the object hierarchy creates the outrages figures for a struct and other variables. The Java class behind a CF struct is coldfusion.runtime.Struct and it actually contains a getter and a setter (getMemoryTrackerProxy() etc) to work with the MemoryTrackerProxy. For our purpose of measuring the memory used for the struct and its content, we certainly don&#8217;t need to follow the links to MemoryTrackerProxy when the instrumentation works itself through the object stack. What that basically means is that we have to ignore all members of type coldfusion.monitor.memory.MemoryTrackerProxy when we trace the object tree.</p>
<p>Just in case you&#8217;re interested, the inheritance structure for a CF structs from a Java point of view looks like this:</p>
<table>
<tbody>
<tr>
<td width="20"></td>
<td colspan="4"><strong>java.lang.Object</strong></td>
</tr>
<tr>
<td width="20"></td>
<td width="20"></td>
<td colspan="3">|-  <strong>coldfusion.util.CaseInsensitiveMap</strong></td>
</tr>
<tr>
<td width="20"></td>
<td width="20"></td>
<td width="20"></td>
<td colspan="2">|-  <strong>coldfusion.util.FastHashtable</strong></td>
</tr>
<tr>
<td width="20"></td>
<td width="20"></td>
<td width="20"></td>
<td width="20"></td>
<td>|-  <strong>coldfusion.runtime.Struct</strong></td>
</tr>
</tbody>
</table>
<p>After having &#8220;fixed&#8221; the MemoryTrackerProxy issue, common CF variables worked fine. I still ran into issues with some persistent scopes. Further testing showed that some of those contain members of type javax.servlet.ServletContext. Now &#8211; following those when tracing memory usage also creates huge amounts of memory being used because you&#8217;re pretty much including a lot of the overall Java API. That particular happens when dealing with measuring the application scope. Therefore javax.servlet.ServletContext is another class I&#8217;m filtering for and ignore when measuring memory usage.</p>
<p><strong>Important: </strong>Both decisions are made sort of arbitrary. One can argue that following the references and including javax.servlet.ServletContext for the application scope for instance would create the &#8220;real&#8221; amount of memory used for the application scope. My answer to that would be: yes, that&#8217;s fair enough and it might be a valid point. I&#8217;ve made the decision not to include it because it&#8217;s not what I want to measure here.</p>
<p></p>
<h3>Flyweights</h3>
<p>Just a few quick word on flyweights or the <a href="http://www.informit.com/guides/content.aspx?g=java&amp;seqNum=525" target="_blank">Flyweight</a> <a href="http://www.javaworld.com/javaworld/jw-07-2003/jw-0725-designpatterns.html?page=1" target="_blank">Pattern</a>. I don&#8217;t want to dive into the specifics of this pattern, just follow the linked explanations if that&#8217;s of interest for you. But &#8211; I want to give you a plain language description of what it is (from 30,000 ft): Basically the Flyweight pattern is a way to manage memory very efficiently by sharing and pooling objects whenever possible. That&#8217;s pretty much you&#8217;d need to know for the purpose of this exercise. Ah &#8211; no, hang on. What again does this have to do with Instrumentation and tracking memory usage?</p>
<p>Well &#8211; think of a pool of Integer objects or <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html#intern%28%29" target="_blank">internalized</a> Strings. For us, it&#8217;s pretty much impossible to say if a particular object of such characteristics is used for solely our case or if it&#8217;s reused in a lot of other places in the app. Maybe we have our own instance of an Integer xyz and therefore the memory usage of it should be counted towards the use of our complex ColdFusion variable. But maybe we just borrowed an Integer abc for the fraction of a blink that was somewhere in the pool anyway and therefore just quickly using it didn&#8217;t do any &#8220;harm&#8221;. We don&#8217;t know and that&#8217;s why we check. For Integers we would basically do: obj == Integer.valueOf((Integer) obj). If that returns true, we know it&#8217;s a shared flyweight and shouldn&#8217;t contribute to the overall memory usage. For Strings it means to check the .intern() method (as described and linked above). There are a few more types for which such testing makes sense.</p>
<p>Still, one can argue that one&#8217;d want to see the memory usage ignoring any flyweight/JVM concerns, so I made that configurable with a switch. I personally think it&#8217;d be better not to include them, but both will possible.</p>
<p>That&#8217;s it for now &#8211; part III will comprise the actual Java code and .jar file to be used in ColdFusion and some examples. I should actually write another post giving a few more explanations on using Java reflection in ColdFusion and what it can be good for (basically tinkering with undocumented features <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
<p><a href="http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-%e2%80%93-part-ii/">How much memory does my ColdFusion variable really use? – Part II</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=How+much+memory+does+my+ColdFusion+variable+really+use%3F+%E2%80%93+Part+II+http://bit.ly/coHKC2" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-%e2%80%93-part-ii/&amp;title=How+much+memory+does+my+ColdFusion+variable+really+use%3F+%E2%80%93+Part+II" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-%e2%80%93-part-ii/&amp;t=How+much+memory+does+my+ColdFusion+variable+really+use%3F+%E2%80%93+Part+II" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-%e2%80%93-part-ii/&amp;title=How+much+memory+does+my+ColdFusion+variable+really+use%3F+%E2%80%93+Part+II" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p><img src="http://feeds.feedburner.com/~r/BlogInBlack/~4/HSS4VPAJnIU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-%e2%80%93-part-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-%e2%80%93-part-ii/</feedburner:origLink></item>
		<item>
		<title>How much memory does my ColdFusion variable really use? – Part I</title>
		<link>http://feedproxy.google.com/~r/BlogInBlack/~3/hWgDiGgnu2w/</link>
		<comments>http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-part-i/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 09:51:31 +0000</pubDate>
		<dc:creator>kai</dc:creator>
				<category><![CDATA[Agent K on CF]]></category>
		<category><![CDATA[Agent K on Java]]></category>
		<category><![CDATA[CFML]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JVM]]></category>

		<guid isPermaLink="false">http://bloginblack.de/?p=1224</guid>
		<description><![CDATA[Recently I've been dealing quite a bit with ColdFusion from an infrastructure point of view - clustering, monitoring, system tuning etc. One particular thing I (and I know of at least some others) have found missing was an easy to use and realistic way of figuring out how much memory a particular ColdFusion variable really uses.<p><a href="http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-part-i/">How much memory does my ColdFusion variable really use? &#8211; Part I</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve been dealing quite a bit with ColdFusion from an infrastructure point of view &#8211; clustering, monitoring, system tuning etc. One particular thing I (and I know of at least some others) have found missing was an easy to use and realistic way of figuring out how much memory a particular ColdFusion variable really uses. There are a few approaches around that regularly <a href="http://groups.google.com/group/cfugauckland/browse_thread/thread/e9187272733f22d1" target="_blank">pop up on mailing lists</a> <a href="http://www.javaspecialists.eu/archive/Issue029.html" target="_blank">to roughly estimate</a> such a figure from code. There are also a few tools such as <a href="http://www.seefusion.com/" target="_blank">SeeFusion</a>, <a href="http://www.fusion-reactor.com/" target="_blank">Fusion Reactor</a> or the ColdFusion Server Monitor that provide assistance when it comes to figuring out JVM memory usages or even are able to break usage down to a scope such as the application scope.</p>
<p>All that&#8217;s good information, but it didn&#8217;t provide the information I wanted in this case. I literally wanted to be able to create an array or a structure in CF and see how much memory the instantiation of this variable will take. I don&#8217;t see a way to get this information from ColdFusion itself, but here&#8217;s a nice feature of the underlying Java platform to the rescue: <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/instrument/Instrumentation.html" target="_blank">JVM instrumentation</a> (available from Java 5 onwards).</p>
<p>If you followed the link above you would have seen the getObjectSize(Object) method and its description &#8220;Returns an implementation-specific approximation of the amount of storage consumed by the specified object.&#8221;. Ah, cool. That sounds about what we want, right. Take an object &#8211; throw it into that method and get back the amount of storage used, doesn&#8217;t it?</p>
<p>Notice the following restrictions:</p>
<ul>
<li>implementation-specific and</li>
<li>approximation</li>
</ul>
<p>What does that mean for us? Well &#8211; basically what it comes down to is: You get an approximation, it  might not be correct to the last byte. The JVM will try hard, but it might just not be 100% exact. Also, speaking of the JVM &#8211; the number it returns will be correct for your hardware, operating system and JVM used. To give you an example &#8211; the figures I get on my 64-bit OS X 10.6.2 with JVM 1.6.0_17 might be different from someone on 32-bit Windows with a Java 5 JVM or even a JVM 1.6.0_16. So &#8211; to sum it up: YMMV.</p>
<p>I started playing with instrumentation a bit and then found <a href="http://www.javaspecialists.eu/archive/Issue142.html" target="_blank">issue 142</a> of Heinz Kabutz&#8217;s JavaSpecialists newsletter. In there, he provides a JVM-instrumentation based memory counter that seemed to do exactly what I wanted to do. The idea is that you have a MemoryCounterAgent class that provides two static methods: sizeOf() and deepSizeOf().</p>
<p>The way to use his code is rather straight forward. Compile the MemoryCounterAgent.java provided there &#8211; either with a tool of your choice or use the ANT scripts Heinz has provided. The result should be a .jar file that you&#8217;d best put into the lib folder of CF respectively Java. I&#8217;ve done all this on CF 8.0.1 / OS X 64-bit installed in a JRUN4-based J2EE installation. The folder I place the .jar file in this case is /Applications/JRun4/lib.</p>
<p>To hook your JVM into the instrumentation agent, you need to modify the JVM arguments. You find those usually in the jvm.config file in the bin-folder of your CF or JRun installation. The idea is to add a -javaagent argument in front of the other, existing arguments that points to the .jar file you&#8217;ve created and placed in lib before.</p>
<p></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">java.args=-javaagent:<span style="color: #000000; font-weight: bold;">/</span>Applications<span style="color: #000000; font-weight: bold;">/</span>JRun4<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>MemoryCounterAgent.jar</pre></div></div>

<p>Restart ColdFusion and after that you&#8217;ve got the instrumentation available for ColdFusion code. Put the Java object in your CF code (it&#8217;s static, so don&#8217;t instantiate it) and call a method of it:</p>
<p></p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;cfscript<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	oObjectSize = CreateObject(&quot;java&quot;,&quot;eu.javaspecialists.tjsn.memory.MemoryCounterAgent&quot;);
	myText = &quot;This is a string&quot;;
	WriteOutput(oObjectSize.sizeOf(myText));
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/cfscript<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>&#8220;What&#8217;s the catch?&#8221;, you might ask. Well, there are a few. First of all &#8211; the unmodified code works for a variety of different CF variables, but it pretty much provides weird results for some others. The reason for this is that a CF variable is basically a Java variable. Strings in CF are of type java.lang.String &#8211; easy. Arrays in CF are of type coldfusion.runtime.Array and most complex CF types have such a non-trivial representation in the Java world. Those Java classes contain CF-specific implementation details and hooks into other parts of the ColdFusion infrastructure that really blow out and misshape the memory estimations the JVM instrumentation provides. There are ways around that (by using reflection on CF variables to find out how they are constructed, but that will be covered in part II of this series of blog posts).</p>
<p>The second issue are flyweights. For all those of you who have no idea of what that means &#8211; the flyweight pattern is a way to manage memory that is used for certain types in Java and its JVMs. Using (and including) flyweights in memory calculations can produce significantly different results from not using them. Also &#8211; that will be covered in more detail in part II or III.</p>
<p>Anyway &#8211; there are reasonable solutions for both issues, I believe. I&#8217;m currently building a CFMemoryCounterAgent class that provides memory tracking on CF variables as close as it gets &#8211; stay tuned, more on this here in the next few days.</p>
<p><a href="http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-part-i/">How much memory does my ColdFusion variable really use? &#8211; Part I</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=How+much+memory+does+my+ColdFusion+variable+really+use%3F+%26%238211%3B+Part+I+http://bit.ly/9nlXZV" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-part-i/&amp;title=How+much+memory+does+my+ColdFusion+variable+really+use%3F+%26%238211%3B+Part+I" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-part-i/&amp;t=How+much+memory+does+my+ColdFusion+variable+really+use%3F+%26%238211%3B+Part+I" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-part-i/&amp;title=How+much+memory+does+my+ColdFusion+variable+really+use%3F+%26%238211%3B+Part+I" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p><img src="http://feeds.feedburner.com/~r/BlogInBlack/~4/hWgDiGgnu2w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-part-i/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		<feedburner:origLink>http://bloginblack.de/2010/03/how-much-memory-does-my-coldfusion-variable-really-use-part-i/</feedburner:origLink></item>
		<item>
		<title>Speaking at webDU 2010 (May 6 and 7 2010, Bondi Beach)</title>
		<link>http://feedproxy.google.com/~r/BlogInBlack/~3/gYmuoRvDQYQ/</link>
		<comments>http://bloginblack.de/2010/02/speaking-at-webdu-2010-may-6-and-7-2010-bondi-beach/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 00:44:26 +0000</pubDate>
		<dc:creator>kai</dc:creator>
				<category><![CDATA[Agent K and the rest of the world]]></category>
		<category><![CDATA[Agent K on CF]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Australia]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[webDU]]></category>

		<guid isPermaLink="false">http://bloginblack.de/?p=1180</guid>
		<description><![CDATA[I'm again speaking at this year's webDU (and it's going to be the 8th time in a row - I think the only other people who have presented at each MXDU/webDU since it started in 2003 are Andrew Muller and Mr. Geoff Bowers himself now, yay!).<p><a href="http://bloginblack.de/2010/02/speaking-at-webdu-2010-may-6-and-7-2010-bondi-beach/">Speaking at webDU 2010 (May 6 and 7 2010, Bondi Beach)</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m again speaking at this year&#8217;s <a href="http://www.webdu.com.au" target="_blank">webDU</a> (and it&#8217;s going to be the 8th time in a row &#8211; I think the only <strong>other</strong> people who have presented at each MXDU/webDU since it started in 2003 are Andrew Muller and Mr. Geoff Bowers himself now, yay!).</p>
<p>BTW: Did everyone realise that the <a href="http://www.webdu.com.au/registration" target="_blank">registration for webDU 2010</a> is open and that the Early Bird price (AU$ 695 is really a bargain for the two days) runs out on March 7? Register now, but latest on March 7 please.</p>
<p><a href="http://www.webdu.com.au/session/it-doesn-t-always-have-to-be-relational-introduction-into-couchdb" target="_blank">My topic</a> will be: &#8220;It doesn&#8217;t always have to be relational &#8211; Introduction into CouchDB&#8221;. Although this session is going to cover a lot of content specific to CouchDB, you can bet that you&#8217;re going to get a whole lot of information on how to use Couch with ColdFusion and Flex.</p>
<p>Here&#8217;s the full session abstract:</p>
<p>&#8212;<br />
Web developers have grown into the habit of pretty much solely relying on relational data base management systems to store the data of web applications. But besides the well-known RDBMS there is a huge community of supporters of alternative database systems out there: Object-oriented database management systems, hybrids between OO- and relational DBMS and many more. And then there&#8217;s <a href="http://couchdb.apache.org/" target="_blank">CouchDB</a> (subtitled: &#8220;relax&#8221;) &#8211; a document-oriented database that recently got promoted from the Apache incubator to becoming a full-blown Apache-supported open source project. <a href="http://couchdb.apache.org/" target="_blank">CouchDB</a> is fundamentally different from what you&#8217;re used to, but it offers a refreshing and different approach for storing data in your web application and it actually scales tremendously well in large web apps.</p>
<p>In this session, you&#8217;ll get an introduction into CouchDB, its API and the mechanisms behind the API and we&#8217;re going to look into hooking CouchDB into technologies like Flex and ColdFusion.<br />
&#8212;</p>
<p><a href="http://bloginblack.de/2010/02/speaking-at-webdu-2010-may-6-and-7-2010-bondi-beach/">Speaking at webDU 2010 (May 6 and 7 2010, Bondi Beach)</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=Speaking+at+webDU+2010+%28May+6+and+7+2010%2C+Bondi+Beach%29+http://bit.ly/9Q76t8" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2010/02/speaking-at-webdu-2010-may-6-and-7-2010-bondi-beach/&amp;title=Speaking+at+webDU+2010+%28May+6+and+7+2010%2C+Bondi+Beach%29" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2010/02/speaking-at-webdu-2010-may-6-and-7-2010-bondi-beach/&amp;t=Speaking+at+webDU+2010+%28May+6+and+7+2010%2C+Bondi+Beach%29" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2010/02/speaking-at-webdu-2010-may-6-and-7-2010-bondi-beach/&amp;title=Speaking+at+webDU+2010+%28May+6+and+7+2010%2C+Bondi+Beach%29" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p><img src="http://feeds.feedburner.com/~r/BlogInBlack/~4/gYmuoRvDQYQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2010/02/speaking-at-webdu-2010-may-6-and-7-2010-bondi-beach/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bloginblack.de/2010/02/speaking-at-webdu-2010-may-6-and-7-2010-bondi-beach/</feedburner:origLink></item>
		<item>
		<title>I’m flying an AirNZ 777-200</title>
		<link>http://feedproxy.google.com/~r/BlogInBlack/~3/eofIiQbUOEY/</link>
		<comments>http://bloginblack.de/2010/02/im-flying-a-777-200/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 20:22:18 +0000</pubDate>
		<dc:creator>kai</dc:creator>
				<category><![CDATA[Agent K and the rest of the world]]></category>
		<category><![CDATA[Funstuff]]></category>
		<category><![CDATA[Airlines]]></category>
		<category><![CDATA[Fun]]></category>

		<guid isPermaLink="false">http://bloginblack.de/?p=1162</guid>
		<description><![CDATA[The next action item after being to the Engineering base was the 777-sim ride. Air NZ has two simulator and training buildings in the vicinity of Auckland Airport.<p><a href="http://bloginblack.de/2010/02/im-flying-a-777-200/">I&#8217;m flying an AirNZ 777-200</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Well, in a simulator, but still&#8230; <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  The next action item after being to the Engineering base was the 777-sim ride. Air NZ has two simulator and training buildings in the vicinity of Auckland Airport. The one that hosts the 777-200 simulator also houses a Q300 simulator (if I remember correctly), used by the regional subsidies of Air NZ, and a shiny new 777-300 simulator. The first actual deliveries of the 777-300 order are scheduled to arrive in November 2010. There&#8217;s also a 787 simulator been ordered, but given that the plane itself is currently going through the certification process and modifications might be made, I doubt that&#8217;s due any time soon. The picture below gives you a rough idea what those simulators look like (note: this is <strong>not</strong> any of the actual Air NZ sims).</p>
<p><img class="aligncenter" title="A random simulator" src="http://www.ic.gc.ca/eic/site/ad-ad.nsf/vwimages/CAE.jpg/$file/CAE.jpg" alt="" width="250" height="240" /></p>
<p>Additional to the simulators, the building caters for a quite a bit of crew training, it has theory and computer-based-training classrooms as well as crew briefing and -debriefing rooms. In preparation for the day, I had a look at the 777 flight manual and some checklists (for Flight Sim X etc) to get an idea of the cockpit and instrument layout and how things roughly work. On arrival at the sim centre, we were greeted by Joy, one of the instructors. She showed us around and then we went to the 777-200 simulator and I took control of the plane *g*. <a href="http://twitter.com/blauerpunto" target="_blank">Diane</a> jumped into the first officer&#8217;s seat and Joy started to explain the cockpit and what we&#8217;re going to do. The photo shows my side of the cockpit: Flight director to the left (it&#8217;s basically a combined artificial horizon, airspeed indicator, direction indication and also shows the altitude) then the navigation display, 3 individual instruments in a column, the Flight management computer below it and the engine displays towards the right (they&#8217;re not running yet as you can see)</p>
<p><a href="http://bloginblack.de/wp-content/uploads/2010/02/IMG_0800.jpg"><img class="aligncenter size-medium wp-image-1163" title="IMG_0800" src="http://bloginblack.de/wp-content/uploads/2010/02/IMG_0800-300x225.jpg" alt="cockpit" width="300" height="225" /></a></p>
<p>The autostart feature of the 777 is pretty cool. What it comes roughly down to &#8211; make sure breaks are set, engine is in autostart mode and provide fuel to the engine and off you go. Same for shutting it down (and that&#8217;s very similar to the type of planes I fly) &#8211; cut the fuel flow into the engine and it will shutdown. The next image shows the controls below the FMC &#8211; the big lever is thrust and to the right you can see the settings for flaps &#8211; from 1 to 30 degrees.</p>
<p><a href="http://bloginblack.de/wp-content/uploads/2010/02/IMG_0801.jpg"><img class="aligncenter size-medium wp-image-1165" title="IMG_0801" src="http://bloginblack.de/wp-content/uploads/2010/02/IMG_0801-300x225.jpg" alt="more cockpit" width="300" height="225" /></a></p>
<p>When the simulation launched we found ourselves at gate 3 of NZAA international, scheduled to take-off from Runway 23L. First interesting challenge (after starting the engines and being pushed back) &#8211; finding the correct taxiways, keep the plane on the yellow line to avoid hitting any building, car or other plane along the way and line up correctly. It was quite amazing how real those simulators feel. It takes quite a while for the 777 to overcome the intertia but after I got it rolling once, it hardly wanted to stop.</p>
<p>Lined up correctly, the takeoff was initiated, auto-thrust took over and soon after we reached the rotation speed of (I think) some 150 knots and off we went. We took off from 23L climbed out quite straight ahead for a short moment and then banked into a right turn for a Peeha One Alfa departure from NZAA. I found the flight director instrument helping a lot with that &#8211; awesome little thing I&#8217;d love to have in my 172 <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Below is the ILS departure chart, having reached 3000 feet, Auckland city was already clearly coming in sight and we did a few turns and basic maneuverers to get grip of the plane.</p>
<p><a href="http://bloginblack.de/wp-content/uploads/2010/02/IMG_0805.jpg"><img class="aligncenter size-medium wp-image-1166" title="IMG_0805" src="http://bloginblack.de/wp-content/uploads/2010/02/IMG_0805-225x300.jpg" alt="Departure chart" width="225" height="300" /></a></p>
<p>Luckily <a href="http://twitter.com/blauerpunto" target="_blank">Diane</a> took videos (yay!) &#8211; here&#8217;s a video of the take off (you can also hear/see her raising the gears after takeoff):</p>
<div style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" 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://www.youtube.com/v/jOUn5aOxO1Q&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/jOUn5aOxO1Q&amp;hl=en&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<p>We then programmed an ILS approach for runway 23L via the navigation point EMRAG into the flight computer and the navigation display started to show me the approach pattern (basically an arc that leads into finals for 23L) to follow. The idea of such a pattern is that the pilots ends up being on a 3-dimensional glide slope that leads directly to the touchdown point. You&#8217;re given vertical and horizontal indicators in the Flight Director screen, which is very helpful.</p>
<p><a href="http://bloginblack.de/wp-content/uploads/2010/02/IMG_0808.jpg"><img class="aligncenter size-medium wp-image-1168" title="IMG_0808" src="http://bloginblack.de/wp-content/uploads/2010/02/IMG_0808-300x225.jpg" alt="FD" width="300" height="225" /></a></p>
<p>When we entered the approach, we disconnected the autopilot and I flew the plane through the arc and on finals. My first approach became slightly wobbly at about 1000 feet &#8211; not badly though, but I had issues keeping the wings perfectly level because I lost the glide slope a few times and tried to catch up with it. When you approach the ground, the plane will very clearly call out the altitude (as in &#8220;one hundred!!!!! &#8230; fifty!!!! &#8230; thirty!!!! etc) so that the pilot is def. aware of the fact that a landing is to be expected very soon. As a consequence of my wobbly approach my first touchdown was a bit too hard, but still came in reasonably straight on the centreline and when the thrust reversers and auto-break kicked in we got to a quite quick stop.</p>
<p>Joy then asked me if I wanted to do another one (WHAT A QUESTION!) &#8211; sure I wanted. Actually it ended up being two more and my second and third approach were so much nicer and smother and particularly in the third I got the hang of it. The picture below is a (slighty blurry) shot of the navigation display and you can see that the turn is not a perfect arc. That&#8217;s because we started that particular approach closer to EMRAG and then it became some sort of a short-cut approach into 23L.</p>
<p><a href="http://bloginblack.de/wp-content/uploads/2010/02/IMG_0810.jpg"><img class="aligncenter size-medium wp-image-1170" title="ND" src="http://bloginblack.de/wp-content/uploads/2010/02/IMG_0810-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p><a href="http://bloginblack.de/2010/02/im-flying-a-777-200/">I&#8217;m flying an AirNZ 777-200</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=I%26%238217%3Bm+flying+an+AirNZ+777-200+http://bit.ly/cjqXm2" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2010/02/im-flying-a-777-200/&amp;title=I%26%238217%3Bm+flying+an+AirNZ+777-200" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2010/02/im-flying-a-777-200/&amp;t=I%26%238217%3Bm+flying+an+AirNZ+777-200" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2010/02/im-flying-a-777-200/&amp;title=I%26%238217%3Bm+flying+an+AirNZ+777-200" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p><img src="http://feeds.feedburner.com/~r/BlogInBlack/~4/eofIiQbUOEY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2010/02/im-flying-a-777-200/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bloginblack.de/2010/02/im-flying-a-777-200/</feedburner:origLink></item>
		<item>
		<title>A visit at Air New Zealand’s Engineering Base in Auckland</title>
		<link>http://feedproxy.google.com/~r/BlogInBlack/~3/cmlHwBohtSY/</link>
		<comments>http://bloginblack.de/2010/02/a-visit-at-air-new-zealands-engineering-base-in-auckland/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 18:36:10 +0000</pubDate>
		<dc:creator>kai</dc:creator>
				<category><![CDATA[Agent K and the rest of the world]]></category>
		<category><![CDATA[Funstuff]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Airlines]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Planes]]></category>

		<guid isPermaLink="false">http://bloginblack.de/?p=1150</guid>
		<description><![CDATA[This is the second post about my awesome day on Monday. After @blauerpunto and I arrived in Auckland, Mark Farley from Air NZ picked us up at the air bridge. Mark is a Flight Service Manager with Air New Zealand but also does a lot of work on the ground. One of his projects is crew management, training and planning for a project Air NZ runs together with Hawaiian Airlines (more on that further down).<p><a href="http://bloginblack.de/2010/02/a-visit-at-air-new-zealands-engineering-base-in-auckland/">A visit at Air New Zealand&#8217;s Engineering Base in Auckland</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>This is the second post about <a href="http://bloginblack.de/2010/02/an-awesome-day-with-air-new-zealand/" target="_blank">my awesome day on Monday</a>. After <a href="http://twitter.com/blauerpunto" target="_blank">@blauerpunto</a> and I arrived in Auckland, Mark Farley from Air NZ picked us up at the air bridge. Mark is a Flight Service Manager with Air New Zealand but also does a lot of work on the ground. One of his projects is crew management, training and planning for a project Air NZ runs together with Hawaiian Airlines (more on that further down).</p>
<p>We went over to the Engineering Base in Auckland which is pretty much an operation that works around the clock. We got a temporary Aviation Security ID (in form of a sticker) and met Ian Parkes, Communications Manager for Air NZ Tech Ops who gave us a tour through the different workshops and a few maintenance hangars.</p>
<p><a style="text-decoration: none;" href="http://bloginblack.de/wp-content/uploads/2010/02/IMG_0786.jpg"><img class="aligncenter size-medium wp-image-1152" title="Engine and wing section of ZK-OKC" src="http://bloginblack.de/wp-content/uploads/2010/02/IMG_0786-300x225.jpg" alt="Engine and wing section of ZK-OKC" width="300" height="225" /></a></p>
<p>The engineering crews at the base are not just taking care of Air NZ&#8217;s own planes but also contract out their services to airline partners and in some cases direct competitors. The project with Hawaiian Airlines I mentioned above for instance comprises Air NZ Engineering taking over an Hawaiian Airlines Boeing 767 plane that flies into Sydney and comes to Auckland for maintenance. After the maintenance work is done, an Air New Zealand crew takes control and ferries the plane back to Hawaii on an NZ flight number (not as a codeshare flight number). Customers might therefore get a bit of an unusual experience traveling with Air NZ pilots and cabin crew on Hawaiian metal. The cabin crew needs to be particularly trained and licensed to work on such a plane and that requires alterations to normal crew scheduling etc.</p>
<p>When we walked through the maintenance hangars there were an A320, a Hawaiian B767 and an AirNZ 777 around. The amount of people working on such a plane at the same time (depending on the type of maintenance) is enormous. Logistically there is also a tremendous pile of paperwork to deal with as work instructions, defects and the proper action have to be documented, done, signed-off and quality controlled. Ian said that they tried to experiment with introducing PDAs for those processes but that a paper-driven documentation with humans actually signing documents still seems to be the best option in such an environment.</p>
<p>In the 777 hangar I stood under ZK-OKC, the one currently being on maintenance. It&#8217;s massive. That&#8217;s already keeping in mind that other planes such as the B747 or the A380 are even larger &#8211; but it&#8217;s still massive. Actually the A380 is literally a monster against the &#8220;tiny&#8221; 777. There are quite a few interesting details to look at when you&#8217;re close to such a plane. The picture below shows one of the Rolls-Royce engines. It&#8217;s probably hard to see, but there&#8217;s a little rubber cone on top of the centre of the turbine. That&#8217;s being put in there to avoid icing &#8211; very clever engineering from Rolls Royce&#8217;s team according to Ian. An equivalent engine model from a US manufacturer just has a power-consuming heating plate in there.</p>
<p><a style="text-decoration: none;" href="http://bloginblack.de/wp-content/uploads/2010/02/IMG_0789.jpg"><img class="aligncenter size-medium wp-image-1153" title="Rolls Royce engine of a 777-200 " src="http://bloginblack.de/wp-content/uploads/2010/02/IMG_0789-300x225.jpg" alt="Rolls Royce engine of a 777-200 " width="300" height="225" /></a></p>
<p>It&#8217;s quite amazing to learn about the amount of stuff Air NZ can take care of themselves when it comes to repairing parts or crafting new parts. Diane pretty much fell in love with the fact that and how they create the nose cones for the planes. In the avionics lab Air NZ has setup a joint venture with one of the vendors of a lot of avionic devices and parts to again provide services for a lot of other airlines as well. There&#8217;s a quite amazing huge $6 million computer system in there that comes with a wardrobe-size section of interface bays where all sorts of devices from a variety of planes can be plugged in to simulate and replay faults.</p>
<p><a style="text-decoration: none;" href="http://bloginblack.de/wp-content/uploads/2010/02/IMG_0792.jpg"><img class="aligncenter size-medium wp-image-1154" title="Tail 777" src="http://bloginblack.de/wp-content/uploads/2010/02/IMG_0792-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>From a business point of view, Air NZ&#8217;s Tech Ops is highly profitable. Because Air NZ is a rather small airline (and some maintenance for domestic planes is done in Christchurch and/or in the engineering bases of the smaller subsidies like Air Nelson or Eagle) the Auckland base works for pretty much all other airlines flying into Auckland international. In a lot of cases that might just mean smaller maintenance jobs and checks before a plane is returning back overseas to wherever it came from, but in some instances as above it could mean that some airlines also get major works done in Auckland.</p>
<p><a style="text-decoration: none;" href="http://bloginblack.de/wp-content/uploads/2010/02/IMG_0793.jpg"><img class="aligncenter size-medium wp-image-1155" title="Some 747s, parked outside the hangar" src="http://bloginblack.de/wp-content/uploads/2010/02/IMG_0793-300x225.jpg" alt="Some 747s, parked outside the hangar" width="300" height="225" /></a></p>
<p>Very awesome start of the day, but stay tuned &#8211; way more to come! <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://bloginblack.de/2010/02/a-visit-at-air-new-zealands-engineering-base-in-auckland/">A visit at Air New Zealand&#8217;s Engineering Base in Auckland</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=A+visit+at+Air+New+Zealand%26%238217%3Bs+Engineering+Base+in+Auckland+http://bit.ly/dCtA9z" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2010/02/a-visit-at-air-new-zealands-engineering-base-in-auckland/&amp;title=A+visit+at+Air+New+Zealand%26%238217%3Bs+Engineering+Base+in+Auckland" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2010/02/a-visit-at-air-new-zealands-engineering-base-in-auckland/&amp;t=A+visit+at+Air+New+Zealand%26%238217%3Bs+Engineering+Base+in+Auckland" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2010/02/a-visit-at-air-new-zealands-engineering-base-in-auckland/&amp;title=A+visit+at+Air+New+Zealand%26%238217%3Bs+Engineering+Base+in+Auckland" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p><img src="http://feeds.feedburner.com/~r/BlogInBlack/~4/cmlHwBohtSY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2010/02/a-visit-at-air-new-zealands-engineering-base-in-auckland/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bloginblack.de/2010/02/a-visit-at-air-new-zealands-engineering-base-in-auckland/</feedburner:origLink></item>
		<item>
		<title>An awesome day with Air New Zealand</title>
		<link>http://feedproxy.google.com/~r/BlogInBlack/~3/GlhbX3pdkIg/</link>
		<comments>http://bloginblack.de/2010/02/an-awesome-day-with-air-new-zealand/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 05:58:25 +0000</pubDate>
		<dc:creator>kai</dc:creator>
				<category><![CDATA[Agent K and the rest of the world]]></category>
		<category><![CDATA[Funstuff]]></category>
		<category><![CDATA[Airlines]]></category>
		<category><![CDATA[Fun]]></category>

		<guid isPermaLink="false">http://bloginblack.de/?p=1145</guid>
		<description><![CDATA[Yesterday, I had one of the most awesome days of my life. It would rate it right below the category comprising "Getting married to @blauerpunto" and "Getting permanent residency in New Zealand" and on a very similar level with stuff such as "Flying in a small airplane for the first time" and "Going solo in a small airplane for the first time".<p><a href="http://bloginblack.de/2010/02/an-awesome-day-with-air-new-zealand/">An awesome day with Air New Zealand</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Yesterday, I had one of the most awesome days of my life. It would rate it right below the category comprising &#8220;Getting married to <a href="http://twitter.com/blauerpunto" target="_blank">@blauerpunto</a>&#8221; and &#8220;<a href="http://bloginblack.de/2005/10/big-news/" target="_blank">Getting permanent residency in New Zealand</a>&#8221; and on a very similar level with stuff such as &#8220;Flying in a small airplane for the first time&#8221; and &#8220;Going solo in a small airplane for the first time&#8221;.</p>
<p>So &#8211; what happened? Let me briefly introduce you to the events that lead into yesterday&#8217;s trip to Auckland with and to Air New Zealand. As you all know, I&#8217;m flying quite a bit and that pretty much exclusively (well, at least to the destinations they offer) on Air New Zealand. Among being actually a really nice and friendly airline, their marketing and communications team is absolutely on top of their game and is leveraging all sorts of online and social media services. Among those is a twitter account named <a href="http://twitter.com/airpointsfairy" target="_blank">@airpointsfairy</a>. She wears a cute dress, <a href="https://www.airpointsfairy.co.nz/" target="_blank">lives in a beautiful fairy land</a> and fulfils wishes of members of Air NZ&#8217;s frequent flyer program Airpoints.</p>
<p><a href="http://bloginblack.de/wp-content/uploads/2010/02/fee-300x145.png"><img class="aligncenter size-full wp-image-1146" title="airpointsfairy" src="http://bloginblack.de/wp-content/uploads/2010/02/fee-300x145.png" alt="" width="300" height="145" /></a></p>
<p>Normally members wish for an access pass for a lounge, a top up of their Airpoints$ to being able to spend them on a particular flight reward an similar thing. But before Xmas last year, the Airpointsfairy was doing a &#8220;12 days of Xmas&#8221;-themed giveaway of larger gifts. One Saturday morning, Diane woke me up saying the Airpointsfairy was giving away 2 simulator rides in Air NZ&#8217;s 777-200 simulator in Auckland. So Diane thought she actually had a good reason to wish that I got one because due to our wonderful Wellington weather it was clear that I wasn&#8217;t going to go flying in a Cessna 172 on that day (as originally planned). To fast-forward the story &#8211; I won it. Including a trip to Auckland with <a href="http://twitter.com/blauerpunto" target="_blank">@blauerpunto</a> and including a tour of Air NZ&#8217;s Engineering base in Auckland and Hangar 9 (where they secretly developed the new seats and cabins for the 777-300 and the 787 Dreamliner) in the city.</p>
<p>Diane already <a href="http://diane.geek.nz/2010/02/die-fee-und-wir/" target="_blank">posted about the overall experience of the trip</a> (which was just awesome) last night (make sure you scroll further down for English). So, I won&#8217;t go into all those details again, but the next few posts will be for the aviation geeks among you &#8211; more coming tonight! Just one thing in advance: Flying a jet in a simulator is freakin&#8217; awesome. It feels quite real and flying a real jet must be even more awesome. Anyone wants to pay for my training? <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://bloginblack.de/2010/02/an-awesome-day-with-air-new-zealand/">An awesome day with Air New Zealand</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=An+awesome+day+with+Air+New+Zealand+http://bit.ly/aQinpa" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2010/02/an-awesome-day-with-air-new-zealand/&amp;title=An+awesome+day+with+Air+New+Zealand" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2010/02/an-awesome-day-with-air-new-zealand/&amp;t=An+awesome+day+with+Air+New+Zealand" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2010/02/an-awesome-day-with-air-new-zealand/&amp;title=An+awesome+day+with+Air+New+Zealand" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p><img src="http://feeds.feedburner.com/~r/BlogInBlack/~4/GlhbX3pdkIg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2010/02/an-awesome-day-with-air-new-zealand/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://bloginblack.de/2010/02/an-awesome-day-with-air-new-zealand/</feedburner:origLink></item>
		<item>
		<title>My personal review of Webstock 2010 – (part III: conference proper Friday)</title>
		<link>http://feedproxy.google.com/~r/BlogInBlack/~3/KMLSPc1c7BA/</link>
		<comments>http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-%e2%80%93-part-iii-conference-proper-friday/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 23:30:17 +0000</pubDate>
		<dc:creator>kai</dc:creator>
				<category><![CDATA[Agent K and the rest of the world]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Webstock]]></category>
		<category><![CDATA[Wellington]]></category>

		<guid isPermaLink="false">http://bloginblack.de/?p=1140</guid>
		<description><![CDATA[This is the final post of the Webstock 2010 series. It's covering Friday of "conference proper". The day started with a nice breakfast at Finc (not part of the official Webstock agenda though).<p><a href="http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-%e2%80%93-part-iii-conference-proper-friday/">My personal review of Webstock 2010 – (part III: conference proper Friday)</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>This is the final post of the Webstock 2010 series. It&#8217;s covering Friday of &#8220;conference proper&#8221;. The day started with a nice breakfast at Finc (not part of the official Webstock agenda though) and a way too cold auditorium in the Town Hall. But Internet was fixed again and it seemed as if most people were able to login to the Wifi again.</p>
<p>The Friday sessions:</p>
<p><strong><a href="http://www.webstock.org.nz/10/speakers/ries.php">Eric Ries</a> &#8211; </strong><a href="http://www.webstock.org.nz/10/programme/presentations.php#ries">The Lean Startup</a></p>
<p>My personal highlight of Webstock 2010, very interesting and enlightening talk about startups and how to potentially avoid failure. A lot of Eric&#8217;s points make a lot of sense and I came across some of them myself doing work for startup-up type companies. He&#8217;s recently published a book titled &#8220;<a href="http://www.lulu.com/content/paperback-book/startup-lessons-learned---v002---beta/7832138" target="_blank">Startup Lessons Learned</a>&#8221; (if it just was available as an .epub ebook &#8211; I would right away buy it).</p>
<p><strong><a href="http://www.webstock.org.nz/10/speakers/burka.php">Daniel Burka</a> &#8211; </strong><a href="http://www.webstock.org.nz/10/programme/presentations.php#burka">Iterative Design Strategies</a></p>
<p>David worked on the design-side of things at Digg and Mozilla.org. He discussed how iterative design can drive communities, very interesting session (even for me coming from a back end point-of-view).</p>
<p><strong><a href="http://www.webstock.org.nz/10/speakers/hoy.php">Amy Hoy</a> &#8211; </strong><a href="http://www.webstock.org.nz/10/programme/presentations.php#hoy">Shift+Cmd+R: Hard Refresh Your Design</a></p>
<p>Very entertaining and interesting session covering a variety of uncommon and &#8220;weird&#8221; stuff. Fun to watch!</p>
<p><strong><a href="http://www.webstock.org.nz/10/speakers/davidson.php">Mike Davidson</a> &#8211; </strong><a href="http://www.webstock.org.nz/10/programme/presentations.php#davidson">When Your Idea Doesn&#8217;t Suck: How to stop working for clients and launch a startup</a></p>
<p>A good talk with a lot of truth in it. Mike presented without any slides and I noticed that quite a few people lost interest after a while. Very unfortunate though, because what he had to say about launching a startup, shareholder setups, acquisition, ideas etc was very interesting. I&#8217;m not quite sure why he asked for his session not to be blogged or tweeted about though. It&#8217;s a bit of wishful thinking at a web conference I suppose.</p>
<p><strong><a href="http://www.webstock.org.nz/10/speakers/fuchs.php">Thomas Fuchs</a> &#8211; </strong><a href="http://www.webstock.org.nz/10/programme/presentations.php#fuchs">I Can&#8217;t Believe It&#8217;s not Flash!</a></p>
<p>Thomas&#8217; session was interesting and he showed a lot of cool stuff one can do with JavaScript nowadays for instance animation (performing quite well), using WebGL etc. Really impressive and I hadn&#8217;t seen a lot of that stuff before. In good tradition he also had to punch Flash by providing some figures on Flash&#8217;s video performance vs HTML 5 video. As much as I agree that there are issues with Flash Video on OS X for a variety of reasons his 10% vs. 100% CPU load comparison was just purely FUD. Even now after the talk and discussions on Twitter and <a href="http://ajaxian.com/archives/i-cant-believe-its-not-flash#comments">Ajaxian</a> he hasn&#8217;t provided any sample video(s) and codecs he used to make his point.</p>
<p><strong><a href="http://www.webstock.org.nz/10/speakers/veen.php">Jeff Veen</a> &#8211; </strong><a href="http://www.webstock.org.nz/10/programme/presentations.php#veen">How the Web Works</a> and <strong><a href="http://www.webstock.org.nz/10/speakers/pesce.php">Mark Pesce</a> &#8211; </strong><a href="http://www.webstock.org.nz/10/programme/presentations.php#pesce">Dense and Thick</a></p>
<p>The closing session block was actually quite awesome. Both speakers talked about the past, present and future of the web &#8211; I guess for a lot of people in their early 20s, quite a few things of the past might have been new to them <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Also we got an interesting insight into how W3C committees work and make their decisions&#8230; The big next thing to come is supposedly AR but who knows when and where and in which flavour it&#8217;s going to take off.</p>
<p>All in all Webstock 2010 was very well worth my time and the money spent on the conference ticket. Same is true for the pre-conference workshops, keeping <a href="http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-part-i-workshops/" target="_blank">my feedback</a> in consideration. On a scale from 1 to 10 with 10 being the best I would give it an 8.5 &#8211; missing a 9 or better mainly because most of the content is not directly applicable and convertible (in)to <a href="http://www.ventego-creative.co.nz" target="_blank">my work</a>. Leaving that (very personal situation) aside, Webstock should really be seen as a must for anyone working with/in/on the web in New Zealand. Seriously. Thanks a lot to all the people behind it &#8211; you&#8217;ve done a great job and I look forward to Webstock 2011.</p>
<p><a href="http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-%e2%80%93-part-iii-conference-proper-friday/">My personal review of Webstock 2010 – (part III: conference proper Friday)</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=My+personal+review+of+Webstock+2010+%E2%80%93+%28part+III%3A+conference+proper+Friday%29+http://bit.ly/9mY8Vq" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-%e2%80%93-part-iii-conference-proper-friday/&amp;title=My+personal+review+of+Webstock+2010+%E2%80%93+%28part+III%3A+conference+proper+Friday%29" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-%e2%80%93-part-iii-conference-proper-friday/&amp;t=My+personal+review+of+Webstock+2010+%E2%80%93+%28part+III%3A+conference+proper+Friday%29" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-%e2%80%93-part-iii-conference-proper-friday/&amp;title=My+personal+review+of+Webstock+2010+%E2%80%93+%28part+III%3A+conference+proper+Friday%29" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p><img src="http://feeds.feedburner.com/~r/BlogInBlack/~4/KMLSPc1c7BA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-%e2%80%93-part-iii-conference-proper-friday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-%e2%80%93-part-iii-conference-proper-friday/</feedburner:origLink></item>
		<item>
		<title>My personal review of Webstock 2010 – (part II: conference proper Thursday)</title>
		<link>http://feedproxy.google.com/~r/BlogInBlack/~3/6Z_8_Zth7Ok/</link>
		<comments>http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-%e2%80%93-part-ii-conference-proper-thursday/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 09:42:43 +0000</pubDate>
		<dc:creator>kai</dc:creator>
				<category><![CDATA[Agent K and the rest of the world]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Webstock]]></category>
		<category><![CDATA[Wellington]]></category>

		<guid isPermaLink="false">http://bloginblack.de/?p=1135</guid>
		<description><![CDATA[This second part of my Webstock 2010 review briefly covers the conference sessions on Thursday and some other bits and pieces around it.<p><a href="http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-%e2%80%93-part-ii-conference-proper-thursday/">My personal review of Webstock 2010 – (part II: conference proper Thursday)</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>This second part of my Webstock 2010 review briefly covers the conference sessions on Thursday and some other bits and pieces around it. Webstock 2010 was again held in Wellington&#8217;s Town Hall &#8211; the historic and classic style of the building really lends itself to an event like Webstock and if it was mine I wouldn&#8217;t move it anywhere else either. Most of the conference is run <a href="http://www.webstock.org.nz/10/programme/" target="_blank">as a single stream of sessions</a>, three of the slots break out into three separate streams.</p>
<p>So &#8211; we ticked off the venue, food was fine and vegetarian and other special dietary requirements were tucked away from the main food stations. The latter is particular important from my point of view as I strongly disklike it when carnivores do not &#8220;book&#8221; veggie food at events in advance and all of a sudden on the day prefer the (often limited) vegetarian option. Also &#8211; not to forget the tremendous amounts of Kapiti ice cream throughout the day (yay!) and free proper coffee provide by <a href="http://www.peoplescoffee.co.nz/" target="_blank">People&#8217;s coffee</a>!</p>
<p>Some impressions from Thursday&#8217;s sessions:</p>
<p><strong><a href="http://www.webstock.org.nz/10/speakers/thomas.php">Scott Thomas</a> &#8211; </strong><a href="http://www.webstock.org.nz/10/programme/presentations.php#thomas">Web design that grabs people</a></p>
<p>Scott talked about his role in the web team of the Obama campaign and explained how design decisions and experiments drove online collaboration and engaged a community of volunteers and supporters around Obama. Very interesting and a lot of insights into the structure of the Obama campaign web team.</p>
<p><strong><a href="http://www.webstock.org.nz/10/speakers/fling.php">Brian Fling</a> &#8211; </strong><a href="http://www.webstock.org.nz/10/programme/presentations.php#fling">Brian does the Andrew Sisters</a></p>
<p>Brian&#8217;s message seem to have been hidden or invisible for parts of the audience. To be fair, his style of presentation was quite unusual and comprised a lot of talking about what he&#8217;s not going to talk about and I can understand why some people had some issues with that. I found his presentation quite entertaining to be honest &#8211; also his thoughts on monetizing mobile content appealed to me.</p>
<p><strong><a href="http://www.webstock.org.nz/10/speakers/herrod.php">Lisa Herrod</a> &#8211; </strong><a href="http://www.webstock.org.nz/10/programme/presentations.php#herrod">Designing for Diversity &#8211; Inclusive Design &amp; the User Experience</a></p>
<p>Lisa is well known in AU/NZ for good thoughts and a deep knowledge of accessibility and user experience. In her talk she raised the question why a lot of user experience consultants still ignore diversity and what needs to happen to change that. Not directly related to what I&#8217;m doing most of the time, but still very interesting knowledge to have.</p>
<p><strong><a href="http://www.webstock.org.nz/10/speakers/resig.php">John Resig</a> &#8211; </strong><a href="http://www.webstock.org.nz/10/programme/presentations.php#resig">How jQuery Makes Hard Things Simple</a></p>
<p>Very good presentation (as somewhat expected after the brilliant workshop on Tuesday afternoon), partly based on some elements I already knew but John also covered a few things I hadn&#8217;t known before this talk.</p>
<p><strong><a href="http://www.webstock.org.nz/10/speakers/shiftlet.php">Chris Shiflett</a> &#8211; </strong><a href="http://www.webstock.org.nz/10/programme/presentations.php#shiflett">Security-Centered Design: Exploring the Impact of Human Behavior</a></p>
<p>Amazing talk, seriously amazing. Chris presented a lot of examples and observations how design drives human behaviour &#8211; both web- and RL-based, from Twitter and Facebook hacks to people&#8217;s behaviour on Japanese subway trains.</p>
<p><strong><a href="http://www.webstock.org.nz/10/speakers/bernstein.php">Shelley Bernstein</a> &#8211; </strong><a href="http://www.webstock.org.nz/10/programme/presentations.php#bernstein">Fostering Personal Connection to Place</a></p>
<p>Shelley talked about how the Brooklyn Museum in New York fosters community and interacts with its visitors. Her presentation was another awesome peek into leveraging design, communities, experimenting and other typical &#8220;social network&#8221; features in an offline scenario.</p>
<p><strong><a href="http://www.webstock.org.nz/10/speakers/atwood.php">Jeff Atwood</a> &#8211; </strong><a href="http://www.webstock.org.nz/10/programme/presentations.php#atwood">Stack Overflow: Building Social Software for the Anti-Social</a></p>
<p>Jeff&#8217;s presentation was very good! Lot&#8217;s of &#8220;lessons-learned-from-building-stack-overflow&#8221;-type of content discussed in his session. The session title actually really held what it had promised &#8211; how to build a social site for us nerdy developers &#8211; well done! (Both <a href="http://stackoverflow.com" target="_blank">stackoverflow.com</a> as well as the talk <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</p>
<p><strong><a href="http://www.webstock.org.nz/10/speakers/debatty.php">Regine deBatty</a> &#8211; </strong><a href="http://www.webstock.org.nz/10/programme/presentations.php#debatty">Please, don&#8217;t let it be interactive</a></p>
<p>Maybe it was because I was getting tired towards the end of the day, but I couldn&#8217;t really connect to Regine and her presentation.</p>
<p><strong><a href="http://www.webstock.org.nz/10/speakers/rives.php">Rives</a> &#8211; </strong><a href="http://www.webstock.org.nz/10/programme/presentations.php#rives">The Word Wild Web</a></p>
<p>Yeah, well. Rives. Apparently he&#8217;s somewhat famous (I had never heard of him before Webstock) as an online poet. I think his presentation (well, rather &#8220;gig&#8221;) had some interesting and actually really funny elements, I personally didn&#8217;t really get some other bits and pieces of his on-stage show.</p>
<p><a href="http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-%e2%80%93-part-ii-conference-proper-thursday/">My personal review of Webstock 2010 – (part II: conference proper Thursday)</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=My+personal+review+of+Webstock+2010+%E2%80%93+%28part+II%3A+conference+proper+Thursday%29+http://bit.ly/9oo8k1" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-%e2%80%93-part-ii-conference-proper-thursday/&amp;title=My+personal+review+of+Webstock+2010+%E2%80%93+%28part+II%3A+conference+proper+Thursday%29" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-%e2%80%93-part-ii-conference-proper-thursday/&amp;t=My+personal+review+of+Webstock+2010+%E2%80%93+%28part+II%3A+conference+proper+Thursday%29" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-%e2%80%93-part-ii-conference-proper-thursday/&amp;title=My+personal+review+of+Webstock+2010+%E2%80%93+%28part+II%3A+conference+proper+Thursday%29" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p><img src="http://feeds.feedburner.com/~r/BlogInBlack/~4/6Z_8_Zth7Ok" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-%e2%80%93-part-ii-conference-proper-thursday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-%e2%80%93-part-ii-conference-proper-thursday/</feedburner:origLink></item>
		<item>
		<title>My personal review of Webstock 2010 – (part I: workshops)</title>
		<link>http://feedproxy.google.com/~r/BlogInBlack/~3/MSkVEKVmCVg/</link>
		<comments>http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-part-i-workshops/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 08:10:39 +0000</pubDate>
		<dc:creator>kai</dc:creator>
				<category><![CDATA[Agent M and the rest of the world]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Trading Cards]]></category>
		<category><![CDATA[Webstock]]></category>

		<guid isPermaLink="false">http://bloginblack.de/?p=1125</guid>
		<description><![CDATA[Last week Wellington's IT and web crowd celebrated the annual Webstock week. You'd think that at the end of the day, Webstock is just another conference - but that would be quite of an understatement and completely miss the point. <p><a href="http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-part-i-workshops/">My personal review of Webstock 2010 &#8211; (part I: workshops)</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Last week Wellington&#8217;s IT and web crowd celebrated the annual <a href="http://www.webstock.org.nz" target="_blank">Webstock</a> week. You&#8217;d think that at the end of the day, Webstock is just another conference &#8211; but that would be quite of an understatement and completely miss the point. First of all, Webstock runs for pretty much a full week: Monday to Wednesday are filled with a bunch of 1/2-day or full-day workshops (to be booked and paid for on top of the conference) and Thursday and Friday provide two days of &#8220;conference proper&#8221;. Around all that a variety of community IT groups often hold meetings, there were pre-Webstock drinks, Thursday-night drinks and the Friday night ONYAs (with quite a few drinks, I assume) &#8211; There must be a pattern with that drinks thing <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>There&#8217;s something else that makes Webstock reasonably special compared to other web conferences: It&#8217;s a lot about inspiration, ideas and the future. You won&#8217;t find many talks with titles such as &#8220;Using framework X with technology Y in situations in which the development team just wants to work when the 29th of February falls on a Monday&#8221; but rather things like Jeff Atwood&#8217;s &#8221;<a href="http://www.webstock.org.nz/10/programme/presentations.php#atwood" target="_blank">Building Social Software for the Anti-Social</a>&#8221; or Eric Ries&#8217; &#8220;<a href="http://www.webstock.org.nz/10/programme/presentations.php#ries">The Lean Startup</a>&#8220;.</p>
<p>Webstock also <a href="http://www.disassociated.com/2010/02/22/webstock-bags-are-swag-unto-themselves/" target="_blank">comes</a> with <a href="http://www.flickr.com/photos/irkstyle/4375303732/" target="_blank">a bag</a> (full with really cool stuff) &#8211; rumor says some people are just attending the conference to get the awesome bags each and every year <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  After <a href="http://bloginblack.de/2009/02/weve-done-it-again-webstock-trading-card-game/" target="_blank">last year&#8217;s trading card game</a>, some people were keen on having another game and so there was the Twitter-based <a href="http://webstockbingo.com/bingo/home" target="_blank">Webstockbingo</a> and a social challenge-/task-based <a href="http://webstockgame.org/" target="_blank">Webstock Game</a>. Both very interesting and it&#8217;s quite amazing that <a href="http://twitter.com/macskakat/" target="_blank">Kat Hardisty</a> won the game the second year in a row!<br />
<br />
<h3>Workshops</h3>
<p>I&#8217;ve booked two of the pre-conferece workshops on Tuesday. Jeff Atwood&#8217;s &#8220;<a href="http://www.webstock.org.nz/10/programme/workshops.php#atwood">Getting started with ASP.NET MVC</a>&#8221; and John Resig&#8217;s &#8220;<a href="http://www.webstock.org.nz/10/programme/workshops.php#resig">Introduction to jQuery and jQuery UI</a>&#8220;, both pretty much for the reason that they cover technologies that interested me for the one or the other reason and that 3.5 hrs of compressed information usually provide enough information and potentially inspiration to later on dig deeper. The workshops on Tuesday were organised very smoothly and without any obvious problems by the Webstock crew in Wellington&#8217;s Town Hall and the adjacent Michael Fowler Centre.</p>
<p>Jeff&#8217;s session covered ASP.NET MVC (mostly in version 1) and its integration in Visual Studio 2008. The idea of the workshop was to build parts of the <a href="http://www.wrox.com/WileyCDA/Section/id-321793.html" target="_blank">NerdDinner.com</a> application (available as a free walkthrough on Scott Gu&#8217;s site) and to explain/talk about some specifics along the way. Although there&#8217;s nothing wrong with that, Jeff didn&#8217;t have any slides along the workshop and the session was pretty much based on live coding. Again &#8211; there&#8217;s nothing wrong with that (and all participants were asked to have VS 2008 installed on their machines if they wanted to follow along), what I found a problem though was that due to his speed Jeff basically lost most of the participants (including myself) after 45-60 minutes (it was quite obvious by looking around and by comments made in the morning tea break). The presentation setup with having a second (non-mirrored) screen from where stuff was copied and pasted into the visible VS 2008 window didn&#8217;t help to actually follow along either. But hang on &#8211; not everything was bad: Jeff obviously knows his stuff very well and is a very good presenter and speaker. He was able to provide a lot of real-world experience with the ASP.NET MVC framework from their work on <a href="http://stackoverflow.com/" target="_blank">http://stackoverflow.com</a>, so that there was def. quite a significant amount of added value on top of the rather straight forward tutorial walkthrough. I&#8217;d still have preferred him to have used something that&#8217;s not available as a free tutorial on the web &#8211; but that might be my personal expectation from attending a somewhat &#8220;commercial&#8221; workshop as well as from offering similar workshops on (different) technologies myself.</p>
<p>The afternoon session on jQuery and jQuery UI was of particular interest to me because one of my clients is going to move from a vast collection of JS/AJAX-frameworks and handcrafted JavaScript code to <a href="http://jquery.com/" target="_blank">jQuery</a> as their main JS framework for HTML-based front ends. Having <a href="http://ejohn.org/" target="_blank">John Resig</a>, the author of the framework himself present it was another bonus. Due to some weird weather in the US, John just made it to Webstock and his workshop 1 hour before it actually was supposed to start (to make things worse his luggage was delayed as well). Nevertheless it was a great session covering a lot of content starting with the basics of jQuery, building complex expressions and modifying page content and structure as well as looking into some more advanced topic and new features of the jQuery 1.4(.2) release. The session was a very well balanced mixture of (interactive) slides to introduce concepts and hands-on exercises to try out features in a jQuery coding sandbox on John&#8217;s server (I love that idea).</p>
<p>Overall, I&#8217;m very happy with having attended both. Just to let everyone know &#8211; I&#8217;ve provided all this feedback (more detailed where due) right away after the workshops to the team around Mike and Tash (who run Webstock), don&#8217;t think this is a public bitching session behind people&#8217;s backs or something <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-part-i-workshops/">My personal review of Webstock 2010 &#8211; (part I: workshops)</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=My+personal+review+of+Webstock+2010+%26%238211%3B+%28part+I%3A+workshops%29+http://bit.ly/bMHqqu" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-part-i-workshops/&amp;title=My+personal+review+of+Webstock+2010+%26%238211%3B+%28part+I%3A+workshops%29" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-part-i-workshops/&amp;t=My+personal+review+of+Webstock+2010+%26%238211%3B+%28part+I%3A+workshops%29" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-part-i-workshops/&amp;title=My+personal+review+of+Webstock+2010+%26%238211%3B+%28part+I%3A+workshops%29" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p><img src="http://feeds.feedburner.com/~r/BlogInBlack/~4/MSkVEKVmCVg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-part-i-workshops/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://bloginblack.de/2010/02/my-personal-review-of-webstock-2010-part-i-workshops/</feedburner:origLink></item>
		<item>
		<title>ParameterExists =&gt; isDefined</title>
		<link>http://feedproxy.google.com/~r/BlogInBlack/~3/8PinS97_Khk/</link>
		<comments>http://bloginblack.de/2010/02/parameterexists-isdefined/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 14:15:47 +0000</pubDate>
		<dc:creator>marcus</dc:creator>
				<category><![CDATA[Agent M on CF]]></category>
		<category><![CDATA[CFML]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[RegExp]]></category>

		<guid isPermaLink="false">http://bloginblack.de/?p=1111</guid>
		<description><![CDATA[Another quick regex: to perform a sitewide search/replace that replaces every "parameterExists" by "isDefined"...<p><a href="http://bloginblack.de/2010/02/parameterexists-isdefined/">ParameterExists => isDefined</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Another quick regex: to perform a sitewide search/replace that replaces every &#8220;parameterExists&#8221; by &#8220;isDefined&#8221;, simply do a:</p>
<p>Search: parameterExists\(([^)]*)\)<br />
Replace: isDefined(&#8220;\1&#8243;)</p>
<p>That saved me at least 2 hours <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://bloginblack.de/2010/02/parameterexists-isdefined/">ParameterExists => isDefined</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=ParameterExists+%3D%3E+isDefined+http://bit.ly/bl6RlP" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2010/02/parameterexists-isdefined/&amp;title=ParameterExists+%3D%3E+isDefined" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2010/02/parameterexists-isdefined/&amp;t=ParameterExists+%3D%3E+isDefined" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2010/02/parameterexists-isdefined/&amp;title=ParameterExists+%3D%3E+isDefined" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p><img src="http://feeds.feedburner.com/~r/BlogInBlack/~4/8PinS97_Khk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2010/02/parameterexists-isdefined/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bloginblack.de/2010/02/parameterexists-isdefined/</feedburner:origLink></item>
		<item>
		<title>cfqueryparam / regular expression</title>
		<link>http://feedproxy.google.com/~r/BlogInBlack/~3/oGjaVxcZHGA/</link>
		<comments>http://bloginblack.de/2010/02/cfqueryparam-regular-expression/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 14:03:50 +0000</pubDate>
		<dc:creator>marcus</dc:creator>
				<category><![CDATA[Agent M on CF]]></category>
		<category><![CDATA[CFML]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[RegExp]]></category>
		<category><![CDATA[SQL Injection]]></category>

		<guid isPermaLink="false">http://bloginblack.de/?p=1108</guid>
		<description><![CDATA[Currently, I'm migrating a CF5/Win project to CFMX9/Linux. Apart from the usual path issues, the one who programmed this app yeeears ago did not protect *any single* form- or url-variable inside CFQUERY against misuse or even SQL-Injection. Not one syntax check, no CFQUERYPARAM... *sigh*
<p><a href="http://bloginblack.de/2010/02/cfqueryparam-regular-expression/">cfqueryparam / regular expression</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Currently, I&#8217;m migrating a CF5/Win project to CFMX9/Linux. Apart from the usual path issues, the one who programmed this app yeeears ago did not protect *any single* form- or url-variable inside CFQUERY against misuse or even SQL-Injection. Not one syntax check, no CFQUERYPARAM&#8230; *sigh*</p>
<p>Unfortunately, it&#8217;s impossible to perform a sitewide search/replace, so I have to open every single file containing CFQUERY tags. To get a list of all the files containing &#8220;&lt;cfquery&#8230;&#8221;, I did a quick</p>
<p>grep -rli &#8220;\&lt;cfquery &#8221; &gt; cfqueryfiles.txt</p>
<p>Then, I wrote two tiny regular expressions that make the manual replacing a lot faster:</p>
<p>Step 1: Strings =&gt; Varchar<br />
Replace &#8216;#([^#]*)#&#8217; by &lt;cfqueryparam cfsqltype=&#8221;CF_SQL_VARCHAR&#8221; maxlength=&#8221;50&#8243; value=&#8221;#\1#&#8221;&gt;</p>
<p>Step 2: Numbers =&gt; Big<br />
Replace #([^#]*)# by &lt;cfqueryparam cfsqltype=&#8221;CF_SQL_BIGINT&#8221; value=&#8221;#\1#&#8221;&gt;<br />
(Careful! This replaces ANY variable, but does its job inside CFQUERY. Do NOT &#8220;replace all&#8221;.)</p>
<p>After that, you only have to set the correct sqltypes and/or maxlengths.</p>
<p><a href="http://bloginblack.de/2010/02/cfqueryparam-regular-expression/">cfqueryparam / regular expression</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=cfqueryparam+%2F+regular+expression+http://bit.ly/aSqEe7" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2010/02/cfqueryparam-regular-expression/&amp;title=cfqueryparam+%2F+regular+expression" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2010/02/cfqueryparam-regular-expression/&amp;t=cfqueryparam+%2F+regular+expression" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2010/02/cfqueryparam-regular-expression/&amp;title=cfqueryparam+%2F+regular+expression" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p><img src="http://feeds.feedburner.com/~r/BlogInBlack/~4/oGjaVxcZHGA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2010/02/cfqueryparam-regular-expression/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://bloginblack.de/2010/02/cfqueryparam-regular-expression/</feedburner:origLink></item>
		<item>
		<title>Speaking at Flash Platform User Group Wellington (New Zealand)</title>
		<link>http://feedproxy.google.com/~r/BlogInBlack/~3/W2tZfF5nxlo/</link>
		<comments>http://bloginblack.de/2010/02/speaking-at-flash-platform-user-group-wellington-new-zealand/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 07:20:15 +0000</pubDate>
		<dc:creator>kai</dc:creator>
				<category><![CDATA[Agent K and the rest of the world]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[New Zealand]]></category>
		<category><![CDATA[Wellington]]></category>

		<guid isPermaLink="false">http://bloginblack.de/?p=1103</guid>
		<description><![CDATA[Next Flash Platform (Flex, Flash, AIR) user group meeting in Wellington, New Zealand: Feb 16, 2010. Speakers: Kai Koenig on Skinning and Styling in Flex 4 and Ross Phillips on Stratus.<p><a href="http://bloginblack.de/2010/02/speaking-at-flash-platform-user-group-wellington-new-zealand/">Speaking at Flash Platform User Group Wellington (New Zealand)</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>After the XMas break is now finally over and summer has arrived in Wellington, we&#8217;re starting the monthly meetings of the Flash Platform User Group again. Actually we were known as the Flex User Group but went through a bit of self-finding and re-branding and the outcome is a broader focus on the overall Flash Platform. That also includes Flash, AIR, Flash Catalyst and associated things like the Text Layout Framework or Stratus.</p>
<p>The next (and first meeting in 2010) will be held at <a href="http://www.natcoll.ac.nz" target="_blank">Natcoll Design Technology</a> in <a href="http://www.natcoll.ac.nz/general/content/campuses.html" target="_blank">Wellington</a> (thanks to <a href="http://inner.geek.nz/" target="_blank">Brett Taylor</a>, who&#8217;s the head of department for Interactive Design and Web Development at Natcoll and helped a lot to set this up). Topics will be Stratus, Adobe&#8217;s peer-to-peer framework for RTMP communication and Skinning in Styling in Flex 4. Both will be 30 min-ish long introductory presentations, no previous knowledge of either topic will be required.</p>
<p>This is the agenda:</p>
<ul>
<li>Introduction in Stratus (Ross Phillips)<br />
Stratus: <a href="http://labs.adobe.com/technologies/stratus/" target="_blank">http://labs.adobe.com/technologies/stratus/</a></li>
<li>The basics of skinning and styling in Flex 4 (Kai Koenig)<br />
Flex 4: <a href="http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4" target="_blank">http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4</a></li>
</ul>
<p>Date, Time, Address:</p>
<p>Tuesday, February 16 2010 &#8211; 5:30 pm for a 5:45 pm presentation start. Anticipated end at 6:45pm-ish.</p>
<p><strong>Natcoll House</strong><br />
2/20 Kent Terrace<br />
Wellington<br />
New Zealand</p>
<p>If you&#8217;re attending, please make sure you register at our Eventbrite site: <a href="http://wellingtonflashplatformgroup.eventbrite.com" target="_blank">http://wellingtonflashplatformgroup.eventbrite.com</a></p>
<p><a href="http://bloginblack.de/2010/02/speaking-at-flash-platform-user-group-wellington-new-zealand/">Speaking at Flash Platform User Group Wellington (New Zealand)</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=Speaking+at+Flash+Platform+User+Group+Wellington+%28New+Zealand%29+http://bit.ly/bAckBp" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2010/02/speaking-at-flash-platform-user-group-wellington-new-zealand/&amp;title=Speaking+at+Flash+Platform+User+Group+Wellington+%28New+Zealand%29" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2010/02/speaking-at-flash-platform-user-group-wellington-new-zealand/&amp;t=Speaking+at+Flash+Platform+User+Group+Wellington+%28New+Zealand%29" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2010/02/speaking-at-flash-platform-user-group-wellington-new-zealand/&amp;title=Speaking+at+Flash+Platform+User+Group+Wellington+%28New+Zealand%29" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p><img src="http://feeds.feedburner.com/~r/BlogInBlack/~4/W2tZfF5nxlo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2010/02/speaking-at-flash-platform-user-group-wellington-new-zealand/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bloginblack.de/2010/02/speaking-at-flash-platform-user-group-wellington-new-zealand/</feedburner:origLink></item>
		<item>
		<title>Adobe Refresh in Asia Pacific</title>
		<link>http://feedproxy.google.com/~r/BlogInBlack/~3/yHJPDf1H_rM/</link>
		<comments>http://bloginblack.de/2010/02/adobe-refresh-in-asia-pacific/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 00:36:44 +0000</pubDate>
		<dc:creator>kai</dc:creator>
				<category><![CDATA[Agent K and the rest of the world]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[LiveCycle]]></category>
		<category><![CDATA[New Zealand]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Australia]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://bloginblack.de/?p=1101</guid>
		<description><![CDATA[This is just a quick reminder that Adobe is running a series of Refresh events across Asia Pacific in February. Perth and Sydney are apparently booked out resp. very close to being booked out - but there are places left for Brisbane, Melbourne and Auckland.<p><a href="http://bloginblack.de/2010/02/adobe-refresh-in-asia-pacific/">Adobe Refresh in Asia Pacific</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>This is just a quick reminder that Adobe is running a series of Refresh events across Asia Pacific in February. Perth and Sydney are apparently booked out resp. very close to being booked out &#8211; but there are places left for Brisbane, Melbourne and Auckland.</p>
<p>&#8212; snip &#8212;</p>
<p>Join Adobe in a dynamic live presentation to REFRESH your understanding of the most recent initiatives in the areas of content creation, collaboration and distribution. The Adobe team will showcase the recent announcements including the iPhone developments using the upcoming Flash Professional CS5 as well as showing you how you can build applications faster with Flash Catalyst, LiveCycle Mosaic ES2 and much more. You will also hear Adobe&#8217;s most recent announcements from Max 09 and be shown the latest software tools available from Adobe.</p>
<p>&#8212; snip &#8212;</p>
<p>Dates:</p>
<p>Perth &#8211; 11th February <span style="color: #ff0000;">(full)</span><br />
Brisbane &#8211; 16th February<br />
Auckland &#8211; 18th February<br />
Sydney &#8211; 23rd February<br />
Melbourne &#8211; 25th February</p>
<p>Registration and agenda:</p>
<p>Auckland: <a href="https://events.adobe.co.uk/cgi-bin/event.cgi?eventid=9153&amp;country=pa">https://events.adobe.co.uk/cgi-bin/event.cgi?eventid=9153&amp;country=pa</a><br />
Brisbane, Melbourne and Sydney: <a href="https://events.adobe.co.uk/cgi-bin/event.cgi?eventid=9155&amp;country=pa">https://events.adobe.co.uk/cgi-bin/event.cgi?eventid=9155&amp;country=pa</a></p>
<p><a href="http://bloginblack.de/2010/02/adobe-refresh-in-asia-pacific/">Adobe Refresh in Asia Pacific</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=Adobe+Refresh+in+Asia+Pacific+http://bit.ly/ctEfnS" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2010/02/adobe-refresh-in-asia-pacific/&amp;title=Adobe+Refresh+in+Asia+Pacific" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2010/02/adobe-refresh-in-asia-pacific/&amp;t=Adobe+Refresh+in+Asia+Pacific" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2010/02/adobe-refresh-in-asia-pacific/&amp;title=Adobe+Refresh+in+Asia+Pacific" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p><img src="http://feeds.feedburner.com/~r/BlogInBlack/~4/yHJPDf1H_rM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2010/02/adobe-refresh-in-asia-pacific/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bloginblack.de/2010/02/adobe-refresh-in-asia-pacific/</feedburner:origLink></item>
		<item>
		<title>Webinale 2010</title>
		<link>http://feedproxy.google.com/~r/BlogInBlack/~3/6dI55_7il_s/</link>
		<comments>http://bloginblack.de/2010/01/webinale-2010/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 11:28:27 +0000</pubDate>
		<dc:creator>kai</dc:creator>
				<category><![CDATA[Agent K and the rest of the world]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://bloginblack.de/?p=1095</guid>
		<description><![CDATA[Yay, Webinale 2010 in Berlin is on again (31/05 - 02/06) and I'm going to be hosting and moderating the RIA day at the conference. I'm quite happy and proud to have put together a super-interesting agenda (tentatively) with a quite international bouquet of speakers (in fact: Australia, New Zealand, France and Germany)<p><a href="http://bloginblack.de/2010/01/webinale-2010/">Webinale 2010</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Yay, <a href="http://www.webinale.de" target="_blank">Webinale 2010</a> in Berlin is on again (31/05 &#8211; 02/06) and I&#8217;m going to be hosting and moderating the RIA day at the conference. I&#8217;m quite happy and proud to have put together a super-interesting agenda (tentatively) with a quite international bouquet of speakers (in fact: Australia, New Zealand, France and Germany <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>1. Kai Koenig: Wieviel RIA braucht der Mensch? (<a href="http://twiter.com/agentK" target="_blank">@agentk</a>)<br />
2. Thibault Imbert: Ten Innovative Projects for the Flash Platform (<a href="http://twitter.com/thibault_imbert" target="_blank">@thibault_imbert</a>)<br />
3. Carlo Blatz: Agiles Arbeiten in RIA-Entwicklungsteams (<a href="http://twitter.com/carloblatz" target="_blank">@carloblatz</a>)<br />
4. Justin McLean: Bringing RIAs and hardware together (<a href="http://twitter.com/justinmclean" target="_blank">@justinmclean</a>)<br />
5. Alexander Schulze: RIA-Translations mit lingopool</p>
<p>You might note that some sessions are actually in German &#8211; it&#8217;s a German conference after all&#8230; <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Haven&#8217;t organised my trip yet and it will most likely be a reasonable short stint in Europe after all. But there&#8217;s <a href="http://www.scotch-on-the-rocks.co.uk/" target="_self">Scotch on the Rocks</a> in London in the week before Webinale &#8211; it woul it be a shame not to put in a stopover on the way over to Germany? Hmm&#8230; thinking&#8230; thinking&#8230;</p>
<p><a href="http://bloginblack.de/2010/01/webinale-2010/">Webinale 2010</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=Webinale+2010+http://bit.ly/cgVwZt" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2010/01/webinale-2010/&amp;title=Webinale+2010" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2010/01/webinale-2010/&amp;t=Webinale+2010" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2010/01/webinale-2010/&amp;title=Webinale+2010" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p><img src="http://feeds.feedburner.com/~r/BlogInBlack/~4/6dI55_7il_s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2010/01/webinale-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bloginblack.de/2010/01/webinale-2010/</feedburner:origLink></item>
		<item>
		<title>Disabling CTRL+ALT+DEL to login in Win 2k3 server</title>
		<link>http://feedproxy.google.com/~r/BlogInBlack/~3/hBKA6xvKqk0/</link>
		<comments>http://bloginblack.de/2010/01/disabling-ctrlaltdel-to-login-in-win-2k3-server/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 02:55:55 +0000</pubDate>
		<dc:creator>kai</dc:creator>
				<category><![CDATA[Agent K and the rest of the world]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[VMWare Fusion]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://bloginblack.de/?p=1090</guid>
		<description><![CDATA[Args, this is one of those "note to myself" posts. Today I was looking (for the n-th time) for the local policy setting to switch of the necessity that a user has to press CTRL+ALT+DEL to login in a Win 2k3 server. It's particularly annoying as I'm running one for development purposes in a VM and I'm forced to use the VMWare Fusion menu to simulate the key stroke.<p><a href="http://bloginblack.de/2010/01/disabling-ctrlaltdel-to-login-in-win-2k3-server/">Disabling CTRL+ALT+DEL to login in Win 2k3 server</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Args, this is one of those &#8220;note to myself&#8221; posts. Today I was looking (for the n-th time) for the local policy setting to switch of the necessity that a user has to press CTRL+ALT+DEL to login in a Win 2k3 server. It&#8217;s particularly annoying as I&#8217;m running one for development purposes in a VM and I&#8217;m forced to use the VMWare Fusion menu to simulate the key stroke. Now, here it is:</p>
<ul>
<li>Launch Group Policy Editor (GPEdit.msc)</li>
<li>Go to Local Computer Policy/Computer Configuration/Windows Settings/Security Settings/Local Policies/Security Options</li>
<li>Set &#8220;Interactive logon: Do not require CTRL+ALT+DEL&#8221; to enabled</li>
</ul>
<p>All that requires local admin access &#8211; if your machine is tied into a network with AD or domain controller settings and group policies all that might be different, but it should do the trick for the typical developer&#8217;s &#8220;Windows Virtual Machine on a Mac&#8221;-scenario <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Additional note: you might want to switch off the screen saver or resp. untick the check box forcing a user to re-login after the screen saver was triggered. Again &#8211; consider your system, I would for instance not recommend doing that on a full-blow stand-alone Win 2k3 server &#8211; but for a dev environment in a VM it&#8217;s most likely fine.</p>
<p><a href="http://bloginblack.de/2010/01/disabling-ctrlaltdel-to-login-in-win-2k3-server/">Disabling CTRL+ALT+DEL to login in Win 2k3 server</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=Disabling+CTRL%2BALT%2BDEL+to+login+in+Win+2k3+server+http://bit.ly/9Q2Riu" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2010/01/disabling-ctrlaltdel-to-login-in-win-2k3-server/&amp;title=Disabling+CTRL%2BALT%2BDEL+to+login+in+Win+2k3+server" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2010/01/disabling-ctrlaltdel-to-login-in-win-2k3-server/&amp;t=Disabling+CTRL%2BALT%2BDEL+to+login+in+Win+2k3+server" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2010/01/disabling-ctrlaltdel-to-login-in-win-2k3-server/&amp;title=Disabling+CTRL%2BALT%2BDEL+to+login+in+Win+2k3+server" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p><img src="http://feeds.feedburner.com/~r/BlogInBlack/~4/hBKA6xvKqk0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2010/01/disabling-ctrlaltdel-to-login-in-win-2k3-server/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://bloginblack.de/2010/01/disabling-ctrlaltdel-to-login-in-win-2k3-server/</feedburner:origLink></item>
		<item>
		<title>Why Air New Zealand is the Airline of the Year!</title>
		<link>http://feedproxy.google.com/~r/BlogInBlack/~3/ORqN0-qqhvk/</link>
		<comments>http://bloginblack.de/2010/01/why-air-new-zealand-is-the-airline-of-the-year/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 05:32:33 +0000</pubDate>
		<dc:creator>kai</dc:creator>
				<category><![CDATA[Agent K and the rest of the world]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[New Zealand]]></category>
		<category><![CDATA[Air NZ]]></category>
		<category><![CDATA[Airlines]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://bloginblack.de/?p=1060</guid>
		<description><![CDATA[Air New Zealand (short Air NZ from here on) - my home turf airline - has recently been named Airline of the Year in the Air Transport World magazine awards. There are plenty of reasons why they absolutely have deserved to win this award. Plenty, really! <p><a href="http://bloginblack.de/2010/01/why-air-new-zealand-is-the-airline-of-the-year/">Why Air New Zealand is the Airline of the Year!</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Air New Zealand (short Air NZ from here on) &#8211; my home turf airline &#8211; has recently been named Airline of the Year in the Air Transport World magazine awards. There are plenty of reasons why they absolutely have deserved to win this award. Plenty, really! Lance Wiggs <a href="http://lancewiggs.com/2010/01/15/air-new-zealand-is-the-best-here-are-some-reasons/" target="_blank">has listed a few</a> of those from his point of view and I couldn&#8217;t agree more (Make sure you read it, Lance&#8217;s post is really interesting from a business point of view).</p>
<p>It seems that they pretty much just get it. Take their online engagement on Twitter as an example: with accounts such as <a href="http://twitter.com/flyairnz" target="_blank">@flyairnz</a>, our beloved <a href="http://twitter.com/airpointsfairy" target="_blank">@airpointsfairy</a> or <a href="http://twitter.com/korulounges" target="_blank">@korulounges</a> they actually communicate with their customers (not to mention <a href="http://twitter.com/grabaseat" target="_blank">@grabaseat</a> and the regional AirNZ offices in the US and the UK). At this stage I can&#8217;t think of being in constant chit-chat with another &#8220;corporate&#8221; account on Twitter besides <a href="http://twitter.com/flyairnz" target="_blank">@flyairnz</a>. Other airlines in the region (and globally, I follow about <a href="http://twitter.com/agentK/airlines" target="_blank">50 airlines on Twitter</a>) are either totally ignoring that channel or stupidly push out corporate messages and deal airfares but not much else.</p>
<p>The don&#8217;t just get Twitter but also lots of other aspects of &#8220;online&#8221;. The <a href="http://www.airpointsfairy.co.nz/" target="_blank">airpoints fairy has her own little world</a>, there&#8217;s <a href="http://flightbookings.airnewzealand.co.nz/vgrabview/en_NZ/" target="_blank">grab-a-seat</a> and there&#8217;s the Adobe Flex-based <a href="https://myairnz.com/myairnz/portal/initViewMyKoru.do?locale=en_NZ" target="_blank">Air NZ Frequent Flyer portal</a> (although I&#8217;m not totally happy with how that particular app&#8217;s being done and delivered <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  &#8211; if anyone from Air NZ reads this and is interested, feel free get in touch for some advice)</p>
<p>But seriously &#8211; even offline or outside of social media they do a great job. Recently I had an issue that after a flight from Brisbane to Wellington on a Saturday my suitcase was chewed. Chewed as in &#8211; destroyed to a level of not being usable anymore. Luckily nothing was missing from the inside. Baggage services &#8220;took care&#8221; of the issue and told me that I&#8217;d have to drop the suitcase at a local baggage repair store where it would be assessed, potentially repaired but they couldn&#8217;t really tell me how long it would take due to their workload etc.</p>
<p>Naturally I wasn&#8217;t happy with that &#8211; the suitcase was an obvious write-off anyway and additionally I had another trip to go on 4 days later where I wanted and needed to use it. Also &#8211; why would it be my responsibility to drop off a suitcase somewhere, I haven&#8217;t destroyed it after all. So I complained. I tried with baggage services on Monday first but they couldn&#8217;t really help me because all claims are being handled by one person in NZWN. I couldn&#8217;t reach that person the whole Monday morning and got quite frustrated over that fact (later it turned out that the guy at the baggage desk in the airport gave me the wrong phone number, doh). As I couldn&#8217;t get any progress besides &#8220;you have to bring in the suitcase&#8221; vs. &#8220;no, I&#8217;m not going to do that&#8221; I used Twitter. Luckily I had already vented my frustration about the destroyed suitcase in the first place on Saturday from next to the luggage belt and @flyairnz had reacted to that (on a Saturday, wow). On Monday I used that channel indirectly again, explaining my problem and (actually) made some suggestions for changing the overall broken luggage process after the experience I had and things started to get moving (I&#8217;m sure my status with them helped as well).</p>
<p>To cut that story short &#8211; by the end of Tuesday I had a new suitcase: same brand, very similar weight (after they firstly delivered me a replacement suitcase that was way too heavy for my purposes) and delivered to my doorstep &#8211; that&#8217;s exactly how it should be. Very nice turnaround to fix the issue quickly, awesome work Air NZ.</p>
<p>Again &#8211; the moral of the story is: they get it. They genuinely want to help if you tell them about the issue and I generally feel treated by them as a valued customer and not just cattle. And that&#8217;s even the case when you&#8217;re a non-status customer sitting in economy. Everyone makes mistakes, agreed: For instance, I regularly vent about failed &#8220;premium luggage delivery&#8221; on Twitter (it seriously always seems to hit me <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ) &#8211; but in the overall scheme of things that&#8217;s not more than an occasional minor nuisance.</p>
<p>Another example: Last week I was in Auckland (on a very cheap ticket, something like NZ$ 100 for the return trip). Normally those tickets are not refundable and not changeable without a hefty penalty (for a good reason). I was on the 8 pm back home and was in the lounge (after I checked in with my iPhone <a href="http://www.airnewzealand.co.nz/manage_bookings/mpass/iphone.htm" target="_blank">mPass</a> app) when I suddenly got paged at around 6:20 pm. Having made my way to reception I got offered to be rebooked for free on the 7 pm flight as the 8 pm flight was going to be running 15 mins late and they had a few spare seats on the 7 pm flight. Again, that&#8217;s something where I&#8217;m sure FF status helps a lot, but it&#8217;s still an extremely nice gesture; thanks a lot Air NZ.</p>
<p><a href="http://bloginblack.de/2010/01/why-air-new-zealand-is-the-airline-of-the-year/">Why Air New Zealand is the Airline of the Year!</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=Why+Air+New+Zealand+is+the+Airline+of+the+Year%21+http://bit.ly/6cFI7i" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2010/01/why-air-new-zealand-is-the-airline-of-the-year/&amp;title=Why+Air+New+Zealand+is+the+Airline+of+the+Year%21" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2010/01/why-air-new-zealand-is-the-airline-of-the-year/&amp;t=Why+Air+New+Zealand+is+the+Airline+of+the+Year%21" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2010/01/why-air-new-zealand-is-the-airline-of-the-year/&amp;title=Why+Air+New+Zealand+is+the+Airline+of+the+Year%21" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p><img src="http://feeds.feedburner.com/~r/BlogInBlack/~4/ORqN0-qqhvk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2010/01/why-air-new-zealand-is-the-airline-of-the-year/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://bloginblack.de/2010/01/why-air-new-zealand-is-the-airline-of-the-year/</feedburner:origLink></item>
		<item>
		<title>OS X quick look for Flex</title>
		<link>http://feedproxy.google.com/~r/BlogInBlack/~3/JJh3Euvatg4/</link>
		<comments>http://bloginblack.de/2010/01/os-x-quick-look-for-flex/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 10:42:12 +0000</pubDate>
		<dc:creator>kai</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Action Script]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[MXML]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[Quick Look]]></category>

		<guid isPermaLink="false">http://bloginblack.de/?p=1003</guid>
		<description><![CDATA[A <a href="http://bloginblack.de/2010/01/os-x-quick-look-for-coldfusion/" target="_blank">few days ago</a> I posted about using <a href="http://code.google.com/p/qlcolorcode/" target="_blank">qlcolorcode</a> to display syntax highlighted ColdFusion code in Mac OS X's Finder's quick look. Now - I had a bit of a look into how to use/extend the same plugin for displaying Action Script and MXML code as well.<p><a href="http://bloginblack.de/2010/01/os-x-quick-look-for-flex/">OS X quick look for Flex</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://bloginblack.de/2010/01/os-x-quick-look-for-coldfusion/" target="_blank">few days ago</a> I posted about using <a href="http://code.google.com/p/qlcolorcode/" target="_blank">qlcolorcode</a> to display syntax highlighted ColdFusion code in Mac OS X&#8217;s Finder&#8217;s quick look. Now &#8211; I had a bit of a look into how to use/extend the same plugin for displaying Action Script and MXML code as well.</p>
<p>Qlcolorcode already has built-in support for Action Script (although it&#8217;s not complete and really 100% correct for AS3 as it appears to me), but it&#8217;s supposed to do the trick. I ran into the issue that it unfortunately didn&#8217;t work for me. A bit time spent looking around and playing with the default application to open .as files on my Mac brought up the following blog post. Of particular interest are the comments:</p>
<p><a href="http://www.n8gray.org/blog/2008/01/07/qlcolorcode-041/" target="_blank">http://www.n8gray.org/blog/2008/01/07/qlcolorcode-041/</a></p>
<p>I can just speak for Snow Leopard and in that case you&#8217;d want to look into comments 8, 12 and 18. Basically after this step the relevant section in my Info.plist in the Qlcolourcode plugin package looks as below and syntax highlighting for Action Script works (sort of):</p>
<p>
<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>CFBundleDocumentTypes<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;array<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dict<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>CFBundleTypeRole<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>QLGenerator<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>LSItemContentTypes<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;array<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>public.source-code<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>public.xml<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>com.apple.property-list<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.tug.tex<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>public.plain-text<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>com.apple.applesingle-archive<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/array<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dict<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/array<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

</p>
<p>The next step was to get MXML working. That&#8217;s a bit trickier because it&#8217;s not yet built-in into the plugin. Luckily Qlcolorcode supports XML and as MXML is  a proper, fully XML-compliant language it can&#8217;t be too hard to enable it for MXML. The good thing is &#8211; someone has done it before:</p>
<p><a href="http://playground.deju.nu/2008/10/os-x-quick-look-for-mxml-files/" target="_blank">http://playground.deju.nu/2008/10/os-x-quick-look-for-mxml-files/</a></p>
<p>The bad thing &#8211; this is for OS X 10.5 and it didn&#8217;t work out of the box for me. In general I&#8217;d recommend to follow the descriptions in there. The command to run in step 5 on OS X 10.6 would be different though:</p>
<p><code>qlmanage -d3 -p yourmxmlfile.mxml 2&gt;&amp;1 | grep 'Generator used'</code></p>
<p>Also the path used in step 8 had to be different for me. Instead of Resources/highlight/etc/highlight/ the filetypes.conf would have to be looked for in Resources/etc/highlight/. Also in my version of the file the file type definitions for xml and html did look differently:</p>
<p><code>$ext(html)=htm xhtml</code><br />
<code>$ext(xml)=sgm sgml nrm ent hdr hub dtd wml vxml wml tld svg xsl ecf jnlp mxml</code></p>
<p>As you can see, I added the mxml file suffix to where it made much more sense imho. From here on just follow the instructions and you should be good to go.</p>
<p>This should provide a working solution &#8211; not necessarily a perfect one as the highlighting for AS 3 is not quite right and it would be nice to tweak the syntax highlighting for MXML and CF; some new CF tags are not properly picked up etc. I might have a look into that &#8211; it&#8217;s not too hard actually because qlcolorcode uses <a href="http://www.andre-simon.de/doku/highlight/en/highlight.html" target="_blank">highlight</a> internally. Will keep you posted <img src='http://bloginblack.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://bloginblack.de/2010/01/os-x-quick-look-for-flex/">OS X quick look for Flex</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=OS+X+quick+look+for+Flex+http://bit.ly/4y3Yyu" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2010/01/os-x-quick-look-for-flex/&amp;title=OS+X+quick+look+for+Flex" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2010/01/os-x-quick-look-for-flex/&amp;t=OS+X+quick+look+for+Flex" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2010/01/os-x-quick-look-for-flex/&amp;title=OS+X+quick+look+for+Flex" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p><img src="http://feeds.feedburner.com/~r/BlogInBlack/~4/JJh3Euvatg4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2010/01/os-x-quick-look-for-flex/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://bloginblack.de/2010/01/os-x-quick-look-for-flex/</feedburner:origLink></item>
		<item>
		<title>Accessible PDF documents and forms</title>
		<link>http://feedproxy.google.com/~r/BlogInBlack/~3/6iuDEdPfmsE/</link>
		<comments>http://bloginblack.de/2010/01/accessible-pdf-documents-and-forms/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 10:28:34 +0000</pubDate>
		<dc:creator>kai</dc:creator>
				<category><![CDATA[Agent K and the rest of the world]]></category>
		<category><![CDATA[LiveCycle]]></category>
		<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Acrobat]]></category>
		<category><![CDATA[PDF]]></category>

		<guid isPermaLink="false">http://bloginblack.de/?p=999</guid>
		<description><![CDATA[Yes, to a lot of people&#8217;s surprise PDF documents can be authored (and made afterwards) accessible. The keywords here are avoiding scanned paper documents (although OCR can do quite a lot) and in particular making use of tagging and reading order. A very good overview is provided by the Social Security Administration in the US. [...]<p><a href="http://bloginblack.de/2010/01/accessible-pdf-documents-and-forms/">Accessible PDF documents and forms</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Yes, to a lot of people&#8217;s surprise PDF documents can be authored (and made afterwards) accessible. The keywords here are avoiding scanned paper documents (although OCR can do quite a lot) and in particular making use of tagging and reading order. A <a href="http://www.usa.gov/webcontent/documents/ssa/SSA_Guide_to_Accessible_PDF_Documents_and_Forms.pdf" target="_blank">very good overview is provided</a> by the Social Security Administration in the US. Although not everything in there is applicable in non-US countries due to different legislation, it will give one the rough breakdown what to look for when creating accessible PDF content.</p>
<p><a href="http://bloginblack.de/2010/01/accessible-pdf-documents-and-forms/">Accessible PDF documents and forms</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=Accessible+PDF+documents+and+forms+http://bit.ly/7rqN3Z" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2010/01/accessible-pdf-documents-and-forms/&amp;title=Accessible+PDF+documents+and+forms" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2010/01/accessible-pdf-documents-and-forms/&amp;t=Accessible+PDF+documents+and+forms" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2010/01/accessible-pdf-documents-and-forms/&amp;title=Accessible+PDF+documents+and+forms" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p><img src="http://feeds.feedburner.com/~r/BlogInBlack/~4/6iuDEdPfmsE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2010/01/accessible-pdf-documents-and-forms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bloginblack.de/2010/01/accessible-pdf-documents-and-forms/</feedburner:origLink></item>
		<item>
		<title>A look into onApplicationStart (ColdFusion)</title>
		<link>http://feedproxy.google.com/~r/BlogInBlack/~3/V1ECg_GnV9k/</link>
		<comments>http://bloginblack.de/2010/01/a-look-into-onapplicationstart/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 09:56:04 +0000</pubDate>
		<dc:creator>kai</dc:creator>
				<category><![CDATA[Agent K on CF]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[ColdFusion]]></category>

		<guid isPermaLink="false">http://bloginblack.de/?p=989</guid>
		<description><![CDATA[Well, most of you would know that the onApplicationStart() method in ColdFusion's Application.cfc is a single-threaded method that's being executed by ColdFusion after the start of the application<p><a href="http://bloginblack.de/2010/01/a-look-into-onapplicationstart/">A look into onApplicationStart (ColdFusion)</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Well, most of you would know that the onApplicationStart() method in ColdFusion&#8217;s Application.cfc is a single-threaded method that&#8217;s being executed by ColdFusion after the start of the application. The reason for an application having the necessity to start could for instance be that CF or the underlying machine has been restarted or that the application had run into its timeout.</p>
<p>Recently while migrating a bunch of legacy application code from Application.cfm to Application.cfc, a team member of the team of my client asked me what happened at application start if there was an error (for example a typo in SQL code) in the onApplicationStart method.</p>
<p>The answer is that onApplicationStart will start to execute and (depending on your error handling strategy) just plainly fail with an error message. Your application will not be properly initialised though, i.e. ColdFusion would send the next incoming request to the onApplicationStart method again.</p>
<p>The ColdFusion documentation actually states the following:  &#8220;If this method throws an uncaught exception or returns False, the application does not start and ColdFusion does not process any pages in the application. In this case, ColdFusion will run the onApplicationStart method the next time a user requests a page in the application.&#8221;</p>
<p>That&#8217;s actually mostly correct. Basically &#8211; if onApplicationStart() does NOT return true (when having specified a returntype) &#8211; every follow-up request will be run against onApplicationStart() again. However: from a technical point of view, your application is in some sort of a limbo state because it actually will exist (at least to a fragment) and application-scope variables could be created before the error occurs.</p>
<p>In reality the fact that application-scope variables and an application name will potentially exist even though the application hasn&#8217;t been initialized is not of a huge practical concern as the next request will hit onApplicationStart() again anyway, but it&#8217;s still an interesting thing to notice.</p>
<p><a href="http://bloginblack.de/2010/01/a-look-into-onapplicationstart/">A look into onApplicationStart (ColdFusion)</a> is a post from: <a href="http://bloginblack.de">Blog in Black</a></p>
<p align="right"><a class="tt" href="http://twitter.com/home/?status=A+look+into+onApplicationStart+%28ColdFusion%29+http://bit.ly/77HTST" title="Post to Twitter"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://bloginblack.de/2010/01/a-look-into-onapplicationstart/&amp;title=A+look+into+onApplicationStart+%28ColdFusion%29" title="Post to Delicious"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-delicious-micro3.png" alt="Post to Delicious" /></a> <a class="tt" href="http://www.facebook.com/share.php?u=http://bloginblack.de/2010/01/a-look-into-onapplicationstart/&amp;t=A+look+into+onApplicationStart+%28ColdFusion%29" title="Post to Facebook"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-facebook-micro3.png" alt="Post to Facebook" /></a> <a class="tt" href="http://stumbleupon.com/submit?url=http://bloginblack.de/2010/01/a-look-into-onapplicationstart/&amp;title=A+look+into+onApplicationStart+%28ColdFusion%29" title="Post to StumbleUpon"><img class="nothumb" src="http://bloginblack.de/wp-content/plugins/tweet-this/icons/tt-su-micro3.png" alt="Post to StumbleUpon" /></a></p><img src="http://feeds.feedburner.com/~r/BlogInBlack/~4/V1ECg_GnV9k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bloginblack.de/2010/01/a-look-into-onapplicationstart/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://bloginblack.de/2010/01/a-look-into-onapplicationstart/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 6.090 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-03-10 12:39:21 -->
