Thursday, April 29, 2010

Steve Jobs on Apple's lack of support for Flash

So Mr. Jobs finally let loose. I've been a Flash supporter for over 10 years and, though I hate to admit it, I agree that Flash has always fell short when it comes to mobile devices. Macromedia/Adobe Flash's mobile support was always behind a couple of generations of where the web tech was.

I think a lot of what Jobs said was true. However, I still believe that it's in their best interest exclude Flash for monetary/control reasons.

His conclusion is strong though - If flash wants to play on their devices, they should build tools for HTML5, it's only logical.

Steve Job's on Apple's lack of support for Flash

Wednesday, April 28, 2010

Hyperproductive Distributed Scrum Teams W/ Jeff Sutherland

Distributed teams can be a nightmare with Scrum, if you don't know how to tackle the challenges that they present.

Here's a link to a PDF that shares some of the slides in the presentation:


One interesting tidbit, Jeff asked...

Are you properly doing Scrum? He then referenced the Nokia Test as the benchmark.

Here's the Nokia Test by Bas Vodde

• Are you doing iterative development?
– Sprints must be time boxed to four weeks or less
– Software features must be tested and working at
the end of an iteration
– Sprints must start with an Agile specification
• Only 50% of Scrum teams worldwide meet these
• Do you know who the product owner is?
• Is there a product backlog prioritized by business value that has
estimates created by the team?
• Does the team generate burndown charts and know their
• Is the team’s work free from disruption by project managers (or
anyone else)?

Zong - Mobile Payment Provider gets 15 million

I thought that this market was over saturated but, when you get a deal with Facebook, I suppose it doesn't matter:

Techcrunch on Zong

Tuesday, April 27, 2010

Jeff Sutherland on Scrum

Jeff is one of the founders of scrum. Watch this to get the story for the horses mouth.

Here one of the cool slides that he goes over.

It explains really well how companies function. I know that I've worked for more than one autocratic organization!

Monday, April 26, 2010

Subversion, GIT, Mercurial

If you're trying to decide on which source code control system to use, take a look at Martin Fowler's blog. He's just run a little survey on what his contracts prefer.

Friday, April 23, 2010

Conversation I had today

I cross posted this quote on Facebook as well as on my blog:

"Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite." - Ward Cunningham

It was met with some controversy. A friend of mine responded with:

"In my experience rewrites almost never happen, and are often constrained by architecture decisions when they do. So I try to do it right the first time."

I had to jump on it... Here's my reply:

"I agree that it's hard to incorporate them if the company culture opposes it. Everyone should strives to do it right the first time but with iteration comes new information. That information can, and most likely will, lead to a better product. Typically, the reason rewrites don't happen is that they're not supported by institution/stakeholders for fear of wasted time. What they fail to see in not supporting refactoring is actually inevitably wasted by trudging on. In my opinion, that's where the problem lies. If refactoring is built into the development cycle, then it will happen. I'm not a fan of rework for the sake of rework but I do think that it's worth reinvesting in code when it's going to be augmented often.

If you're 100% happy with the work that you've done after it's been committed then, by all means, move on. However, when you know that it can be done better based on any new information accumulated through user tests, general experience, or a peer review, why not fix it then rather than allowing bulk or unwieldy code to accumulate?"

Ward Cunningham on wikis

Here's an interview with Ward Cunningham where he talks about wikis.

"I want every program to look like it was easy to write." - Cunningham

Ward Cunningham on the Debt Metaphor

Ward Cunningham explains how he came up with the Debt Metaphor. I love how this stuff originates! He was working on finance software and needed to explain to his boss why it was important to refactor their existing code. He needed something that his boss could relate to.

Here's a good Cunningham quote from 1992 at OOPSLA:

"Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite." - Ward Cunningham

Thursday, April 22, 2010

Alistair Cockburn

When you search for Alistair Cockburn on youtube, you'll find some entertaining videos. Alistair is one of the signatories of The Agile Manifesto. In one interview that took place in his kitchen, he explained that he's interested in process over product.

Here's a class that he taught about teaching that certainly backs that up:

Ease @ Work with Kent Beck

I've been digging into XP and thought it would be good to learn a bit about "godfather" of the subject. He's an interesting guy. The elevator pitch of his talk is... A programmer should be comfortable in their own skin and, when this is true, they are more productive.

This is a really sensitive issue for him. He actually gets choked up at the close 5 of 7.

part 1 of 7

part 2 of 7

part 3 of 7

part 4a of 7

part 4b of 7

part 5 of 7

part 6 of 7

part 7 of 7

Wednesday, April 21, 2010

Scrum et al by Ken Schwaber

Ken Schwaber is a remarkable individual.


Ken Schwaber is a software developer, product manager and industry consultant. Ken worked with Jeff Sutherland to formulate the initial versions of Scrum development process.

Monday, April 19, 2010

What are User Stories?

A definition of User Stories

A user story is a software system requirement formulated as one or more sentences in the everyday or business language of the user. User stories are used with Agile software development methodologies for the specification of requirements (together with acceptance tests). Each user story is limited, so it fits on a small paper note card—usually a 3×5 inches card—to ensure that it does not grow too large. The user stories should be written by the customers for a software project and are their main instrument to influence the development of the software. - Wikipedia

In Succeeding with Agile, Cohn defines User Stories as such:

A user story is a short, simple description of a feature told from the perspective of the person who desires the new capability, usually a user or customer of the system. (p238)

How to write a User Story

Here's a great blog from Cohn on his primary User Story template and here's the template that I use care of Cohn's suggestion:

As a <type of user>, I want <some goal> so that <some reason>.

In this template, we select and cater to three important pieces which are user role (type of user), the feature (some goal), and the value statement (some reason).

The user role helps ground the User Story by giving it relevance. The feature is obviously important because it is what we're building and, finally, the value statement justifies why we're bothering with the development in the first place.

Are there alternatives to using the As/a template or User Stories in general?

There's never one single way to solve a problem. Personally, I enjoy the As/a template because of its simplicity. Regardless, here are some other techniques that I've run across. Research as you like...

Feature-Driven Development (FDD) - Features

A feature is a small, client-valued function expressed in the form <action><result><object>. As the name implies, features are an important aspect of Feature-Driven Development (FDD) (Palmer and Felsing 2002).

Unified Modeling Language (UML) - Use Case Modeling

A use case in software engineering and systems engineering is a description of a system’s behavior as it responds to a request that originates from outside of that system. In other words, a use case describes "who" can do "what" with the system in question. The use case technique is used to capture a system's behavioral requirements by detailing scenario-driven threads through the functional requirements. - Wikipedia

Friday, April 16, 2010

Succeeding With Agile

As some of you know, I've been reading Succeeding with Agile by Mike Cohn. After going cover to cover, I'd recommend it to anyone that has a decent familiarity with Agile. This is not a book for those fresh to iterative development. It's certainly inspired more than a few of my recent posts!

Next on my reading list:

What does a scrum floor plan look like?

In addition to the roles (Scrum master, product owner, tester, etc), a scrum office layout is particular. Prepare for commonsense:

First of all, here's a quick video primer on scrum...

Now then, a lot of folks advocate for desks on wheels. This allows for dynamic configurations. Scrum is all about communication and team problem solving. Each Sprint will require that different team members work together.

Open Space - There are no tall cubical walls. The traditional cubic-caves defeat the purpose of the open space concept. Scrum floor plans can be described as war rooms. Important, avoid separating disciplines. We are cross functional teams and need to be able to communicate on the fly. The Scrum framework suggests that team members of all disciplines sit together.

Active wall utilization - As developers, we spend so much time in front of illuminated screens. Here's a shot of what Mike Cohn recommends as a typical Scrum board layout:

The layout of your board is up to you. Add what you need, as there are no rules. The image above is one configuration. You can experiment around to find what information is more useful to you. Post up the product backlog, issue backlog, your burndown chart, you get the picture. The goal is to own the space. Of interest, the scrum board concept comes from Kanban so read up on that for more background.

We're all equal in Scrum... You should avoid having coveted locations. You succeed in office configuration if there isn't a bad seat in the house.

Sanctuary - when at all possible, have someplace to retreat for quite time. This could be a space to clear your head, take a private call or meeting.

Saturday, April 10, 2010

SCRUM of SCRUMs meeting questions

While reading Succeeding with Agile, I rather enjoyed Chapter 17 which was on scaling SCRUM. Here's a brief explanation of what was covered.

When coordinating work among several SCRUM teams, it is beneficial to hold SCRUM of SCRUMs meetings. These meetings differ from standard daily SCRUMs in that they are not timeblocked to 15 minutes. They allow groups of teams to discuss issues that pertain and focus on areas of overlap and integration. Such issues can, if not regularly settled, compound and critically hamper production.

When selecting who should attend from each team, it's best to choose a technical contributor (programmer, tester, designer) rather than the Product Owner or ScrumMaster. Your attendee can vary from meeting to meeting. Select the attending member based on who is best suited and knowledgeable about the state of the current sprint. The goal of the meeting is, as was previously mentioned, to remove barriers and efficiently sooth issues that arise from cross-team-dependencies.

Mike Cohn describes the differences of SCRUM of SCRUMs and daily SCRUMs as:

- They do not need to be held daily
- The do not need to be timeboxed to 15 minutes
- The are problem-solving meetings

Hosting a SCRUM of SCRUMs meeting

First off, you should only host 2 to 3 meetings a week. If you find that you need more, then you should analyze your sprint planning process.

Meetings should allow for each attending member to have 15 minutes to go over the following three questions:

1) What has my team done since we last met that could affect other teams?
2) What will my team do before we meet again that could affect other teams?
3) What problems is my team having with which it could use help from other teams?

After each member has had the floor, the focus should switch to any pending issues on the issues backlog.

Friday, April 9, 2010

Periodic Table T-Shirts

Completely unrelated to game development but...

Awhile ago i wanted to create a line of element based t-shirts. Here's the only one I mocked up :)

I'd totally wear it!

Happy Friday everyone!

Thursday, April 8, 2010

Applying a texture to a cube in Blender tutorial

First - What is Blender?

Blender is a 3D graphics application released as free software under the GNU General Public License.

It can be used for modeling, UV unwrapping, texturing, rigging, water simulations, skinning, animating, rendering, particle and other simulations, non-linear editing, compositing, and creating interactive 3D applications, including games.

Applying a texture to a cube in Blender tutorial

1) Assuming that you've installed it, open the program.

2) In the top menu select ADD -> Mesh -> Cube.


3) We need to open the UV/Image Editor. Let's do this in the bottom panel.

4) We'll need to find an image to use as our texture. Select "Open" and find the image that you would like to use. This image should, of course, be located on your harddrive.

Here's the image that I selected...

5) Be sure that you're in Edit Mode

6) Click on the Mesh button and select UV Unwrap

7) Select Unwrap

8) Marvel at your brilliance

Here's a great overview of the Blender UI... Happy Blending!

Friday, April 2, 2010

Character Leveling

I haven't found a lot written on this topic. It's something that can easily slip the radar of game design and end up tossed in as an after thought. My goal with this post is to sketch out some of my thoughts on the subject and, hopefully, add to them as time goes on.

I'll start off by saying that I'm all about the Fibonacci Sequence and that we'll touch on this in my conclusion. That said, your task as a designer is to pick the optimum distance between levels to maintain interest while balancing difficulty. To do this, you'll also require something to track progress. Let's call this Experience Points (EXP)! Let's mark a definition then shall we...

What is Character Leveling?

Character leveling refers to a goal & reward model that tracks player achievement through a scaffold of goals. These goals are achieved by a player via accumulating some metric representation of their experience, such as Experience Points.

Tabletop Leveling

The concept of leveling has been around since tabletop games (see: Dungeons and Dragons). Whether we're aware of it or not, video game designers borrow heavily from the oak & paper artisans. Admittedly, I'm no master of tabletop gaming but I can definitely see the parallels.

Here's an example, that I found randomly on the net, from Dungeons and Dragons (D&D) that demonstrates a leveling system for Wizards.

Let's analyze the distance used to describe levels...

Level 1 -> Level 2 is a difference of 2,500 EXP
Level 2 -> Level 3 is also a difference of 2,500 EXP
Level 3 -> Level 4 is 2x that of the former or a difference of 5,000 EXP

A pattern has emerged! We're doubling the prior level to create the distance to the sequent. However, something funky happens when we get to the sixth level...

Level 5 -> Level 6 is a difference of 15,000 EXP... this is only 25% more than the former and, thus, breaks the pattern that was set out before. Why?

First, let's ask the question...

Why bother with levels?

"The answer is that levels provide goals. They give players something to shoot for, so that their actions have more purpose. They give players a sense that their achievements do have effects. Levels use a step function because players like to feel they have taken a step." (Richard A. Bartle, 2003)


Bartle shows us that the primary goal of leveling is to get the player to vest psychologically in our game. If D&D maintained a 2x build for their leveling curve, a player would need 640,000 EXP to reach level 10 verses the 200,000 EXP that D&D settled upon. This was no accident. Dungeons and Dragons was/is a multimillion dollar franchise because of its addicting play mechanics. These mechanics were no doubt uncovered via playtesting.

Playtesting is the key to balancing your game. There is absolutely no way that you'll come up with the perfect balance out the gate. You must bring your game to the lab and attempt to break it. This is why Agile development is superior to the waterfall model but that's a story for another day.

Goals & Rewards Concept - Designers don't need to step through levels. We could just base our fame hierarchy or content restrictions on the number of EXP accumulated. Designers could also design boring games... "Step Function" as Bartle describes it, aids in building anticipation.

Risk & Reward

This applies more to the obstacles that the player encounters throughout their pursuit to reach their particular goals in your game and is, therefore, outside the scope of this entry. Suffice it to say that offering multiple avenues for players to speed up their avatar's achievement-growth makes for more interesting play patterns and will, in the end, make your game more appealing.

Fibonacci Sequence

As promised! I've just always been a fan of this pattern.

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, ...

This is an example of a recursive sequence, obeying the simple rule that to calculate the next term one simply sums the preceding two:

F(1) = 1
F(2) = 1
F(n) = F(n – 1) + F(n – 2)

Thus 1 and 1 are 2, 1 and 2 are 3, 2 and 3 are 5, and so on.
This simple, seemingly unremarkable recursive sequence has fascinated mathematicians for centuries. Its properties illuminate an array of surprising topics, from the aesthetic doctrines of the ancient Greeks to the growth patterns of plants (not to mention populations of rabbits!).

(Thanks MathAcademy!)

I love it for scarcity algorithms especially. But, you could also apply it to an avatar level model. A lot of games, like say Ashron's Call, will use a slowing curve to fit more levels into the upper range of a leveling system (see: Designing Virtual Worlds, p354). You'll want this if you base your model on this sequence.

Reward Schedule

All this talk of levels without much discussion over the means to the end... Let's ponder Experience Points. EXP are the currency that buy players levels. There are tons of ways to award them.

Time on Site/App - Here's a prize just for being here. This is a good idea, as you always want your players coming back. Its best, obviously, to limit this to a slow trickle of EXP. Also, I recommend making sure that the player is active rather than just logged in.

Purse - win a race, battle, or battle of wits... these are all opportunities to reward a player with EXP. How many? Base it on multiple variables:

a) the level of the opponent (if applicable)
b) include a random scaler (such as one based on a dice roll sys utilizing our buddy Fibonacci).
c) style of win
d) duration of altercation
e) tactical prowess

Of course, you can come up with your own factors... Level crafting is something of an organic process. You start off with a lump of clay (pattern of 2x) and slowly carve away until you have a beautiful vase or alien sculpture (Fibonacci sequence with slowing tail curve).

Cold hard cash - Maybe your in this business to make money... You could always allow players to buy their way to the top. You'll need to be mindful of alienating your not so affluent players however.

Social Reward - You can honor large groups of players for organizing and achieving a goal.

Hopefully you get the point. There is no one right way to do it. There are plenty of wrong ways and you'll figure out which they are once you've tested them.

Finally, and just as a side note, refer back to the chart in Tabletop Leveling. Note the varying Class Level Names. I love this... It's much more interesting than grunt lvl 1, grunt lvl 2, etc. Have fun with classifying things. It gives players something to talk about.

Thursday, April 1, 2010

3 Melons Acquired by Playdom

Industry Gamers just reported that Playdom purchased 3 Melons. They didn't disclose what the purchase price was which makes me believe that they got it for a song.

I saw the founder of 3 Melons present at Unite 2009. He showed off a bunch of the tools that they created for use in producing their Unity Lego title, really a lot of impressive stuff. Hope that it was a good move and that they did alright by the deal.

Anyway, here's the article:

About Me

I produce and engineer games and applications. | Portfolio | LinkedIn