Wired’s Article on the “Web is Dead”

I had to concur with Wired’s article about the web dying posted a couple of days ago. After reading “both sides” as well as some of the comments, I wanted to offer my brief thoughts regarding the web, open standards, and the paradigm shift to mobile. While I think HTML is and has always been a markup that is valuable in understanding how the web browser displays information, I have to agree that the Technological shift to mobile has completely changed how obtain information.

Consider application use today. We log on with our devices to Pandora, Netflix, Amazon, Facebook,  Twitter, or Hulu – a very small monopoly on their respective functions. Yes, you can use your web browser to access these services, and devices even have their own web browsers built in. But there are so many “apps” these days that one can sort of foresee that learning how to make mobile apps that deal with Java, Flash Lite, or Objective C will be more valuable than knowing how to make web apps in HTML, Flash, and AJAX/Javascript.

Thankfully, good practice in general application development has always been to have the front end a simple output of the backend. The SQL to PHP/JSP/Ruby to frontend will continue though the frontend will just change. The web, being 18 years old now, changed slowly. So in a way I feel web developers have seen this change coming.

As an online game developer, I see how games now connect to dozens of API (such as Facebook) to become an “app” on the service. These services attempt to connect players to social networks which now can be access from someone’s phone. I think online “web” games will experience a shift into “apps” integrated into social networks and streams – you will see games ran on different mobile, console, and tablet devices using the same backend. While this technique has been done by some gaming companies, it’s only been done recently. Watch and see – very soon you’ll see multiplayer games where IPhone players can play chess/checkers/poker against browser players. Eventually, as mobile devices increase in memory and performance, I bet you’ll see some more bandwidth intensive games (such as shooters or real time strategy games) be multiplayer across platforms.

I’m sure there’s much that can be said about how UI/Product designers will be affected. Those job holders will have to increasingly be aware of all of the affordances and constraints of various devices. Yes, making a product for 30 different mobile phones and devices is WAY more difficult than making a web application work for 3 or 4 different browsers and resolutions.

Anyway, I think the lesson and proper reaction is to be thankful of XML, JSON, and general HTTP request modeling that front ends like Flash, Java, Objective C, and all of the open source libraries that allow parsing with the various backend server structures and clouds. And above all we should be thankful for Tim Berners-Lee and his decision to keep the Internet open so we can adapt to these changes – let’s just hope the web remains neutral :-).

What I don’t like about the Wired article is their “debate” on who is to blame for the end of the web as we know it. Should we blame Google, Apple, and Microsoft or should we blame ourselves? My concern isn’t on the debate, my debate is on the principal of sides in the debate.

I think a wiser statement than saying the web is dying is to say the web is evolving. The web has simply evolved to this state. I approach the deterioration of web pages as a natural and predictable phase of the Internet’s evolution based on the capabilities of hardware today. I guess a debate does exist in where giants such Apple releasing products like the IPad, IPhone, or most relevantly the App store accelerated the “virtual selection?” Well, I don’t know how to answer that question, but I think it’s unquestionable that Apple, Google, and Microsoft haven’t helped nurture and shape the Internet to its current state. Who knows? If Google had released that Chrome OS they hinted about earlier this year (that I predicted in 2005 would be an all browser HTML and JavaScript based operating system ) before Apple launched the App store then maybe I would be saying HTML 5 is the future. Maybe now it’s too late and it would be better to go with an Internet OS that’s all app based… Or maybe there’s room for both the web AND the Internet.

My opinion on Steve Job’s Adobe Attack

So since some people have asked me about Steve Job’s letter against Flash, this is what I think.

I have always said that Apple doesn’t want to risk buggy system and battery life (valid reasons. and I think Apple has a right to refuse Flash until Adobe fixes problems and proves Flash Lite can work on mobile phones). But to call themselves “open” because of support for HTML5 is silly.

His last “sixth” reason is where I really disagree. Not allowing third party applications (like Adobe CS 5) to make IPhone applications because of fear of the quality is bullshit.

I ONLY use third party apps to make Flash content. Many people ONLY use third party apps to develop windows/java/android apps.

If I want to make a Flash app I can use Mac OR Windows and a bunch of programs. If I want to make an IPhone app Apple now requires me to buy a Mac and develop with their own Mac software.

Nice job encouraging competition Steve.

My newest game: PassTheGun.com

It’s been out a few weeks already, but I thought I would make a blog post about it.

Pass the Gun is my latest game. The entire game is played on Twitter. Users shoot and/or pass a virtual “gun” to friends on twitter. Users can earn virtual money by pulling the trigger on the gun (also commanded via tweet). However, if the gun goes off then the user is penalized in score. Users can also pass the gun to friends. Every action is recorded and tweeted in the Pass the Gun user @passthegun. People can use the website passthegun.com to track the guns history and their scores.

  1. When the gun is passed to you, you can either pull the trigger or pass the gun onto someone else.
  2. To pull the trigger, tweet @passthegun pull. If the current chamber isn’t loaded, you will survive and some danger money will be added to your score!
  3. To pass the gun onto someone else, tweet @passthegun pass @theirusername. Once they have the gun, it’s their turn to play, and you may no longer act until you receive a gun later on.
  4. The more times you pull the trigger, the greater the risk there is of shooting yourself in the head.
  5. If you shoot yourself (or wait too long!), you lose half your bank.

The design is still ongoing as people play (i.e. the infamous and indefinite beta stage); however, there’s no way to anticipate anything unless the game is iteratively released and changed. But I’m very happy with how it’s turned out so far. Tim Halbert and I have worked out the design and flow of the game.

I am really excited to see how/if it grows. The entire game is based upon social interaction and viralness; it also uses a medium I believe that hasn’t been tapped.

Tim and I were astonished to find that there are other Twitter games out there; however, what separates ours from the rest is that it takes absolutely no registration to play. You simply tweet the instructions once you have the gun and you’ll receive a @reply (and a direct message if you are following the user @passthegun).

I find this medium (Twitter) very interesting for games. Twitter offers so many affordances that mediums such as Facebook, MySpace, or other portals lack. Every single tweet (from a user with his or her settings set to unprotected) is accessible to the entire world. I don’t think people realize how big of a deal that is and how that separates their “platform” from others.

I think Pass the Gun has a great chance of succeeding because:

  • It’s on a platform with a simple and established API
  • Similar to Facebook, Twitter handles all of the registration, security of tweets, and notification mechanisms. Yet it does so in a way that isn’t intrusive and also easy to stop (if anyone doesn’t want to play Pass the Gun they can simply block the user @passthegun)
  • Anyone can play without having to opt in (i.e. Facebook). All it takes is for someone to pass you the gun!
  • The way the game is set up right now is that only players who have played before will receive a new gun when a new gun is spawned (new guns are spawned when a gun is fired). I think this “invitation” only has lots of potential.
  • The game can scale. As soon as my server can’t handle the number of requests that it takes to check Twitter’s servers every 20 seconds (which is the time interval of check right now, which if I had more servers I could easily decrease), I can just use another server to check.
  • The game is simple! The fiction is relevant (Russian Roulette) to normal users.
  • Guns automatically go off after 24 hours of a user receiving the gun. So inactive users won’t stop the game from playing.

Tim and I thought about this design quite a bit before launching and hopefully handle a lot of issues that could happen. Let me know you want a gun by sending me a direct message to my twitter.

Faster Way to Get a Random Row MySQL

So doing order by RAND() limit 0,1 is pretty slow for big tables. So I came up with the following. Basically it uses the ID column to find a random id number between the lowest id in the table (usually it will be 1 since that’s where auto increment start; however, I lots of times delete these rows during testing and don’t reset my auto incrementer). The only stipulation is that your ID doesn’t have any “holes” – basically if you’ve deleted rows in the middle of your table so that the ID column has a set such as n,n+1, n+y,n+y+1, n+y+2… where y > 1. Example would be 1,2,3,5,6,7. Unfortunately, if you are actively deleting rows in the middle of your database you will have to resync a counter column (either the id or some or column) to fill up the holes… Unfortunately, that’s pretty expensive (sort of like reindexing an array to take off holes… same idea). But maybe you can find a balanced solution. Who knows.

Here’s the code:
FROM ptg_users

MAX( ptg_users.id ) – MIN( ptg_users.id ) ) * RAND( )
) + MIN( ptg_users.id ) AS rid
FROM ptg_users
) AS x ON ptg_users.id >= x.rid

Replace ptg_users with the name of your table.

Turing Machine

I was asked by Ian Bogost to make a Turing Machine program. The Turing Machine is a device that basically uses conditions to create some type of program.

You can make your own here. I think it’s a great way to teach someone the basics of computer programming and logic.

Initial Tape: PIG









My New Game: Obechi!

Click here to play my new game Obechi.

Here’s the description of the game written by Tim Halbert (who wrote the music to the game):

From the creators of the Flash sensation Boomshine comes a devious new game where hand/eye co-ordination and a lightning-quick reaction time spell the difference between success and failure. Hundreds of colorful particles floating in the ether – and it’s your job to put them all together. Click and hold down the mouse button to make a ring around the dots, and watch them all gather in the center. With every ring you create you’ll get closer and closer to your target… but miss the target, even by one, and the nucleus is ruined. How quickly can you complete all fifteen levels without making a single mistake? The challenge is on

Special thanks: Tim Halbert, Tim van de Vall, Aneece K, Ajani T, Anna M, MochiMedia, and Kongregate.

New version of Picterizer

*Edit: Renamed app to Picterizer*
A new version of Picterizer has been uploaded. If you haven’t checked it out, this web application generates a picture of pictures (from flickr). Basically you upload your photo from your hard drive. The program uses Flickr to compile the picture. The new version now includes a “variance” factor as well as a new dimension choice (1728×1728) which will fit a 24×24 inch poster.

The new variance (built in) will not ALWAYS select the closest average color picture match of the sliced region. This way the picture won’t have so many repeated pictures on solid color sections.

The variance is 1% multiplied by the number of pictures in the pool. This means that if you select 500 Flickr results that means the program determines the 5 closest pictures to a color slice and chooses a random one. It’s hard to explain, but basically it means that more pictures from the pool of pictures found will be used (at the expense though of possibly losing recognition of the original picture).
Here is a smiley face built with the result for the search “smiley” on Flickr. Even though the middle is solid white, it selects a random choice from the closest 5 white pictures (instead of the whitemost picture) in order to add some variance. You can also see I added a watermark (as I thought it’d be a good idea to get people spreading the application).

Click here to Picterize your own photo.

Remember, you can click “Save” on the bottom right to save it to your hard drive.

Pass it around and send me the photos you guys make with it! And let me know if you find any bugs (I’m sure it isn’t bug free) or have any suggestions.

EventManager 1.3

Dennin Dalke, a Brazillian Flash Developer emailed me a great method for the AS3 EventManager class (read the original post).

//adding multiple events at once.
EventManager.addEventListeners( loader.contentLoaderInfo, [
ProgressEvent.PROGRESS,    onSiteLoad_Progress,
Event.OPEN,                onSiteLoad_Open,
Event.COMPLETE,            onSiteLoad_Complete,
IOErrorEvent.IO_ERROR,    onSiteLoad_IOError
] );

It’s a great method to save retyping so many lines.

Get the updated class here. Also, if you have, are, or planning to use the class I would love to know how!

Nice Review of Boomshine

Here’s a nice review on Boomshine from CasinoGuide.com:

Brain Reaction

Lovers of Internet recreation have played all types of games, including first-person shooters, role-playing, pure action, gambling games via online casinos, mysteries, trivia, typing, and the list goes on and on. The gamers of the world are always looking for something a bit different. Enter Boomshine, a browser-based flash game that cleverly blends common sense with a little bit of luck, and the end result is summed up in one word: Entertaining.

Boomshine is a seemingly simplistic game controlled via your browser’s flash player. The object of the game is to click on any one of a number of randomly floating circles. Doing this will cause the clicked circle to expand (boom, in a sense), and the circumference will then envelop surrounding circles close enough to the action. What you’re left with – if done correctly – is a massive chain reaction of circles. Think about the way the Big Bang is taught, and how the universe began with a boom and then a chain reaction.

The game was created by Danny Miller, with the music supplied by Tim Halbert. The mouse-controlled Boomshine is addictive, mostly because it is challenging to complete each new level. Boomshine starts out simple, with users only having to envelop one other circle in the vicinity. But as the game progresses, you’re given tougher tasks – such as setting off a chain reaction of 27 spheres out of 45 floating within the perimeter. And though it may sound easy, a player’s timing and sense of direction must blend perfectly to advance through the more difficult levels.

Since the spheres carom off of the edges, billiards players might have a slight advantage. Anticipating which direction the circles are going is paramount; also knowing one click in the corner can prompt a chain reaction across the entire screen is a useful tidbit of knowledge. Players may spend their time chasing the direction of the circles, when they actually need to be focusing on how to reach all four corner of the square by way of chain reaction.

The game consists of 12 fun levels, with new high scores posted regularly. Once players get a feel for the task, the game moves pretty swiftly. But with the scoring system, barely squeaking by will not suffice; set off the ultimate chain reaction in each level to hold the high score. It’s definitely a challenge.

A Very Basic and Brief Introduction to HTML

HTML is a markup language. One of the first principals you should know is that HTML is actually just another form of a text file. For example, text files (like Microsoft Word files) don’t change. Notepad or Microsoft Word just knows how to open the files and display the files in a readable way. The same is with HTML. Web browsers read HTML files just like Microsoft Word reads .DOC files.

The reason HTML has all those < and > tags is because HTML was meant to be human readable. That way people can sort of, by reading the code, understand what’s going on and why the page is displayed in a certain way. Unfortunately, there needs to be a balance between what is easy for humans to read and something a computer can read.

For example, consider the HTML:


will display Hello in bold text on a webpage. Instead of having code that looks like

Hey browser, can you show the word Hello in bold text for me?

Computers have a hard time understanding and interpreting sentences like that. If they did know how to it’d be very computationally intensive. Consequently, markup languages like HTML are short and distinguishable so that web browsers can understand what the author of the webpage intended without using too much computational power. It’s much easier for a computer to search for < or > then it is to interpret an English sentence. HTML is a good universal language for web browsers to interpret.