More about the wiki adventure game...

I've started to implement the wiki adventure game idea from last week. I plan to contribute it to CodePlex, and maybe make a site. It's being written in Javascript mostly, but with C# on the server side. Some JSON, some regex. I considered and ruled out using Ruby, Volta, Silverlight, Asp.net MVC and a bunch of other technologies I don't understand, for reasons that Pseale has elucidated nicely.

I've got a benchmark in mind for what constitutes the 1.0 version of the game. Basically, once you're able to create a simple game akin to Pug Wars (see also, Drug Wars, Dope Wars)... that would be 1.0.

That game can be composed as a two-page game, with trading, banking, some randomness and an ever decreasing number of days remaining.

I've got ideas for what would be in a 2.0 and 3.0 version.

Here's the general concepts leading up to version 2.0...

A player has four lists (keyvalue collections, perhaps)

  • SimpleAttributes, such as name and avatar.
  • InventoryList, your useful items
  • SkillList, graded abilities that get you places, unlock certain possibilities in the game.
  • VitalsList, your score, your health, your hunger, your wisdom, charm and so on.

What actual items are in these lists depend on the game authors.

Inventory, would be composed of items that are intrinsically tradeable. Each item has an item-type, e.g. "Gold" and a qty, e.g. "57".

Say you visit a witch who is willing to sell you 1 donkey in exchange for 57 gold pieces. Very good. Trading is a built in feature of the platform. Normal fair trading applies: you can't spend more than you have. You can't buy the donkey and keep the gold. You can't buy more donkey's than the witch is selling.

Now, here's the clever bit: all tradeable items are, in theory, capable of becoming weapons. You may have noticed this from watching Jackie Chan films. That's not just a park bench! It's a weapon!

Given the appropriate skill, any item can be used as a weapon. If you don't have the crossbow skill, then that crossbow you just found is nothing more than a tradeable commodity to you. But once you bump into that wise old cross bow trainer, and acquire the cross bow skill, you will suddenly be able to employ it in any future fight. (Some items can act as weapons even if you have no skill -- the seal club for example)

Similarly, all tradeable items are capable of acting as 'food'. And what is 'food' in the general sense? It's a thing that can be consumed and thus its quantity diminished, but the consumption of which will alter one of your vital signs in some way. So this category really covers Foods, drink, poison, potions, medicines and the like. A keg of spirits may increase your drunkedness from 0 to 100. A bottle of poison, will decrease your health from 42 to 0. You can't dimish a vital sign below zero, but you can certainly try.

Can a tradeable item be both weaponry and food? Certainly! A well timed pretzel to the eye can disable many an attacker.

What weapons can be used on what adversaries?

That depends how a creature is defined. Some creatures can be attacked equally with any and all weapons.

But many creatures are impervious to all but a few weapons. Superman for example: Impervious to all, vulnerable to: "kryptonite".

Okay, that's the basic mechanics that will go into the game. I think it will game authors a lot of flexibility in the text adventures they can construct.

Writing the javascript is an alarmingly fun process. I'm beginning to agree with Justice Gray's famous retort he uses whenever someone complains that javascript is a terrible language:

Javascript doesn't suck, you do

See ya later. Dodgy pre-alpha Prototype here

 

(Some) Computer Technicians Are Creepy

he right clicks task bar and selects properties

Well, this leaves me feeling somewhat sick in the stomach.

I was planning to put out some other blog entries just now, but i've felt dizzy and nauseous for the last few hours. Here's the story:

Last week I took my computer in to the shop to get it fixed. (I refuse to deal with hardware. I don't even change staples in a stapler. I have the midas touch and can even blow up passive circuits when they're disconnected plus i'm wearing a static wrist strap.)

I got the computer back a few days later and everything was fine.

he goes to advanced menu and clicks on clear list

On a crazy paranoid whim, I decided to look back through my TimeSnapper history to see if the technicians had used my computer in any unexpected ways.

I've been meaning to check this all week. I even woke in the night once, thinking: I really ought to check what TimeSnapper says happened on my computer when it was in the shop.

Well I finally got around to checking, just now. And what I found has left me unwell. It's nothing too major, but here goes.

A technician started up the computer and spent a short while looking through the 'my pictures' folder. First they looked at some photos of my baby daughter. Then they perused through some other family photos. Finally, they cleared the 'recent documents' list, checked that it was clear, and shut down the computer. (Sequence shown at right.)

The bit where they deleted the recent documents list happened extremely quickly. Watching it play out i am certain that they've done this activity many times before on many other people's machines.

he check that recent documents are indeed clear

I'm not too worried. They were pretty quick about it, only had the most cursory glance really. All sorts of other things were possible. My paranoid delusions included them installing a keylogger, searching for banking information. Lots of other possibilities. So it's not bad as such. I'll probably continue to use them for my computer needs (hey they're the best in town). But I'll probably create a guest account with minimum permissions, next time. And I still wonder what other things dirty technicians are getting away with on other machines entrusted to their care.

Okay that's off my chest now. And onto yours ;-)

 

 

Wiki as Text Adventure Game

The first computer programs I ever wrote were text adventure games. It was bliss. I didn't spend much time playing games. For me it was all about the writing.

How about you? Did you ever write 'interactive fiction?'

The basic genre consists of a story that moves from one location to another. The hero of the game, that's you, can collect "things" as you go, and certain impasses are reached if you don't have the correct "things".

There is fighting. There are monsters. Puzzles. Traps. There's an abundance of description. And plenty of adventure.

Here's my current idea: write a wiki-style site where contributors don't just write webpages, they construct text adventure games.

Wiki-style formatting would do for the text. And for the game mechanicsm itself, there would need to be some simple features provided by the platform.

Hyperlinks and standard web navigation would take the place of those cumbersome command parsing consoles that leave you furious trying to guess the programmer's intent.

Here are the things I think you'd need for starters:

  • Some kind of 'state-bag' to act as your inventory. Your pocket contains string, matches and lint.
  • A declarative way of indicating items that the player can collect. You find 57 gold pieces
  • A way of increasing or decreasing scores against a player. You have 12 days remaining, and you have 14 health points
  • A way of trading items. The witch offers you the invisibility potion in exchange for 3 gold pieces.
  • A way of keeping some options hidden unless you have or do certain things. If Skillset.Contains(Romance) then Paragraph3.Visible = true.
  • A fighting routine that can combine the use of weapons, skills, armory, and luck.

With those basic building blocks, I think some pretty fantastic stuff could be created.

Who's up for the challenge? Come on lazy web, create for me (or find) a wiki-style web site for authoring text adventure games.

And now for some gratuitous linking.

 

Your Brain Is In 10 Kinds of Trouble

Ever feel a little anxious? Here's 10 modern mental pitfalls familiar to today's office worker.

These problems can seem to blend into each other, but are each distinct problems, that can be attacked separately.

problems

  1. Information overload
  2. News overload
  3. Skill reinvention
  4. Always on
  5. Interruptions and alarms
  6. Increasing expectations
  7. Multi tasking
  8. Paradox of choice
  9. Fractured time
  10. Sociopathic social overload

Information overload

There is so much information available that no human being can possibly digest it.

This concept is so familiar now that it's almost docile in relation to the problems that follow. Alvin Toffler first coined the term, way back in 1970 before most of you were even born.

News overload

If too much information was the only problem, then you could slowly digest it, or read summaries of it. Eventually, throughout your lifetime, you'd move closer to having a handle on it all. But in fact there's a stream of new information being added to the information overload, and the rate of new information is increasing.

Every day, regardless of how much effort you make to learn, you know an ever smaller percentage of what is knowable.

Skill reinvention

New stuff is not just meaningless gossip either. Some of it is very deep and useful. New technical skills are harder to absorb than news items. By definition, you can't acquire a skill by reading about it alone. You have to practice it, over and over, to have any hope of acquiring it.

And no sooner have you begun to master an important new technical skill, than a new technical skill is announced as The Way. (Coping hints here)


The first three problems add up to create a classic Red Queen's Race:

"...it takes all the running you can do, to keep in the same place. If you want to get somewhere else, you must run at least twice as fast as that!"

Always on

The information, news and new skills don't turn up at nicely scheduled times, either. Thanks to mobile phones, blackberries, pdas, ipods, laptops and home offices, it's possible to be voluntarily connected to the infomonster at every moment and in every place.

Consider this: evolution is a nasty business where only the fittest survive. Yet evolution hasn't cured us of the need to sleep eight hours a day. Primative society was also rough and mean -- yet it afforded its members a day of rest each week. Modern technology is rougher and meaner than both evolution and primative societies put together. Work harder you damn slacker!

Interruptions and alarms

Information doesn't sneak up quietly: it noisily announces itself, with alarms and popups designed to put you on edge! IM, skype, email and all the afore mentioned 'always on' devices are just waiting to rattle your nerves. The layout in a Cubicle farm does nothing to limit physical/noise interruptions. There are also car alarms, home alarms, fire alarms, smoke alarms, and many others, all equally 'important'. (Raganwald's lashed out about this in the past)

Increasing expectations

Our standards increase to swallow most productivity gains.

For example (I heard this on a gtd or .net podcast... if anyone knows the source, please share) Prior to the 1950's, there were no washing machines, and the avg. household spent 6 hours per week washing clothes. The invention of the common domestic washing machine was proclaimed to be a great liberator... but the net effect today? We continue to spend 6 hours per week washing clothes, only we now do 10 times as much washing. i.e we have cleaner clothes & more of them -- but we're still just as much a slave of our tasks.

Similarly, producing a document today in Word 11 takes just as much time as it did in WordPerfect 1.1 -- the output should be considerably nicer, but then again, the reader is expecting a nicer output. So what did we gain exactly?

Apparent multi-tasking

Our operating systems support the appearance of performing more than one task at once. We humans trick ourselves into believing we're capable of working on more than one task at a time.

Favourite articles on this include, Human Task Switches Considered Harmful - Joel on Software and Coding Horror: The Multi-Tasking Myth.

A symptom of the previous three, is the concept of "Busy Work" -- the ability to appear busy while not actually getting anything done. Example: checking your email.

"No one really multitasks. You just spend less time on any one thing."

(from ADT Article)

Sociopathic social overload

I can't even begin to explain this one. You can talk to 150 IM buddies, send and receive a hundred emails -- complete social overload really... and yet this can be accompanied by no real physical interaction with anyone at all, ever. Facial expressions, body language, voice intonation, the wonders of touch... all of this gets compressed into a couple of emoticons. Weird.

Here's an example from a friend of mine. He described how his son was sitting on the couch, playing with his Nintendo DS, when he was supposed to be taking the dog for a walk. Nothing too unusual there... except, he was playing Nintendogs (a virtual pet simulation) in which he'd created a virtual dog based on his real dog. His real life pet ended up being returned to the pound. Seriosly. I think that's a sign of something... we're overdue for an apocalypse I guess.

Paradox of choice

There are more options than ever before. And even the most trivial choices require some amount of thought. You can't opt out of all the options -- yet the cost of taking the time, choosing wisely, will often outweigh the benefit of a wise choice -- Analysis Paralysis.

Barry Schwartz is the guru who explains this best:

...we assume that more choice means better options and greater satisfaction. But beware of excessive choice: choice overload can make you question the decisions you make before you even make them, it can set you up for unrealistically high expectations, and it can make you blame yourself for any and all failures. In the long run, this can lead to decision-making paralysis. And in a culture that tells us that there is no excuse for falling short of perfection when your options are limitless, too much choice can lead to clinical depression.

(from Barry's page at Swarthmore)

Further info, Barry gave a talk at google explaining the Paradox of Choice. He has a book called 'The Paradox of Choice: Why More Is Less'. (Ironically, the book is available new or used, with or without super shipping, possibly as a companion to 'The Wisdom of Crowds', at any one of 58 different prices, depending on who you buy from -- aaargh!)

(Also -- there is this book "The Progress Paradox: How Life Gets Better While People Feel Worse" by Gregg Easterbrook which seems to be thematically similar... or you might want to peruse "The Era of Choice: The Ability to Choose and Its Transformation of Contemporary Life" by Edward C. Rosenthal... personally i don't know which one to choose!)

I think Segal's Law is quite relevant:

"A man with a watch knows what time it is. A man with two watches is never sure."

Fractured time

Everything is now available in 'Near Real Time' -- effectively meaning that every action involves a small delay. Rather than large delays which can be scheduled around and dealt with, we have many thousands of tiny delays, which cut up our time and give us just fractions of slack time -- a second, ten seconds, one minute, here, there and everywhere. Click a link and wait a tiny bit. Put food in a microwave and wait one minute. Switch from design view to source view -- and wait a few seconds. Compile your code, and wait a bit. If the waits were much bigger we could schedule for them and find a use for them. If the waits were reduced to zero seconds, then there'd be no 'mental stack stress'. But instead our attention is cut to pieces by this effect, and it provides a nucleation point for distraction.

Steve McConnell touches on this concept in the blog entry, "Is Faster Always Faster?". What I haven't seen investigated is the net effect of time-fracture on a person's psychological well-being.

Okay. Next week, let's write about how to deal with all of this. If we can find the time.

 

Organizational Tools for different scope and time

looking through unposted writings from last year, found this odd little (incomplete) table.

ScopeFuture Present Past
smallerTODO Lists (sticky note?) Timesheet
smallPlans TimeSnapper Records/Journals
mediumGoals Event logs Histories
largeMind maps(revelation)(remembrance)
largerSpecifications (epiphany) (tome)
#inf.(vision)(dream)(?)

the idea is that different tools are used depending if we're interested in big things or little things, and whether we're looking forward, looking back, or living in the moment.

almost makes sense... but not quite ;-)

 

A reflection on hate week.

Couple of weeks ago i thought the internet was just fulla the old hate speak.

People were savaging Paul Graham without remorse (no url available: people have retracted so many criticisms), because he dared to share some code he'd been working on.

Ruby on rails was getting savaged, with the kind of vigour that only a new year can bring. Joel Spolsky was being taunted with agist remarks, because he didn't like one of google's incubation projects.

I agree and disagree with most of the sentiments expressed.

Back to that in a moment ... more important: i've recently been reading about great australian inventions. And every story has the same crazy pattern!

Crazy pattern is this:

  • dude sees a real need and invents something that answers it perfectly.
  • shares the idea with industry leaders and people who share that problem
  • they slam him, ridicule him, and just generally want to smash his face in for wasting time and attention on such a ridiculous problem.
  • either: he proves them right on his death bed or more often:
  • he dies, alone and poor, but his successor proves that the ideas were sound

Even in so-called rational, logical industries (like science and engineering) these things occur again and again!

Let me repeat that, in case it's new to you: even very intelligent scientists and engineers, like you and me, continually dismiss and disregard important breakthroughs in our fields.

No, really. Continuously. We dismiss ideas more readily than less intelligent people. it's our blessig and our curse.

Again, the classic quote is:

"Don't worry about people stealing an idea. If it's original, you will have to ram it down their throats."

I was thinking today: maybe some ideas at work that have been dismissed recently were actually cleverer than "the group" realised. Group think is a seductive and terrible thing. And i wish i had time to concentrate on timesnapper, 24/7. Or failing that, to blog about creativity 24/7. The only real lesson is:

accept ALL criticism. but take NONE of it to heart.

 

sg: as seen in print!

click through to view full size, legible.

An interview with my ugly old self was in the sydney morning herald this week, possibly as a consequence of being listed (erroneously) in some top 100 australian blog lists, or possibly as a consequence of being in the smh previously.

This was fun: i only wish i could have linked out to hanselman for inspring the WAF (wife acceptance factor) concept on which the interview was built.

Though the wording at the end implies the opposite, I didn't write to them asking to be published.

A friend of mine claims he has moved beyond html and now sees wpf as the future. He constantly says "the web is dead to me."

While I'm not so extreme in my pronouncements, i'd have to say that print media is dead to me.

Still it was fun to be involved.

Truth be told, i only consider that print media is dead to me as a kind of sarcastic revange against the fact that my awesome comedy sc-fi novel remains unpublished. Damn you, print world! (shakes fist at print world).

Anyone got any contacts in the awesome comedy sc-fi novel publishing world? I've got the hottest damn manuscript, you'd kill to see it, kill bad.

article from sydney morning herald, a few hundred words

 

TimeSnapper 2.7: Word Clouds reveal your computing lifestyle!

Word Cloud giving a quick overview of your computing lifestyle

This is an awesome update to TimeSnapper, entirely thanks to Atli, my co-conspirator.

This new report, Activity Cloud, analyses the title text of all the applications you've used and gives an immediate, high impact view into what the hell you've been doing with your life lately.

It's clever enough to avoid a bunch of common words/phrases that would otherwise muddy the picture.

Please give it a go. Download timesnapper (if you've tried it previously, this new version will renew your 30 day trial).

By the way, we always renew your trial with every new version. If you're a serial software trialler (like me) we don't want to punish you. We want to welcome you. And maybe get some feedback.

As always the release notes are available online but also, we (and by 'we' i mean 'Atli') have added an RSS feed so you can subscribe to learn about updates: Point your RSS aggregator here.

 

timesnapper word clouds and some kate bush 80s mega fun

This Word Cloud feature also, somehow reminds me of Kate Bush's embarrasingly awesome Cloud Busting filmclip from my 80's toddlerhood.

Activity Cloud is available by right-clicking on any screen and selecting "Reports" (or "Go to > Reports")

As always I have to beg you: bring the feedback! We live for feedback! (Anonymous feedback welcome too.) We act on so much of it, that we're pretty much your submissive slave, ever-willing to do thy bidding.

So, don't hold back in the suggestions department. (And purchasing a license is considered nice as well)

 

 

Mega-Million Dollar Idea: Diamonds@Home

No doubt you've heard of the SETI project and the Folding@Home project -- both of which let home computers act as nodes in a gigantic grid computing effort to mine information out of massive data sets.

Well I've come up with a different idea for an @Home project. First, let's talk about diamonds.a kimberlite pipe

How are diamonds formed? The simple version

Liquid diamond forms when carbon is melted and compressed by over 45000 atmospheres of pressure. This occurs naturally at around 200 km below the earth's surface.

If the temperature and pressure are quickly dropped to surface values, then the liquid diamond will cool into diamond crystals: valuable gemstones. If the temperature or pressure drop too slowly then the carbon will form relatively worthless graphite instead.

There is a geological structure in which a jet of liquid diamond from deep below the earth can suddenly erupt up to the surface of the earth, thus cooling and losing pressure very rapidly, resulting in diamonds, not graphite.

These jewel encrusted, diamond tipped jets of carbonaceous gas and ore are known as Kimberlite pipes, named after the town of Kimberly in South Africa, where a diamond rich kimberlite pipe was discovered, sparking a mad diamond rush in the ninteenth century.

Precious needle in a massive haystack

Although it is over 200 kilometres deep, a kimberlite pipe might be only 100 to a 1000 metres wide at the earth's surface.

Furthermore, not every kimberlite pipe contains diamonds. Some estimates say that only 1 in every 200 pipes contains the girl's best friend.

But given the enormous value of those that do contains diamond, it's worth sampling them all.

So, Diamonds@Home...

Here's where rough science ends and pure speculation begins:

Imagine a neural net that carefully analyses images from google earth. If sufficient training data is available, and sufficient grid computing power, perhaps such a system could identify hundreds of potentially diamond-rich sites throughout the world.

Rather than volunteering your spare computer cycles to help cure cancer (folding@home) or discover alien life (seti), you could use it to selfishly aim to become mega rich and fat with bling.

This would benefit humanity how?

Very little! It would lead to more ugly opencut mines, would fuel man's vain greed, and ultimately flood the diamond market.

But maybe, if anyone is hoping to write a science fiction novel, it might be a nice pasttime for a megalomaniac criminal genius?

Or not.


(image courtesy of yoinked from Geological Survey of Namibia)

 

Thought game: What if SQL had a type called 'Operator'

Say you have a query, inside a stored procedure, that said:

SELECT *
FROM People
WHERE Age > @Age

And then you had another stored procedure, almost identical, that said:

SELECT *
FROM People
WHERE Age <= @Age

It'd be nice to apply some modularisation to this problem and instead have one procedure that said:

SELECT *
FROM People
WHERE Age @Operator @Age

And so on. Without using dynamic sql. Discuss ;-)