Archive for December, 2007

SWX web site spam hack

Danny emailed me today to say that he'd noticed spam links on the SWX web site (thanks, man!) When I looked, I couldn't see anything. That is, until I looked at the source.

Somehow, someone managed to inject spam links and hide them using display:none. The actual code starts like this:

<u style="display: none">

And then includes the spam links.

I feel they may have gotten in through a vulnerability in the older version of Wordpress that the site is running. I am now in the process of upgrading it to the latest version (2.3.2) and having my web host check the servers.

In the meanwhile, though, I didn't want the bastards to gain another penny from having hacked my site so I whipped up a very simple Wordpress plugin that checks for and removes those links.

It's called Remove Hidden Spam and you can download it here (.zip; 718 bytes) in case you're affected by this also (Danny told me that Keith was hit by this recently too.) Just copy it to your plugins folder and activate it.

SWX contest winners announced

The SWX contest winners have been announced.

Read all about it on the SWX blog.

Apple releases a fix for Leopard keyboard freezes

John Grden just forwarded me an email form John Olsen (thanks guys) alerting me that Apple has reportedly released a fix for the keyboard freezing issue in Leopard.

That's good news but, to tell you the truth, I'm going to wait a couple of months at least before even considering giving Leopard another shot. See, the thing is, I'm really happy on Tiger and downgrading to it made me realize just how many little issues I had with Leopard (responsiveness, general quirkiness, etc.) I absolutely love how stable Tiger is. I love how Tiger looks (yes, I love my non-transparent menu bar, rounded corners and blue apple logo) and I love how everything (all applications, etc.) work. I love the level of polish Tiger has.

Tiger doesn't remind me of Windows at all and Leopard did.

Part of Apple's corporate culture is its arrogance. The problem with arrogance is that, combined with incompetence it makes you appear a fool. Apple can be as arrogant as they want with Tiger. It's a shining beacon of stability and aesthetics, a perfect marriage of form and function. It just works. Not so with Leopard, at least not yet.

In Leopard, form trumps function and eye-candy exists for its own sake while fundamental characteristics of the operating system like stability are compromised.

I'm personally going to wait until Apple or third parties at least give me the option to make Leopard more like Tiger before I upgrade again. I'm guessing this will be in the 10.5.2 - 10.5.4 timeframe.

And really, I don't miss anything that Leopard had. I definitely do not miss the IMHO butt ugly interface. The Finder enhancements were really nice (I loved the breadcrumbs, for one), spotlight was far more useful and I did enjoy the integration between Mail and iCal but I value a stable system far more than any of these. And I didn't really get to use Time Machine as I'm on a laptop and don't have a USB drive plugged in all the time (here's hoping for that dual hard-drive laptop in '08, Apple... and I'll have that second one removable/hot swappable if you don't mind!) :)

I know that Leopard is working well for some of you and that some of you are very happy with it and that's great! But I see Leopard as more of an alternative to Tiger than an upgrade.

At the end of the day, the kitty that still has this early adopter's heart is Tiger.

I’m downgrading to Tiger

That's it, I've had it with Leopard. All the issues I've been having are driving me nuts. Leopard is just not stable enough for professional use. I almost feel like a Windows user again. (OK, not entirely, but I definitely don't feel like a Mac user anymore!)

So today, I bid adieu to Leopard and downgrade to Tiger.

I have to say that I am not looking forward to the hassle. Instead of being arrogant pricks and making fun of Vista, I wish Apple would provide a downgrade option like Vista has to make this easier.

No, Adobe has not just killed SWX :)

The reports of SWX's death have been greatly exaggerated. Well, OK, the one report, that is.

I'm referring to the blog post by David Arno that asks Has Adobe just killed SWX?

David's post refers to the recent opening of the AMF format (good one, Adobe, and about time, I'd say) and the open source release of BlazeDS.

David states:

Flash-based RIA developers wanting to pass data between the client and a back-end server have had to choose between three unappealing technologies: XML/JSON, Adobe’s official remoting technologies and unofficial third party tools based on “hacking” Adobe file formats. The first suffers from serialization/ deserialization and verbose data format overheads. The second is just plain expensive (and only works with Java back-ends). The third is of dubious legality.

It's a good summary. Unfortunately, it's not accurate. Specifically, the bit about SWX being of "dubious legality".

Just to be clear, let me state this for the record: There is no doubt whatsoever about the legality of SWX, SWX RPC, SWX PHP or of any of the other implementations of SWX RPC (SWX Ruby, SWX Java, etc.)

It is actually quite unfortunate that Adobe's previously closed approach to all things Flash, including the "you can't make server products if you read the spec" clause in the Flash 8 spec, casts a shadow of doubt over products like SWX that benefit the Flash Platform instead of celebrating their contribution to the ecosystem. Well, I didn't read the SWF spec to create the AVM1 version of SWX PHP so it is not of "debious legality". Stating that SWX PHP is of "dubious legality" is nothing but FUD.

The same goes for the upcoming AVM2 version of SWX PHP that is based on the Flash 9 spec. The Flash 9 spec does not have the same server product restriction of the previous SWF specs so we are using it to create the AVM2 implementation.

David continues:

Has Adobe just killed SWX? Until today, SWX lacked (as far as I could tell) the ability to pass complex objects back and forth between server and client, but it more than made up for this by the server providing the data as native SWF files.

Unfortunately, again, the information here is just plain wrong.

The whole idea behind SWX is that you can pass complex objects back and forth between the tiers easily -- as they are passed as native data structures. When passing a complex data structure from client to server, SWX RPC encodes it in JSON format. When getting complex (and simple) data types from the server, you receive them as native ActionScript objects within a SWF. In fact, that's what SWX RPC is all about: native data -- both simple and complex.

Finally, David states:

However now that AMFPHP is fully legal and SWX remains in the legal grey zone, to me the choice between AMFPHP and SWX becomes a no-brainer. I can see no reason now to use SWX.

Again, SWX is not in a "legal grey zone" and the reasons for using SWX are the same as they have always been: simplicity.

And, as SWX contains AMFPHP as a library, you are not locked into using SWX RPC in your application. You can start out using the SWX gateway and then switch to using the AMF gateway (or JSON or one of the other gateways provided by AMFPHP) without re-writing your server-side classes. Or use both gateways if you want to: AMF for a web view, for example, and SWX for a mobile view.

And finally, remember that SWX RPC is still the only performant RPC solution for Flash Lite 2+ as remoting is not supported there. As evidenced by the entries in the latest SWX contest (one of the sponsors of which is Adobe), though, I would say that SWX use is far greater on the web than on mobile. This, as I understand from feedback on the Flash Mobile group, is due to the relative lack of Flash Lite 2/3 development in general in the real world currently.

I am personally delighted that Adobe have opened up the AMF protocol and released an open source version of FDS/LiveCycle Data Services. This is something I've been pushing them to do both privately and publicly for the longest time so I couldn't be happier. It's a big win for the Flash Platform.

Also, I'm very happy to see the progress made by Wade on AMFPHP. As I mentioned earlier, SWX PHP actually uses AMFPHP as a library and I have always supported (and continue to support) the AMFPHP project (just take a cursory glance at the web site if you need proof of that!) Heck, we'd all be calling it INFRNO if it wasn't for me! :)

I see AMFPHP and SWX as complimentary products. I made it a primary design decision of SWX PHP to have it be compatible with AMFPHP. I also urge other implementations of SWX RPC to maintain compatibility with the dominant open source AMF implementation on their respective platforms.

Adobe's latest move, far from killing SWX, will only strengthen the Flash Platform and all products on it, including SWX by winning us more developers.

The mystery of the rune…

2008. On the web.

Meet Relly

Poppy Copy: excellent copywriting for web

During my talk at the Sussex Geek Dinner recently, I mentioned how lucky I am to be surrounded by friends who are smarter and more talented than I am. I'd like to introduce you to one of them. Her name's Cheryl Annett-Baker but we all call her Relly.

Apart from being one of the most talented crafters I know, Relly is also an excellent copywriter and she just started her freelance copywriting business called Poppy Copy.

If you're looking for an excellent copywriter, Relly's the wordsmith for you! :)

Ralph’s Papervision training rocked!

I just got back to Brighton after a two-day brain dump where Ralph literally injected us with his vast knowledge of Papervision. I'm tired yet invigorated and teeming with ideas :) Thanks, Ralph!

I hope to make time in the coming days to at least play a little with PV3D and post some stuff up here.

Making captchas less annoying

I personally find captchas annoying. And most of them are completely inaccessible to people with visual problems. But if you find that you must implement a captcha, you can at least try and make it as painless as possible for the user to use.

First off, let's review what the purpose of a captcha is. A captcha aims to differentiate human beings from bots. As such, there is nothing more annoying than proving to a captcha that you are a human being by replying correctly to it only to be asked again and again when form validation fails for some other field.

So here's a pattern for captchas that should improve the usability of systems that employ them:

If the captcha is valid but form validation fails for some other reason, store the fact that the user is a human being as a cookie or on the server and don't present the captcha to the same user next time the same form is submitted. You can even go so far as to not present that user (based on IP/cookie/session) with captchas for other forms. If you're worried about spammers getting through, you can limit this to a specific period of time (ten minutes, an hour, a day, etc.)

Update: I just saw that Google's Blogger implements a similar pattern to what I describe here in their commenting system and doesn't keep presenting you with the captcha once it's reasonably sure that you're human. Good one, Google! :)

SWX Contest entries published!

The 19 20 22 entries that we received for the SWX Contest have now been published on the SWX Contest page for public viewing.

Due to the manageable number of entries, we're going to forego the first round of public voting (although you are welcome to leave comments on the entries) and allow our outstanding panel of judges to pick the winners from the Web, API, and Mobile categories in a single round of voting.

We received 8 9 10 entries in the web category, 3 4 in the mobile category, and we now have 8 new SWX APIs thanks to the contest, ranging from a generic XML to SWX parser called SWXml to APIs for popular services such as Wordpress, Backpack, Technorati, Kuler, and Verisign/Paypal Payments Pro.

I want to take this opportunity to thank all the contestants for their hard work. Here's wishing all of you the best of luck!

The winners will be announced on December 24th, 2007.

Also, a big thank you to our sponsors: Adobe UK, Lynda.com, Burak Kalayci (ASV), Friends of ED, and yours truly (Nabaztag bunnies and iPod Touches).

View the SWX Contest entries.

Update: I messed up and forgot to add Julio Rodriguez's entry to the Web category this morning. I've now updated the page with his entry and informed the judges. Thanks for getting in touch with me Julio and apologies for the initial omission.

Update: John Hattan's entries in the Web and Mobile categories also somehow ended up in the black hole of my email. Sorry, John, I've added them to the contest page and informed the judges now.






Bad Behavior has blocked 0 access attempts in the last 7 days.