Posts Tagged ‘HTML5’

The great thing about HTML5 being open source

Monday, September 6th, 2010

I’ve said on here before that one of the things some developers might not like about HTML5 is that others can easily see the code of anything you make. But at the same time, for anyone trying to learn it’s as easy as right-click > view source. I love to take a look at code and figure out what does what and that’s one of the great benefits of technology like HTML5/CSS/JavaScript. It’s all there in the open, so if you see something that interests you, you can very easily take a peak.

I’ve seen some amazing things done with Flash and while I would love to know how they did it, you need a decompiler to take a look at the code and all the assets. Some decompilers will rename library items and variables so it’s a lot harder to figure out what does what. Plus, in some ways, I’ve always felt there was an ethical question when it comes to decompling .swf files.

I love going to a site, like Mr. Doob’s, and being able to see the code so easily. It might be one of the reason’s that I’ve spent so much time lately messing around with HTML5, CSS3 and JavaScript.

I recently reader Hackers: Heroes of the Computer Revolution and one of the main themes throughout the book was the Hacker Ethic, something that said make your hardware or software open source so that others could see what you’ve done and improve it which will make things better for everyone. If HTML5 takes off like it has the potential too, this idea will come back whether developers want it to or not.

Hopefully, developers out there take advantage of this and learn from what others have done. One of the things that gave Flash some bad press was developers making bloated and slow running programs. If a developer has the ability to look at someone else’s organized and efficent code, it might make them a better programmer and users will get better and smoother running programs.

Now if we can just get rid of the phases like “Runs best in Webkit” the future of the web is going to be wide open.

HTML5 games aren’t killing anything anytime soon

Thursday, August 26th, 2010

I came across the website HTML5games.com yesterday and there is some amazing stuff there. It’s one of those sites that makes you believe all the hype about HTML5. We’ll be making games that work for everyone without the need for a plug-in and it will all be open-source! This will all be true one day but I think we have a while yet. Why? A lot of the examples only work right in Safari or Chrome. It’s been a big enough challenge to get people to upgrade from Internet Explorer 6 to 7 and 8, and if IE9 doesn’t live up to it’s hype, I doubt enough people will move to Safari and Chrome to make HTML5 games a killer.

Also, take a look under the hood of some of these games. I’m amazed by the amount of JavaScript needed just to make something like Pong. I’ve said this before, but right not making HTML5 games is something that very experienced programmers are able to do. One of the things that made Flash great for making games is the actual Flash IDE. It’s pretty easy to get started with making a simple game because it only takes about 20 lines of code to create an object that you can control with the keyboard. Some of the examples I’ve seen take multiple JS files with a hundred lines of code each. The learning curve for HTML5 games is pretty high and I still think it’s going to take some kind of really kick ass IDE to allow beginners to start learning comfortably.

And I know there are developers out there that don’t want people to be able to take a look at their code and it’s as easy as right-click/view source to see how HTML5 games are made. And if you’ve spent weeks building a game for a company and then once you release it, anyone can come along and copy your code, it might be a reason for not wanting to make it using HTML5 and JavaScript. I realize this is all open source, but imagine how easy it would be to just copy and paste all the code and change the graphics a little bit.

I know this might come across as a “Flash guy” ranting but I’ve been spending a lot of time working with JavaScript and jQuery. I’ve never been a big fan of JavaScript but libraries like jQuery make it a lot easier to use. But I think for things like HTML5 games to take off, we’re going to need all the browsers to run JavaScript at the same speed and either an improved version of JS or an IDE that makes it easier to build them.

There’s HTML5 and then there’s HTML5

Monday, August 16th, 2010

I remember back in school, sometime in my second year, I read an article on A List Apart called A Preview of HTML5 and I was excited about the new tags, like <header> and <footer>. I was pretty sure <video> was going to make life a lot easier. But, really, that was it, it wasn’t a Flash killer or something to build amazing web apps, it was just a new version of HTML that would make my work a little easier. And over the last few years, I’d read articles about it and I was waiting for the day when I could start building sites using it. But then Apple changed everything.

We had a client talk to us about building them a new site and one of their questions was whether or not we knew how to build things using HTML5. It took me a minute, but I realized they didn’t mean HTML5 they way I thought about, they meant it the way Apple had been talking about it, as an all encompassing term that included CSS3 and JavaScript. And over the last six months this has pretty much become the norm, HTML5 means everything that you’d find in something like Apple’s HTML5 showcase or Google’s HTML5Rocks. Maybe it’s just me, but I don’t remember CSS3 transitions being a part of the HTML5 spec.

So it seems that HTML5 has become a term like Ajax, which stands for Asynchronous JavaScript and XML, even though it doesn’t have to include XML. Somebody just thought it sounded cool and started using it to reference a group of technologies that the name didn’t necessarily apply to. In the case of HTML5, it seems like it’s companies like Apple and Google that have spread the use of it as a name for a group of technologies that aren’t really under it’s umbrella.

But it seems that the web design and development community have accept this use and things like HTML5 apps, which use more than just HTML5 to work, are becoming widespread. I don’t have a problem with this but I just find it interesting that HTML5 has become an accepted buzz word so quickly and it’s acceptance is so widespread. And the next time a client brings up the term HTML5, I’ll know what they mean.

Move objects around the <canvas> using the keyboard and jQuery

Thursday, August 12th, 2010

One of the things that Flash is great at is making games and it’s one of the things that people are hyping the <canvas> tag being able to take over. Personally, I think it’s going to be a couple of years before that happens and one of the reasons is how much easier it is to build games using Flash. In fact, I was trying to figure out how to allow a user to move a block around a <canvas> using the arrow keys and I was getting pretty frustrated. Until I realized I could just use jQuery.

I’m not going to go through the whole thing because it’s just the next step from an earlier <canvas> post I did. But I’ll go over the changes and the great thing is, there isn’t too many. Plus, if you’ve ever made something similar in Flash, this will seem pretty familiar.

The HTML:

1
2
3
<body onload="init();">
<canvas id="canvas" width="500" height="400"></canvas>
</body>

Just setting the <canvas> height and width and setting the init() function to fire after the page loads.

The CSS:

1
2
3
4
5
canvas {
  display:block;
  margin:auto;
  border:1px dashed black;
}

Nothing interesting here, a dashed border so we can see the edges of the <canvas> and the margin: auto to center it.

The JavaScript:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
var context;
var rightKey = false;
var leftKey = false;
var upKey = false;
var downKey = false;
var block_x;
var block_y;
var block_h = 30;
var block_w = 30;

function init() {
  context = $('#canvas')[0].getContext('2d');
  WIDTH = $('#canvas').width();
  HEIGHT = $('#canvas').height();
  block_x = WIDTH / 2 - 15;
  block_y = HEIGHT /2 - 15;
  setInterval('draw()', 25);
}
function clearCanvas() {
  context.clearRect(0,0,WIDTH,HEIGHT);
}

function rect(x,y,w,h) {
  context.beginPath();
  context.rect(x,y,w,h);
  context.endPath();
}

function draw() {
  clearCanvas();
  if (rightKey) block_x += 5;
  else if (leftKey) block_x -= 5;
  if (upKey) block_y -= 5;
  else if (downKey) block_y += 5;
  if (block_x <= 0) block_x = 0;
  if ((block_x + block_w) >= WIDTH) block_x = WIDTH - block_w;
  if (block_y <= 0) block_y = 0;
  if ((block_y + block_h) >= HEIGHT) block_y = HEIGHT - block_h;
  context.fillRect(block_x,block_y,block_w,block_h);
}

function onKeyDown(evt) {
  if (evt.keyCode == 39) rightKey = true;
  else if (evt.keyCode == 37) leftKey = true;
  if (evt.keyCode == 38) upKey = true;
  else if (evt.keyCode == 40) downKey = true;
}

function onKeyUp(evt) {
  if (evt.keyCode == 39) rightKey = false;
  else if (evt.keyCode == 37) leftKey = false;
  if (evt.keyCode == 38) upKey = false;
  else if (evt.keyCode == 40) downKey = false;
}

$(document).keydown(onKeyDown);
$(document).keyup(onKeyUp);

So the first thing we do here is find the <canvas> using jQuery and get the height and width:

1
2
3
context = $('#canvas')[0].getContext('2d');
WIDTH = $('#canvas').width();
HEIGHT = $('#canvas').height();

And instead of drawing a ball and animating it bouncing, we use the arrow keys to move it around

1
2
3
4
5
6
7
8
9
10
11
12
function draw() {
  clearCanvas();
  if (rightKey) block_x += 5;
  else if (leftKey) block_x -= 5;
  if (upKey) block_y -= 5;
  else if (downKey) block_y += 5;
  if (block_x <= 0) block_x = 0;
  if ((block_x + block_w) >= WIDTH) block_x = WIDTH - block_w;
  if (block_y <= 0) block_y = 0;
  if ((block_y + block_h) >= HEIGHT) block_y = HEIGHT - block_h;
  context.fillRect(block_x,block_y,block_w,block_h);
}

If you’ve ever made a game with Flash or something similar, you should be able to see what’s going on here, we’re just saying, if the this key is pressed then move it this direction. Also, it checks to see if the block is at the edge, then don’t let it go any farther in that direction.

1
2
3
4
5
6
7
8
9
10
11
12
13
function onKeyDown(evt) {
  if (evt.keyCode == 39) rightKey = true;
  else if (evt.keyCode == 37) leftKey = true;
  if (evt.keyCode == 38) upKey = true;
  else if (evt.keyCode == 40) downKey = true;
}

function onKeyUp(evt) {
  if (evt.keyCode == 39) rightKey = false;
  else if (evt.keyCode == 37) leftKey = false;
  if (evt.keyCode == 38) upKey = false;
  else if (evt.keyCode == 40) downKey = false;
}

With these two functions, we’re just checking if the one of the arrow keys has been pressed, then we change the corresponding variable to true and it will move. Likewise, we then check to see if it’s been released and then the variable will become false and it will stop moving.

1
2
$(document).keydown(onKeyDown);
$(document).keyup(onKeyUp);

Finally, we use the jQuery events keydown() and keyup() to simplify the process of checking if one of the arrow keys are being pressed.

And here’s a demo of what we get.

It’s nothing amazing right now, but this is the first step towards developing a game using <canvas>. Hopefully, as the technology evolves, we get events and methods like AS3’s hitTest to make game development a lot easier. As I’ve said before, right now the <canvas> is fun to fool around with, but I think we’re still a few years and an pretty good IDE away from it being something the average developer can really work with.

I made my own HTML/CSS template and you should too

Wednesday, August 11th, 2010

In the last couple of days, a couple of HTML5 templates have been released, HTML5 Reset and HTML5 Boilerplate. I’ve looked them over and I have to say, especially in the case of HTML5 Boilerplate, they’re pretty solid. But they’re not for me. Why? Well, as soon as I looked at the index file, I went through it thinking “I’d take out that and that and that.” It’s the same reaction I had when I looked at the 960 Grid template and a few others. It’s nothing against them or people that use them, it’s just they’re not for me.

Why not? Over time I’ve just made my own. It’s pretty simple and lean and made for the way I build websites. I’m sure I could take someone else’s more comprehensive template and alter it to fit my needs, but I think that would be more work. I’d rather start from zero and build my way up than to edit one down to fit my needs.

This works for me because I’ve been doing this for a while and when it comes to coding HTML/CSS and even JavaScript or ActionScript, I’m fast and I think a template like HTML5 Boilerplate is just going to slow me down. Maybe if I put in the time to sit down and start using one of these on the next few sites I build, I’d get used to it and it might end up working for me. But I know that the way I do it now works and I’m comfortable with it.

I think every web designer/developer should build their own template. If you want to modify one that’s out there, but change it to fit your style. I’m a huge believer that everything should be about making coding comfortable, from the languages you use to the editor you work in and setting up a template is no different.

Animate a random bouncing ball with the <canvas> tag

Friday, August 6th, 2010

I’ve been experimenting with the <canvas> tag the last few days and from what I’ve seen, it’s got potential but it’s got a ways to go before we’re replacing Flash with it. But, in order to learn how to use it, I’ve been trying to reproduce things I can remember making when I was first learning Flash and ActionScript, and one of those things was a bouncing ball who’s movements where controlled through code.

To start off, here’s the HTML:

1
<canvas id="canvas" width="400" height="300"></canvas>

You have to assign the height and width of the <canvas> tag in the HTML because the default height is 150 pixels and the width is 300 and if you set the dimensions with CSS, the dimensions of the content inside the <canvas> will skew to the ratio of the CSS dimensions. For example, if you set the width to 600 pixels in the CSS and make a rectangle that’s 100 pixels wide, it will display at 200 pixels wide because you’ve double the width of the <canvas> with CSS. We also need to give the <canvas> an id of “canvas” so we can reference it with our JavaScript.

So for CSS, all I’ve included is this:

1
2
3
#canvas {
  border:1px dashed black;
}

It’s just there so that I can see the edges of the <canvas>.

JavaScript is what powers the <canvas> and to make this work, it takes about 35 lines of JS, not that much.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
var canvasWidth = 400,
    canvasHeight = 300,
    ball_x = 5,
    ball_y = 44,
    ball_dx = 5,
    ball_dy = 5;
function init() {
  var canvas = document.getElementById('canvas');
  context = canvas.getContext('2d');
   
  setInterval('draw();', 25);
}
function clearCanvas() {
  context.clearRect(0,0,canvasWidth,canvasHeight);
}
function ball(x,y,r) {
  context.fillStyle = '#f00';
  context.beginPath();
  context.arc(x,y,r,0, Math.PI * 2, true);
  context.fill();
}
function draw() {

  clearCanvas();
 
  ball(ball_x, ball_y, 10);
 
  if (ball_x + ball_dx > canvasWidth || ball_x + ball_dx < 0) {
    ball_dx = -ball_dx;
  }
  if (ball_y + ball_dy > canvasHeight || ball_y + ball_dy < 0) {
    ball_dy = -ball_dy;
  }
 
  ball_x += ball_dx;
  ball_y += ball_dy;
}

So what are we doing here? Well, the first thing we do is define our variables:

1
2
3
4
5
6
var canvasWidth = 400,
    canvasHeight = 300,
    ball_x = 5,
    ball_y = 44,
    ball_dx = 5,
    ball_dy = 5;

Ball_x and ball_y are our ball’s initial position and ball_dx and ball_dy are the speed our ball will be travelling.

1
2
3
4
5
6
function init() {
  var canvas = document.getElementById('canvas');
  context = canvas.getContext('2d');
   
  setInterval('draw();', 25);
}

In our init() function, we use the getElementById to find our <canvas> and then we set the context to 2D because right now that’s all you can do, although, one day we’re supposed to be able to set the <canvas> to 3D. Next, setInterval is what we use to actually make the animation fire. It will called the function draw() and it will fire every 24 milliseconds.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function draw() {

  clearCanvas();
 
  ball(ball_x, ball_y, 10);
 
  if (ball_x + ball_dx > canvasWidth || ball_x + ball_dx < 0) {
    ball_dx = -ball_dx;
  }
  if (ball_y + ball_dy > canvasHeight || ball_y + ball_dy < 0) {
    ball_dy = -ball_dy;
  }
 
  ball_x += ball_dx;
  ball_y += ball_dy;
}

What we’re doing in the draw() function is redrawing the ball every time the function is fired. In the if statements, we see if the ball has reached the edge of the <canvas> and if it has, we reverse it’s direction. To redraw the ball, we call the ball() function by passing in 3 values, the ball’s x and y positions and the ball’s radius.

1
2
3
4
5
6
function ball(x,y,r) {
  context.fillStyle = '#f00';
  context.beginPath();
  context.arc(x,y,r,0, Math.PI * 2, true);
  context.fill();
}

So when we pass in the new values, the ball() function will redraw the ball in it’s new position. The fillStyle sets the color to red and arc() sets the position, the radius, the starting point, Math.PI * 2 sets the arc to a full circle and then true or false sets clockwise or counter-clockwise.

In the draw() function, you might have noticed a function called clearCanvas() being called. One of the big differences between the <canvas> and the stage for Flash is that the <canvas> is actually redrawing itself every time the setInterval fires and it won’t remove the old ball position. So, in order to get the effect we’re looking for, we need to clear the <canvas> every time the ball moves.

1
2
3
function clearCanvas() {
  context.clearRect(0,0,canvasWidth,canvasHeight);
}

To do this, we call the clearRect() function where we set the position to 0,0 and set the width and height to width and height of the <canvas>. This way, we will clear the <canvas> every time we redraw the ball which will make it look like the ball is bouncing around. If we don’t do this, then the ball won’t be removed and eventually the entire <canvas> will fill up.

Finally to make the JavaScript run, we need to add this to the body tag:

1
<body onload="init();">

Now, after the page loads, it will run the init() function. You can also attact this to a button or a link if you want to start the animation that way.

Check out the demo.

So far, all the most complicated <canvas> examples I’ve seen have been done by hardcore programmers and are too complex to be something that people can realistically build for clients or even for fun. I think for <canvas> to really take off someone like Adobe is going to need to come out with an IDE that will do most of the heavy lifting for us. But for now, we can get started with things like this.

SVG Masks, HTML5 video and Firefox 4

Saturday, July 17th, 2010

Earlier this month, Paul Rouget, who’s a evangelist for Mozilla posted a video where he demonstrated some of the new features that are coming with Firefox 4. And I have to say, the stuff he shows off is for the first time, a real example of how HTML5 and CSS3 can replace things like basic Flash animation. A lot of the stuff he shows off is really amazing and one that stuck out at me was around the 4 minute mark, where the text Firefox acts as a mask for a video. Now, this was definitely something that could only be accomplished in Flash, so I really wanted to know how to do it and unfortunately there was nothing out there to tell me how. After some trial and error though, I managed to figured it out, mainly because, thanks to Firefox 4, it’s not at all that hard.

Here’s what what I made. It only works in Firefox 4, so it’s not something that you can throw up on a site right now, but it is a great example of what we are going to be able to do in the next few years.

Check out the demo here. (This only works in Firefox 4)

How is it done? Using Firefox 4’s inline SVG, HTML5, some CSS and not a lot of any of it. Here’s all the HTML I used:

1
2
3
4
5
6
<video id="video_target" src="oceans-clip.ogg" type="video/ogg" autoplay></video>
<svg>
   <mask id="video_mask" maskUnits="userSpaceOnUse">
       <text x="300" y="190">VIDEO</text>
   </mask>
</svg>

The video is a clip from Disney’s Oceans that I got from Video JS. Since this only works in Firefox 4, I went with the ogg video. In HTML5 the video tag is just like any other tag so you can control it like you would an image tag. What Firefox 4 allows us to do is create some SVG text and then use it as a mask without the need to use an xml doctype like SVG needed before. Another plus is that the actual <svg> tag can be placed anywhere in the HTML and will be assigned to the targeted tag, in our case here the <video> tag. To make this work, we wrap the SVG <text> inside a <mask> tag, giving <mask> the id of video_mask, which we need to assign the mask in the CSS and we need to set the maskUnits to “userSpaceOnUse”. I’ll be honest with you, I don’t really understand this part, but in everything I found this was the setting for text and maskUnits=”objectBoundingBox” maskContentUnits=”objectBoundingBox” is used for shape masks. The video tag has the x and y positions set to center the text.

For the CSS:

1
2
3
4
5
6
7
8
9
10
text {
   font-family:Arial Black, sans-serif;
   font-size:167px;
   text-anchor: middle;
   letter-spacing:1px;
   fill:#fff;
}
#video_target {
   mask: url(#video_mask);
}

First off, we’re styling the text, nothing different here except we need to set the fill to white. If the fill is set to black, nothing shows through the mask and the closer the fill color gets to white, the more that shows through. Next, we set video_target’s mask to url(#video_mask). And that’s it.

And, this is what we get. (Remember, it only works in Firefox 4)

Something that for years you could only do in Flash you can now do with 6 lines of HTML and about 10 lines of CSS. No JavaScript or anything like that to rely on. This is something that should be exciting the web design community, especially if the other major browsers implement this.

If you’re going with HTML5, go all out

Wednesday, July 7th, 2010

If you’ve built a site using HTML5 or even have just looked into it, you’ll know that HTML5’s new tags are there to reduce the amount of mark-up that web designers need to build a web page. Things like <header> and <nav> are there to replace the <div> tags that are on almost every web page made ever. But I’ve noticed a trend that I think defeats the whole reason these tags are there.

Here’s a header the way it’s supposed to be done in HTML5:

1
2
3
4
5
6
7
8
<header>
  <nav>
    <li><a href=”index.html”>Home<//a></li>
    <li><a href=”about.html”>About<//a></li>
    <li><a href=”portfolio.html”>Portfolio<//a></li>
    <li><a href=”contact.html>Contact<//a></li>
  </nav>
</header>

Pretty simple stuff. It’s there to replace this:

1
2
3
4
5
6
7
8
<div id=”header”>
  <div id=”nav”>
    <li><a href=”index.html”>Home<//a></li>
    <li><a href=”about.html”>About<//a></li>
    <li><a href=”portfolio.html”>Portfolio<//a></li>
    <li><a href=”contact.html>Contact<//a></li>
  </div>
</div>

But here’s the problem. Internet Explorer doesn’t recognize any of the HTML5 tags, so your options are to give the new tags ids, don’t use HTML5 or use something like HTML5 Shiv, which forces IE to recognize the tags using JavaScript. I say use option two or option 3. But I’ve been seeing something around the web that’s making me concerned. There are some people out there that use IE and have JavaScript turned off, so if they visit your site, it’s not going to display right. Now I don’t have the figures for how many people out there surf the web with that setup but I have to think it’s pretty low. But some people think you should be prepared for people like this and do this:

1
2
3
4
5
6
7
8
9
10
11
12
<header>
<div id=”header”>
  <nav>
  <div id=”nav”>
    <li><a href=”index.html”>Home<//a></li>
    <li><a href=”about.html”>About<//a></li>
    <li><a href=”portfolio.html”>Portfolio<//a></li>
    <li><a href=”contact.html>Contact<//a></li>
  </div>
  </nav>
</div>
</header>

The HTML5 is for the browsers that support it and the divs are for IE. But this completely defeats the purpose of the new HTML5 tags and is extra code that you don’t need.

My opinion is this: If you’re going to start building sites using HTML5, then go 100% HTML5. If the small amount of people out there that use IE with JS disabled can’t see the site, that’s their problem. Don’t use anymore mark-up than you need to, if you’re concerned that the site won’t display right for a large amount of your site’s target audience, then stick with HTML 4.1 or XHTML.

HTML5 is becoming the ultimate PR war

Monday, June 28th, 2010

I actually saw a tweet the other day that said “IE9 is going to be awesome”. Really? I think IE9 is going to be leaps and bounds above IE7 and IE8 but I wouldn’t describe it as awesome. Yes, some of the demos Microsoft as on their IE9 demos are pretty interesting but in a case of some good PR, they’re only showing the stuff that they know their browser will perform as good or better than the others guys with. I will give them credit though, unlike others, they are letting you compare IE9 to the other browsers.

But the problem with these showcases isn’t, in Microsoft’s case they’re just showing things they do well or with Apple’s, forcing you to use Safari. It’s the fact that they’re really just showing what you can do with JavaScript and with CSS3. Sure, the HTML5 canvas tag is what removes the need for something like Flash Player to create most of these things, but is it really an HTML5 demo if you just add a canvas tag and then have hundreds of lines of JS? Isn’t it more of a JavaScript demo?

What’s really going on here is all the different browser makers are saying, “Hey, look what you can do with our browser! Aren’t we awesome? Tell all your clients to use our browser because of the cool stuff you can build in it.” But that’s not going to matter, because when Microsoft shows off IE9 doing something that Chrome and Firefox can’t, then for us in the web community, we just say, well, I can’t build something like that because only IE9 users can see it. Web developers are only going to build what can been seen or used in every browser.

Google is taking the right approach with the HTML5Rocks website, it’s not really a showcase site, it features tutorials and a code playground. One feature I really like is the site shows what browsers the tutorials will work in and I was surprised to see some that worked in all five major browsers.

Simply put, Microsoft’s IE9 Test Drive site is telling the web community that IE isn’t going to suck as bad anymore. And they’re wrapping the message in HTML5. Internet Explorer has been so far behind the other browsers for so long, that I think Microsoft realized their browser was really close to becoming irrelevant and they needed to do something. So they took a page out of Apple’s book and ran with the HTML5 is going to change everything idea. But you have to give Microsoft some props, at least they let you compare their demos in every browser, especially considering they do come up behind some of the others in some tests.

The only person that cares how you did it is you

Tuesday, June 22nd, 2010

I work with five designers and a couple have basic HTML knowledge. One can kinda sorta do key framing in Flash. Everything web is my responsibility. And I have a thing where I like to challenge myself and do something new on nearly every project I work on. Sometimes I do something that I just learned and sometimes it’s something I’ve been working a while on and I’m excited to finally have figured it out. After a while, seeing all the glazed over eyes as I tried to explain the amazing thing I did, I realized that A. most people don’t understand what web designers and developers really do and B. they don’t care. I’m a person that’s loves learning how they did things in movies and when I see a website that does something I’ve never seen before or does it a new way, I enjoy picking it apart, figuring out what does what. And it’s taken me a while to realize that this isn’t how most people think.

When the average Internet user comes to the site, they don’t care about anything that’s going on behind the scenes. Only a very small group of us do and I don’t even think that includes all of the people out there that call themselves web designers. There are people out there building websites the same way they did 15 years ago. I’ve started building every new site in HTML5 and using CSS3 as much as I can instead of using images. Why do I do this? I can get the same result building a site the way I did 3 years ago and my bosses wouldn’t be any less happy with it. But I have a need to deliver a website that is built with the latest technology. I have to challenge myself or else the job will get boring. I don’t build sites in HTML5 for the clients, 90% of them haven’t heard of HTML, much less HTML5. I did it because I want the people that know to look under the hood of my sites and know it was built by someone who knows what their doing. And I did this stuff for fun before I was being paid for it and I want to keep it fun.

If you’re the only one that’s going to know the amazing things you did to make your site, why bother going to that extra effort? For me, as I’ve said before it’s the challenge but I think there’s also some pride in there. I want to build the best site I can. I want to impress those web design gurus out there that will probably never visit those sites. Most nights at home, I’m learning, messing around and building things that have no practical function, I’m building them to see if I can. I think the CSS Fail Whale is a good example of something that was built just to see if it could be built by someone that enjoys they’re work. I’ve spent time looking at the CSS and I’m sure people like me have, but does this interest any non-web people? I’m pretty sure they’d ask, “Why didn’t you just use a picture?”

So everyday I go to work and try to build something new, using things like HTML5 and CSS3. Because I doing something I love and I want to be great at what I do. I’m just lucky enough that I get paid to do it and now I’ve finally learned it doesn’t matter to me if anyone else gets what I’m doing.