Rich Rodecker’s blog on flash, flex, actionscript, javascript, and php, with a dash of randomness
flash
Amazon S3 “RequestTimeTooSkewed” error
Jan 21st
I was trying to connect to S3 today, and both Transmit and Forklift were giving me connection errors:
-
<Error>
-
<Code>RequestTimeTooSkewed</Code>
-
<Message>The difference between the request time and the current time is too large.</Message>
-
<MaxAllowedSkewMilliseconds>900000</MaxAllowedSkewMilliseconds>
-
<RequestId>68532E845A05B015</RequestId>
-
<HostId>FfoBOO+7Kh+0Aa35f+Oa0P+Beeym+10LNyLVTGI3VgEHkVjotak8+L1QHaWOsIaf</HostId>
-
<RequestTime>Fri, 22 Jan 2010 00:10:57 GMT</RequestTime>
-
<ServerTime>2010-01-21T23:53:58Z</ServerTime>
-
</Error>
The problem: my system clock was manually set 15 minutes fast. The s3 api will check the request time against the time on the server to see if it's been too long, and if it has, it returns the above error. Fixing the time solved it.
Frameworks 2.0
Nov 2nd
Subititled: "The Rise of 'Burger King' frameworks....'have it your way'".
I am loving the new trend I'm seeing in a lot of the frameworks (both client- and server-side) I've been checking out lately. What I'm seeing is a move away from the monolithic, "do it my way or suffer trying to work around it" approach, towards more architectures that provide a more generalized, "less is more" approach, even to the point that some of the functionality and/or features of the "do-it-all" frameworks are being broken out into smaller, specialized bits that allow the developer to pick and choose between whichever approach best suits their style.
To me, the main benefit of the new trend is readily apparent: just as different individuals would write the same story different ways, the same goes for writing code. For one framework to dictate too much influence over too many aspects of an application, or even worse to make it difficult to extend or adapt to suit your needs, provides too much lock-in and and can hinder more than it's trying to help.
On the flash/flex side, frameworks like RobotLegs , Cairngorm 3, Gaia, and even libraries like CasaLib provide example of this (ok, Gaia probably goes a little further as far as initial structure, but once you start developing it stays out of your way). On the backend, for php you have things such as Konstrukt, a "URI-to-controller-mapping" (i.e., REST) framework which handles "routing based on logic rather than rules", and the Outlet and phpDataMapper ORM frameworks.
One thing about the above mentioned frameworks is that most, if not all, can be used in conjunction with each other (like so). If you don't like the way one part does it's job, you can more than likey swap out that part with a similar one without affecting the other parts of an application, provided you we good with encapsulation and keeping things pretty cleanly separated. This is not an insignificant side effect of the "less-is-more" approach, it's the central theme. It's having it your way.
Thank you, Steve Webster
Oct 27th
Since I always like to give credit where it's due, I just wanted to send a quick thanks to Steve Webster, who noted on his blog today today that he's moving on from Flash/Flex development. His book "Foundation PHP for Flash", as well as his help through the various flash forums and email, were absolutely pivotal in my flash dev career.
Atlassian Offering $10 Starter licenses for most products
Oct 7th
I use JIRA a lot, i think it's probably the best issue-tracking tool, even one of the best overall web-based applications out there. Today I received an email that Atlassian is offering starter licenses for six of its products at $10 each: JIRA, Confluence, Green Hopper, Bamboo, Fisheye, and Crowd. You get 10 users each for JIRA, Confluence, and Green Hopper, 10 plans on Bamboo, 10 committers on FishEye, and 50 users on Crowd. A great deal for some great products.
Gaia – Yeah, I’m gonna have to give it props again
Sep 29th
I know I just posted about Gaia recently, but I'm just about to wrap up the same project and after working with it some more and getting to know it a little better, I really have to say again how impressed I am with it. I'll put it this way: it was the first framework of any kind that I actually enjoyed getting into. SO MUCH of the kaka grunt work is taken care of for you, it just makes development a breeze, and flexible enough to allow you to do whatever you need to do. Much more of an "I'm here to help" vibe then the "YOU WILL FOLLOW MY RULES OR I WILL MAKE YOUR LIFE MISERABLE" crap found in just about every other framework.
I'll say it again: if you're developing Flash sites and not using Gaia, you're probably wasting you're time.
Ruby on Rails Security Guide
Sep 7th
Just read through the Ruby on Rails Security Guide, and i Have to say there is some great info in there. I don't use RoR at all, but a lot of the info would apply to any web application.
Senior Flash/Flex Developer available
Aug 24th
I've recently completed a long-term project, so I'm currently looking for some remote (off-site) freelancing projects. I am an advanced Flex/Actionscript 3 developer with about 6 years of heavy actionscript development.
Key Skills:
Flash – Actionscript 3.0, Flex, AMFPHP, Flash Media Server, AIR, Flex Builder/Eclipse, ElectroServer
Frameworks – PureMVC , Mate, Cairngorm, Gaia
Server Side – PHP, MySQL, Propel ORM, ImageMagick, Amazon EC2/S3/SQS
Other – SVN, CVS, XML, Javascript
Software design – OO design, Design Patterns
My resume can be found at http://www.f1fd.com/resume, and you can email me at f1info@f1fd.com.
Amazon EC2 Error: ‘Has the image been rebundled but not re-registered?’
Jul 29th
Went to launch an ec2 instance tonight and get a wierd error:
Registered machine image manifest for ami-XXXXXXXX and manifest in S3 differ. Has the image been rebundled but not re-registered?
Errr...probably
Anyway, the solution is pretty easy: de-register the old instance and re-register the manifest.xml file in the bucket where your storing your image. Then use the new ami id to launch the instance.
Gaia – Now that’s impressive
Jul 27th
I've doing a "regular" flash-based website, which I haven't done in a while since pretty much all of my work for the last year has been Flex. I've heard a lot about Gaia so I decided to implement it on this project, and I have to say, I am really impressed. There's a small learning curve, and that's just to get used to the 'Gaia flow', which basically everything revolves around individual site sections that transition and out. Once you pick that up (and that happened pretty quickly) you see the beauty of it.
The thing that I think I appreciate about Gaia so far is that it has the capability to let you do really cool, complicated stuff, but you wouldn't know it unless you needed it. Otherwise, it stays somewhere off in the distance ready to be called upon when you need it.
Oh yeah, and it takes care of deep linking and SEO for you as a bonus. Oh yeah part 2, it also throws in right-click menu site navigation, if you'd like.
If you're developing flash sites, you need to look into this. To not would be a foolish waste of your time.
Finally, AS 3 Autocompletion in TextMate
Jul 22nd
Found this at http://blog.simongregory.com/09/as3-autocompletion-in-textmate/ . I'll admit it's not to the level of Flex Builder, but it's great to see actual autocomplete working in TextMate for AS 3. Once installed, hit option-esc to bring up the autocomplete suggestion list. If you choose a function it will give you the the expected parameters:
-
stage.addEventListener(type:String,listener:Function,useCapture:Boolean=false,priority:int=0,useWeakReference:Boolean=false);
This is the flaky part, because the idea is that you can tab through the parameters to enter your values. But say if you wanted to listen for MouseEvent.CLICK, and don't have the MouseEvent class imported alread. You can easily import it by starting to type M.. and hitting apple-shift-I to import it (then again using autocomplete to choose 'CLICK'), but then you can't tab over to the rest of the parameters. I'm going to dig around to see if there's a workaround.
Other than that, seems to work fine with custom classes, i can autocomplete methods and function just fine. Mix this the other tab triggers in the bundle and you really start to feel a big speed increase when busting out the code.
By the way, apparently there is some confusion because there is an older AS3 bundle. I wound up removing the one i already had installed, and using the GetBundles bundle (a bundle that acts like a package manager) to install the newer version, then the autocomplete worked properly.