phoboslab

Posts tagged with “Random Thoughts”

How much Traffic is too much Traffic for CloudFlare?

Evidence suggests it's 100TB per month.

Before I go into the details I want to state two things first:

So the reason I'm writing this is not because we were kicked (after all, CloudFlare was in the right to do so), but because of how shitty it went down.

Read complete post »

Wednesday, February 13th 2013 / Comments (26)
Tags: Random Thoughts

Where the Innovation Stops

Some time ago a rather large US entertainment company bought a few licenses for my HTML5 Game Engine Impact. They used it for internal prototyping and, as they told me, were quite happy with it.

A few month later I got an email from the company's legal department. They asked me to sign an amendment to the Impact Software license agreement with three additional terms. I assume they wanted to publish a game they made with Impact.

The first term stated that I would not be allowed to use their company's name in marketing material. Fine with me. I wouldn't do that without asking beforehand anyway.

The other two terms however felt a bit strange.

But let's back off for a second. As you may know, I'm the sole author of Impact. I'm based in Germany and self employed. It's a one man show. I'm providing Impact without any warranty and I'm not liable for any damages my software may cause (6. & 7. in the license agreement). Pretty standard.

Now, the license amendment I was to sign stated that my software "does not use, embed or incorporate any software which is subject to any open source or other similar types of license terms". What? Why? How? Is there any software out there that truly honors this term?

At this point it's already clear that I can't sign this. Impact uses John Resig's Simple Inheritance, Array.erase and Function.bind as found in MooTools, parts of DOMReady as found in jQuery and some more snippets and boilerplate code that I would consider public domain.

Typical Huge Company™ I thought. Kind of cute.

The last term however is where it gets truly frightening. In short, I would be held liable for "all damages, liabilities, losses, costs and expenses (including attorneys' fees) relating to any claim, action, suit or proceeding brought by a third party based on any actual or alleged infringement or misappropriation of such third party's intellectual property rights in connection with the use of the software." This goes on for a few more paragraphs.

Let's ignore for a minute that this legalese is written so vaguely that I could be held liable if the company published a game, using my game engine, with art assets they stole from another company. Let's ignore that this multi-billion-dollar company only bought software worth a few hundred USD from me, yet they still want me to pay their legal fees. Ignore that.

The core of the problem is another one: The US Legal System and Patent Law.

Quite frankly, the US Legal System scares me. A Legal System that is vague enough, emotional enough to have spawned a whole subcategory of dramatic movies is not a good indicator for true justice. The notion that the party with more money wins a trial, the whole jury selection process, the fact that there even is a jury. It all seems so absurd from our perspective.

Maybe I have watched too many Hollywood movies. But maybe it really is like this. Just look at the recent Apple vs. Samsung case – a supposedly boring patent trial made convoluted and emotional.

If I ever get sued in the US, who knows what will happen. It's truly unpredictable.

And in the US there's always a reason to get sued. Impact probably (unknowingly) infringes a whole lot of US software patents. All trivial, all with prior art. Yet, proving so in a court case would absolutely ruin my business and me financially.

It's understandable that this entertainment company wanted me to sign their license amendment. It absolutely made sense from their perspective. They are deep in this circus and wanted a bit of certainty that their legal system couldn't provide.

I told them I couldn't sign their amendment and never heard back.

Sometimes I have the feeling that I'm missing out by not being in Silicon Valley, in the epicenter of Startup culture. I was there for a visit and it was extremely energizing and motivational. I loved the people, the mentality, the atmosphere. Instead, I'm in a small and boring town in Germany.

But then again, I feel safer here; I have the freedom to experiment, to innovate. I'm glad that we don't have impeding software patents. Glad that our Legal System is still sane. Glad that my business is based in Germany and not in the US.

Friday, August 31st 2012 / Comments (11)
Tags: Random Thoughts

Letter to John Carmack

The following is an email I sent to John Carmack of Id Software after I had watched his Quakecon 2012 Keynote Speech.

Edit: John Carmack posted his response below.

Hi John,

I watched the live stream of your keynote speech yesterday, and – as every year – I enjoyed it very much. I applaud your openness; it's always refreshing to hear some insights from the gaming industry that is otherwise very secretive. Thank you!

However, I believe your views on JavaScript and WebGL are short sighted.

Nobody pretends that the next AAA-title will be written in JavaScript. The community understands that it's magnitudes slower than native code, but the thing is: it just doesn't matter.

Many, many types of games don't need the absolute best and fastest environment to offer interesting gameplay and graphics. Take a look at X-Type on your iPad or iPhone for instance.

You yourself talked about how frustrating it is that you need 200 lines of code just to set up your screen for rendering on Windows, whereas in the olden days you could just push pixels to the screen with 3 lines of code.

We're there again: take 3 lines of JavaScript and you're drawing an image to a canvas element. Take 20 more lines and you have a rendering loop and a sprite that moves with the arrow keys. And all you need is a text editor and your favorite Browser. That is what JavaScript is all about.

When you're new to programming and still figuring out whether you like it, you don't want to read thick books. You want to see results. Fast. You want pictures dancing on the screen.

JavaScript is the language you should teach your son.


I backed the Oculus Rift Kickstarter yesterday and I fully expect to see significant development for it going on with WebGL. It doesn't matter that JS is "slow" when you're just trying stuff; ease of development is far more important.

Coupled with the openness of the Web, I wouldn't be surprised if much, if not most, of the research for applications of the Rift comes out of the JavaScript community.

Right-Click -> View Source is what made the web so successful and it's awesome that we now have this for 3D graphics as well.

Don't hate JavaScript. It's our generation's Apple II.

Regards,
Dominic

Friday, August 3rd 2012 / Comments (47)
Tags: JavaScript, Random Thoughts

Hate IE with a Passion

There's no denial that HTML5 Gaming is going to be huge. It was a big topic at this year's GDC and there's an arcade machine running an HTML5 game currently at SXSW. I've been at Future of Mobile and onGameStart last year, giving some insight and showing off my Game Engine. HTML5 Gaming is here to stay.

In my talk at onGameStart I had a short section dedicated to Internet Explorer: I apologized to the one guy from Microsoft in the audience - then switched to a slide stating "Hate IE with a Passion" and a next one showing the IE logo with a speech bubble, proclaiming "Please kill me!", disgustingly set in Comic Sans because "IE doesn't deserve a better font".

The part about IE is 26 minutes in.

But wait, didn't I say in an earlier post that IE9 works great with my Game Engine?

IE9's smoothness on the other hand is remarkable. Of all browsers and systems I tested, IE9 subjectively produced the best results.

IE9 was a huge leap forward from IE8 and all the things that are implemented in IE9 work pretty well. There are some problems with <Audio>, but they are not as disastrous as they were with Chrome and Firefox a few month ago. And Microsoft's implementation of the <Canvas> element is one of the fastest around. IE9 is a solid browser.

So where's the problem?

It's all the things that IE9 doesn't do. And I'm not talking about some nice to have features, but Microsoft's general attitude. They pretty much ensure that IE will always stay obsolete and be every developer's last choice. Here's how.

Auto Updates and Release Cycle

This is a big one. IE8 was released in March 2009, IE9 in March 2011 - two years later. There's no release date for IE10 yet, but it will take at least until March next year. Microsoft has finally decided to have some sort of auto update, but it will leave a lot of users behind. It will take years until all IE users have updated.

Compare this with the Chrome and Firefox guys: they release a new version every 6 weeks now. And the best thing - users don't even notice. Chrome's update mechanism is truly invisible to the average user. If you're doing some cutting edge web stuff, you no longer have to say "works in Chrome 17", but just "works in Chrome". Nobody cares about the version number, because everyone is always on the newest version, or at most two versions behind.

From a developers standpoint, this is invaluable. It brings us certainty. We can be sure that any feature that was added 12 weeks ago has now arrived for the vast majority of users.

Not so with IE. Paul Irish recently had a beautiful article about the clusterfuck that is Microsoft's lifecycle policy. It's just sad.

<Video> and <Audio> Codecs

Firefox, Chrome and Opera support the open source WebM and Ogg Theora video codecs and the open source Ogg Vorbis audio codec. IE supports none of these.

I know WebM is controversial, but damn, they are Microsoft. They should be able to come up with a solution that's good for the web: Buy the MPEG-LA and release all h264 patents in the public domain; improve WebM; invent a new, open video codec. Whatever, just do something.

With Ogg Vorbis I can't even think of single reason not to support it. Over the last few month I asked a few guys from Microsoft why they don't support Ogg Vorbis - nobody could give me an answer. Nobody knows. Maybe we are not complaining loud enough?

WebAudio, Fullscreen, Mouselock…

There are ongoing efforts to implement better audio APIs, fullscreen support, mouse lock (all desperately needed for games) and a whole bunch of other stuff. And browser vendors are working together to form a common standard - yet, Microsoft is curiously absent from these discussions.

Of course IE will support those features eventually. Maybe in version 11 or 12, after every other major browser made it clear that these are useful and important. Then it will take another 3-4 years for IE users to update. So we can safely use the fullscreen API for IE in about 6 years. Awesome.

Microsoft should spark those discussions instead of trying to catch up years later.

IE is slowing everyone down and makes your life as a developer more complicated. It actively prevents progress. Microsoft just looks at what everyone else does, implements the bare minimum they need in order to not be completely ignored and annoys us with a yearly update cycle and millions of users unable or unaware to update. This is not how the web works.

I wrote this post because I still care about IE - I still haven't given up completely.

What can you do? Force Microsoft to fix IE or let it die?

Hate IE with a passion!

Wednesday, March 14th 2012 / Comments (22)
Tags: Random Thoughts, Web Technology, HTML5

Multiple Channels for HTML5 Audio

Now that I've calmed down a bit after my The State of HTML5 Audio article, let's see if can actually write something productive.

Here's the deal: for a typical game you may have a sound effect that you want to play very often. In Biolab Disaster the sound of your plasma gun is such an effect. This particular sound has a length of 0.6 seconds, but you sure can mash the shoot button quicker than 1.66 times per second – so to not interrupt the plasma sound each time you press the button, but instead play a new sound we need to have multiple sound “channels”.

Read complete post »

Friday, March 11th 2011 / Comments (10)
Tags: JavaScript, Random Thoughts, HTML5

The State of HTML5 Audio

When I started to work on my JavaScript Game Engine back in October 2009, the biggest problems I encountered were with the new HTML5 Audio Element. The Canvas Element already worked nicely in all browsers that supported it at the time, albeit some were a little slow.

Now, in 2011, the rendering performance for Canvas has been improved dramatically, audio however is still broken in large parts. I think it is time for a change in tone. Be warned, there's some profanity ahead because HTML5 Audio is still that fucked up.

Before we start, you may want to play a quick round of Biolab Disaster or Z-Type and have a look at a simple test case to experience the sound issues first hand.

Read complete post »

Wednesday, March 9th 2011 / Comments (109)
Tags: JavaScript, Random Thoughts, HTML5

Impact Sales Report

It has been a month now that I launched my JavaScript Game Engine. My decision to charge for licenses to use the Engine has been met with a lot of discussions to say the least. People told me I would sell thousands of licenses more, if I had "dual licensed" Impact under the GPL. Some told me I was doing the right thing and putting it under GPL would be a bad idea. Others called me a scammer for charging for something that I had previously advertised as free (which I did not).

So, with all this controversy how has it been going? Quite good actually! In the last 31 days I sold about 150 licenses for Impact. After the initial hype died down, I'm now selling 2 or 3 licenses a day.

In these 31 days I also made about 700€ from AdSense banners that I put on the Biolab Disaster page and later on the Z-Type page (the first few days after Z-Type hit Reddit's front page it was ad-free).

So here's an immensely ugly chart that I put together from Google Analytics, AdSense and my License database:

All the payments for Impact went through PayPal. I've read a lot about how PayPal likes to keep your money, closes your account for no reason and a number of other shenanigans. I also had my share of bad experiences with PayPal a few years earlier, when someone purchased a software of mine through a hacked PayPal account. This time however, I haven't had any problems at all.

Sure, the PayPal website is still as bad as it ever was. I need about 60 seconds to login in to my account each time. Every single page needs at least 10 seconds to load and I'm forwarded from paypal.com to paypal-deutschland.de and back to paypal.com again. PayPals Instant Payment Notification API is equally horrible, but what can I say – it works and there's no other viable solution here in Germany anyway.

On a lighter note: I've sent more emails in the last 31 days than in the 12 month before that combined (236 vs. 124). I got a lot of job offers and even decided to go through a phone interview with Facebook after they approached me (I failed). I also got a lot of "business offers" that I still don't know how to deal with – emails talking about "partnerships" but never with a concrete idea. Maybe I just don't understand marketing.

So all in all I'm very happy with the success of Impact and I will definitely continue development for it.

Monday, January 24th 2011 / Comments (30)
Tags: Random Thoughts

Brace for Impact!

(Silly title, I know, but how could I ever resist such an opportunity?)

My HTML5 Game Engine Impact is now ready. It took some time, but I think it was worth it. I'm proud of what I have achieved and I hope you'll like it too.

Part of why it took so long to put it all together is that it now runs on the iPhone, iPod Touch and iPad. Try it yourself at playbiolab.com and impactjs.com/drop or watch a short video:

All those platforms still have their problems with sound and the iPhone 4 has a hard time filling all its pixels, but the games remain to be playable even on the 1st gen iPod Touch. You can read a bit more about Impact on mobile platforms in the documentation.

Even with iOS support, it might come as a shock to some of you that I am selling Impact, rather than releasing it for free. I love free and open source software and I've been contributing stuff for quite some time now. I had a hard time thinking about whether to release my Game Engine for free. The reason I decided to charge for Impact is a) it is easily the biggest thing I've ever made and I'd love to continue working on it full time, and b) I believe it is worth the money.

Ironically, my decision to sell Impact set back the release date quite a bit. If I'm selling something, I want it to be worth every penny. And even though the engine hasn't been far from completion for some time, I hadn't written a single line of documentation.

I feel that a good documentation is crucial for the success and adoption of any software project. So I set myself the goal to write the best documentation I possibly could.

I'm not a big fan of inline documentation (with documentation generators like JSDoc) because it tends to clutter the source code with trivial statements and – more importantly – makes it easy to write bad documentation. If you are writing the documentation separately from the code, you think about it differently. You think about the documentation as something that works without the source code, something that makes sense without the source code.

You rarely see code examples in automatically generated documentations, but for me as a developer, code examples are oftentimes exactly what I need. Take a look at the documentation for the ig.Entity Class - one of the more complex classes of Impact. This is something documentation generators just can't do.

Of course it took me longer to write the documentation separately than it would have if I wrote it inline, but this is only because it is more in-depth, more thorough.

But don't take my word for it. Please see for yourself!

On a lighter note, I'm currently sending out a few thousand emails to those who signed up on the old Impact landing page. I'm using a 10-line PHP script for that. Let's see how this turns out...

Monday, December 20th 2010 / Comments (83)
Tags: JavaScript, Random Thoughts, HTML5, Canvas, Impact