Bigbot Smash City - Proof of concept demo

(download)

I'm finally creating a game rather than just another boring app. Here's the proof-of-concept demo video for it! Please check it out, and share it with others. 

BigBot Smash City (working Title) is an action-packed game for iPhone/iPod touch where you control a massive giant robot to smash up human cities in 3D and fight off mankind to find energy and survive.

Some planned features:
- levels based on actual human cities (i.e. New York, Tokyo, Paris, etc...) and towns
- smash/blast/stomp buildings to make them explode, crumble, and collapse
- stomp on, incinerate, and blast puny humans who come in unending numbers
- dozens of enemy types, from human infantry to battleships try to bring your robot down
- choose from multiple different massive robots to smash cities with
- upgrade your robots with different weapons, armor and equipment

 

I'm waiting on Kickstarter.com to approve my idea so I can raise some funds to get the time to finish developing it.

Top 7 Ways To Crash Internet Explorer

Microsoft Internet Explorer aka Exploder is a fun browser. Even a guy like myself that is no hacker at all can crash it with ease, at least version 6 (IE6). In fact one line of code is enough, even less. It’s ridiculous. The most ludicrous fact about it: There are manifold ways to do just that: Crash Internet Explorer by just opening a web page.

So I present to you the 7 best methods of crashing Internet Explorer 6! IE7 is immune against most of them, but not all.

  1. <STYLE>@;/* Source
  2. <input type crash> Source
  3. <body onLoad=”window()”> Source
  4. <style>*{position:relative}</style><table><input></table> Source
  5. <script>for (x in document.write) { document.write(x);}</script> Source
  6. Event handler crash, example longer than 1 line: Source
  7. Ordered list crash, example longer than 1 line: Source, the only one btw. that does not always work, you have to mouse over or click the first item of the list.

For me on my Internet Explorer 6.00 all of them worked fine. I couldn’t upload them to my server though as my hosting provider probably filters such “malicious” code out.

By demonstrating those seven methods to your peers you can maybe convince them to dump Exploder and start using a browser.

This article came out in 2007 on simple ways that cause IE6 to crash.

My wife is currently doing web design work for a client whose company is still using Internet Explorer 6. It's amazing that all it takes to cripple this company is for some disgruntled programmer to add the following 18 characters to their enterprise code:  <input type crash>

If you or your company is still using IE6, stop it before someone shuts you down. If your IT people are forcing you to use IE6, fire them.

Google to End Support for IE6 - PCWorld

Google will phase out support for Microsoft's Internet Explorer 6 Web browser starting in March, the company said Friday.

"Many other companies have already stopped supporting older browsers like Internet Explorer 6.0 as well as browsers that are not supported by their own manufacturers. We're also going to begin phasing out our support, starting with Google Docs and Google Sites," Rajen Sheth, Google Apps senior product manager, wrote in a blog post Friday.

The announcement comes more than two weeks after Google reported that its servers had been the target of attacks originating in China. Those attacks targeted a vulnerability in IE 6, for which Microsoft has since issued a fix.

Support for IE6 in Google Docs and Google Sites will end March 1, Sheth said in the post. At that point, IE6 users who try to access Docs or Sites may find that "key functionality" won't work properly, he said.

Sheth suggested that customers upgrade to Internet Explorer 7, Mozilla Firefox 3.0, Google Chrome 4.0 or Safari 3.0, or more recent versions of those browsers.

According to StatCounter, IE6 has 18 percent market share among browsers.

This news made my day.

Why does Adobe Acrobat Reader 9 take up 290 MB?

I was installing Adobe Acrobat Reader 9 on my mac. After downloading the 44 MB installer, I ran it, and this screen popped up:

Ridiculous

Why does Adobe Reader take up 290.1 MB? Apparently, it includes "Acrobat.com on Adobe AIR". This means it's going to install a bunch of extra junk on my system when all I wanted to do was to see if my PDF file works properly with Acrobat Reader. I'd classify this as malware.

Web Addresses to Include Chinese and Arabic Characters

by Caleb Johnson (RSS feed) — Oct 26th 2009 at 2:00PM

Despite what some might say, it's not often that an opportunity comes along to change the lives of billions of people. But that's just what the Internet Corporation for Assigned Names and Numbers (ICANN) will do by changing the rules of Web addresses, shaking up the Internet like never before.

According to the Daily Mail, the ICANN board will pass a resolution this Friday that will allow entire Web addresses to be written in non-Latin alphabets. Those languages could be anything from Japanese to Arabic, or Hindi to Greek. The change means that many people around the world could more easily navigate the Web, and even create Web sites in their native tongue. Of the 1.6 billion people who use the Internet, about half are native speakers of languages that do not use the Latin alphabet. "This is the biggest change technically to the Internet since it was invented 40 years ago," said ICANN chairman Peter Dengate Thrush at a press conference in Seoul, South Korea yesterday. If approved, the first non-Roman domain names should hit the Web sometime in mid-2010.


But why now? For years, the group has been testing a new translation system to convert multiple scripts into a single address, and it finally feels ready to put the system to use.

We don't want to count our chickens before they hatch, but this is big news, folks. It's akin to the introduction of a three-point line in basketball, or the forward pass in football. This resolution will totally change the game, so you might want to brush up your Arabic or Chinese. [From: Daily Mail and DownloadSquad]

Uggh. Is this going to cause problems or what? If you want to email someone on an email server with a non-Latin domain name, would you need to somehow type in those funky non-Latin characters? Talk about Babel all over again (Genesis 11:1-9)!

Thoughts on the Aloha on Rails Conference (Part 2 of 2)

Here's Part 2 of my thoughts on the Aloha on Rails technical conference that I attended earlier this month. (Oct 5-6)  I want to write down what I personally got out of the conference before I forget it. I meant to do this sooner, but I've been busy applying some of what I've learned. This post covers the sessions I attended on Day 2 of the conference.

Jim Weirich's session: Grand Unified Theory of Software Design

  • Jim introduced a term called connascense, which for software design purposes means the way two pieces of code are coupled, or two things that have to change together when one of them changes, in order to preserve correctness. There are different degrees of connascence:
    • Connascence of Name (CoN): where two components use the same name to couple, such as passing named parameters within a hash, or using  the name of a method or variable to refer to the same thing.
    • Connascence of Position (CoP): where the order matters, such as the order of parameters in a method call, or where positions in arrays are hardcoded. The coupling can be made more robust by converting this down to CoN.
    • Connascence of Meaning (CoM): using values to mean something for the two components. (Like "404" error code means page not found). These can be assigned to constants to somewhat reduce to CoN, but even in the assignment of values to constants, there needs to be contranascence (where two components have to be different, in order to preserve correctness) between the values to that the same value isn't assigned to different constants that are supposed to be different.
    • Connascence of Algorithm (CoA): the two components depend on the same algorithm to work right. For example if there is a method that creates a checksum (add_check_digit) and a check method to verify that a checksum matches. Can DRY (don't repeat yourself) it out by having a separate method that does the algorithm, and having both these methods call that method. (CoA->CoN)
  • Rule of Software Locality - Within the same module, there is stronger connascence. When it is farther away, use weaker forms of connascence.
  • Rule of Degree - convert higher degrees of connascence into weaker forms.
  • Thoughts: I can see how this makes software easier to understand and more maintainable - certainly for Ruby On Rails, this seems to be the way it is evolving. I'm not sure this applies as well to lower level languages though, or when optimizing for performance. Say you want to write a highly optimized device driver, or you want the data to be as small as possible (sending an array in json using CoP and CoM, as opposed to sending a json hash), you might want to use a stronger form of connascence.
  • There were several more forms of connascence he talked about, that seem to be a bit different than the previous ones: 
    • Connascence of Timing: using mutual exclusion in race condition
    • Connascence of Execution: Depends on the order of execution
    • Connascence of Identity: getting two separate objects to represent the same logical object (two pointers to the same object)
    • Connascence of Values: constraints on the values:  in graphics, left < right, top < bottom
    • Connascence is only part of the grand unified theory of software design. There are other parts: cohesion and comprehensibility (human factor).

Chad Pytel and Tammer Saleh's session: You're Doing It Wrong
  • When refactoring (when working on a legacy code rescue project) talk with your client to see if they actually still need the feature
  • In rescues where there are no existing automated tests, write integration tests for existing behavior, and unit tests for new features
  • Webrat & Selenium are key for doing these tests
  • Add functional tests for new controllers, one at a time
  • Rake tests can be tested too by moving their methods into a model. Make the rake task skinny.
  • Rails views are composed of many parts (html, css, js, ruby). Know your rails helpers and how they change across rails releases.
  • Use the yield/content_for helpers to do page titles (the <title> tag in the head) for better MVC separation

Charles Nutter's session: JRuby From Zero to Awesome
This talk/demo was amazing! Charles gave several demos of JRuby projects that just blew me away on how easy it was to use java functionality from ruby, calling methods in a very ruby-friendly way. If I have to build new stuff on top of legacy java code, then I'll definitely consider using JRuby to do it.

Blake Mizerany's session: Forget Kindergarten, Learn to Scale
Some tips on scaling, based on cloud computing with heroku
  • Don't keep state on the local environment. Everything must be disposable.
  • Share nothing. The server is not for persistent storage of dynamic assets. (temp uploaded files)
  • Be impatient: Keep everything under 200 ms. Use caching if it is needed. Rack::Cache and Memcached
  • Procrastinate: If it takes over 200 ms, run a background job.
  • Be unfair:  handle monsters separately

Anthony Eden's session: Technical Debt - Rewrite or Refactor
  • technical debt is inevitable, so plan for it, or pay it back with interest or time
  • TATFT!
  • minimize code so you can pay back technical debt quickly
  • pair programming disseminates knowledge
  • Set aside (schedule) time to deal with technical debt
  • Tasks: 
    • get rid of cruft (commented code)
    • remove methods that are no longer invoked
    • write tests for untested code,
    • use the client to see if any more code can be thrown away
    • refactor existing monster code into smaller pieces, DRY it up
  • Candidates for rewrite: 
    • if there are no existing tests, you're very likely going to need a rewrite
    • low quality code
    • owner of code is no longer there

Corey Donohoe's session: Everything I Know About Being an Open Source Hacker I Learned From Indie Hip Hop
I learned much more about the Hip Hop community than about the Rails community from this talk. Key takeaway points for me:
  1. Meet other developers, perhaps at a local meetup, or attend 2 conferences a year
  2. Check out other developers' code on github, and post your own.

Panel discussion: Modeling Maturity
  • railsmaturitymodel.com
  • There are very different views on this. Some very strong opposing views against having a Rails Maturity Model (reminds of all the bad things of CMM)
  • Related question: How does the client know who is legit and uses best practices, and who is a charlatan?
  • Check ruby-toolbox.com for good new plugins

Benjamin Sandofsky's session: Staying Above the Ghetto
  • RoR is a luxury brand: affected by the economy, and frequently copied
  • Our values as a rails community: aesthetics, pragmatic, freedom, passion
  • Our bane: commodity developers - the kind who write corporate training sites, cheap, and don't care
  • Learn, create, share

__________

For me personally, I've got some todo's based on what I learned: