Monday, August 29, 2011

On Modern Day Games

You see them advertised and they almost seem like a desperate attempt by companies like Parker Bros and Hasbro to recreate an era gone by: that of the family game night and the board game.

In some ways, they have returned. Note the popularity of Games with Friends on iPhone - but many of the games espoused are games that SHOULD rightfully still be popular because they are unpredictable.

While everyone who has ever played Monopoly always has a favorite game piece and property, the way the game unfolds is almost always a game of chance. Like playing with a deck of cards, each game is unique.

Come forward (or back) to the 80s' and the introduction of Trivial Pursuit. While there are some diehards who would play TP using the board and the little pies, the game evolved into more of a "pull out a card and let's see what you know" type of game.

Moving further into the 90s, and you see more of these games. SongBurst (one of my favorites) tests your music ability based on songs from a particular era (50s - 80s - note this was BEFORE the Singing Bee TV show)

The thing most of these games suffer from is "age". Not just the age of the players but rather when they came out. Playing a game of Trivial Pursuit Family Edition requires that the "kids" group be in their 30s now. A question like "how many planets are there" suffers from days gone by.

Heck, going back in time, my parents had a game of Shakespeare where you had to complete the sonnets (try playing that with the kids today).

Think of the fad a while back: the Murder Mystery sold in a box. You could only ever play the game once - after that, it was spoiled.

Some games have tried to recapture the glory of the game of chance but with some silliness: Pictionary, Cranium (which combined a bunch of games including Charades). One particular favorite is Scattergories - where you write down words based on a category. If the categories don't really fit or you're tired of the same basic answers, why not create your own? It's a game designed to be "improvised"

This takes me to my main post. Many games these days have become computerized, offering DVDs of data or the like. So they all use some kind of storage device for their questions and answers. So my question is: are they using storage devices from the 80s?

Our daughter bought the game CatchPhrase, where you try to get the other player to say the word or phrase without saying it. Sounds like a classic game, right? And now that it's computerized, you know you aren't going to get the same questions repeated regularly. Heck, Trivial Pursuit would give you 1000 cards with 8 questions each and only if you played it every night for a year would you begin to remember them (and you know who they are, if you have ever played with them).

Even with a 1GB memory stick and averaging a phrase with 100 letters in it, you should easily have over 10,000,000 phrases - while you may get a few repeats, simply because of random polling, it's highly unlikely you would get the same set of questions in one sitting.

CatchPhrase has approximately 11 categories and phrases Everything from words like "Spill the beans" and "hot potato" to "Dick Cheney", "Weapons of mass destruction" ,"Hannah Montana" and "Top Chef". Yet, in the two times I've played the Food category, 90% of the phrases are the same. So maybe it's just Food, right? Nope - same thing with Everything. They say it contains 10,000 words. That means 910 words per category. So it doesn't really matter if they have a 1000 new words for the current generation.

You'll run out sooner or later.

Is a 1GB stick really that hard to put into a game like this?

Better yet, can't they put a Wifi card in them and get updates online?


Fun in the SQL Transaction Log

I've written about the SQL Transaction log before and since some of my clients don't have some of the great logging tools, I often find myself going back to the

select * from ::fn_dblog(NULL,NULL)

Recently, at one client, I've come across a bizarre problem that defies easy analysis.

The VFP application uses cursor adapters to talk to the SQL Server and in one of the processes, updates one table while adding a record to two other tables. In certain circumstances, the two new records were being added but the update of the other table would not.

While I'm still tracking down what is actively going on, I wanted to note some of the interesting aspects of the SQL Log and pose some questions

A great post in SQLServerCentral broke down the various operation types but it wasn't clear on others:

LINQ to VFP

When asked about the state of Visual FoxPro, I often point developers to the VFPX site on CodePlex. After all, that's where the majority of VFP source code is and where many members of the VFP community place the most of funkalicious work they do (Jim Nelson continues to amaze with his PEM Editor, which should likely be renamed IDE/X, because he's now covering far more than just Projects, Events and Methods.)

But there are OTHER places to find great VFP Code.

Foxite continues to get posts with very cool samples and there are other codeplex sites as well.

But recently, I was looking for ways to work with VFP Data in .Net and came across:

LINQ to VFP

Yep! Tom Brothers has built an iQueryable toolkit for FoxPro. Started in 2009, the latest version was updated on January 9th, 2011. 

Multiple Class Implementations

I'm doing a variety of work in both C# and VB.Net these days (as well as VFP).

Every now and then, I come across helpful concepts in the languages that are likely obvious to most developers but may not be known by all of them. If I find something that is of particular interest, I'll put it under these types of posts.

Today, I had a class that implemented multiple interfaces. Both of these interfaces had a similar method: SetReadOnly. So you have two choices:
1. Create a new interface that this class can implement that has the SetReadOnly interface so I only have to implement the one

2. Create two methods that implement that particular method.

Most people are used to VB.Net's handling for Select Case statements where you can put multiple conditions on one line:

Select
Case "A","B","C"
End Select

What I wasn't aware of was that you can use it for Implements as well.

When you add the "Implements xxxx", VS automatically adds the various functions that you have to implement. So in this case, I received TWO methods:

Public Function SetReadOnly() Implements Interface1.SetReadOnly

and then

Public Function SetReadOnly1() Implements Interface2.SetReadOnly

I asked around briefly if this was necessary. As it turns out, it's not. You can easily do:

Public Function SetReadOnly Implements Interface1.SetReadOnly, Interface2.SetReadonly

End Function

Handy way of reducing code.

Wednesday, August 24, 2011

Southwest Fox 2011 Giveaways

Nothing like good products for attendees. Doug reports that Southwest Fox will have draws for three copies of DBi Technologies Studio Controls for COM.

As someone who has covered the dbiTech controls for many years, this is an awesome product offering. The Appointment Scheduling alone is a great reason to have this in your toolbox but there's a lot more where that came from.

Doug Hennig: Southwest Fox 2011 News

I wonder what other goodies are in store for attendees.

Sunday, August 21, 2011

UI Evolution vs Revolution (Part 1): Scroll Bars

(this post started as a comment so I might come back to it - or I might just start a series on UI changes)

I read
Why Windows 8 Might Fail | John C. Dvorak | PCMag.com ,typical Dvorak, whom I've been reading for , ouch, just about my entire life in computers. That seems strange to write. But every article I read on Lion and Windows 8 seems to talk about this strange trend of removing scrollbars. (Comment starts now):

The proof is scrollbars? Really?!?!?

How many of you actually use scrollbars? I'm not talking about moving up and down through a page, I'm talking about using the scrollbar as a tool instead of just a means of identifying where you are on a page.

If you're on a laptop, chances are you either a) use the keyboard or b) have gesture support which means you gesture "up" to move the page down.

If you're on a PC, I still say the above still counts. New users will be confused initially but they will get it.
If you're on a Mac, you're used to multi-gesture already.

Scroll-bars work as a tool to indicate where you are. They aren't gestures - get over it. Granted, if they changed the visual clue (the thumb being at the top of the page meaning they were at the bottom), then it's a big thing. But no one is talking about this.

If you believe in gestures, pulling something to the right makes the left move visible. Pulling something down shows the top of it. (try it). A scroll bar on a book would mean moving the thumb to the right would take you to the end. But with gestures, you would PULL the page to the left.

Getting rid of scrollbars makes sense only if you start using Up and Down arrows on the page to indicate there is more or less text.

But Letting the user choose how scrollbars work is about as idiotic as letting users reverse what mouse buttons do what. How annoying is it when you are used to using a Right mouse and then go to someone who uses a left mouse? We're not talking about moving to a different country and seeing the wheel on the different side of the car or reading right to left instead of left to right - we're talking about letting the user decide that the reverse method of doing something is the right way. Apple had this right years ago - put your mouse on whatever side you want but don't change how the mouse works.

The idea of an "evolutionary" interface is tough to build - because users all "evolve" at a different pace. That is why it's taken 10 years for people to start getting over XP.

Apple's approach has always been to revolutionize the interface and then slowly evolve certain aspects of it but then revolutionize it again. (System 1-7, Newton, OS/X, iPod, iPhone/iPad). Don't go to the "Apple steals what works" argument - this is their history.

Microsoft's biggest successful contribution to revolutions was Excel but I'm sure there are others. The Office Ribbon wasn't a revolution but it came close. How successful is it really? What Microsoft "revolution" do you like?


[Update: Yes, I would say Kinect makes a pretty good case for interface revolution, especially in how it allows developers to make it better.]