Archive for Development

Should All Software be Intuitive?

// January 27th, 2009 // No Comments » // Design, Development

TechRepublic Blogger Justin James has a great post about the pressure to make all software (and web application) interfaces intuitive. He argues that given a complex task, the interface for dealing with that task is going to be likewise complex, and that the insistence on making it “intuitive” is unrealistic in many cases.

There’s some good points made by the commenters (software should be made intuitive to the target, skilled user, but not for John Doe off the street) and Mr. James laments the state of modern general computer education (learning how to use Facebook is not learning how to use a computer).

One of the things that struck me while reading the post was how the web industry in particular has put so much focus on things being “usable” and “intuitive”.

I would argue that this has created a mentality that everything in the world can be designed to be “intuitive”, no matter how complex the task. This has manifested itself (in my experience) with clients who look at a design or interface for 5 seconds and say “I don’t get it”. Sometimes they’re right, and we’ve missed the mark, using terms and iconography that don’t make sense, but other times the demands on the interface design are just out of line with all the tasks that the interface is required to handle.

Problems also arise when the client has a different idea of what is “intuitive” vs. what the designer thinks is “intuitive” vs. what is actually “intuitive” for the person who will be using the app.

Designing things to be intuitive is a great goal to aim for, don’t get me wrong. However, sometimes the only way to handle a design problem is to write better documentation and provide better training.

Interview with HTML 5 Editor Ian Hickson

// September 4th, 2008 // No Comments » // Development

Excellent interview from Tech Republic about what goes into making a standard for the web, and a little preview of what we can expect in the next version of our beloved markup language. (better error handling, video and audio tags, the canvas element, lots more)

Eclipse Development… Visualized???

// June 15th, 2008 // No Comments » // Development

code_swarm - Eclipse (short ver.) from Michael Ogawa on Vimeo.

For those who don’t know, Eclipse is an IDE (Integrated Development Environment) used for all kinds of open source development like PHP and even some Flash builds. This video visually represents the collaborative effort between open source developers to put this project together over the course of time that Eclipse has been available to the market for development and usage.

FITC, Day Three, Part II

// June 6th, 2008 // No Comments » // Design, Development

Ok, several weeks late on getting together the rest of my thoughts on FITC, but I promise that this will be a shorter read. It’ll have to be, ‘cuz not only is my memory a little fuzzy, the remaining sessions weren’t really that interesting. :P

Updated: Added notes on the last few presentations.

Drupal, GPL Licensing and You

// May 8th, 2008 // No Comments » // Development

Boring title I know but still of interest (that is if you know what Drupal is).

So what is Drupal? It’s the system you’re using right now to read this blog. Drupal is an open source platform that takes the shape of a CMS. The difference between Drupal and other CMS’s lies predominantly in its enormous community of module developers from all over the world. If you’re looking for a plug-in for the CMS that doesn’t come packaged with it, chances are you can find it with a quick search at Drupal.org.

With all that said, from a business perspective there lives an obvious problem with the concept of intellectual property as it pertains to developing software that will live within a GPL environment.
This blog covers the topic quite well for those of you interested in open source development and the business dilemmas that accompany it.http://jeff.viapositiva.net/archives/2006/02/drupal_and_the_gpl_as_i_und…

FITC, Day Three, Part I

// April 24th, 2008 // No Comments » // Development

A couple days late, but here’s my summary of Day Three plus additional bits on presentations from Day Two, including Making Real Music with Flash and Flash 2D and 3D Effects.

FITC, Day Two…

// April 21st, 2008 // No Comments » // Development

Day two at FITC has come and gone, and today I spent most of my time at the more design oriented talks: Flash PyrotechnicsAdobe ThermoGMUNKFlash 2D and 3D EffectsMaking REAL Music with FlashJosh Davis and North Kingdom. Tomorrow will be some more of the technical stuff, but, this being Flash, even the design stuff was kind of technical. :)

I’m actually leaving shortly for a midnight Hot Docs screening about carnies, but I’m plow my way through and see how far we get…

FITC: Quick Drop in… UPDATED

// April 20th, 2008 // No Comments » // Development

Just killing some time before the Adobe Keynote, thought I’d made a quick post. Not sure if any of you other guys are going to be blogging anything from the show, but I’ll try and post in some general thoughts and observations about the talks I’m attending through out the next 2-3 days.

Haven’t seen much so far, as I didn’t get here until 12:30, but caught the last half of a talk on turn-based gaming and an intro to an open source, multi-platform intermediary language called haXe. I’ll come back later this evening, after Natzke, to post my summary of the day.

Updated: Notes after the jump…

First up was Flash’s Turn at Turn-based Games. I only got to see half of it, but there were some interesting solutions to common problems in making multi-player games for the web, as well as a couple of general tips.

Some highlights…

  • When generating a random number, which of your two (or more) players’ clients generates the number, and then gives it to the other? Or does the server do it? To minimize bandwidth and delay between clients, create a really large array in your flash app that contains random numbers, generated by Math.rand(). Then, one of the clients generates a random seed number, which the two clients use to look up the first random number to start using in the array. Then, every time you need a new random number, just step through the array. Each player’s client doesn’t have to wait for the server to tell it what the random number was, because the client has a copy of the set that each client has agreed to use for the whole game. (Off-loading work to the client becomes really important when thousands of people are playing your game, simultaneously)
  • For a multi-player picture puzzle game, how do you minimize the data sent to save and restore a game? The game in question was a picture puzzle (fit the pieces together to make a picture), and the players could save the game and come back to it later. So on a large, 1200 x 1200 board, all the pieces’ locations needed to be saved, so they would be in the same place when the players come back. But saving a messy x-y co-ordinate like “236.34 895″ is a lot of data, and the MSN network limits package transfers to 15k. Answer is to use a character map.
    • Start by rounding the number to the nearest 10. ex. 236.34 and 895 become 23 and 89 (or, 230 and 890).
    • Create a large character map set, with letters and numbers and whatever else you can pull from the ANSI character map.
    • Then, to save the location of a puzzle piece, map the rounded x-y co-ordinates against your character map, so “23″ becomes “w” (23rd letter of the alphabet) and “89″ is whatever the 89th character in your map is.

    This can shrink your save game down considerably, and minimize the load time.

  • When sending synch messages back and forth between clients, don’t send every message and action as the user does them. Wait for the user to have “finished” making their move, then send a single message with the details of that move.

One great tip I got from a programming perspective is to not fix bugs in your app as you find them. Doing that can break your flow, and you may end up wasting all day trying to track down the source of a bug. Instead, make note of the bug and keep working on the task at hand. The bug will still get fixed, but do it when you’re not in the middle of developing something else.

The second presentation was about haXe, an open source “code once, deploy everywhere” language that you can use to write code for Flash 8/9, Javascript and even server side code. It’s actually a pretty neat idea. The code looks very similar to javascript and actionscript, and the idea is that you can write your app once in the haXe language, and then compile to a swf, a source JS file, or a haXe file for Neko, which is a mod for Apache.

haXe seems promising - it’s 30x faster than PHP and the presenter demonstrated how he could write a physic engine for flash in haXe, and then deploy the *same* engine to javascript, just by replacing the Flash Drawing library that his haXe app included with a javascript library that uses the canvas HTML element. (only supported in Safari and Firefox right now.)

It’s very impressive, but I’m not sure where it will go. It has IDE plugins for Flash Developand Eclipse, but in the end it will come down to developer support, and I think Adobe own tools are just way better. Plus, I’m not sure that haXe is a good fit for the kind of work we do.

All the same, it’s a bold vision, and I’m interested to see where it goes.

Hmmm…already a long post for a blog. I want to talk about the Keynote and Erik Natzke’spresentation, but perhaps I’ll leave the details for a post-convention meeting.

A few quick things though:

  • Designers: check out Kuler, an Adobe website/social network for colour scheme enthusiasts. There’s a neat AIR app they have that allows you to take colour schemes you find on Kuler and tie/import them directly into Illustrator/Phsop. No eye dropper required.
  • They demo’d the next version of the Flash IDE, and there’s lots of new designer focussed features. Designers/animators will be very happy that they’ll be able to do some pretty complex animation without having to know a lot/any scripting. The bones tool is awesome. :) Oh…and we’re getting designer-friendly 3D!
  • I need to look up more on this, but Adobe’s got a neat pixel shader technology for flash coming out, code-named Hydra. (In english, that means a lot more visual filters to play with)

And Natzke was awesome, as usual. I love going to his presentations, they’re always so inspiring. One of the most important lessons I learned about this profession and life in general was at one of his presentations a couple years ago. Basically, everybody wants to build cool stuff, but not everybody can go and study physics books like Natzke did. You can, but you may find it difficult ‘cuz physics doesn’t really interest you. But you still want to make cool stuff. The important thing is to figure out how to channel own passions and use them as motivation to make cool stuff. It’s more honest that way, ‘cuz its yours and not Natzke’s, and its way more fun, because your passionate about it.

So…what are YOU passionate about?

Parallax Scrolling in HTML

// April 18th, 2008 // No Comments » // Development

Pretty neat little article from ThinkVitamin on how to create a parallax scrolling effect using some clever CSS and some transparent PNGs. I did my own test example to see how the code works, ‘n it’s pretty simple stuff.

Unfortunately, transparent PNG support in IE6 is next to non-existent without hacks, and the only way to actually see the effect is if you resize the browser. Still, kind of neat, and very simple to do.

UTF-8 and IE, or How I Learned to Worry and Hate The BOM

// April 14th, 2008 // No Comments » // Development

I worked on a Chinese microsite for the NBoC last week, and I thought I’d share a few learnings from my experience.

First off, the translation company originally provided the translated text as graphics. From an ease-of-use, ease-of-implementation, consistent-display perspective, this makes sense. But images of text are useless to search engines and screen readers, so we asked the translation company for UTF-8 encoded text instead. There was a bit of confusion, but in the end we got a Word doc with the required text in it.

This was my first time working with Chinese text, and I found it difficult to find good sources of recent, up-to-date information on working with chinese on the web. Most of what I found through my Google searches were a few years old, at a time when “major browsers” meant IE and Netscape only. The information was useful, as I believe most of it still applied, but I’d love to know if there’s something better out there. (I’ll post the links I have at the bottom of this post, but if you have any to add, please post them in the comments) More after the jump…