<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-1999038670783740809</id><updated>2009-11-09T18:21:39.062-08:00</updated><title type='text'>Life in the Flash lane</title><subtitle type='html'>flash now, before you're too old and wrinkled</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dmennenoh.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default'/><link rel='alternate' type='text/html' href='http://dmennenoh.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>dmennenoh</name><uri>http://www.blogger.com/profile/04513930488314997245</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1999038670783740809.post-5876683694882599885</id><published>2008-11-11T03:26:00.000-08:00</published><updated>2008-11-11T03:27:26.789-08:00</updated><title type='text'>New Home</title><content type='html'>I've moved this blog to &lt;a href="http://www.blurredistinction.com/wordpress"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1999038670783740809-5876683694882599885?l=dmennenoh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmennenoh.blogspot.com/feeds/5876683694882599885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1999038670783740809&amp;postID=5876683694882599885' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/5876683694882599885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/5876683694882599885'/><link rel='alternate' type='text/html' href='http://dmennenoh.blogspot.com/2008/11/new-home.html' title='New Home'/><author><name>dmennenoh</name><uri>http://www.blogger.com/profile/04513930488314997245</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04216806958761585652'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1999038670783740809.post-5637515617357129358</id><published>2008-07-24T05:52:00.000-07:00</published><updated>2008-07-24T05:53:30.432-07:00</updated><title type='text'>MAX!</title><content type='html'>Registration Now Open! Register now for MAX North America. Learn more at &lt;a href="http://www.max.adobe.com/"&gt;http://www.max.adobe.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1999038670783740809-5637515617357129358?l=dmennenoh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmennenoh.blogspot.com/feeds/5637515617357129358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1999038670783740809&amp;postID=5637515617357129358' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/5637515617357129358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/5637515617357129358'/><link rel='alternate' type='text/html' href='http://dmennenoh.blogspot.com/2008/07/max.html' title='MAX!'/><author><name>dmennenoh</name><uri>http://www.blogger.com/profile/04513930488314997245</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04216806958761585652'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1999038670783740809.post-5367411365553540440</id><published>2008-07-22T07:03:00.000-07:00</published><updated>2008-07-22T08:46:19.573-07:00</updated><title type='text'>One bug leads to another</title><content type='html'>I thought I'd write a quick summary of some bug hunting goodness over the weekend. For some time I have used a custom file loading class that allows me to pass it an array of targets, and URL's and it happily loads them one after another and calls a listener when complete. Its always worked great - until this time.&lt;br /&gt;Within the class I pop an element off the top of the passed in loader array, using the shift() method. The shift() method deletes the element - so when the array is empty everything has been loaded. The problem appeared when I later wanted to reference an item in the original loader array, within my movie, and found it was empty. The problem can be seen in this code clip from the class:&lt;br /&gt;&lt;br /&gt;private var loaderArray:Array;&lt;br /&gt;&lt;br /&gt;public function init(loadArray:Array):Void&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.loaderArray = loadArray;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Some of you will recognize the issue immediately - and I would have to had I ever needed to use the original array before. The problem is that arrays are not passed by value. When you set loaderArray = loadArray you are not placing a copy of loadArray into loaderArray. What you are doing is simply setting loaderArray to a memory address, so that it references (points to) the same array. Most of the time this is desirable as it saves on memory, and as long as you're aware of how it works there is no problem. But sometimes you forget... or in this case it just never mattered before. &lt;br /&gt;So, after finally realizing why my original array was getting erased I corrected it by copying the array instead:&lt;br /&gt;&lt;br /&gt;private var loaderArray:Array;&lt;br /&gt;&lt;br /&gt;public function init(loadArray:Array):Void&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(var i = 0; i &lt; loadArray.length; i++){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;loaderArray.push(loadArray[i]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;At least I thought I had corrected it. Anyone see the problem now? The compiler doesn't see anything wrong either. However, loaderArray doesn't get anything pushed to it - because it was never initialized. It's a null object. The compiler doesn't see anything wrong because loaderArray is typed as array, so push is fine. Fixing is as simple as:&lt;br /&gt;&lt;br /&gt;private var loaderArray:Array;&lt;br /&gt;&lt;br /&gt;public function init(loadArray:Array):Void&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;loaderArray = new Array();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(var i = 0; i &lt; loadArray.length; i++){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;loaderArray.push(loadArray[i]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;This is only an issue in the AS2 compiler, if you try this in AS3 you'll get a compiler error like so: &lt;span style="font-style:italic;"&gt;Error #1009: Cannot access a property or method of a null object reference.&lt;/span&gt; telling you exactly what the problem is. You can't use the push method on an object that hasn't been initialized.&lt;br /&gt;&lt;br /&gt;squish&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1999038670783740809-5367411365553540440?l=dmennenoh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmennenoh.blogspot.com/feeds/5367411365553540440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1999038670783740809&amp;postID=5367411365553540440' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/5367411365553540440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/5367411365553540440'/><link rel='alternate' type='text/html' href='http://dmennenoh.blogspot.com/2008/07/one-bug-leads-to-another.html' title='One bug leads to another'/><author><name>dmennenoh</name><uri>http://www.blogger.com/profile/04513930488314997245</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04216806958761585652'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1999038670783740809.post-6786875901436735526</id><published>2008-07-19T04:03:00.000-07:00</published><updated>2008-07-19T04:11:14.690-07:00</updated><title type='text'>Sorry bout that...</title><content type='html'>Sometimes you take a break. I was in the midst of finishing a large project and while it's still not completely finished, it's close enough to take a break. So, expect some Flash content soon. I'm going to try and feature answers / tutorials to the most common questions I see in the Adobe Flash forums.&lt;br /&gt;&lt;br /&gt;But since this blog isn't all about Flash - check this out: &lt;a href="http://www.prlog.org/10091027.html"&gt;Off Road Fire Press Release&lt;/a&gt; a long time friend, Jeff Idleman of the Iona Group, wrote up a nice press release for ORF. It was tweaked a bit by family and friends and then submitted...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1999038670783740809-6786875901436735526?l=dmennenoh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmennenoh.blogspot.com/feeds/6786875901436735526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1999038670783740809&amp;postID=6786875901436735526' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/6786875901436735526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/6786875901436735526'/><link rel='alternate' type='text/html' href='http://dmennenoh.blogspot.com/2008/07/sorry-bout-that.html' title='Sorry bout that...'/><author><name>dmennenoh</name><uri>http://www.blogger.com/profile/04513930488314997245</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04216806958761585652'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1999038670783740809.post-1195069145209251033</id><published>2008-04-03T15:23:00.000-07:00</published><updated>2008-04-03T15:25:10.507-07:00</updated><title type='text'>Flash IQ Fun</title><content type='html'>Here's a little brain teaser, that I thought was pretty fun and a bit challenging.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.robmathiowetz.com/"&gt;http://www.robmathiowetz.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1999038670783740809-1195069145209251033?l=dmennenoh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmennenoh.blogspot.com/feeds/1195069145209251033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1999038670783740809&amp;postID=1195069145209251033' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/1195069145209251033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/1195069145209251033'/><link rel='alternate' type='text/html' href='http://dmennenoh.blogspot.com/2008/04/flash-iq-fun.html' title='Flash IQ Fun'/><author><name>dmennenoh</name><uri>http://www.blogger.com/profile/04513930488314997245</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04216806958761585652'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1999038670783740809.post-8663350735604956776</id><published>2008-04-03T14:43:00.000-07:00</published><updated>2008-07-19T04:12:32.031-07:00</updated><title type='text'>Hot Sauce Update</title><content type='html'>I have been sampling the Dave's Gourmet Crazy Caribbean, that I talked about in my last post, and it's really been growing on me. Lately I've been getting a nice lime hit upfront, and less of the carrot that I was tasting. It's actually a really good sauce, and definitely one of the thickest I've ever come across. So, I've come to the conclusion that Off Road Fire isn't necessarily better - it's just different, and it depends what you're looking for at the time.&lt;br /&gt;It's odd how your taste perception changes throughout even a single day. Since I've been making hot sauce I sample it about 20 times a day. I'm not kidding. Sometimes it's not that good. Other times I think it's just perfect. It can be too hot. It can be like 'Where's the Heat?' All from the same bottle. I suppose it depends on what you've eaten last, when you ate it, etc. Maybe someday I will try and document what foods make it taste best... and then serve those at samplings. Hmmmm.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1999038670783740809-8663350735604956776?l=dmennenoh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmennenoh.blogspot.com/feeds/8663350735604956776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1999038670783740809&amp;postID=8663350735604956776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/8663350735604956776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/8663350735604956776'/><link rel='alternate' type='text/html' href='http://dmennenoh.blogspot.com/2008/04/hot-sauce-update.html' title='Hot Sauce Update'/><author><name>dmennenoh</name><uri>http://www.blogger.com/profile/04513930488314997245</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04216806958761585652'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1999038670783740809.post-8602460084381922499</id><published>2008-03-12T13:37:00.000-07:00</published><updated>2008-07-19T04:15:33.044-07:00</updated><title type='text'>Off Road Fire</title><content type='html'>As many of you know, I make my own hot sauce - &lt;a href="http://www.offroadfire.com"&gt;Off Road Fire Co.&lt;/a&gt;. I also buy various other hot sauces - both because I love hot sauce, and also because I like to compare store bought versions to my own. Currently, I have about 15 different kinds of sauce in the fridge. Today I bought a bottle of Dave's Gourmet Crazy Caribbean Hot Sauce. It's not bad... but Off Road Fire is better - at least I think so. Not in heat, mind you - but in flavor. ORF is not quite as hot, but it's very close actually - Dave makes some other sauces that are _way_ hotter. This is not too hot. But it's number one ingredient is carrots and those shine through a bit too much for my taste. They are used to temper and thicken the sauce. Note: see above... this sauce really grows on you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1999038670783740809-8602460084381922499?l=dmennenoh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmennenoh.blogspot.com/feeds/8602460084381922499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1999038670783740809&amp;postID=8602460084381922499' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/8602460084381922499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/8602460084381922499'/><link rel='alternate' type='text/html' href='http://dmennenoh.blogspot.com/2008/03/fat-tire-fire.html' title='Off Road Fire'/><author><name>dmennenoh</name><uri>http://www.blogger.com/profile/04513930488314997245</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04216806958761585652'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1999038670783740809.post-2476517853158613074</id><published>2008-03-12T06:16:00.000-07:00</published><updated>2008-04-04T05:27:54.451-07:00</updated><title type='text'>Don't forget Chequamegon!</title><content type='html'>I say that because I just about did forget myself. The Chequamegon Fat Tire Festival, up in Hayward/Cable WI, is the nation's largest mass start mountain bike race. 1700 riders start on main street, downtown Hayward, and finish at Mt. Telemark ski resort in Cable. Much of the trails used are the same ones used by the American Birkebeiner (which my buddy Adam got third in this year!).&lt;br /&gt;Anyway, my registration is going out in today's mail, and then it's up to the lottery faeries, which don't seem to like me all that much. Saturday is the last day for getting entries out, so go &lt;a href="http://www.cheqfattire.com/entry_2008.pdf"&gt;here &lt;/a&gt;to get the entry form.&lt;br /&gt;&lt;br /&gt;UPDATE: 04-04-08 My check didn't clear.. not in once again. Damn lottery.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1999038670783740809-2476517853158613074?l=dmennenoh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmennenoh.blogspot.com/feeds/2476517853158613074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1999038670783740809&amp;postID=2476517853158613074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/2476517853158613074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/2476517853158613074'/><link rel='alternate' type='text/html' href='http://dmennenoh.blogspot.com/2008/03/dont-forget-chequamegon.html' title='Don&apos;t forget Chequamegon!'/><author><name>dmennenoh</name><uri>http://www.blogger.com/profile/04513930488314997245</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04216806958761585652'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1999038670783740809.post-983587174259740602</id><published>2008-02-26T05:03:00.000-08:00</published><updated>2008-02-26T05:14:35.985-08:00</updated><title type='text'>Button Conventions</title><content type='html'>No, this isn't about a couple thousand buttons showing their wares, this is about what people expect in a button. I decided to write this because all to often I find myself saying something like 'buttons should work on release, not on press'. They should. You should have the option of pressing on the button, and then pulling the cursor away and releasing, because you decided mid-click that was the wrong button. This is how most all apps, and even hyperlinks, behave. And that won't work if developers are using on press code to initiate button actions. So stop making me say it, and just do it right - buttons should invoke their actions on release, not on press. (Unless you have a really good reason)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1999038670783740809-983587174259740602?l=dmennenoh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmennenoh.blogspot.com/feeds/983587174259740602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1999038670783740809&amp;postID=983587174259740602' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/983587174259740602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/983587174259740602'/><link rel='alternate' type='text/html' href='http://dmennenoh.blogspot.com/2008/02/button-conventions.html' title='Button Conventions'/><author><name>dmennenoh</name><uri>http://www.blogger.com/profile/04513930488314997245</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04216806958761585652'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1999038670783740809.post-8269020067857583598</id><published>2008-02-15T16:31:00.000-08:00</published><updated>2008-02-15T16:38:17.582-08:00</updated><title type='text'>May The First</title><content type='html'>It wasn't until May 1st last year that I hit 300 miles on the bike. This year I'm already over 300. Hopefully it'll pay off a little, since I'll be racing &lt;a href="http://www.wors.org"&gt;Comp&lt;/a&gt;. Though I do wonder if I'll see another medal before 2012.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1999038670783740809-8269020067857583598?l=dmennenoh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmennenoh.blogspot.com/feeds/8269020067857583598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1999038670783740809&amp;postID=8269020067857583598' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/8269020067857583598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/8269020067857583598'/><link rel='alternate' type='text/html' href='http://dmennenoh.blogspot.com/2008/02/may-first.html' title='May The First'/><author><name>dmennenoh</name><uri>http://www.blogger.com/profile/04513930488314997245</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04216806958761585652'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1999038670783740809.post-396548561576020922</id><published>2008-02-13T14:54:00.000-08:00</published><updated>2008-02-13T15:10:43.669-08:00</updated><title type='text'>Using Code Names</title><content type='html'>I was just getting in a ride on the trainer and heard a great tip on a show I was watching. If your business is anything like ours, you likely do some of your work under an NDA - Non Disclosure Agreement. Essentially, this means you can't tell anyone for whom your working. &lt;br /&gt;To make it so you can still talk about "the company" assign them a code name. Use the code name in all correspondence and in all conversations. This way everyone in your company can talk about "the company", and they all know to whom you're referring - but outsiders are none the wiser.&lt;br /&gt;Given that I recently made such a faux pas, I'm definitely going to start using this practice. My first code name... "General Lee".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1999038670783740809-396548561576020922?l=dmennenoh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmennenoh.blogspot.com/feeds/396548561576020922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1999038670783740809&amp;postID=396548561576020922' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/396548561576020922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/396548561576020922'/><link rel='alternate' type='text/html' href='http://dmennenoh.blogspot.com/2008/02/using-code-names.html' title='Using Code Names'/><author><name>dmennenoh</name><uri>http://www.blogger.com/profile/04513930488314997245</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04216806958761585652'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1999038670783740809.post-898372535463711239</id><published>2008-02-13T05:06:00.000-08:00</published><updated>2008-02-13T05:11:28.261-08:00</updated><title type='text'>Problem with SWFObject?</title><content type='html'>I've seen a lot of posts over the past week or so regarding issues people are having with SWFObject and IE - after upgrading to player 9.0.115.0. From my understanding this is nothing to do with the player, and all to do with your IE having a corrupt player install. The solution is to use the official uninstaller, and then re-install the new player. (Or use a friggin decent browser - such as Firefox)&lt;br /&gt;Adobe has some information on this issue here: &lt;a href="http://www.adobe.com/go/tn_14157"&gt;http://www.adobe.com/go/tn_14157&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1999038670783740809-898372535463711239?l=dmennenoh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmennenoh.blogspot.com/feeds/898372535463711239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1999038670783740809&amp;postID=898372535463711239' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/898372535463711239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/898372535463711239'/><link rel='alternate' type='text/html' href='http://dmennenoh.blogspot.com/2008/02/problem-with-swfobject.html' title='Problem with SWFObject?'/><author><name>dmennenoh</name><uri>http://www.blogger.com/profile/04513930488314997245</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04216806958761585652'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1999038670783740809.post-5122442500326034418</id><published>2008-02-09T14:13:00.000-08:00</published><updated>2008-02-09T16:28:29.123-08:00</updated><title type='text'>Unity - Windows</title><content type='html'>I used to be a Director guy. Because, for a time Director was king of multimedia - and to some extent still is. A lot of us got really excited when Director 8.5 was released and included a real-time 3D engine courtesy of Intel. Macromedia had the online 3D world by the balls. But... they dropped those balls and Director's 3D engine has sat in it's current state all this time. Seven damn years. The whole time the online Director community clamored for updates. And the whole time Macromedia ignored them. And Adobe continues the tradition.&lt;br /&gt;Enter Unity. Unity is actually worked on. Imagine that. So much so that one time product manager, all around good-guy, and 3D nut, Tom Higgins left Macromedia when it was bought by Adobe and went to Unity. That speaks volumes. Unity has everything Director's now antiquated engine doesn't. It has shadows, glows, speed, DX9 support and more. It's faster, leaner and just plain better in every way.&lt;br /&gt;The problem with Unity however, was that it's editor was Mac only. But not for much longer. Unity is currently working on a Windows port of their editor. Wa-freaking-hoo. So, if you're interested in making online 3D content do yourself a favor and have a look at Unity.&lt;br /&gt;&lt;a href="http://unity3d.com/"&gt;Check it out.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1999038670783740809-5122442500326034418?l=dmennenoh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmennenoh.blogspot.com/feeds/5122442500326034418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1999038670783740809&amp;postID=5122442500326034418' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/5122442500326034418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/5122442500326034418'/><link rel='alternate' type='text/html' href='http://dmennenoh.blogspot.com/2008/02/unity-windows.html' title='Unity - Windows'/><author><name>dmennenoh</name><uri>http://www.blogger.com/profile/04513930488314997245</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04216806958761585652'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1999038670783740809.post-193199755262634891</id><published>2008-02-04T08:04:00.001-08:00</published><updated>2008-02-05T07:10:03.824-08:00</updated><title type='text'>Simple Array Compressor</title><content type='html'>I've been working on letting users save a jpeg from Flash to their own machine, which for the most part is no biggy even in AS2. The problem area for AS2 is the amount of data that must be sent to the server - typically an array of color values, one for every pixel in the image. So, even a small 200x200 image will generate an array with 40,000 entries - each being a 6 byte hex value. And, when you turn that into a string for posting to the server you get a 1 byte comma added between each entry. So, a 200x200 image turns into approximately a 280K upload - that will likely end up being a 30K jpeg.&lt;br /&gt;So, the trick is to try and minimize the amount of data you send, which can be done in various ways including things like base64 encoding, or using LZW compression. I did try those methods, and while they do work, they were taking far too long (at least in VM1) to do their thing. Uploading the big-ass string was faster than compressing and uploading the small version. I was resigned to just sending the big string, but kept thinking there must be a way to somewhat minimize the impact. That's when I hit on this simple array compression technique that is reminiscent of RLE.&lt;br /&gt;Here's the function:&lt;br /&gt;&lt;font color="#000000"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;&lt;br /&gt;&lt;font color="#0000FF"&gt;function&lt;/font&gt; compressArray(orig:Array):Array{  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#0000FF"&gt;var&lt;/font&gt; l = orig.length;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#0000FF"&gt;var&lt;/font&gt; comp:Array = &lt;font color="#0000FF"&gt;new&lt;/font&gt; Array(); &lt;font color="#FF4400"&gt;//new compressed array&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#0000FF"&gt;for&lt;/font&gt;(&lt;font color="#0000FF"&gt;var&lt;/font&gt; i = 0; i &lt; l; i++){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;comp[i] = "";&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;comp[0] = orig[0];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#0000FF"&gt;var&lt;/font&gt; lastEqualIndex = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#0000FF"&gt;for&lt;/font&gt;(&lt;font color="#0000FF"&gt;var&lt;/font&gt; i = 1; i &lt; l; i++){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000FF"&gt;if&lt;/font&gt;(orig[i] != comp[lastEqualIndex]){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#FF4400"&gt;//new color&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;comp[i] = orig[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastEqualIndex = i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#0000FF"&gt;return&lt;/font&gt; comp;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;It works like so - a new array, comp, is created, the same length as the original, and filled with "" - empty strings. &lt;br /&gt;The first item in the new array is set to the first item in the original, and the initial 0 index is stored in lastEqualIndex - since the two arrays are now identical at index 0. &lt;br /&gt;The original array is then iterated starting at the second item in the array - index 1, and going to the end. If the current item in the original array is different from the item in the comp array at the lastEqualIndex, then a new value has been encountered. It is stored in the new, comp, array and the lastEqualIndex is updated to reflect the current index in the loop. &lt;br /&gt;What this accomplishes is creating a new array where runs of duplicate data are eliminated and only the initial value in the run is kept. The other items in the run are kept at their initial empty string values.&lt;br /&gt;Example:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;&lt;br /&gt;original: [FFFFFF, FFFFFF, AAAAAA, BBBBBB, AAAAAA, AAAAAA, AAAAAA, AAAAAA]&lt;br /&gt;new version: [FFFFFF, , AAAAAA, BBBBBB, AAAAAA, , , ]&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;original: 55 bytes&lt;br /&gt;new version: 31 bytes&lt;br /&gt;&lt;br /&gt;A full 44% reduction&lt;br /&gt;&lt;br /&gt;Here's some actual examples when the array is filled with color values:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_uWQpI2pQUr8/R6du2y0OpbI/AAAAAAAAAEI/NHzytpc9WPo/s1600-h/percents.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_uWQpI2pQUr8/R6du2y0OpbI/AAAAAAAAAEI/NHzytpc9WPo/s320/percents.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5163217385436390834" /&gt;&lt;/a&gt;&lt;br /&gt;As you can see, some images are more compressible than others, as is normal. I couldn't believe the last image saw an 86% reduction, I expected much worse from it. &lt;br /&gt;The nice thing about this method, aside from the fact that it's extremely fast, is that the array indexes are preserved and so it's very easy to reconstruct the original array: If a value in the array is "", just use the last item (color) that wasn't empty. Simple as that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1999038670783740809-193199755262634891?l=dmennenoh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmennenoh.blogspot.com/feeds/193199755262634891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1999038670783740809&amp;postID=193199755262634891' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/193199755262634891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/193199755262634891'/><link rel='alternate' type='text/html' href='http://dmennenoh.blogspot.com/2008/02/simple-array-compressor.html' title='Simple Array Compressor'/><author><name>dmennenoh</name><uri>http://www.blogger.com/profile/04513930488314997245</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04216806958761585652'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_uWQpI2pQUr8/R6du2y0OpbI/AAAAAAAAAEI/NHzytpc9WPo/s72-c/percents.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1999038670783740809.post-1180926092456837897</id><published>2008-01-03T06:47:00.000-08:00</published><updated>2008-01-16T06:01:03.447-08:00</updated><title type='text'>Blast off</title><content type='html'>Just so ya'll know, I got this blog probably a year ago. I started on my first tutorial about ten times in the past couple of months. As of a couple days ago, I was mostly done. As of yesteray, I had erased it all and was back to ground zero. I have been wrestling with the whole how much do I explain, and how much do I just 'do'. It's not like a classroom environment where you (the reader) can ask questions as we progress. So, I tend to try to over-explain things. But I always find that the tutorials I like most are those that simply show the steps, and don't try to explain too much. I can look up things I don't get. And that's a helpful skill as well - looking in the Help and Googling can get you far. Learning to use search tools is as important as anything. Especially today, when really good Flash coding information can readily be found. So, I'm back at the beginning - expect my first tutorial (A progress meter singleton) in the next daze.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1999038670783740809-1180926092456837897?l=dmennenoh.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dmennenoh.blogspot.com/feeds/1180926092456837897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1999038670783740809&amp;postID=1180926092456837897' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/1180926092456837897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1999038670783740809/posts/default/1180926092456837897'/><link rel='alternate' type='text/html' href='http://dmennenoh.blogspot.com/2008/01/singleton-progress-meter.html' title='Blast off'/><author><name>dmennenoh</name><uri>http://www.blogger.com/profile/04513930488314997245</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='04216806958761585652'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>