The Joys of the Craft

In The Mythical Man Month Frederick Brook describes the five rewards that the craft of software development provides to its practitioners.

  1. The sheer joy of making things
  2. The pleasure of making things that are useful to other people
  3. The fascination of fashioning complex puzzle-like objects of interlocking moving parts
  4. The joy of always learning
  5. The delight of working in such a tractable medium

I agree 100%. Every day, despite the setbacks and annoyances, I am so grateful that I work in this field.

Posted in Software Development | Tagged | Leave a comment

Two Paths to Innovation

My notes from Chris’ talk on innovation in game design and development at Gamelab Barcelona 2015

Gunpowder vs. Atomic Bomb development (0:00)

  • Trial & Error vs. Deductive

  • Practical vs. Theoretical

  • Slow (1000 yrs) vs. Fast (45 yrs, 3 yrs)

  • Incremental vs. Quantum Leap

  • Evolutionary vs. Revolutionary

What science can we use to inspire games?

We play to learn

Mental Modules

  1. Motor
  2. Visual Spatial
  3. Cause & Effect
  4. Language
  5. Social Intelligence

Games today challenge mental modules 1-3. What about 4 and 5?

All of human entertainment is about social intelligence. Interactive storytelling focuses on social intelligence.

Interactive Storytelling’s 5 “Dragons”

When slaying each dragon lean towards art instead of science

  • Faces with emotions & feelings

Final Fantasy: The Spirits Within vs. Shrek
– Ability to display expressions and micro-expressions

  • Personality modeling

  • Five Factor Model for real people

  • Open

  • Extraverted
  • Conscientious
  • Stable
  • Agreeable

  • Real people are boring, characters aren’t

  • Language

  • Mirrors reality

  • Use “toy” reality
  • Define simultaneously, wordalgorithm

  • Narrative engine

  • Interactive development environment

Slaying the Five Dragons (37:45)

  • Showed pieces of Storytron, SWAT, and Siboot
  • Chris’ preferred personality model – Good, Honest, Dominating
  • Deikto meta-language used to create language specific to reality. Showed iconic and textual manifestations
  • Scrolled through some narrative engine code (“This is really complicated stuff”)
  • Showed some SWAT editors – Verb, Actor, Scriptalizer
  • Siboot
  • Is not RPG, FPS, strategy wargame, text adventure, tower defense game, etc.
  • The difference is not in what it looks like but in what it does
  • Characters have feelings, they behave like they have feelins
  • Characters respond in dramatically plausible way

Questions & Answers (54:10)

Posted in Other | Tagged | Leave a comment

Git Stash

While working in a branch I wanted to switch back to the master branch to see how a previous implementation worked. When I tried to switch branches with checkout I got a message saying I would lose the changes in my current branch if I switched without committing. The message suggested I commit or stash my changes before switching.

I didn’t want to commit the changes in this branch (because they weren’t working just yet) so I checked out Git’s stash command. It turned out to be exactly what I wanted.

After stashing the changes in the current branch I was able to checkout master, review the code in that branch, and return to the previous branch and my broken code.

Posted in Software Development | Tagged | Leave a comment

Quantity Displayed vs. Quantity Saved

Sometimes when saving an item to the Buy screen the quantity saved is one less than the quantity displayed.

On the Add Item screen I’m displaying the floating point slider quantity as a single digit without the decimal values using StringFormat, automatically removing the decimal portion of the number and inadvertently “rounding up”. When I save the item to the database, I convert the floating point slider quantity to an integer.

As you can see in the screenshots below there are situations where I’m displaying one quantity but saving a different value.



To fix this in the AddItemPage’s code behind OnSaveClicked method I changed the line where a new item is created.

Item newItem = new Item(itemName, addToBuyList, (int)quantitySlider.Value);

To this, rounding up the slider’s quantity value.

int quantityRoundedUp = (int)Math.Round(quantitySlider.Value);
Item newItem = new Item(itemName, addToBuyList, quantityRoundedUp);

Making sure the when the new item is created the displayed quantity is saved to the database instead of the slider’s floating point value. In the screenshot below the Qty value is what the slider’s value while the Display value is what should be saved to the database.


Some helpful links:

Posted in Side Projects, Software Development | Tagged , , | Leave a comment

The Difference Between A Developer, A Programmer, And A Computer Scientist

Alan Skorkin wrote an interesting post about The Difference Between a Developer, a Programmer, and a Computer Scientist. I’ve always considered myself a software developer.

They write code. Making it well-factored and clean is important, but other factors often take priority. Math skills are very much optional, but it does help to be aware of common problems and solutions related to the domain they are in.

Communication and people skills are paramount. Process and team dynamics are bread and butter skills.

They are consummate generalists without any truly deep specializations. They are expert at finding ways around problems and plugging components together to fulfill a set of requirements.

In their personal time they are either trying to build the next Facebook, or engage in activities that have nothing to do with programming, developing, or computer science.

(via Skorks)

Posted in Software Development | Tagged | Leave a comment

Simon & Schuster’s Treks to Nowhere

Excellent post by Jimmy Maher about Star Trek games of yesterday.

In 1983 the powers that were at Gulf and Western Industries, owners of both Paramount Pictures and Simon & Schuster, decided that it was time to bring Star Trek, a property of the former, to the computer under the stewardship of the latter. To appreciate this decision and everything that would follow it, we first should step back and briefly look at what Star Trek already meant to gamers at that time.

(via The Digital Antiquarian)

Posted in Other | Tagged , | Leave a comment

29 Ways To Stay Creative

This gallery contains 3 photos.

Here are some versions suitable for printing.

More Galleries | Leave a comment

The Six Layers

Good writeup by Matthew Gallant about applying Scott McCloud‘s Six Layers of Art to video game design.

The second of McCloud’s concepts that I’d like to explore is his idea of the six elements of art. He believes that “any artist creating any work in any medium will always follow these six steps whether they realize it or not”, and that their order is innate.


(via The Quixotic Engineer)

Posted in Other | Tagged | Leave a comment

Reappearing List Items

While using Viand my wife told me that items she had previously bought were reappearing on the Buy list mysteriously. I finally had some time to look into it.

Turns out it’s not so mysterious. When I create an item it’s boolean Buy property is set to zero or one to determine which list it goes on (zero is the Add list; one is the Buy list). I also add the newly created item to the database at the same time it’s added to one of the lists. When an item is moved between lists it Buy property is set to the correct value.

What I forgot to do is update the record in the database when it switches location from one list to another. To fix this I first created an UpdateDatabase method in the ItemDatabase class.

public void UpdateItem(Item item)

Then I called this UpdateItem method in the BuyPage’s ItemBought method, passing in the item.

internal void ItemBought(BuyCell item)
	if (allItems != null) {
		var obj = allItems.First(x => x.Name == item.Text);
		if (obj != null) {
			obj.Buy = false;
			obj.Quantity = 1;

	MessagingCenter.Send<BuyPage>(this, "UpdateAddItemsListFromBuyList");

And did the same in AddPage’s BuyItem method.

internal void BuyItem(AddCell item)
			if (Application.Current.Properties.ContainsKey("Items")) {
				allItems = (List<Item>)Application.Current.Properties["Items"];
				var obj = allItems.First(x => x.Name == item.Text);
				if (obj != null) obj.Buy = true;


			addView.ItemsSource = UpdateAddItemsList();
			MessagingCenter.Send<AddPage>(this, "UpdateBuyItemsList");

Silly mistake. Shows you what can happen programming after hours.

Posted in Side Projects, Software Development | Tagged , , | 1 Comment

Star Trek Crossover Novels

This gallery contains 9 photos.

Covers by AbaKon from a little known collection of 70’s Star Trek crossover novels based on Classic science fiction novels. (via DeviantArt)

More Galleries | Leave a comment