This site requires Flash Player 9.

NEW - I was honored to be asked by Chris Roberts to build the HUD for his new game. Watch the unveiling live at 10am EDT 10/10/2012!

19 July, 2011 - Launched, a full-custom Bitcoin casino with original software and 26 games.

4 October, 2010 - This is still my site, and always will be- but my work portfolio is now at


24 March, 2009 - Sonia from Wired just wrote a really cool followup piece over at UNPLGGD about our life working on the road in Australia!

24 March, 2009 - Wired Magazine asked us about how we work from beyond the grid...

4 April, 2008 - The Franchise Times loves the Barker Lounge logo.

31 March, 2008 - SexyPollitics gets demo'd on CNN! ...then bought by Fox (5/10/08).

Unique Identifiers...

27 November, 2009 - I was working on a way to check for collusion between players in an online game. In order to do it, I needed to recursively go through every possible pair of players in the database and analyze the actions of player A to player B and vice versa, to generate a score for suspicious behavior. I wanted to combine the actions both ways, rather than having two separate scores for each pair of players. And I wanted to do it with as few database calls and as little post-processing as possible. So for each pair of player ID's, I needed to generate a single unique key in the query that could be used to group average the scores between them at the end of the query, and rank by those.The question was, how do you generate a unique number for any two positive integers, where x!=y, such that f(x,y) = f(y,x) but the resulting combined id would not be generated by any other pair of integers. What I came up with was a way to generate a unique key from any set of positive integers which is valid no matter the order, but which doesn't key to any other set.

My idea was to take the radius of a circle that intersected the integer pair in cartesian space. That alone doesn't guarantee the circle won't intersect any other integer pairs... so I had to add to it the phase multiple of sine and cosine which is the same at those two points on the arc. That works out to:


And means that it doesn't matter which order you feed x and y in, it will generate a unique float for the pair. It reduces to:

x^2+y^2+( (x/y) / (x^2+y^2) )

To add another dimension, just add it to the process and key it to one of the first...

x^2+y^2+z^2+( (x/y) / (x^2+y^2) )+( (x/z) / (x^2+z^2) )

It's a lot faster than ordering your keys or reshuffling the list...

Lost in...

5 November, 2008 - Saigon. Wandering down the backstreets of the world... there's no place I've seen like this. It's hard to believe it still exists. In someone else's nostalgia. Going back to the seventies here, strangely more comfortable than the unfamiliarity of home. Glad to be out of Thailand. Rented a place out in District 3, away from the tourists. Tough-looking chain smoking artists with long hair painting brushstroke-perfect reproductions of Van Gogh and Munch in the wholesale galleries off the road, while throngs of skinny girls on motorbikes crash by over the sidewalks, swerving over every inch of pavement... red banners and flags, portraits of nameless workers working together; everyone here is your equal, no bowing, no fakery, but no hidden malevolence either. Drivers honk listlessly, but exhibit no real frustration with the traffic. Total opposite of repressed, self-hating Bangkok. People are honest, open, sweet and kind. Government excesses all right out in the open here, rare order in chaos of the third world; neither corrupt nor concealed. Populace exhibits infinitely less quotidian concern with soft authority or policing and snitching on others than in Australia or the US. People have a rare sense of self. And pride. In the few displays of hard authority -- a motorcade led by soldiers -- man, people freeze like stunned cattle. But then go back to lounging in the park. And the abuses seem negligible. Overall, there's no limit of positive freedom, if the place is a bit short on the negative kind found back home. I'm not seduced by the system, but I don't find it burdensome, either. I'm just a visitor. My beef's back home, and going away fast. Nothing to fight, nothing to fear. The American dream is right here, alive and well, in every new skyscraper and hip cafe going up. I've never seen a people so industrious and able to do so much with whatever they had at hand. And so I was wrong, about the American apocalypse. Might be time to take that shit novel offline, what's brought me nothing but grief. Thank God we got the deep-fried southern evangelicals off the national stage. But I'll wait and see. The world's center of gravity seems to move west. Rootless young post-religious diaspora castaways, confused social-anarcho grandchildren of immigrant bolsheviks and indios norteƱos, we go thataway, following what signs we can discern.

7 June, 2008 - The Northern Territory. We've been camped for awhile outside the town of Katherine, as it was getting too cold nights in the south...nice up here, but you gotta watch out for the saltwater crocs...

10 May, 2008 - Adelaide. By coincidence. There's no theme going on here. I'm actually here because I couldn't miss the quite literally named Abyssinian Restaurant, likely the only Ethiopian food for 8,000 miles. They make their own injera from rice flour...white, not blue, but not bad considering... and the doro wat is the best (read: hottest) I've had outside of Georgetown. $20 bucks for a complete mosab that'll feed two with leftovers. No complaints here...

Strike Site v.3

21 October, 2007 - It's finally official! After months of halted development while handling lots of other projects, large and small, I've finally managed to get the new site up and running. This is the first complete rewrite since late 2000, when the Flash 5 site went up in all its AS1 glory.

It's been a long, weird ride since then. Special thanks go out to the Away3d development community, particularly Rob and Alexander, for their work on the amazing engine that underlies much of what's going on here graphically. Check it:

We're booked solid through January on several major new projects, including one that'll also include some away3d code. Meanwhile, never content to sit still, we're jumping off-continent again, heading now to the South Seas.

Anyway, it was great fun and sometimes all kinds of hell building this site with all its various UI experiments; it's the greatest kind of puzzle in the world to put these things together and try to see how they might be used. I spend a lot of time decorating other people's houses, so to speak, but it's always more fun working on your own, and since I might not get around to it again for another seven years, I threw the kitchen sink at it. So enjoy playing around, drop me a line and let me know what you think!


StrikeDisplay for JS+HTML5 Canvas

2 March, 2010 - StrikeDisplay is my new framework that puts an AS3-like display chain and event structure on the HTML5 canvas in Javascript. It lets you create Sprites and Tweens, complete with hit detection, and handles all the low-level redrawing. Basically it lets you write simple pseudo-AS3 and renders it for you. It's very fast and lightweight. Doesn't rely on any other frameworks. Doesn't try to parse SWF files or leverage SVG or anything like that. I like Gordon and I love proce55ing but these don't do some of the things that Flash does so easily. If you're an AS3 fan, I think you'll find this very easy to use.

See the example game.

Download the Latest Source.

If you use StrikeDisplay on a site, please paypal $1 to josh (at) !!! That's all I ask. Hope you like it!

AS3 Packages

27 November, 2008 - Came across a couple posts in recent days asking for people who know LAMP. I thought, man, I really oughta know what that is. Some Ruby framework maybe? I had to wikipedia it.
As it turns out, LAMP stands for Linux, Apache, MySQL and PHP. All used in every site we've had online since 2002 at the latest. Marketing and/or middle management jackasses -- will you take your stupid acronyms and go home please, before someone figures out you're just using them as cover for having no idea what you're actually talking about?

19 September, 2008 - Someone at ProDevTips posted really good lightweight AS3 / AMFPHP framework that takes code from Strike Remoting; if you need something a bit less heavy...

17 May, 2008 - Strike Remoting 1.4 (Download) - Now available. THIS IS NOT FOR EVERYBODY. Totally unsupported; I mean, seriously, I'm not taking any responsibility for this thing. It's a miracle I scraped it together into a zip file. Have you seen my workspace? I can't find my laptop for the beer bottles. Still, this works for me, and I though it was worth sharing. New features: Automatic disconnect timer that repeats the call (but only takes the first response)! Definitely not in any other remoting package out there. Totally leak-proof! Optional (and bypassable) error handling methods and expressions locked to an individual PHPAccess instance! Fixed handling of false boolean results. Great for multiplayer games with lots of repetitive verifications. If you haven't tried 1.3 yet, start with that! If you don't know what the hell I'm talking about, hire a programmer from Pakistan for $5.20 an hour. Or if you're the DIY type, download Rosa instead, or better yet, throw away your computer and do something useful like building a small nuclear reactor in your toolshed. Known Issues: See below; they still apply.

Strike Remoting 1.3 (Download) - *New upgrade. There are significant differences from previous versions and code will need to be rewritten if you want to switch. An AS3 package that handles NetConnection calls, specifically designed for AMFPHP. It parses mysql recordsets automatically, up to one level of depth in returned arrays, and also parses other returned types into a neat result object that's roughly analogous to what you got with the AS2 remoting components. It also features an in-movie (optional) debugging panel that lets you see the calls and results.
Known Issues:
- Use with AMF3 is not recommended if you're dealing with recordsets. It's faster, but AMFPHP as of v.1.9 has an undocumented bug in parsing RS results when the call included an array.
- Returning multiple raw recordsets in the same array can cause problems when the recordsets have identical column names. This again appears to be an AMFPHP issue.
- My example doesn't work out of the box. I get this a lot. I keep meaning to comment it up, but in any case you'd have to rewrite pieces of it to make it work even in a very basic way with whatever database you're using. Still, feel free to ask if you're having problems...or better yet, write a new example and I'll post it up!

Tween3D (Download) - A working Tween class for position and rotation with Away3D objects. This isn't the only tween class written for this site, but it's the simplest. Lets you create rotation-only or position-only tweens or combine them into one.
Known Issues: None, but keep in mind this is a limited, in-house class that wasn't really written for public consumption. Maybe you'll find it useful. It does what it does fairly well. It does everything with Euler angles, so if anyone comes up with a slicker Quaternion-based version I'd love to see it.

Early 2008...

- Singlehandedly wrote the Flash, PHP and mySQL that powers the new, a political strip quiz with elements of social networking, through a madly accelerated development process. Credit where due: Jordan Queen did a great job with Drupal customization and additional PHP on the blog, store and other pages, along with some nice graphics and some very tricky integration work. And J.A. de la Luz Lucero is responsible for all the candidate and issue cartoons on the site.
Now for the geeky stuff: I wrote 58 custom actionscript classes and 20 php classes for the front end of the site alone, which remains under 300k to load. An additional 16 of each were written onto a custom StrikeNet back-end, allowing for tens of thousands of questions, quizzes, members, prizes and videos to be managed by a large team while being sync'd over numerous clonable servers dedicated to different purposes. The site represents a whole new way of thinking about streaming flash video. Each video quiz has millions of possible combinations which all need to flow seamlessly from dozens of individual clips. Clips are therefore cached based on the probability of their being needed, using a secure token system to prevent theft, and with intense active memory management throughout. A rewritten version of the open-source tool Xmoov was instrumental in making this possible without using a Flash Media Server.

Quick Links:
StrikeSapphire Bitcoin Casino
Coolhaus Ice Cream
Vickman & Associates
The Barker Lounge

Lilly Anne Me
Angel CityCam
Beverly Hills Law Building

Louie Lucero Team
SexyPolitics - bought out by Fox; now offline. See the CNN Video that caused a ruckus.
Martha Horn

Latest Projects...

Why "I Am" is a syllogism - a brief new take on reverse causality, the many-worlds interpretation and the impossibility of death.

1 March, 2010 - Finished our first package design for Okami foods. Their new BBQ Chipotle Salad Kit is in Costco stores now, with our lovely labels. (First pictures from the display shelf here).

22 September, 2009 - Strike Productions completed a new site for the law firm Vickman & Associates, completely rewriting the site we did for them in 2003. V&A is a very forward-thinking, non-traditional firm in their approach to image. Because their entire brand rests on playing with a modern / traditional dichotomy of fonts and colors, using ordinary web fonts was not an option for the site. To that end, we created a fully SEO'd underlayer in CSS, and coated it with a system of resizable, drop-cappable, paragraph justified flowing text fields over that in Flex to guarantee that the (dynamic) text would always lay as if it had been set in Quark, rather than in a browser. While it's very unusual (for good reason) to choose Flex for a site with so much flowing text, in this case it was the appropriate choice; though it required quite a bit of work to get right. The Flex player itself resizes with the content, then triggers javascript causing the window to resize, approximating the way a browser deals with normal HTML and adding to the "out of flash" feeling we were looking for. In addition, we invoked a subset of swfaddress to keep the references clean. It's not a project we'll ever replicate... this was a one-time bespoke site for a most uncommon client.

1 August, 2009 - Strike Productions worked over the past month with the LA Mayor's office to provide graphics support for a major upgrade they were making to their site. We art directed and designed the icons for all the various issues sections on the site (including the ones here and here), and built two flash pieces, one about LAX and another about the LED street light program.

20 April, 2009 - Another LA city project, the Flash budget calculator ...this had to be done over the weekend... (has since been taken down).

14 April, 2009 - Just finished a new site... workin' through the LA budget mess. Almost had a heart attack getting this one online with a 7-day deadline...

4 October, 2008 - Three new sites up this month!

* Angel Citycam (heavy flash: links offsite) A hot new site for my former employer. I used to do ultra-fast photoshop work for these guys and...well, not that much has changed. Lots of fun 3D stuff on this one, and a new fluid icon-based UI for AS3 / AMFPHP that'll likely see action in the future as well. Flexible galleries and other pages, a whole little CMS, you know the drill. What's cool is that this tree system can work for anything. Ever since 1996 we've been talking about the first tier, second tier, third tier...forget it. This is a whole new paradigm. The site tree is the site; the map is the message, to paraphrase a poor speller.

* Memphis Courtside is a new pay site dealing in inside recruiting information for the Memphis Tigers basketball team. What's cool about it technically is that instead of relying on a pre-made CMS and trying to tie it into both a payment system and a forum in some kind of way where users wouldn't need multiple logins and where both access to particular forums and to particular articles (and parts of articles) could be controlled live by the payment system, I just went ahead and wrote the CMS into StrikeNet, and rolled the forums, blog, and statistics-delivery system myself, with payment integration as the starting point. Screw Drupal, PHPNuke, etc. etc. ... This system's much better. And with a nifty StrikeNet back-end, which means lots of editors with different levels of access, wholesale image archiving across articles, players, schools, users, forums, etc. ... good stuff.

* Mack Winston and the Reflections - This was a quick job for Darian, pulled off in about two days and off the clock, but y'know, great artists need an audience, And I feel like a fuckin' sellout every time I remember how devoted he is to his art form, and what a goddamn corporate pawn I've turned into, whoring myself out to all and sundry. And still my brother the yuppie lawyer tells me I have too much time on my hands. Well, as long as it's time well-spent. Ain't got no youngin's running around, drooling on my furniture, suckin' my soul, and I ain't got no mortgage, I don't pay taxes, and I get to do shit like this as "work" while eating oysters drinking ice cold vodka in a bar where I can actually smoke. I even get to say what's on my mind. Priceless, really. So take your half million a year and...go buy a Yanni CD or something. I'll be listening to Mack, playing poker, and actually getting some enjoyment out of my short fuckin' life on this planet =P

Odds and ends...

- American Apocalypse is still readable online.

- StrikeNet is now the basis of the SexyPolitics back-end, with half a dozen new modules designed specifically for them. Meanwhile, v.1.1 of the franchising platform is on the way, including new project management modules, more user-friendly file naming, customizable desktops,
and improved scalability in existing modules for companies with more than a few hundred franchises.

© 1998-2010, Strike Productions. All rights reserved. Contact josh (at)