"When the Devil Dances" (John Ringo) - The third book of the Posleen War. Word on the street is this and the fourth book were supposed to be combined to make a trilogy.
It should be no surprise that I like things "epic" (very large). That's why I prefer Babylon 5 to DS9, and elements of Star Wars over Star Trek.
So, I was initially very excited about Ringo's SheVa (Shenandoah Valley) tank. Basically, a shuttle crawler armed with a cannon. It's about three times bigger, and nuclear powered. The gun fires a high velocity DU round, with an anti-matter charge.
I was compelled to break out GURPS Vehicles and start drawing it up, but the only discussion on the net I could find was at Star Destroyer dot Net. What a bunch of wet blankets!
They've soured the experience some for me, but, overall, I remember this third book as being in line with the first two - and enjoyable.
The first book introduced the setting, and the Posleen enemy. All the action takes place off Earth. The second book covers the initial landing on the east coast (Virginia and DC). The third book pulls a Dune, and skips ahead 5 years, after the Posleen have conquered much of the world. The middle of the US is still holding out, with the Appalachians acting as a Great Wall (and army elements plugging the passes).
The power armor units have taken heavy casualties, and we get more insight into the Posleen, as some of them start to smarten up after humans have killed off all the dumb ones.
Tuesday, March 27, 2012
Thursday, March 22, 2012
C++ Remove Thyself!
Came up against a nasty bug recently...
What do you think the following code does? (You shouldn't need to be a programmer to guess)
(this looks hideously over wordy...)
Maybe, remove all the items matching "cheese" between the beginning to the end of the container 'myArray'?
Good guess! And if you read the docs, you might think that...
What it actually does is shuffle the elements so that there are no items matching "cheese" near the front of the container. It returns a pointer to the last valid element.
This means you have to do:
(wow! they found an even more hideous way to write code!)
There's even a Wikipedia page! Erase-remove idiom
Sounds kind of ominous...
So, if you ever used std::remove, check all your code for this bug!
Enjoy!
What do you think the following code does? (You shouldn't need to be a programmer to guess)
std::remove(myArray.begin(), myArray.end(), "cheese");
(this looks hideously over wordy...)
Maybe, remove all the items matching "cheese" between the beginning to the end of the container 'myArray'?
Good guess! And if you read the docs, you might think that...
What it actually does is shuffle the elements so that there are no items matching "cheese" near the front of the container. It returns a pointer to the last valid element.
This means you have to do:
std::erase(std::remove(myArray.begin(), myArray.end(), "cheese"), myArray.end());
(wow! they found an even more hideous way to write code!)
There's even a Wikipedia page! Erase-remove idiom
Sounds kind of ominous...
So, if you ever used std::remove, check all your code for this bug!
Enjoy!
Tuesday, March 13, 2012
Gust Front
"Gust Front" (John Ringo) - The second Posleen book. I often imagine how movies might be made of books I am reading. I think this one has real potential to be something memorable (of course, it could be done as another forgettable version of "Independence Day").
There is a lot character and "big ideas" (sacrifice, etc).
There is a lot character and "big ideas" (sacrifice, etc).
Friday, December 02, 2011
A Hymn Before Battle
"A Hymn Before Battle" (John Ringo) - This is the first "Posleen" book. The Posleen are a race of centaurs who have high tech weapons and are invading the Federation. All the Federation races are pacifists, so they come to Earth to recruit an army.
There is obviously a lot more going on (I know it won't be resolved, because I have read "Eye of the Storm" which takes place after all these). Some hints have already been dropped.
It is very much the best of Ringo (I don't see how he keeps it straight in his head against the "Looking Glass" series). Fun space opera combined with good mil-SF.
There is obviously a lot more going on (I know it won't be resolved, because I have read "Eye of the Storm" which takes place after all these). Some hints have already been dropped.
It is very much the best of Ringo (I don't see how he keeps it straight in his head against the "Looking Glass" series). Fun space opera combined with good mil-SF.
Thursday, December 01, 2011
Caught in the Crossfire
"Caught in the Crossfire" (David Drake) - This is a collection of Hammer's Slammers stories (two longer pieces, two short stories, and one intermediate).
Pretty typical Slammers and Drake, although two of them showed a very ruthless side of the Slammers that you don't normally see.
Pretty typical Slammers and Drake, although two of them showed a very ruthless side of the Slammers that you don't normally see.
Tuesday, November 15, 2011
Memory In
Been a while since the last update!
I put the keymap in earlier, but didn't pull a screen shot (wasn't a whole lot to see, characters instead of scan codes).
This last changeset has been more "fun". Trying to update the page tables to reflect all the available memory (lots of alignment to 2M boundaries).
I've also started running under Virtual Box. Performance is a lot better, and it will be a lot easier to enable the network (plus, I might get some graphics capability). This turned up a small bug in the parsing of the ACPI tables.
I should have a steady stream of updates for a while. Trying to get a simple shell going...
Monday, November 07, 2011
Time to Play
(continuing my review of Facebook games)
It's ironic that the two best games, Robot Builder and Nitrous Racing have both come to (bitter) ends. While the terrible games continue unslowed.
As I've looked for a game to replace NR, I uncovered a new failure mode for FB games: limited time to play.
The amount of time it takes to play a game is a continuum. You have minesweeper or solitaire which take just a few minutes, to RPG's which take tens of hours. The nice thing about a short game, you can string the games together to play for an hour or two.
Unless they are Facebook games.
I'll mention two by name, but I'm sure they are not unique in this regard (indeed you see it in the Frontierville model, where you only have so much energy, and then you have nothing to do).
Diamond Dash
This is a typical matching game like Dr. Mario or Bejeweled. Game play is typical, and it tracks level (a sort of function of number of games played). But it only lets you play 1 game every 8 minutes (games are fixed at 1 minute). And you can only accumulate ~5 games. So, you play for 5 minutes, then you have to go away for an hour.
Triple Town
This actually has some promise. It is a twist on the typical matching game, in that matches are "upgraded" instead of removed (I feel like I have played this style before, but I cannot place it). Successful play is rewarded with coins, which can assist in future games.
Except, you only get one move per minute, and can only bank 75 moves. So again, you play for a few minutes, then you're forced to move on.
What is the reasoning behind this? I cannot imagine. It cannot be server load, because these are Flash games which run locally. Worse, leaving and returning forces a re-download of the app, which must spike their bandwidth usage (although Triple Town seems a lot smarter about caching).
It's ironic that the two best games, Robot Builder and Nitrous Racing have both come to (bitter) ends. While the terrible games continue unslowed.
As I've looked for a game to replace NR, I uncovered a new failure mode for FB games: limited time to play.
The amount of time it takes to play a game is a continuum. You have minesweeper or solitaire which take just a few minutes, to RPG's which take tens of hours. The nice thing about a short game, you can string the games together to play for an hour or two.
Unless they are Facebook games.
I'll mention two by name, but I'm sure they are not unique in this regard (indeed you see it in the Frontierville model, where you only have so much energy, and then you have nothing to do).
Diamond Dash
This is a typical matching game like Dr. Mario or Bejeweled. Game play is typical, and it tracks level (a sort of function of number of games played). But it only lets you play 1 game every 8 minutes (games are fixed at 1 minute). And you can only accumulate ~5 games. So, you play for 5 minutes, then you have to go away for an hour.
Triple Town
This actually has some promise. It is a twist on the typical matching game, in that matches are "upgraded" instead of removed (I feel like I have played this style before, but I cannot place it). Successful play is rewarded with coins, which can assist in future games.
Except, you only get one move per minute, and can only bank 75 moves. So again, you play for a few minutes, then you're forced to move on.
What is the reasoning behind this? I cannot imagine. It cannot be server load, because these are Flash games which run locally. Worse, leaving and returning forces a re-download of the app, which must spike their bandwidth usage (although Triple Town seems a lot smarter about caching).
Tuesday, September 27, 2011
Eye of the Storm
"Eye of the Storm" (John Ringo) - This is a Posleen spin-off. I never read the Posleen books, because the library doesn't have the first one. When did libraries stop carrying old books? It's sad that you can't get anything more than ~10 years old at the library.
I really appreciate Ringo's sense of humor. He's clearly setting up some sort of anime parallel, but I don't know enough anime to be sure if it is exactly the same as one of them, or just flavored for them all. The mil-sf portions are good, as always, and he throws in a good twist at the end. Hopefully the library has the next one, as it is a cliff-hanger...
I really appreciate Ringo's sense of humor. He's clearly setting up some sort of anime parallel, but I don't know enough anime to be sure if it is exactly the same as one of them, or just flavored for them all. The mil-sf portions are good, as always, and he throws in a good twist at the end. Hopefully the library has the next one, as it is a cliff-hanger...
Thursday, September 08, 2011
Version Control By Example
"Version Control By Example" (Eric Sink) - I got this book for free (thanks Reddit!)
I admit I was skeptical at first. The book includes discussion of a new DVCS (Veracity). The DVCS environment is already very crowded (git, hg, bzr, bk, fossil, darcs).
The version control by example part is straight forward and pretty well done. There is one example which is repeated four times (svn, git, hg, veracity). But the author's humor resonated with me, and I found myself looking for the slight changes (which were always funny). It makes for a fast read.
The two big players right now are git and hg. I like git, but I will be the first to admit it is special. It makes a lot of sense to a hacker, and very little sense to anyone else (especially those who are used to svn). git really needs a front-end with a command set oriented towards people used to svn.
As I've mentioned, I hate hg. I shouldn't, but using it everyday in a fashion it's not really designed for makes me blame it. About once a week (twice this week), it just flakes out and refuses to work with any command (even hg log). Then I have to find the documentation on how to fix it, and I lose a half hour.
Fossil has some people excited because it integrates a few developer tools (wiki and bug tracking, IIRC). Veracity is similar, it has a distributed/versioned database which is used to implement these sorts of things (and user permissions).
As Sink points out, what good is it to commit code offline, if you can't update the documentation and the bug database?
I still have worries that veracity (vv) is oriented towards the svn/hg mindset (immutable history). If it can support all the flows from git, I could make the switch...
I admit I was skeptical at first. The book includes discussion of a new DVCS (Veracity). The DVCS environment is already very crowded (git, hg, bzr, bk, fossil, darcs).
The version control by example part is straight forward and pretty well done. There is one example which is repeated four times (svn, git, hg, veracity). But the author's humor resonated with me, and I found myself looking for the slight changes (which were always funny). It makes for a fast read.
The two big players right now are git and hg. I like git, but I will be the first to admit it is special. It makes a lot of sense to a hacker, and very little sense to anyone else (especially those who are used to svn). git really needs a front-end with a command set oriented towards people used to svn.
As I've mentioned, I hate hg. I shouldn't, but using it everyday in a fashion it's not really designed for makes me blame it. About once a week (twice this week), it just flakes out and refuses to work with any command (even hg log). Then I have to find the documentation on how to fix it, and I lose a half hour.
Fossil has some people excited because it integrates a few developer tools (wiki and bug tracking, IIRC). Veracity is similar, it has a distributed/versioned database which is used to implement these sorts of things (and user permissions).
As Sink points out, what good is it to commit code offline, if you can't update the documentation and the bug database?
I still have worries that veracity (vv) is oriented towards the svn/hg mindset (immutable history). If it can support all the flows from git, I could make the switch...
Sunday, September 04, 2011
Some Golden Harbor
"Some Golden Harbor" (David Drake) - This is actually an older book in the Lt. (now Commander) Leary series. It's interesting to read about the effects of some stressful event first, then go back and read it as it happens afterward.
Thursday, August 11, 2011
Stormy Red Sky
"In the Stormy Red Sky" (David Drake) - Another Lt. Leary (now brevet Admiral!). I'm impressed how Drake continues to deliver solid characters and action. These are turning out even better than the Hammer's Slammers books.
Monday, July 25, 2011
Exits In
Oh yea!

One of the last things I need ALH for is the underworld walls. Foolishly, I had assumed that every adjacent hex is connected to every other (and x wraps, but y doesn't). Of course, once my units started exploring the underworld, I realized I was wrong.
So, I had been tabbing back and forth, entering orders into my client, while looking at ALH for walls.
No more!
I've also added some niceties, like the total number of men in a unit ("1 men").

One of the last things I need ALH for is the underworld walls. Foolishly, I had assumed that every adjacent hex is connected to every other (and x wraps, but y doesn't). Of course, once my units started exploring the underworld, I realized I was wrong.
So, I had been tabbing back and forth, entering orders into my client, while looking at ALH for walls.
No more!
I've also added some niceties, like the total number of men in a unit ("1 men").
Saturday, July 23, 2011
D20
(continuing discussion of game characteristics)
There is a subtle but important element into how you generate random numbers for your game (I'm assuming most games will have a random element).
There actually is a game system called "D20" (where all decisions are made by rolling one twenty sided die). I prefer the GURPS system, which uses (mostly) 3d6.
The two systems are superficially similar. The range is about 20, and the average is around 10.

These are the probability (PDF, blue) and cumulative (CDF, orange) distribution functions for a d20. Totally flat. This means that any number from one to twenty is equally likely, similarly going from N or lower to N+1 or lower is always a 5% increase in probability.
So, a bonus which gives +1 is always worth 5%, whether your an expert or a novice.

These are the PDF and CDF for 3d6. Notice the distinct bell curve for the PDF, and the CDF resembles a sigmoid (which has characteristics similar to an exponential curve at the bottom, and logarithmic at the top).
This captures ideas like "diminishing returns". It also means that an "expert" (someone who could make a roll at 16 or lower) is less affected by difficulties (say, -1 on the roll) - going from 16 to 15 is a drop of ~3%. The same -1 is a 12.5% drop for an average person (10 or lower).
GURPS is limited by the human element. People must roll and count the dice, and increasing the number makes it more likely that one will go off the table, etc. A computerized system can generate any curve we like, with any range we like.
I'm thinking either 1-100, or 1-1000 - with this same bell shape. Something like 17d6.
There is a subtle but important element into how you generate random numbers for your game (I'm assuming most games will have a random element).
There actually is a game system called "D20" (where all decisions are made by rolling one twenty sided die). I prefer the GURPS system, which uses (mostly) 3d6.
The two systems are superficially similar. The range is about 20, and the average is around 10.

These are the probability (PDF, blue) and cumulative (CDF, orange) distribution functions for a d20. Totally flat. This means that any number from one to twenty is equally likely, similarly going from N or lower to N+1 or lower is always a 5% increase in probability.
So, a bonus which gives +1 is always worth 5%, whether your an expert or a novice.

These are the PDF and CDF for 3d6. Notice the distinct bell curve for the PDF, and the CDF resembles a sigmoid (which has characteristics similar to an exponential curve at the bottom, and logarithmic at the top).
This captures ideas like "diminishing returns". It also means that an "expert" (someone who could make a roll at 16 or lower) is less affected by difficulties (say, -1 on the roll) - going from 16 to 15 is a drop of ~3%. The same -1 is a 12.5% drop for an average person (10 or lower).
GURPS is limited by the human element. People must roll and count the dice, and increasing the number makes it more likely that one will go off the table, etc. A computerized system can generate any curve we like, with any range we like.
I'm thinking either 1-100, or 1-1000 - with this same bell shape. Something like 17d6.
Sunday, July 17, 2011
Drake
"When the Tide Rises" (David Drake) - Another Lt. Leary (now Commander). More solid work from Drake.
Thursday, July 14, 2011
Atlantis Updates
Some good new stuff!

I've lightened the hex borders (due to a request by a potential user). I've also added icons for taxing, production, shafts, and buildings. I also modified the city icons to reflect the size: villages are '-', towns are '+', and cities are '*'.
The new window is for production. Currently, I am just showing the maximum production values. But you can sort on the production name and value columns.

I've lightened the hex borders (due to a request by a potential user). I've also added icons for taxing, production, shafts, and buildings. I also modified the city icons to reflect the size: villages are '-', towns are '+', and cities are '*'.
The new window is for production. Currently, I am just showing the maximum production values. But you can sort on the production name and value columns.
Thursday, July 07, 2011
Monday, July 04, 2011
Stuff I've Read Lately
"The Dog Said Bow-Wow" (Michael Swanwick) - A collection of short stories. Not too bad. Nothing spectacular.
"When All Seems Lost" (William Dietz) - A fun mil-SF. The first two pages set the tone - after a page and a half of introducing the characters of a ship:
"What followed took place so quickly Tanaka and his crew, and the ship's computers were just beginning to process what was waiting for them when ten torpedoes scored direct hits on the destroyer escort and blew the ship to smithereens."
"When All Seems Lost" (William Dietz) - A fun mil-SF. The first two pages set the tone - after a page and a half of introducing the characters of a ship:
"What followed took place so quickly Tanaka and his crew, and the ship's computers were just beginning to process what was waiting for them when ten torpedoes scored direct hits on the destroyer escort and blew the ship to smithereens."
Wednesday, June 29, 2011
Game Characteristics
Games can be characterized as having "perfect" or "limited" knowledge. Also, they can be "deterministic" or "random".
Another important aspect of a game is what sort of "models" one must build for your opponents (and what is the cooperation model).
Chess is a deterministic game of perfect knowledge. So are: tic-tac-toe, checkers, and go. These games are of limited interest to me, because they are effectively searches of a state space. This limits the opponent model to estimating how well they can search the state space. The simplest being, "assume they can search the space as well as I can". This makes the game no different from playing oneself.
Most games include a random element (usually dice, cards, or a spinner). The simplest games are entirely random (they could be reduced to a coin toss to determine the winner). Examples of these are Candyland and Chutes and Ladders, which are really just tools for teaching game mechanics to children.
The only example that comes to mind of a deterministic game of limited knowledge is Stratego.
Also worth mention is Poker, which is often entirely random (stud vs. draw) and may have zero public information (a counter example is Texas Hold'em). Here the outcome of a player model is boolean (bluffing or not bluffing), but coming to that decision requires great skill.
A complex game will include all of these elements: combinations of public and private information, randomness and certainty, complex models of player behavior (driven by a wide choice of possible moves at any point) and player cooperation.
A good game can be built from a simpler set, but this space tends to be better explored (will you make a chess analogue?)
Another important aspect of a game is what sort of "models" one must build for your opponents (and what is the cooperation model).
Chess is a deterministic game of perfect knowledge. So are: tic-tac-toe, checkers, and go. These games are of limited interest to me, because they are effectively searches of a state space. This limits the opponent model to estimating how well they can search the state space. The simplest being, "assume they can search the space as well as I can". This makes the game no different from playing oneself.
Most games include a random element (usually dice, cards, or a spinner). The simplest games are entirely random (they could be reduced to a coin toss to determine the winner). Examples of these are Candyland and Chutes and Ladders, which are really just tools for teaching game mechanics to children.
The only example that comes to mind of a deterministic game of limited knowledge is Stratego.
Also worth mention is Poker, which is often entirely random (stud vs. draw) and may have zero public information (a counter example is Texas Hold'em). Here the outcome of a player model is boolean (bluffing or not bluffing), but coming to that decision requires great skill.
A complex game will include all of these elements: combinations of public and private information, randomness and certainty, complex models of player behavior (driven by a wide choice of possible moves at any point) and player cooperation.
A good game can be built from a simpler set, but this space tends to be better explored (will you make a chess analogue?)
Monday, June 20, 2011
New Space Opera
"The New Space Opera" (ed. Gardner Dozois and Jonathan Strahan) - There were a lot of good stories in here. It's good to see there is still some space opera being written today.
Sunday, June 19, 2011
Icons
Getting close!

I've been putting off doing the math for the icons :) Lots of radical threes.
Here we can see the three main icons - * for a city, ! for enemy units, @ for my units. ALH also has icons for ships, taxing, production. It also differentiates between my units on guard vs. not on guard. Not sure how important that is (although I need ships)...
I also still need to add roads and buildings.

I've been putting off doing the math for the icons :) Lots of radical threes.
Here we can see the three main icons - * for a city, ! for enemy units, @ for my units. ALH also has icons for ships, taxing, production. It also differentiates between my units on guard vs. not on guard. Not sure how important that is (although I need ships)...
I also still need to add roads and buildings.
Subscribe to:
Posts (Atom)