<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>Disqus - Latest Comments for djhalon</title><link>http://disqus.com/people/djhalon/</link><description></description><language>en</language><lastBuildDate>Mon, 13 Jul 2009 13:09:22 -0000</lastBuildDate><item><title>Re: Inversion of Control and Dependency Injection in Flex using the Parsley Application Framework &amp;#8211; Part 1</title><link>http://joelhooks.disqus.com/inversion_of_control_and_dependency_injection_in_flex_using_the_parsley_application_framework_8211_p/#comment-12584920</link><description>Thanks for taking the time to write up the IoC/DI intro, this is a nice clear and simple explanation.  Looking forward to the future parts!</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">djhalon</dc:creator><pubDate>Mon, 13 Jul 2009 13:09:22 -0000</pubDate></item><item><title>Re: Flash Internals: Just-in-time (JIT) compilation (part four)</title><link>http://vivisectingmedia.disqus.com/flash_internals_just_in_time_jit_compilation_part_four/#comment-9211479</link><description>You where correct in calling the AS3 to ByteCode process, compilation.  The issue semantical issue that we face is that there is technically two compilation passes in the new Flash Player world.  The first compilation pass is creating the SWF (which wraps the ByteCode) the second is when the AVM+ takes the ByteCode and compiles it to machine code for the specific platform the Player is running on.&lt;br&gt;&lt;br&gt;When the first SWF compilation is being run there are optimization being applied, but they are limited to what the ByteCode can represent.  I don't know exactly what optimizations are being made during this phase, but essentially all the Classes, objects, functions, properties, etc are being boiled down into commands that are executed by the AVM at run-time.  The AVM is then responsible for converting these commands into machine code (second compilation) that the specific OS can understand.  The reason we use the ByteCode interim step is that we want the same SWF to run on multiple OSs.  This is why the Flash Player is still considered an interpreter because the SWF is not an OS native compiled application.&lt;br&gt;&lt;br&gt;I feel your description is really close, what you are describing is the benefit of sealed classes versus dynamic classes.  MovieClip is marked as a dynamic class, which means that you can attach new properties to it at run-time.  Looking back at your first example, _nestedMovieClip is not a defined property on the MovieClip class, you have added this property.  To access this property the AVM has to lookup the property on the instance to first see if it exists and if so then it can access it.  This process is similar to using "for in" on an object, you have to loop over all the properties trying to see if it has the one you want.  This is a time consuming process as you have found out through your testing.&lt;br&gt;&lt;br&gt;More then likely, you are seeing the performance benefit by making a reference to the property and then accessing the reference because the lookup no longer has to occur every time you access the property.  This is the same principle of using a pre-calculated length value when looping over an array instead of accessing the ".length" property each time.  The act of accessing the property, i.e. "myArray.length" requires the lookup and calculation of the length to occur every time we perform a loop.  If we crate a variable before we start the loop and set it to "myArray.length" then the loop will no longer call the length getter during every pass, making our loop run a lot faster. If we apply this to your example, then we can avoid the lookup by storing the instance in a reference variable and therefore the AVM only has to lookup the value once, to set the reference and then can access it faster from there.&lt;br&gt;&lt;br&gt;We can actually take this one step further.  If you read or see most peoples articles/presentations on Flash performance they always start with "use strong typing".  The reason behind using strong typing is the same as making a reference, it helps mitigate AVM lookup time.  If we take your BlueSquare example we want to make sure that BlueSquare has _nestedMovieClip declared as a property of the Class and that it is typed to MovieClip.  By having this reference on the BlueSquare Class the AVM will not have to do full scanning lookup (ex: for in) on the BlueSquare instance to see if _nestedMoveiClip is both declared and has a value and that the value "x" also exists on the _nesteMovieClip instance.&lt;br&gt;&lt;br&gt;By explicitly declaring _nestedMovieClip we have defined BlueSquare as a sealed class, which will give us a lot of performance gains at run-time.  Dynamic Classes are great (Classes that can have properties added at runtime) but they come with a huge cost.  I always recommend avoiding dynamic classes unless you absolutely have to and even then, try not to use them.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">djhalon</dc:creator><pubDate>Mon, 11 May 2009 14:34:50 -0000</pubDate></item><item><title>Re: Flash Internals: Just-in-time (JIT) compilation (part four)</title><link>http://vivisectingmedia.disqus.com/flash_internals_just_in_time_jit_compilation_part_four/#comment-9119117</link><description>Alan,&lt;br&gt;I assume by "compile time" you mean the Flash Player's compilation of the byte code to machine code so that it can be executed, not the Flash compiler you use to create the SWF.&lt;br&gt;&lt;br&gt;It depends upon when the construction of the nested clip occurs. By the time the Player gets to the your x value change the nested clip has had to be constructed and therefore the player will know about the instance.&lt;br&gt;&lt;br&gt;The bigger question is if the method will be compiled by the JIT or not.  JIT'ing doesn't occur on an Object or Class level, but on a bytecode level. Its possible that setting the x value may be JIT'ed but the MovieClip will not be compiled down entirely.&lt;br&gt;&lt;br&gt;What is not clear to me, is when the actual JIT and MIR process is applied.  Is it a look ahead process examines the entire app stack, or does it interpret every bytecode stack as its processed and on second execution does it apply the JIT?  I have a feeling that the MIR is built on the first pass of the bytecode execution and the next time the code is called JIT is applied.&lt;br&gt;&lt;br&gt;If that is the case, then your reference to the x value is not JIT'ed the first time you make the call, but the second time you do it will be JIT'ed.  This is a really interesting topic, because at DevelopmentArc we have begun looking at performance increases around JIT optimization and knowing this could really help.&lt;br&gt;&lt;br&gt;I hope this answered your question, or at least pointed you in the right direction.&lt;br&gt;&lt;br&gt;J.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">djhalon</dc:creator><pubDate>Fri, 08 May 2009 00:41:18 -0000</pubDate></item><item><title>Re: Where are our mid-level developers?</title><link>http://vivisectingmedia.disqus.com/where_are_our_mid_level_developers_74/#comment-3906403</link><description>Thanks Tristan... I am glad that my thoughts jive with others out there in the community.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">djhalon</dc:creator><pubDate>Wed, 19 Nov 2008 21:42:50 -0000</pubDate></item><item><title>Re: How do I mark as spam?</title><link>http://disqus.disqus.com/how_do_i_mark_as_spam/#comment-3580095</link><description>For now, you can remove it and we'll work with that to identify spam.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">danielha</dc:creator><pubDate>Thu, 06 Nov 2008 20:47:29 -0000</pubDate></item><item><title>Re: How do I mark as spam?</title><link>http://disqus.disqus.com/how_do_i_mark_as_spam/#comment-3578179</link><description>I have found a settting: "Flagging inappropriate comments" on the Permissions page. Not sure if this is what you are looking for though.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">alexpopescu</dc:creator><pubDate>Thu, 06 Nov 2008 19:01:27 -0000</pubDate></item><item><title>Re: How do I mark as spam?</title><link>http://disqus.disqus.com/how_do_i_mark_as_spam/#comment-3576209</link><description>I am starting to see the same issue on my blog.  Spam is getting in and I can't mark it from the Disqus Admin panel or at least flag it.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">djhalon</dc:creator><pubDate>Thu, 06 Nov 2008 16:32:07 -0000</pubDate></item><item><title>Re: Adobe Edge Article: Coding Standards</title><link>http://vivisectingmedia.disqus.com/adobe_edge_article_coding_standards/#comment-1903147</link><description>Samuel,&lt;br&gt;I am glad you liked the post!  I am bummed I missed 360|Flex in SJ.  Being in San Francisco I should have hit both that and FlashForward.  Unfortunately my schedule has been slammed recently.  I have been checking out the sessions in AMP and I am doubly upset now.  I hope you session went well!!</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">djhalon</dc:creator><pubDate>Thu, 28 Aug 2008 19:26:18 -0000</pubDate></item><item><title>Re: Disqus 2.0 WordPress plugin broken?</title><link>http://disqus.disqus.com/disqus_20_wordpress_plugin_broken/#comment-1193244</link><description>I've updated the plugin (you can re-download it here: &lt;a href="http://media.disqus.com/disqus-wordpress-2.0.zip" rel="nofollow"&gt;http://media.disqus.com/disqus-wordpress-2.0.zip&lt;/a&gt;).  This version should fix the issue you are seeing.  Let me know if you are still seeing issues.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jason</dc:creator><pubDate>Wed, 13 Aug 2008 04:04:31 -0000</pubDate></item><item><title>Re: Disqus 2.0 WordPress plugin broken?</title><link>http://disqus.disqus.com/disqus_20_wordpress_plugin_broken/#comment-1175285</link><description>cool... Thanks!</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">djhalon</dc:creator><pubDate>Tue, 12 Aug 2008 17:55:34 -0000</pubDate></item><item><title>Re: Disqus 2.0 WordPress plugin broken?</title><link>http://disqus.disqus.com/disqus_20_wordpress_plugin_broken/#comment-1174793</link><description>Hey James,&lt;br&gt;&lt;br&gt;Looks like an issue with the plugin if you've changed the database prefix from the default "wp_".  We'll let you know when it is fixed.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jason</dc:creator><pubDate>Tue, 12 Aug 2008 17:21:21 -0000</pubDate></item><item><title>Re: Disqus 2.0 WordPress plugin broken?</title><link>http://disqus.disqus.com/disqus_20_wordpress_plugin_broken/#comment-1174554</link><description>Daniel,&lt;br&gt;I am getting WP Database errors.  I am running WP 2.6 with the new plugin.  The plugin seems to be running correctly once I configured it but all posts now show the DB errors above the comment section:&lt;br&gt;&lt;br&gt;&lt;a href="http://blog.vivisectingmedia.com/2008/07/vivmedia-code-selection-controller/#disqus_thread" rel="nofollow"&gt;http://blog.vivisectingmedia.com/2008/07/vivmed...&lt;/a&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">djhalon</dc:creator><pubDate>Tue, 12 Aug 2008 17:13:01 -0000</pubDate></item><item><title>Re: Installing PyDev on OS X 10.5.2</title><link>http://vivisectingmedia.disqus.com/installing_pydev_on_os_x_1052/#comment-978371</link><description>Thanks Gabriel, I have updated the post to reflect this path.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">djhalon</dc:creator><pubDate>Wed, 23 Jul 2008 13:30:19 -0000</pubDate></item><item><title>Re: VivMedia Code: Selection Controller</title><link>http://vivisectingmedia.disqus.com/vivmedia_code_selection_controller/#comment-933202</link><description>The example code above is Flex but the SelectionController does work with CS3.  I whipped up a quick example for you and posted it here:&lt;br&gt;&lt;br&gt;&lt;a href="http://blog.vivisectingmedia.com/examples/SelectionContollerExampleCS3.zip" rel="nofollow"&gt;http://blog.vivisectingmedia.com/examples/Selec...&lt;/a&gt;&lt;br&gt;&lt;br&gt;I didn't get a chance to comment the code since this is a quick and dirty example.  What is going on is that you have a Document class that generates two SelectableItems, places the items on the stage and then adds them to the SelectionController.&lt;br&gt;&lt;br&gt;The items themselves are responsible for tracking their own click event and updating their selection.  Check out the code and let me know if this helps explain how to use the SelectionController in CS3.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">djhalon</dc:creator><pubDate>Fri, 18 Jul 2008 11:43:37 -0000</pubDate></item><item><title>Re: Run and Debug Config for PyDev w/ Google Apps Engine</title><link>http://vivisectingmedia.disqus.com/run_and_debug_config_for_pydev_w_google_apps_engine/#comment-811106</link><description>Awesome!  I am glad I could help!&lt;br&gt;&lt;br&gt;James</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">djhalon</dc:creator><pubDate>Thu, 03 Jul 2008 20:31:05 -0000</pubDate></item><item><title>Re: Run and Debug Config for PyDev w/ Google Apps Engine</title><link>http://vivisectingmedia.disqus.com/run_and_debug_config_for_pydev_w_google_apps_engine/#comment-810991</link><description>I got it working ... &lt;br&gt;&lt;br&gt;Thank you very much for your help&lt;br&gt;&lt;br&gt;Jim</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jim Fritchman</dc:creator><pubDate>Thu, 03 Jul 2008 20:08:41 -0000</pubDate></item><item><title>Re: Run and Debug Config for PyDev w/ Google Apps Engine</title><link>http://vivisectingmedia.disqus.com/run_and_debug_config_for_pydev_w_google_apps_engine/#comment-807612</link><description>Ah, okay.  The engine PY files are there to allow you to run the server command from anywhere but the source for me is located at /usr/local/googleapp_engine/&lt;br&gt;&lt;br&gt;I can't recall if that was the default for the install, but I think it is.  That is where I pointed my Eclipse to and it worked for me.  Let me  know if your path is the same or not.  If not, do a search for dev_appserver.py since this file is also located with the source.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">djhalon</dc:creator><pubDate>Thu, 03 Jul 2008 12:10:01 -0000</pubDate></item><item><title>Re: Run and Debug Config for PyDev w/ Google Apps Engine</title><link>http://vivisectingmedia.disqus.com/run_and_debug_config_for_pydev_w_google_apps_engine/#comment-805762</link><description>The steps that are getting me are where exactly did Google install to,  it says /usr/local/bin and I did find them there and I added them just like the post says but I get an ImportError: No module named google.appengine.ext.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jim Fritchman</dc:creator><pubDate>Thu, 03 Jul 2008 07:27:27 -0000</pubDate></item><item><title>Re: Run and Debug Config for PyDev w/ Google Apps Engine</title><link>http://vivisectingmedia.disqus.com/run_and_debug_config_for_pydev_w_google_apps_engine/#comment-804451</link><description>Jim,&lt;br&gt;Which steps in is post are throwing you?  If it is the aspect of getting PyDev to recognize your Python in OS X, check out my post here:&lt;br&gt;&lt;br&gt;&lt;a href="http://blog.vivisectingmedia.com/2008/04/installing-pydev-on-os-x-1052/#solution" rel="nofollow"&gt;http://blog.vivisectingmedia.com/2008/04/instal...&lt;/a&gt;&lt;br&gt;&lt;br&gt;My post above is pretty much about step 5, setting up your Python Interpreter.  If there are other steps that are causing confusion, let me know.  Most of the Windows Eclipse steps translate to OS X, more or less.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">djhalon</dc:creator><pubDate>Wed, 02 Jul 2008 23:59:01 -0000</pubDate></item><item><title>Re: Adobe kuler Desktop Sneak Peek</title><link>http://vivisectingmedia.disqus.com/adobe_kuler_desktop_sneak_peek/#comment-759689</link><description>Yeah, we are really stoked by SwitchBoard and how we could leverage it in kuler.  The team behind the technology is brilliant and it was totally fun being the first test pilot (all though my constant barrage of "is this how its supposed to work?" emails in the beginning must have drove them batty).  There are a lot of crazy possibilities with this kind of integration and I know that a few of my designers friends can not wait to get one click import.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">djhalon</dc:creator><pubDate>Thu, 26 Jun 2008 23:22:53 -0000</pubDate></item><item><title>Re: Installing PyDev on OS X 10.5.2</title><link>http://vivisectingmedia.disqus.com/installing_pydev_on_os_x_1052/#comment-404989</link><description>Thanks Matt!  I just made a new post that talks about the best way to configure PyDev for the Google App Engine: &lt;br&gt;&lt;br&gt;&lt;a href="http://blog.vivisectingmedia.com/2008/05/run-and-debug-config-for-pydev-w-google-apps-engine/" rel="nofollow"&gt;http://blog.vivisectingmedia.com/2008/05/run-an...&lt;/a&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">djhalon</dc:creator><pubDate>Thu, 01 May 2008 20:04:26 -0000</pubDate></item><item><title>Re: Installing PyDev on OS X 10.5.2</title><link>http://vivisectingmedia.disqus.com/installing_pydev_on_os_x_1052/#comment-393602</link><description>Yes, well I am firmly opposed to revisionist history.  I like to think that comments like mine help the internets be slightly more stable than it would be otherwise.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">webnesto</dc:creator><pubDate>Tue, 29 Apr 2008 15:28:05 -0000</pubDate></item><item><title>Re: The Flex Code-Behind Pattern</title><link>http://vivisectingmedia.disqus.com/the_flex_code_behind_pattern/#comment-392425</link><description>I am glad this helped clear up some of the pitfalls.  When we first adopted this pattern on the project Webnesto is referring to in his comment, we would definitely had some challenges with the initial implementation.  I have a feeling I missed a few other less common pitfalls we stumbled upon during the that project and other ones I have have used it on.   At this point it has become more second nature, so what was once an "workaround" is now just how I code. If you, or anyone else, has some issues or questions about the pattern please let me know and I will reply and/or update the post with recommendations.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">djhalon</dc:creator><pubDate>Tue, 29 Apr 2008 12:11:09 -0000</pubDate></item><item><title>Re: Installing PyDev on OS X 10.5.2</title><link>http://vivisectingmedia.disqus.com/installing_pydev_on_os_x_1052/#comment-391061</link><description>This is no longer a working address for B. Ernesto "eno" Johnson.  If you are a real live person trying to reach him, you can reach him by submitting a message through this web form:&lt;br&gt;&lt;br&gt;&lt;a href="http://www.rc-designs.com/contact.php" rel="nofollow"&gt;http://www.rc-designs.com/contact.php&lt;/a&gt;&lt;br&gt;&lt;br&gt;Regards,&lt;br&gt;&lt;br&gt;The Artificial Intelligence at RC-Designs</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">webnesto</dc:creator><pubDate>Tue, 29 Apr 2008 04:40:02 -0000</pubDate></item><item><title>Re: Installing PyDev on OS X 10.5.2</title><link>http://vivisectingmedia.disqus.com/installing_pydev_on_os_x_1052/#comment-391042</link><description>Y yo sae me spelle ungood?&lt;br&gt;&lt;br&gt;Seriously, I need to get a copy editor to review my rapidly written rants before I hit the post button.  Of course now that you have "commented" on my "typo's" I have to leave them in with a strike, forever showing my poor writing abilities.   Still, they are pretty funny typos...</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">djhalon</dc:creator><pubDate>Tue, 29 Apr 2008 04:33:57 -0000</pubDate></item></channel></rss>