<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>I Hereby Decree</title>
<link>http://www.iherebydecree.com</link>
<description>A blog of short thoughts</description>
<atom:link href="http://www.iherebydecree.com/rss/index.php" rel="self" type="application/rss+xml" /><item>
<title>HTML5 Holiday Card</title>
<link>http://www.iherebydecree.com/archive/id/917</link>
<description><![CDATA[<a href="http://www.lemieuxster.com/family/2011/card/"><img src="http://media.iherebydecree.com/postimages/familyCard2011.png" width="530" alt="Merry Christmas!" border="0"/></a><br />
<em>Merry Christmas!</em><br />
<br />
Valerie and I don't often remember to send out holiday cards. You know the type, the ones with a picture of the family and sometimes a note recapping the year's activities. We always <em>talk</em> about doing it, but never do it. <br />
<br />
This year on Christmas Eve I had an idea to make a digital card. The original idea was something like an 8-bit snow-globe but I knew the first thing Val would say would be "but our picture doesn't look very clear" (or something along those lines) so I came up with a little trick. The picture starts out clear, but then as the 8-bit carol plays and the holiday greeting appears from the bottom, the picture is blocked in to a more 8-bit-like image (not true 8-bit, of course). <a href="http://www.lemieuxster.com/family/2011/card/">You can check it out here, make sure to have your speakers on.</a><br />
<br />
I have been doing a lot of Flash programming at work so for this card I decided to use just HTML, Javascript and CSS. I took advantage of some of the code libraries I made this year, like <a href="http://iherebydecree.com/archive/id/910">Cigar</a> and my previous <a href="http://iherebydecree.com/archive/id/912">canvas experiments</a> as well as some third-party code libraries, mostly from <a href="http://www.easeljs.com">Grant Skinner</a>. I tested the card in Chrome, Safari, and Firefox (all the latest version) and I took a glance at it in IE. The only major difference was that I still haven't gotten the font-face to work in IE. <br />
<br />
In theory it should work on mobile safari or any html5 compliant mobile browser but it doesn't because of restrictions in place by those browsers (e.g. no sound loading unless dictated by user action). I could have added more support for those devices, but I put this together in about three hours late Christmas Eve and any more time spent would have meant it wouldn't have been ready for Christmas Day. It almost wasn't as it is. <br />
<br />
My favorite part is the snow, and my lovely family of course. <br />
<br />
UPDATE: I added support for iOS devices now, too. ]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/917</guid>
<pubDate>Mon, 26 Dec 2011 11:19:15 -0500</pubDate></item>
<item>
<title>My Imaginary Site</title>
<link>http://www.iherebydecree.com/archive/id/916</link>
<description><![CDATA[Sometimes you need an invalid feed or some random artifact crucial to helping you debug and test your web application. I hope to turn <a href="http://myimaginarysite.com">My Imaginary Site</a> a resource for just that.<br />
<br />
I've owned the domain for long enough now. I purchased it as a kind of personal inside joke. Now I want to make something useful of it. I have been ever-so-slowly filling it in, and it is still really sparse. <br />
<br />
Please send any suggestions my way. <br />
<br />
Keep in mind that this isn't meant to be some amazing end-all be-all resource. I just want a quick index of all those things you find yourself needing in application development. "Man, I really wish I had a way to load a feed url that timed out after 'n' number of seconds." - I will soon have a link for that up on the site. So that kind of thing. <br />
<br />
]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/916</guid>
<pubDate>Wed, 14 Dec 2011 21:58:56 -0500</pubDate></item>
<item>
<title>An off year</title>
<link>http://www.iherebydecree.com/archive/id/915</link>
<description><![CDATA[It is with a little sadness that I admit that I did not participate in this years <a href="http://www.iherebydecree.com/archive/id/903">Trunk or Treat.</a><br />
<br />
Sigh. <br />
<br />
I had an awesome idea and about a month ago I got started on the beginning work for it. Somewhere along the way, though, it became apparent that I wouldn't be able to complete it and unfortunately after that I never switched to another, perhaps easier, idea. <br />
<br />
The creative process is interesting. Not every idea takes off and of the ones that do not many are ever completed. I am not upset that I wasn't able to participate this year and protect my reign as <a href="http://www.iherebydecree.com/archive/id/886">King of the Trunk or Treat.</a> In fact, it was relaxing to just take my kids and enjoy the evening. But when I am not making things I feel like I am just sitting around twiddling my thumbs. It isn't a feeling I like. <br />
<br />
That is why I am such a proponent of just doing things. Have an idea? Work on it in some small way. A sketch. A list. Initial research. <br />
<br />
This has been an off year. I have gotten a lot done, but not in the areas I expected. <br />
<br />
]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/915</guid>
<pubDate>Sun, 30 Oct 2011 15:43:25 -0400</pubDate></item>
<item>
<title>Node Knockout 2011</title>
<link>http://www.iherebydecree.com/archive/id/914</link>
<description><![CDATA[A few weekends ago I got to participate in <a href="http://nodeknockout.com">Node Knockout</a> with some friends. It was a 48 hour contest to see who could come up with something great using <a href="http://nodejs.org/">Node.js</a>. My team, myself and some coworkers, decided to try and make something like a multi-user game platform where you could use your computer screen as the output screen and a second device (mobile phone, for example) as the game controller. What we came up with was <a href="http://flite-labs.no.de/">Fly By Wire</a> <a href="http://nodeknockout.com/teams/flite-labs">(more info)</a>. <br />
<br />
It was a lot of fun but there are some pretty bad bugs. We didn't win either. But I learned a lot about Node.js, CoffeeScript, and web sockets. I hope to do it again next year. ]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/914</guid>
<pubDate>Thu, 08 Sep 2011 02:33:51 -0400</pubDate></item>
<item>
<title>JS/Canvas Experiments</title>
<link>http://www.iherebydecree.com/archive/id/912</link>
<description><![CDATA[I've been doing some experiments with JavaScript and the Canvas tag. Here are some results:<br />
<br />
<a href="http://www.flickr.com/photos/lemieuxster/5734307578/" title="Starry Blocks by lemieuxster, on Flickr"><img src="http://farm3.static.flickr.com/2352/5734307578_ab8f6b4751.jpg" width="500" height="313" alt="Starry Blocks"></a><br />
<em>Starry Blocks</em><br />
<br />
<a href="http://www.flickr.com/photos/lemieuxster/5733759261/" title="Launch Pad Quads by lemieuxster, on Flickr"><img src="http://farm4.static.flickr.com/3153/5733759261_696a991445.jpg" width="500" height="333" alt="Launch Pad Quads"></a><br />
<em>Launch Pad Quads</em><br />
<br />
The first just traverses an image and chunks it in to blocks of a configurable size and displays the average color for the block. The second recursively subdivides the image based on color threshold and size and then, again, displays the average color if the rules are met. <br />
<br />
You can see them compute live <a href="http://www.lemieuxster.com/dev/js/blockmaker/">here</a> and <a href="http://www.lemieuxster.com/dev/js/blockmaker/indexQuad.html">here</a>. (Google Chrome or a very modern browser recommended) <br />
<br />
The code isn't completely optimized, and I have found some interesting irregularities while working with the Canvas Context object, but in all it seems like a straightforward piece of technology. <br />
<br />
For more Canvas fun, check out <a href="http://easeljs.com/">EasleJS</a> by Grant Skinner (not used here). He has essentially taken a lot of the vocabulary and paradigms from Flash and ported them over in to a performant Canvas render engine. ]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/912</guid>
<pubDate>Wed, 18 May 2011 18:10:03 -0400</pubDate></item>
<item>
<title>Is Flash Dead? Part 2</title>
<link>http://www.iherebydecree.com/archive/id/911</link>
<description><![CDATA[<em><a href="http://iherebydecree.com/archive/id/895">Part 1</a></em><br />
<br />
So, its been a year and I would like to re-comment on the state of Flash. Flex/Flash consultant Jesse Warden put up <a href="http://jessewarden.com/2011/05/adobes-wowza-litigation-insecurity-prevention.html">a nice post</a> today about some current Adobe news. One thing Warden mentions is the fact that the passion behind Flash is dying, not the technology itself. I would add my voice to that same sentiment. <br />
<br />
In my own professional life (I am not a consultant) I have been using Flash less and less as time progresses. This has nothing to do with the platform or its capabilities. It has a lot to do with how <a href="http://www.flite.com">my company</a> values Flash and the time we decide to put behind it. Flash continues to be an important part of what we do, but many of our new projects are striving to be Flash-less. The reasons for this vary, but the biggest are these: 1) We are trying to be cross-device compatible, inclusing iOS. 2) We are a group of young, "hip" developers that often get caught up in the new coolness. <br />
<br />
Lets talk about reason #2 for a moment. Things like Node.js and Ruby as well as the many GitHub projects are the cool thing at the moment and are proving to be fun to play with. In an effort to say ahead of the curve and also be a part of the "bleeding edge" we sometimes pick new technologies over old ones (it is also very educational). Bottom line, we never say "lets use Flash to implement this cool new idea." <br />
<br />
So, it doesn't matter that in many cases Flash would be a great solution. <br />
<br />
There are allegedly some cool technologies coming in newer versions of Flash, but I haven't felt the need to look in to them. If I am any indication (and I don't know that I am) I would say that the trend is similar elsewhere. (Also, I've seen demos of WebOS running Flash and yet it is still nowhere to be seen.) <br />
<br />
There are a lot of cool new toys to play with, and whether because of marketing or timing or any other reason the new Flash toys just aren't as stand-out and amazing any more. It used to be that if a developer made a cool Flash library they could get some traction and some attention. Now the new hotness is putting up a new JavaScript or Ruby project on GitHub. <br />
<br />
So Flash as a technology is still not going anywhere, but it may start to disappear if the community stops caring. ]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/911</guid>
<pubDate>Thu, 12 May 2011 16:49:15 -0400</pubDate></item>
<item>
<title>Cigar</title>
<link>http://www.iherebydecree.com/archive/id/910</link>
<description><![CDATA[I've been working on a side project of sorts. What makes this one different is that I don't know where it will take me. I would like to introduce <a href="https://github.com/lemieuxster/cigar" title="on github, like all the cool kids">Cigar.js</a> - a JavaScript dependency importer. Basically, it acts kind of like <em>import</em> does in Java, but it works client side and it is for adding JavaScript files to your runtime environment. <br />
<br />
It works like this: After loading the Cigar.js file you can call <em>_import</em> and load javascript files from your own domain (for now, though I do hope to add the ability to do external files as well). You can chain the imports together, essentially creating a queue of files to load. At the end you can specify a callback that will be initialized once all the files have been loaded. <br />
<br />
I've had this idea in the my head for a while now, but it wasn't until I saw a <a href="http://twitter.com/jeffremer/status/55041500828016640">tweet from Jeff Remer</a> that I thought "well, Groucho always has a cigar, so I should make a js library called 'cigar'."<br />
<br />
<img src="http://media.iherebydecree.com/postimages/JeffsGrouchoTweet.png" width="530" height="259" alt="Jeff's Groucho Tweet" /><br />
<em>Yeah, it was all based on a bad pun</em><br />
<br />
What is emerging from this wandering idea of mine is that you could use this to structure your JavaScript files more like Java classes. This could be handing for creating reusable code snippets and have dependencies, but help remove all the circular references. <br />
<br />
You could have a utility "class" called "AwesomeUtility" that is used in "Object1" and "Object2". Cigar would allow you to save those in separate js files and test them independently, then you can use Cigar to import them in to your main script file and the dependency will only be loaded once. <br />
<br />
As it is, Cigar is no-where near production ready. There is still a lot to test out and play with. Also, I have know idea where this is going. ]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/910</guid>
<pubDate>Tue, 12 Apr 2011 00:49:04 -0400</pubDate></item>
<item>
<title>For Nosy Commuters</title>
<link>http://www.iherebydecree.com/archive/id/909</link>
<description><![CDATA[I sometimes get to work while I ride in to The City on <a href="http://bart.gov">BART</a> and I am always a little disappointed that my coding/terminal skills don't seem more hackeresque, especially when someone is looking over my shoulder. Though I certainly don't want to have my computer <a href="http://www.techdirt.com/articles/20090414/1837144515.shtml">taken away for looking suspicious</a> I decided to make my onlooker's experience more fun. <br />
<br />
Today while on BART I put together this little number:<br />
<br />
<img src="http://media.iherebydecree.com/postimages/phoneGen.png" width="530" height="560" alt="Phone Gen Screen" /><br />
<em>I'm in your phones, hacking your numbers</em><br />
<br />
What this really shows is a bash_profile alias that points to a Java thread I made that spits out a random quantity of random, not even valid, phone numbers at interchanging intervals with either a success or failed message. It then tallies the successes and outputs the success/total ratio at the end. What it <em>looks</em> like it is doing, though, is hacking all the nearby phones. <br />
<br />
Why make this? So that the people sitting next to me get mildly freaked out. I mean, to start this baby up I have to type "hack_nearby_phones". Everything Hollywood teaches us about computers allows this to make sense, so it will surely fool everyone. ]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/909</guid>
<pubDate>Mon, 21 Mar 2011 23:56:07 -0400</pubDate></item>
<item>
<title>Links</title>
<link>http://www.iherebydecree.com/archive/id/908</link>
<description><![CDATA[I hereby decree that the <a href="http://iherebydecree.com/links">links</a> section shall be restored.  Just visit <a href="http://iherebydecree.com/links ">http://iherebydecree.com/links</a> and see for yourself.  I started this links section a long while ago and then stopped as I found that I was user Twitter and Facebook more for sharing. Time has passed and again I find myself wanting to consolidate. <br />
<br />
For the three people that read this blog, I hope you enjoy. <br />
<br />
]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/908</guid>
<pubDate>Wed, 09 Mar 2011 12:52:26 -0500</pubDate></item>
<item>
<title>Inception Music</title>
<link>http://www.iherebydecree.com/archive/id/907</link>
<description><![CDATA[<em>Bow chicka bow wow</em><br />
<br />
Err... wait, <a href="http://en.wikipedia.org/wiki/Inception_(film)">Inception</a>. I really enjoyed the film. It was a great action movie; intelligent and original enough to be worth watching multiple times. <br />
<br />
One aspect of the movie I really enjoyed was the musical score. In fact, I find myself keen on many of the movie soundtracks composed by <a href="http://en.wikipedia.org/wiki/Hans_Zimmer">Hans Zimmer</a> (Batman Begins/Dark Knight, Pirates of the Caribbean, Sherlock Holmes, and more).<br />
<br />
Anyway, if you've seen Inception you know that the protagonists do much of their deeds in a dream state. In fact, they induce dreams within dreams. For every level deeper they go in the dream worlds, time slows down. In other words, you have more perceived time in a second layer dream than you do in a first layer dream, even though the same real time is passing. Confused? Watch the movie. <br />
<br />
Whenever they want to be awoken from their dream state, someone has to initiate a "kick" - or some kind of semi-violent wake up call, like the feeling of falling or being hit. To signal that said "kick" is coming, they use an audible hint: The song <a href="http://www.youtube.com/watch?v=Q3Kvu6Kgp88">Non, Je Ne Regrette Rien</a> by Edith Piaf. (Seriously, if you are totally not following me go watch the movie then come back.) So that is why when I found this YouTube clip:<br />
<br />
<br />
<em>Same music, just slowed down.</em><br />
<br />
I was amazed. "What a clever trick," I thought to myself, "I wonder if it is on purpose. It has to be." It turns it was. In fact, Hans Zimmer has admitted that <a href="http://www.guardian.co.uk/music/2010/jul/29/inception-soundtrack-edith-piaf">much of the soundtrack is based on that one song.</a><br />
<br />
So, a clever movie with a subtly clever soundtrack. If you haven't seen it already, go see it. Now. ]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/907</guid>
<pubDate>Mon, 31 Jan 2011 23:45:15 -0500</pubDate></item>
<item>
<title>And My Bro</title>
<link>http://www.iherebydecree.com/archive/id/906</link>
<description><![CDATA[<img src="http://media.iherebydecree.com/postimages/AndMyBro.jpg" height="930" width="310" alt="You have my sword. And my axe. And my bro." /><br />
<em>We got your back, Frodo.</em>]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/906</guid>
<pubDate>Sun, 30 Jan 2011 14:27:13 -0500</pubDate></item>
<item>
<title>JS Test Driver</title>
<link>http://www.iherebydecree.com/archive/id/905</link>
<description><![CDATA[At work I've begun to use <a href="http://code.google.com/p/js-test-driver/">JS Test Driver</a> to run JavaScript Unit and Functional tests. It was very easy to get up and running and it is more-or-less straight forward to use. <br />
<br />
Specifically, I have been using the <a href="http://code.google.com/p/js-test-driver/wiki/IntelliJPlugin">IntelliJ plug-in</a>. It was easy to install and get started, but it does seem pretty finicky and there doesn't seem to be any reliable way to determine what version of JSTestDriver the plug-in uses, only the version of the plug-in itself. <br />
<br />
I have never been big on <a href="http://en.wikipedia.org/wiki/Test-driven_development">test-driven development</a> but I am starting to be converted to its ways. Of course I would test and validate that my code worked as expected, sometimes even putting it through peer review and a light layer of function stress testing. The idea of thinking about test in a more prominent way, however, is mostly new to me. So far I've found that it can be quite helpful. <br />
<br />
My first positive experience came this week when I was writing a test for an already-in-production piece of code and the test failed. It failed on a strange edge case, but it failed nonetheless. This enabled me to fix the issue before anyone else could find in the "real world." <br />
<br />
"Of course," you say, "this is what testing is supposed to do." But I feel like it takes "ah-ha" moments such as that to reinforce a concept and I had never had one with testing before. <br />
<br />
If you are looking for a way to test your JavaScript code, give JS Test Driver a try. QUnit and JsUnit are also available though I have limited experience with the former and none with the later. ]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/905</guid>
<pubDate>Sat, 29 Jan 2011 16:47:14 -0500</pubDate></item>
<item>
<title>Steep.it Mobile (Beta)</title>
<link>http://www.iherebydecree.com/archive/id/904</link>
<description><![CDATA[So, it took a while (sorry <a href="http://www.benlew.com">Ben</a>) but <a href="http://steep.it">Steep.it</a> - the tea timing cousin of <a href="http://e.ggtimer.com">E.ggTimer</a> - now has mobile support. <br />
<br />
<img src="http://media.iherebydecree.com/postimages/steepit/steepitmobile.jpg" width="320" height="480" alt="Steep.it mobile" /><br />
<em>Screen shot from early test version on Palm Pre</em><br />
<br />
<strong>Features</strong><br />
<br />
I decided to go a step beyond the mobile implementation I did for E.ggtimer. Mostly because Steep.it has a much more compelling multi-use case. Here is what you get:<br />
<ul><br />
<li><em>Offline support:</em> Yep, if your device/browser supports HTML5 manifest files you should be able to bookmark your favorite tea timer and come back to it later, even if you aren't connected to the internet. </li><br />
<li><em>iOS Home Screen Icon:</em> Add the timer to your iOS home screen and you will have an always-ready timer. </li><br />
<li><em>Core upgrades:</em> This is less noticeable (hopefully) than the others, but I updated the core E.ggTimer mobile code to be more flexible and more efficient.</li><br />
</ul><br />
Of all the features, the Offline support was probably the hardest to test. <br />
<br />
<strong>A Rant</strong><br />
<em>(I apologize up front for being such a whiner.)</em><br />
<br />
Unfortunately a recent update of iOS broke some of the functionality. I suppose what I was doing before was a workaround, but now you can't invoke sound or media to play through JavaScript in HTML5 on certain mobile browsers (iOS 4.2, some android) unless through user interaction. <br />
<br />
This makes sense from a bandwidth point of view, but it is frustrating that companies like Google and Apple tout HTML5 as a solution for building mobile web applications but then remove some of the abilities. It is, of course, their prerogative to do so and it probably makes sense, but having to special case how the app runs depending on what device it is on seems like the very thing we were trying to get away from.<br />
<br />
Obviously web applications developers like myself need to remember things like <a href="http://en.wikipedia.org/wiki/Progressive_enhancement">progressive enhancement</a>, but because of native apps any "downgraded" (or not enhanced) performance from a mobile web app appears even more dramatic. For example, why can't the timer play a simple noise at its expiration? (Answer: because javascript can't invoke the sound in the device browser without direct user action). <br />
<br />
I have already thought of ways to work around this issue, like require that the user "unmutes" the sound - which would put it in to a playable state. Or that instead of auto-starting the timer the user has to start it manually. Both of these options, though, break from the most basic user experience of E.ggTimer and Steep.it - that you start the timer via URL and don't have to do anything else. <br />
<br />
But enough complaining. As the mobile and web worlds continue to merge and collide new solutions and opportunities will present themselves. <br />
<br />
<strong>Try it out</strong><br />
Just go to <a href="http://steep.it/">Steep.it</a> on your mobile device and give it a whirl. You will be redirected to steep.it/m and all your wildest tea timing dreams will come true. ]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/904</guid>
<pubDate>Sat, 04 Dec 2010 17:45:30 -0500</pubDate></item>
<item>
<title>Car Mouth</title>
<link>http://www.iherebydecree.com/archive/id/903</link>
<description><![CDATA[Every year my local church congregation holds a Halloween event called "Trunk or Treat." Children dress up in costumes and go Trick-or-Treating from car trunk to car trunk in a closed off parking lot. People decorate their cars and it is a lot of fun. <br />
<br />
Since moving to California we have participated every year and each year we have won "Cutest Car." Two years ago I quickly put together a <a href="http://iherebydecree.com/archive/id/838">Pumpkin Car</a>. Last year I had a lot of ambition and free time and I made a <a href="http://iherebydecree.com/archive/id/886">Working Photo Booth</a>. This year I didn't have quite as much time and I made a <strong>Car Mouth</strong>. I have not hidden the fact that I have been trying to win <em>Most Extremely Awesome Car of All Time</em> but I don't know what the categories are and if that is even an option. <br />
<br />
<img src="http://media.iherebydecree.com/postimages/carmouth/CarMouth.jpg" alt="Car Mouth" width="580" height="400" /><br />
<em>Car Mouth about to devour my daughter.</em><br />
<br />
Unfortunately on the day of the event our camera batteries were dead and by the time we realized it, it was too late to do anything. Therefore I don't have any "at the Trunk-or-Treat" photos. Or any photos of the final product, for that matter. Oh well. <br />
<br />
<strong>Parts</strong><br />
<img src="http://media.iherebydecree.com/postimages/carmouth/CarMouthParts.jpg" alt="Car Mouth Parts" width="580" height="400" /><br />
<em>Not pictured, the red pillow tongue and the gray mouth lining.</em><br />
<br />
The mouth was made up of these basic parts:<br />
<ul><br />
<li>Teeth: Cut from thick presentation board</li><br />
<li>Tongue: Made of a plain red shirt over a pillow</li><br />
<li><a href="http://en.wikipedia.org/wiki/Palatine_uvula">Uvula</a>: Cut out of construction paper</li><br />
<li>Mouth lining: A large grey piece of fabric. (The backdrop from last years photo booth)</li><br />
</ul><br />
It was all held together with packaging tape and <a href="http://en.wikipedia.org/wiki/Duct_tape">duct tape</a>. <br />
<br />
<strong>Award</strong><br />
<img src="http://media.iherebydecree.com/postimages/carmouth/CarMouthAward.jpg" alt="Car Mouth Award: Funniest Car" width="580" height="400" /><br />
<em>Funniest is not cutest. It's a start.</em><br />
<br />
This year we were awarded Funniest Car. We got this cool certificate (pictured above) and some chocolate ghosts from <a href="http://www.sees.com/">See's Candies</a>. They were most delicious.<br />
<br />
While I am somewhat relieved to break free of the "cutest" category, I can't help but wonder what made my ferocious, flesh-eating, murderous car so funny to the judges. My guess is the uvula.  <br />
<br />
]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/903</guid>
<pubDate>Mon, 29 Nov 2010 23:21:02 -0500</pubDate></item>
<item>
<title>I {Code} QR</title>
<link>http://www.iherebydecree.com/archive/id/902</link>
<description><![CDATA[<img src="http://media.iherebydecree.com/postimages/icodeqrsmall.jpg" width="580" height="700" alt="I (CODE) QR" /><br />
<em>Perhaps not an original idea</em><br />
<br />
Just threw this together. Scan it with your phone or other QR reader and visit the site it points you to. Enjoy. ]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/902</guid>
<pubDate>Thu, 28 Oct 2010 12:08:20 -0400</pubDate></item>
<item>
<title>J.otDown Data Recovery</title>
<link>http://www.iherebydecree.com/archive/id/901</link>
<description><![CDATA[I have a backup of many, but not all, of the Jots made in J.otDown. If you would like to take a stab at data recovery, please send me the url to your Jot and I will send you back the file. <br />
<br />
Please note, not all Jots were saved. The reason I had to shut J.otDown off was due to database memory. This means that some of the data was lost. Recently updated Jots <em>should</em> be in tact but I make no promises. I apologize for the inconvenience. <br />
<br />
Also, going forward I would like to recommend <a href="http://notepad.cc">Notepad.cc</a> as a simple replacement for your jotting needs. ]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/901</guid>
<pubDate>Thu, 14 Oct 2010 01:44:25 -0400</pubDate></item>
<item>
<title>Reset</title>
<link>http://www.iherebydecree.com/archive/id/900</link>
<description><![CDATA[Today I made some tough decisions. I turned off PictureNest and I decided to shut down J.otDown. The driving factors for these decisions are varied, but ultimately the same result comes of them; I no longer have to worry. <br />
<br />
<strong>PictureNest</strong><br />
PictureNest, to be brief, was a fun project that allowed people to take photo-booth-like photo strips using their webcams. The images were hosted on Amazon S3 and I created a uniquely database-free environment that made scalability a non-issue; nearly 30,000 strips (or 120,000 pictures) were taken in a time-span of almost a year. It was awesome. Recently, however, people have been using PictureNest to create obscene and inappropriate images. Ultimately I wanted the site to be G-rate (or PG), and I didn't want to have to manually moderate all the images every day. Neither did I want to face any trouble that may have come of it. <br />
<br />
It was not an easy decision, and the problem wasn't unmanageable yet, but it was a preemptive strike against future problems. It is sad it had to be so. <br />
<br />
<br />
<strong>J.otDown</strong><br />
J.otDown has been more or less useless for the past few weeks. My database account maxed out on file size and I didn't find a suitable replacement. I did make some headway on creating an S3/SimpleDB version, but ultimately decided that I really don't have the time. My life has gotten a lot busier, in good ways, and instead of trying to maintain a site that would eventually need more updating I again decided to plug the leak. <br />
<br />
I hate to turn off things I make. It makes me sick, almost physically. I feel like I am letting people down. I feel like I am losing a part of me. That said, I now feel like a burden has been lifted. <br />
<br />
Am I running away from the problems? Maybe. But I honestly don't feel like I have time to face them. The problems were not insurmountable, but there is a tipping point when something turns from a hobby in to a full-time gig. Sometimes that can be a great thing. This time, however, I contemplated that path and decided against it. <br />
<br />
I may bring these services back. They will most likely be back in a different form. <br />
<br />
For now they are over. I hit the reset button on my personal projects. The only real survivor is E.ggTimer and even that needs some attention. I will get to it soon, I hope. <br />
<br />
]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/900</guid>
<pubDate>Tue, 05 Oct 2010 23:33:19 -0400</pubDate></item>
<item>
<title>Twitter &amp; Facebook</title>
<link>http://www.iherebydecree.com/archive/id/899</link>
<description><![CDATA[I think I finally figured it out. Based on the way I manage my friends/followers I have this weird dichotomy going on with Twitter and Facebook. Twitter is all the people I like to keep tabs on but we never say anything useful. Facebook is all the people I feel obligated to connect with but am mostly uninterested in. <br />
<br />
Now, if I could get all my Twitter friends to be my Facebook friends and then have real, meaningful social conversations we would be on to something. <br />
]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/899</guid>
<pubDate>Wed, 04 Aug 2010 17:34:33 -0400</pubDate></item>
<item>
<title>New Rules</title>
<link>http://www.iherebydecree.com/archive/id/898</link>
<description><![CDATA[I hereby decree that the following rules shall be in effect immediately. <br />
<ul><br />
<li>If you want to be a tough guy with a questionable past you have to carry a worn picture of your family or offspring.</li><br />
<li>"Hot" girls will no longer carry their lunches in Victoria Secret bags. (inspired by <a href="http://twitter.com/gpenston/status/20268348624">Penston</a>)</li><br />
<li><a href="http://www.youtube.com/watch?v=TG1lq_Hvfmg">Or get your degree</a> shall be the last item on every bulleted list.</li><br />
</ul>]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/898</guid>
<pubDate>Tue, 03 Aug 2010 22:17:36 -0400</pubDate></item>
<item>
<title>E.ggTimer and HTML5</title>
<link>http://www.iherebydecree.com/archive/id/897</link>
<description><![CDATA[<img src="http://media.iherebydecree.com/postimages/eggPalmPre.png" width="320" height="480" alt="E.ggTimer in the Palm Pre Browser"/><br />
<em>The WebOS Browser is surprisingly compliant.</em><br />
<br />
Over the weekend I made a port of the basic functionality of <a href="http://e.ggtimer.com">E.ggTimer</a> from Flash to <a href="http://en.wikipedia.org/wiki/HTML5">HTML5</a>. By basic I mean that things like titles and sequences are still missing, though I intend to add those soon, for full parity. And when I say HTML5 I really mean that I used the HTML5 doctype and new, proposed tags. Specifically, I used the <a href="https://developer.mozilla.org/en/canvas_tutorial">canvas tag</a> and the <a href="http://www.w3schools.com/html5/tag_audio.asp">audio tag</a>. I also used some new CSS and JavaScript features. <br />
<br />
<strong>The End Result</strong><br />
In the end, it works pretty well on desktop browsers as well as on the iPhone, iPad, Android, and WebOS browsers with some interesting differences. As far as I can tell, the beep sound at the end only really works on the Pre, so props to Palm for supporting audio. You can try it out here: <a href="http://e.ggtimer.com/m/3min">http://e.ggtimer.com/m/3min</a>. <br />
<br />
Next, while Safari supports <a href="http://ejohn.org/blog/web-workers/">Workers</a>,  you can currently only post messages as <a href="http://en.wikipedia.org/wiki/String_(computer_science)">Strings</a>. When I first implemented the Worker to do the date calculation I was passing objects. Since I got lazy and didn't want to refactor my code I just disabled the Workers for Safari. <br />
<br />
As I tried the new code out on various devices I came to realize that the ability to leave the timer running in the background (WebOS, Android) really made it a nice feature. It works on the "i" devices, but you have to leave it open. A native app would take care of that, but I am hoping that in some future update the browser will be able to run in the background (and have sound). <br />
<br />
For now, if you hit E.ggTimer (or the new domain, <a href="http://c.ountdown.com">C.ountDown.com</a>, and start a timer you will be redirected to the HTML5 code if you are using a mobile device. If for some reason you just hate <a href="http://www.adobe.com/products/flash">Flash</a> you can use the "/m" site and be Flash Free(tm). On the desktop it works best in <a href="http://www.google.com/chrome">Google Chrome</a>.<br />
<br />
<strong>Conclusion</strong><br />
The transition from Flash to HTML5 was pretty straight forward and I believe that those Flash developers that can stop worrying and actually play around with the new stuff will quickly find it suites them well. It isn't an end-all, be-all solution and it has a long way to go before we have full cross-browser interoperability, but it is pretty slick. I come away less stressed about the whole ordeal. <br />
<br />
I also removed the affiliate banner stuff since it was performing poorly. I replaced it with a nice update section and a small donate button. Cheers. ]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/897</guid>
<pubDate>Wed, 09 Jun 2010 01:09:02 -0400</pubDate></item>
<item>
<title>Section 3.3.1</title>
<link>http://www.iherebydecree.com/archive/id/896</link>
<description><![CDATA[<img src="http://media.iherebydecree.com/postimages/order3.3.1.jpg" width="580" height="299" alt="Exectute Section 3.3.1" /><br />
<em>The Emperor is not pleased.</em><br />
<br />
Inspired by <a href="http://twitter.com/gpenston">@gpenston's</a> <a href="http://twitter.com/gpenston/status/12059996866">tweet.</a>]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/896</guid>
<pubDate>Tue, 27 Apr 2010 17:21:22 -0400</pubDate></item>
<item>
<title>Is Flash Dead?</title>
<link>http://www.iherebydecree.com/archive/id/895</link>
<description><![CDATA[<em>This is a re-post of a guest blog entry I did for <a href="http://blog.widgetbox.com/2010/03/is-flash-dead/">Widgetbox</a></em><br />
<br />
When Apple, Inc. announced that the iPad would not support Adobe's Flash Player, the developer community began to talk. The debate about Flash as a web technology is not new, but the decreasing amount of support for Flash-enabled websites on mobile devices has made the issue more prominent.<br />
<br />
When talking about the lack of Flash support on devices like the iPhone, iPod Touch, and the iPad, people are generally talking about Flash Player, the runtime piece of the Flash Platform. As more people start using internet-capable mobile devices, fewer people are able to consume Flash content on the web. At its peak, Flash enjoyed a 98% market penetration. Now some websites are reporting that the number of Flash-enabled browsers visiting has dropped to as low as 88%. Websites that are built entirely in Flash are now at a disadvantage when it comes to the mobile web.<br />
<br />
There are other technologies that are also called by the name "Flash." The Flash authoring environment (e.g. Flash CS4) is the tool created and sold by Adobe that enables development for Flash Player. Flash Video (flv) is a file format used to deliver video through Flash Player. High profile video websites like YouTube and Hulu depend on Flash Video. Its ubiquitous nature means that it is simple to deploy video to a wide range of users using different Internet browsers and computer operating systems. Flash also comes with a built in protection system, making it harder for people to pirate the video they are watching. Web video is possible today because of Flash. That said, there are some drawbacks. Flash Video is a proprietary format made by Adobe. You can only use Flash Video in Flash Player. That means that nearly all the video on the Internet is controlled by one company.<br />
<br />
Flash also has performance issues. While it claims to be interoperable between different systems, there are some noted differences. Flash Player on OS X based machines performs slower and takes more processing power than its Windows counterpart. New technologies, like HTML5 are helping to combat this issue and remove our dependency on Flash for video. HTML5 video will be less processor intensive. It will also make video a native part of the web instead of an optional, separately-installed plug-in. For now though, the major browser vendors haven't decided on what the default video format should be. This indecision essentially removes any interoperability that would otherwise be inherent. Format wars notwithstanding, look for HTML5 and the new "video" tag to soon start replacing Flash as the go-to video solution.<br />
<br />
But Flash Player can do more than play video. Video is at the heart of the discussion, but other features like animation, hardware acceleration, and device access have made Flash what it is today. HTML5, even when combined with the web programming language JavaScript, does not currently have such an advanced feature set. JavaScript and ActionScript (the Flash programming language) share a common ancestor, ECMAScript. Unlike ActionScript, however, JavaScript has not been seriously updated in a long time. JavaScript is periodically updated, but those updates are not all supported in every browser, again taking away the interoperability.<br />
<br />
In conclusion&mdash;Flash is not dead. It may be past its prime, but until browser makers and the web developer community can form a more-solid set of features and standards and get nearly ubiquitous market penetration, Flash will still be around. Flash Video will be the first to go, unless media companies don't see HTML5 video as a safe (i.e. pirate proof) solution. Flash as a development platform may never die. Adobe is already broadening the platform's reach with products like AIR which will make it possible to use the Flash authoring tool to create application for the iPhone and Nexus devices. Flash Player 10.1 will be available on a large set of mobile devices. As long as developers use the right tools for the job (i.e. don't make a 100% Flash website) and follow best practices it won't matter what technologies are around. That said, if you are Flash developer and you've never heard of HTML5 you may want to start looking in to it, right now.]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/895</guid>
<pubDate>Fri, 19 Mar 2010 12:51:30 -0400</pubDate></item>
<item>
<title>HTML5 Script Tag Async Attribute</title>
<link>http://www.iherebydecree.com/archive/id/894</link>
<description><![CDATA[The current <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/">HTML5 working spec</a> gives the script tag some <a href="https://developer.mozilla.org/En/HTML/Element/Script">interesting new attributes</a>. The first is "defer" which tells the browser to wait until the page is ready to run the script. The second is "async" which tells the browser to, when possible, run the script without blocking, or asynchronously. While the benefits of using "defer" may be more-readily perceived, asynchronous JavaScript is a little harder to grasp. <br />
<br />
To implement the async attribute, you must add is as an empty string or with the value "async". Even though it is a boolean attribute, the value "true" is not accepted, though different browsers may be kind in that regard. The async attribute can only be used when the "src" attribute is also being used. Inline JavaScript cannot be asynchronous. A script tag with async turned on would look like this:<br />
&lt;script src="code.js" async&gt;&lt;/script&gt; or<br />
&lt;script src="code.js" async="async"&gt;&lt;/script&gt;<br />
The same implementation is used for "defer". <br />
<br />
You should not use document.write in your asynchronous JavaScript. Because the browser does not block, and because you cannot be sure the DOM is complete, doing so may break or completely remove the DOM. <br />
<br />
To see async in action you need a modern browser. <a href="http://www.getfirefox.com">Firefox 3.6</a> will do the trick. <br />
<br />
I have put together a couple of examples on using the async attribute and decided it would be best to demonstrate them in video. The following video shows the script running in regular, blocking mode, and then with async turned on. I am using Firebug to dramatize the difference. <br />
<br />
<br />
<em>Sorry for the bad audio quality.</em><br />
<br />
So, what if you still need to do document.write? Well, you can use a regular JavaScript call to insert whatever you need on to the page, then add a script tag to the head with the async attribute to act upon the items you have inserted. In this way you can have a lightweight script that ads a few small things to the DOM, then the browser can load the async script and run it as it will. <br />
<br />
Some things to note: <br />
1) If loading JavaScript asynchronously, you may need to be sure that you don't have code elsewhere that depends on that script being loaded. It may not always load before you need it. <br />
<br />
2) Currently it seems as though it will load multiple JavaScript files asynchronously, but in order. Some have reported that as currently implemented that is not the case. It may depend on the browser, so again beware if you have multiple files that rely on a shared library. <br />
<br />
This change will most likely be beneficial for things like ads or widgets that have self-contained scripts that run on the page. That way the ad and widget code won't block the rest of the site if it is slow to load. <br />
<br />
Here is the code used in my video demo:<br />
<a href="http://www.lemieuxster.com/dev/js/asyncTest.html">http://www.lemieuxster.com/dev/js/asyncTest.html</a><br />
<a href="http://www.lemieuxster.com/dev/js/asyncTest2.html">http://www.lemieuxster.com/dev/js/asyncTest2.html</a><br />
<a href="http://www.lemieuxster.com/dev/js/asyncTest.js">http://www.lemieuxster.com/dev/js/asyncTest.js</a><br />
<a href="http://www.lemieuxster.com/dev/js/contentInsert.js">http://www.lemieuxster.com/dev/js/contentInsert.js</a><br />
<br />
On a semi-related note, I recently finished <a href="http://oreilly.com/catalog/9780596517748"><em>JavaScript: The Good Parts</em></a> and I recommend it to anyone that does any amount of JavaScript coding. Especially if you are like me and have learned JavaScript through mostly trial and error. It lays down a solid foundation upon which to build JavaScript expertise. It is not a book for beginners, but it does cover the fundamentals. <br />
]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/894</guid>
<pubDate>Sat, 13 Mar 2010 18:38:56 -0500</pubDate></item>
<item>
<title>Mobile Sites</title>
<link>http://www.iherebydecree.com/archive/id/893</link>
<description><![CDATA[<a href="http://www.widgetbox.com">Widgetbox</a>, my current employer (full disclosure), recently introduced a slick <a href="http://www.widgetbox.com/mobile/make/">mobile site builder.</a> It works much like our popular <a href="http://www.widgetbox.com/make/feed">Blidget</a> product. You take Internet feeds and other content sources and include them in to a mobile-compatible web site. It literally takes minutes to get a basic site up and running and it works really well. My hats off to the team at Widgetbox that put it all together. I got to help a little, but I have been working on another project.<br />
<br />
One really nice feature of the mobile site is that Widgetbox gives you a JavaScript snippet to put on your normal site that will redirect mobile users to your new mobile site. I put a mobile site together for myself and now whenever you visit this site or my portfolio from a mobile phone (iPhone, Android 2.0, or webOS) you will see my mobile site. For those of you on a non-mobile computer, it looks a lot like this: <br />
<br />
<img src="http://media.iherebydecree.com/postimages/lemieuxiphone.jpg" width="580" height="1055" alt="David LeMieux Mobile Site" /><br />
<em>This Is Huge!</em><br />
<br />
You can also go take a look at <a href="http://m.wbx.me/lemieux">http://m.wbx.me/lemieux</a> if you use Safari or Chrome. <br />
<br />
As I stated before, in a parenthetical, the mobile sites currently work best on the iPhone and Android 2.0+ phones. The sites work decently on webOS phones, but the webOS browser isn't as feature rich. webOS 1.4 did improve things quite a bit, however. <br />
<br />
For those interested in the technology we are using, it is mostly based on <a href="http://jqtouch.com/">JQTouch</a> though I know the team made some enhancements and other changes.<br />
<br />
I encourage anyone interested to <a href="http://www.widgetbox.com/mobile/make/">give it a try.</a> Especially since having a mobile presence is becoming increasingly important. ]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/893</guid>
<pubDate>Tue, 09 Mar 2010 22:41:56 -0500</pubDate></item>
<item>
<title>Theory of Imminent Probability</title>
<link>http://www.iherebydecree.com/archive/id/891</link>
<description><![CDATA[Let X equal the amount of time since an event, E, has occurred. Let Op equal the predicted occurrences of E over the lifespan of the event's perpetrator measured in time, L, and let Ok equal the known occurrences of E. <br />
<br />
The probability of E increases as X increases according to:<br />
<br />
P(E) = (X(Op - Ok))/L<br />
<br />
*thanks to Steve Astle for the inspiration.<br />
**this is also known as the <a href="http://en.wikipedia.org/wiki/Gambler%27s_fallacy">Gambler's Fallacy</a><br />
***I love <a href="http://www.theonion.com/articles/cornell-drains-fun-out-of-cinderella-run-by-explai,17149/">The Onion</a>]]></description>
<guid isPermaLink="true">http://www.iherebydecree.com/archive/id/891</guid>
<pubDate>Mon, 08 Mar 2010 15:21:49 -0500</pubDate></item>
</channel>
</rss>
