Read more »
Contándote un poco de quién soy y cómo me siento a los treinta. Libre y feliz.
Thursday, March 5, 2020
Newly-Made High Quality Controllers For Vintage Consoles
When you see new controllers being sold for your retro video game systems in your local retro video game store and in many online stores, they are typically of the atgames, Tomee, Cirka, Retro-bit, Gamerz-Tek or Hyperkin quality, which is essentially no-quality. When you buy these controllers, expect cheap plastic, stiff or rattling buttons, thin and short wires, useless turbo options and terrible D-pads. Occasionally one can find quality products that go above and beyond and try to compete or exceed the quality of original, first-party controllers. Let's take a look at some of the respectable options for your classic consoles.
Read more »
Read more »
Storium Theory: Inaction In Action
Sometimes, I see players make comments in a game, explaining why they haven't made a move in a challenge so far:
"I don't think this is something my character knows how to deal with."
"I'm not sure she cares about this."
"I think he's just kind of stunned right now.
"She doesn't know what to do."
Sometimes these are indications of a problem in the story - if all of a narrator's players are telling him their characters don't care about the current situation, it is probably time to revise the situation and figure out how to better relate it to the story at hand.
But...more often, they're a statement that is actually pointing directly at a very interesting opportunity for the character: A chance to make inaction your action.
When you're writing the story of a challenge, things are happening, whether your character is acting on them or not. Each move drives the timeline of the challenge forward. When a card is played, something happens, and the challenge moves positively or negatively, or just towards the end of its story.
So...if your character, for instance, doesn't know how to deal with something, and chooses not to act...that's a choice. And that's his "action" for that moment in the tale.
So let it be an action! Make your move! Show your character's uncertainty or confusion about what to do! Show how your character hasn't cared about the situation, if that's the case, and chooses to ignore it! Show how the situation has left your character stunned, or how he's tired and needs rest, or how his injuries prevent him from joining the battle!
Sometimes, those things are treated as reasons not to make a move, but...that's not what they should be. They are, in fact, excellent opportunities to make moves.
Especially...especially...if you have either Weakness cards to play, or a Subplot.
I'm stunned. I'm confused. I'm shell-shocked. I'm injured. I'm exhausted. I just plain don't care about this.
Those are all excellent weakness plays.
When a situation is ongoing and your character chooses not to do anything about it, that's a great opportunity to show what starts going wrong with the situation because your character is not preventing it. Philosophically, there's nothing really different here from if things start to go wrong and your character tries to prevent it and fails because of a Weakness, right? Something goes wrong either way. The difference is just that your character, in this case, didn't do something to stop it instead of doing something but getting it wrong.
What about Subplots? Well, Subplots are great for these situations too! When a character is shocked into inaction, when she finds something she doesn't care about, when he struggles to understand what he's supposed to do in a situation...those are great times to explore the other mysteries in a character's life or the things the character does care about. There are some excellent subplot moves available that show how the character withdraws into themselves, or starts thinking about how all this ties in with their personal problems, or tries to examine where they are right now...and because of all that, something starts to happen in the current situation, and they're not really sure what to do in the face of it...or even if they should do something.
A subplot isn't a weakness play, mind, so chances are nothing ends up going outright wrong right away, but you can certainly hint that something will! While your character is distracted by his own thoughts, or full of self-doubt, or struggling with what he's supposed to do, or disinterested in what is happening, how does the situation evolve?
If your character doesn't seem certain of what's going on, or doesn't know what to do, or just plain doesn't care...don't just drop out of the challenge. Use that to advance the challenge.
Now...one more point on this. Especially in the case of a character that "doesn't care" about a challenge, this can actually be a great way to figure out what would make them care, and therefore explain how a Strength comes into play, or at least how they get involved in the challenge despite their feelings. If you find yourself thinking that your character just wouldn't get involved for some reason or another, put a little time into thinking about what might happen because of that decision.
Then, write a move based on that...and maybe, maybe midway through the move, you'll realize the character now does know what to do, or does care about the situation, as she sees what is about to happen, or starts watching something she does care about slip away.
Maybe that leads to the character using a Strength and turning things around after all. Or maybe the character ends up doubling down on fear or uncertainty, or just takes the wrong action, using a Weakness. Or maybe, the character's Subplot drives him forward, making him engage with the challenge now that he's seen what it could mean if he doesn't.
Now...this isn't something you need to pull in all the time. (And to be clear, if you find yourself constantly trying to figure out why your character would get involved in something, it may be time to talk to the narrator about how to make your character mesh better with the story.) But there are times when an inability to think about something that your character would do can itself be precisely what drives the story forward and makes an interesting situation.
Don't overuse this, but...keep it in the toolbox. It's a handy trick to pull out and it can lead to some astonishingly interesting moments for a character if used properly.
Remember Spider-Man and Uncle Ben...sometimes, when your character doesn't take action, that ends up driving his story more than anything else.
"I don't think this is something my character knows how to deal with."
"I'm not sure she cares about this."
"I think he's just kind of stunned right now.
"She doesn't know what to do."
Sometimes these are indications of a problem in the story - if all of a narrator's players are telling him their characters don't care about the current situation, it is probably time to revise the situation and figure out how to better relate it to the story at hand.
But...more often, they're a statement that is actually pointing directly at a very interesting opportunity for the character: A chance to make inaction your action.
When you're writing the story of a challenge, things are happening, whether your character is acting on them or not. Each move drives the timeline of the challenge forward. When a card is played, something happens, and the challenge moves positively or negatively, or just towards the end of its story.
So...if your character, for instance, doesn't know how to deal with something, and chooses not to act...that's a choice. And that's his "action" for that moment in the tale.
So let it be an action! Make your move! Show your character's uncertainty or confusion about what to do! Show how your character hasn't cared about the situation, if that's the case, and chooses to ignore it! Show how the situation has left your character stunned, or how he's tired and needs rest, or how his injuries prevent him from joining the battle!
Sometimes, those things are treated as reasons not to make a move, but...that's not what they should be. They are, in fact, excellent opportunities to make moves.
Especially...especially...if you have either Weakness cards to play, or a Subplot.
I'm stunned. I'm confused. I'm shell-shocked. I'm injured. I'm exhausted. I just plain don't care about this.
Those are all excellent weakness plays.
When a situation is ongoing and your character chooses not to do anything about it, that's a great opportunity to show what starts going wrong with the situation because your character is not preventing it. Philosophically, there's nothing really different here from if things start to go wrong and your character tries to prevent it and fails because of a Weakness, right? Something goes wrong either way. The difference is just that your character, in this case, didn't do something to stop it instead of doing something but getting it wrong.
What about Subplots? Well, Subplots are great for these situations too! When a character is shocked into inaction, when she finds something she doesn't care about, when he struggles to understand what he's supposed to do in a situation...those are great times to explore the other mysteries in a character's life or the things the character does care about. There are some excellent subplot moves available that show how the character withdraws into themselves, or starts thinking about how all this ties in with their personal problems, or tries to examine where they are right now...and because of all that, something starts to happen in the current situation, and they're not really sure what to do in the face of it...or even if they should do something.
A subplot isn't a weakness play, mind, so chances are nothing ends up going outright wrong right away, but you can certainly hint that something will! While your character is distracted by his own thoughts, or full of self-doubt, or struggling with what he's supposed to do, or disinterested in what is happening, how does the situation evolve?
If your character doesn't seem certain of what's going on, or doesn't know what to do, or just plain doesn't care...don't just drop out of the challenge. Use that to advance the challenge.
Now...one more point on this. Especially in the case of a character that "doesn't care" about a challenge, this can actually be a great way to figure out what would make them care, and therefore explain how a Strength comes into play, or at least how they get involved in the challenge despite their feelings. If you find yourself thinking that your character just wouldn't get involved for some reason or another, put a little time into thinking about what might happen because of that decision.
Then, write a move based on that...and maybe, maybe midway through the move, you'll realize the character now does know what to do, or does care about the situation, as she sees what is about to happen, or starts watching something she does care about slip away.
Maybe that leads to the character using a Strength and turning things around after all. Or maybe the character ends up doubling down on fear or uncertainty, or just takes the wrong action, using a Weakness. Or maybe, the character's Subplot drives him forward, making him engage with the challenge now that he's seen what it could mean if he doesn't.
Now...this isn't something you need to pull in all the time. (And to be clear, if you find yourself constantly trying to figure out why your character would get involved in something, it may be time to talk to the narrator about how to make your character mesh better with the story.) But there are times when an inability to think about something that your character would do can itself be precisely what drives the story forward and makes an interesting situation.
Don't overuse this, but...keep it in the toolbox. It's a handy trick to pull out and it can lead to some astonishingly interesting moments for a character if used properly.
Remember Spider-Man and Uncle Ben...sometimes, when your character doesn't take action, that ends up driving his story more than anything else.
Wednesday, March 4, 2020
Riders Of The Pony Express Update
A few months ago, I dusted off my Riders of the Pony Express prototype. It went over really well with my current playtest group, which is always nice to see -- they don't love every game, and it makes me feel bad forcing them to play the ones they don't enjoy enough to "finish" them.
I played RotPE a couple more times lately, and tried the changes I listed in my last post:
1. Increase value of Bears from +2 to +3. I wanted to make the Bears more different from the Bandits (which are +2), and I wanted to make the Shotgun item better... a shotgun can be discarded to remove a bear or bandit from the board, but that's really not worth using ever. This change to +3 accomplished both of those goals, though the shotgun STILL wasn't good enough. Yesterday I tried an improved version of the shotgun: ONCE PER ROUND you can "kill" (turn face down) a Bandit or a Bear. This way you can use it twice, for 2-3 each time, which is a little better - maybe worthwhile. But I'm considering not even having that limit (after all, removing the tile helps other players too!)
2. Deal mandatory parcels face up instead of face down, they don't use up inventory slots. This change seemed good, and simplifies the rules quite a bit. Along with this change, I reduced the max inventory back down to 4 items. Of course, this means you must deliver it before the end of the round.
3. Instead of random parcels for rounds 2 and 3, let players draft from a face up supply of N+1 parcels when they arrive back at the post office. This worked well. It might be a little awkward to have to deal more cads out when you're done auctioning cards for the turn -- maybe better is to deal them at the same time you deal he cards to auction (put the auction cards on one side of the board and the new parcels on the other side)? Anyway, it seemed like a good change.
4. Movement change: Move from town to hazard, or hazard to town... This was proposed by Hoss because he did not feel like it made sense the way I was doing it (move from town to hazard, and on your next turn, finish moving into the town you were heading towards). However, we found hazard-town-hazard to be sort of tedious, and didn't like how that felt. As a compromise, we went back to what I had, but explained it a little differently: you move from town to town, but you ACT at the BEGINNING of your turn, not as you arrive in a town. So you move to the next town, paying whatever cost (by moving your time marker). Then next turn you deliver (if you have anything, costs 1 time), buy an item (if you want, costs 1 time), and then move to the next town (costs some amount based on route, hazard tile, and items you have). This format worked well, and I think it communicated better also.
In addition to those changes, one of my players had a good suggestion: the time track started out going down $1 per space, then later along the track it went 2 spaces per $ drop, and eventually 3 spaces. Aaron pointed out that that felt backwards... once you're already spending a lot of time, spending even more time didn't really cost you anything. So I reversed that... now at the beginning of the track you move several spaces before your reward drops, but farther along the track you lose $1 per space, and near the very end of the track you actually lose $2 per space! I also added a dead stop at the end of the track -- if you hit that, then your delivery phase is automatically over, and you lose $10 for each undelivered parcel. Those changes have all helped combat dynamics I didn't like in the game, and they work toward making sure players care how much they bid for things.
As I mentioned above, I beefed up the shotgun item, which is a definite improvement (side note, it combos with Spurs now, since you can remove the hazard AND then get your spurs discount). In addition, I tried changing the maps to say "ignore the hazard tile when moving to town X" rather than a discount of 2. This made the maps a little more variable, potentially more attractive (at least in some cases), and reduced some of the match involved in calculating your route. As it turns out, this makes maps better for Mountains (+5) and Bears (+3), the same for Banidts (+2) and Lost! (+2), and worse for Snakes (+1) and Rivers (+1). At first I didn't like that (I fear the maps are already not good enough), but you CAN discard them to any Lost! tile, and players seem to think they're worth getting, so maybe they're fine. I think I'll try the "ignore hazard" rule again to see if I want to keep it.
Similarly, Compass should say "ignore Lost! tiles" to help minimize the arithmetic in the game.
Finally, one of the worst parts of the game is the fiddly setup -- drawing a million square tiles and placing them on the board, then removing the tumbleweeds and snakes. Then in week 2, adding more tiles, only to remove tumbleweeds again, etc. I'm looking for a way to do bigger tiles that each cover several hazard spaces, so that setup can be simpler but the map board could still be somewhat variable with respect to where the mountains, rivers, and Lost! tiles are.
It would be cool to make the map not look like a schematic/grid as well!
I played RotPE a couple more times lately, and tried the changes I listed in my last post:
1. Increase value of Bears from +2 to +3. I wanted to make the Bears more different from the Bandits (which are +2), and I wanted to make the Shotgun item better... a shotgun can be discarded to remove a bear or bandit from the board, but that's really not worth using ever. This change to +3 accomplished both of those goals, though the shotgun STILL wasn't good enough. Yesterday I tried an improved version of the shotgun: ONCE PER ROUND you can "kill" (turn face down) a Bandit or a Bear. This way you can use it twice, for 2-3 each time, which is a little better - maybe worthwhile. But I'm considering not even having that limit (after all, removing the tile helps other players too!)
2. Deal mandatory parcels face up instead of face down, they don't use up inventory slots. This change seemed good, and simplifies the rules quite a bit. Along with this change, I reduced the max inventory back down to 4 items. Of course, this means you must deliver it before the end of the round.
3. Instead of random parcels for rounds 2 and 3, let players draft from a face up supply of N+1 parcels when they arrive back at the post office. This worked well. It might be a little awkward to have to deal more cads out when you're done auctioning cards for the turn -- maybe better is to deal them at the same time you deal he cards to auction (put the auction cards on one side of the board and the new parcels on the other side)? Anyway, it seemed like a good change.
4. Movement change: Move from town to hazard, or hazard to town... This was proposed by Hoss because he did not feel like it made sense the way I was doing it (move from town to hazard, and on your next turn, finish moving into the town you were heading towards). However, we found hazard-town-hazard to be sort of tedious, and didn't like how that felt. As a compromise, we went back to what I had, but explained it a little differently: you move from town to town, but you ACT at the BEGINNING of your turn, not as you arrive in a town. So you move to the next town, paying whatever cost (by moving your time marker). Then next turn you deliver (if you have anything, costs 1 time), buy an item (if you want, costs 1 time), and then move to the next town (costs some amount based on route, hazard tile, and items you have). This format worked well, and I think it communicated better also.
In addition to those changes, one of my players had a good suggestion: the time track started out going down $1 per space, then later along the track it went 2 spaces per $ drop, and eventually 3 spaces. Aaron pointed out that that felt backwards... once you're already spending a lot of time, spending even more time didn't really cost you anything. So I reversed that... now at the beginning of the track you move several spaces before your reward drops, but farther along the track you lose $1 per space, and near the very end of the track you actually lose $2 per space! I also added a dead stop at the end of the track -- if you hit that, then your delivery phase is automatically over, and you lose $10 for each undelivered parcel. Those changes have all helped combat dynamics I didn't like in the game, and they work toward making sure players care how much they bid for things.
As I mentioned above, I beefed up the shotgun item, which is a definite improvement (side note, it combos with Spurs now, since you can remove the hazard AND then get your spurs discount). In addition, I tried changing the maps to say "ignore the hazard tile when moving to town X" rather than a discount of 2. This made the maps a little more variable, potentially more attractive (at least in some cases), and reduced some of the match involved in calculating your route. As it turns out, this makes maps better for Mountains (+5) and Bears (+3), the same for Banidts (+2) and Lost! (+2), and worse for Snakes (+1) and Rivers (+1). At first I didn't like that (I fear the maps are already not good enough), but you CAN discard them to any Lost! tile, and players seem to think they're worth getting, so maybe they're fine. I think I'll try the "ignore hazard" rule again to see if I want to keep it.
Similarly, Compass should say "ignore Lost! tiles" to help minimize the arithmetic in the game.
Finally, one of the worst parts of the game is the fiddly setup -- drawing a million square tiles and placing them on the board, then removing the tumbleweeds and snakes. Then in week 2, adding more tiles, only to remove tumbleweeds again, etc. I'm looking for a way to do bigger tiles that each cover several hazard spaces, so that setup can be simpler but the map board could still be somewhat variable with respect to where the mountains, rivers, and Lost! tiles are.
It would be cool to make the map not look like a schematic/grid as well!
XCOM - The Long War Files
I recently became obsessed with XCOM: Enemy Unknown and decided to try out the player made overhaul known as "Long War" which expands the base game to be exceptionally difficult and in most regards more like an actual war. I decided to blog the exploits of my team in a yet unnamed project. I'd like each post in the series to be a stand-alone short story about the experiences of those involved - with some scattered pictures of the mission highlights. One of the greatest parts of the XCOM series is the stories it generates about these characters and their ordeals. I hope to capture some of that and share it here in this writing project.Table of Contents
Monday, February 24, 2020
Tech Book Face Off: Breaking Windows Vs. Showstopper!
For this Tech Book Face Off, I felt like expanding my horizons a bit. Instead of reading about programming languages or software development or computer science and engineering, I thought I would take a look at some computer history from the business perspective. There are plenty of reading options out there in this space, but I settled on a couple of books about Microsoft. The first, Breaking Windows: How Bill Gates Fumbled the Future of Microsoft by David Bank, is about Bill Gate's hardball business tactics that won him a monopoly in the PC desktop market, but then nearly destroyed the company in that fateful confrontation with the US Justice Department and caused him to miss the Internet and, later, the mobile revolution. The second, Showstopper! The Breakneck Race to Create Windows NT and the Next Generation at Microsoft by G. Pascal Zachary, has an even longer subtitle that neatly describes the book on its own. Both of these books were written quite a while ago, so let's see how their stories hold up today.
The narrative starts out with the backstory of how Gates came into his PC desktop monopoly by realizing that software—specifically the computer's operating system—would be an important and valuable part of the PC ecosystem. As PC hardware got cheaper and more prevalent, the software volumes would grow with the spread of the hardware, and at essentially zero marginal cost to Microsoft. All they needed to do was become the defacto standard OS. That's what Gates set out to do, and he succeeded with Windows 3.1 and then Windows 95. The bulk of the story takes place after Microsoft had achieved its monopoly and was deciding on strategies to defend it.
One of the main strategies was to identify competitors that were creating software that was somewhat tangential to Windows or could be added as a compelling feature, and whose software was becoming popular enough to potentially pose a threat to Windows by becoming a new platform. Microsoft would then create their own version of that software and integrate it into Windows or otherwise absorb the other company's software, nullifying the threat to their monopoly.
The most prominent example of this absorption strategy came with Internet Explorer and the browser wars between Microsoft and Netscape. Netscape Navigator started out with nearly the entire market of the World Wide Web before Microsoft got into the browser business. By the time Microsoft had revved up to IE 3.0, they had claimed a significant amount of market share from Netscape, and because of bundling IE with Windows and offering it for free to older versions of Windows, Netscape was doomed to lose in the long (or not-so-long) run.
Everything was not all peaches and cream within Microsoft, though. There were two warring camps fighting for the soul of Microsoft. On one side was the Windows team led by Jim Allchin that was developing the next big thing: Windows NT. On the other side was the Internet Platform and Tools Division led by Brad Silverberg that wanted to leave Windows behind and try to capture as much of this new Internet frontier as possible, using IE as the platform. Gates would end up siding with Allchin and IE became a part of the Windows platform instead of growing into one of its own.
It's almost comical seeing some of these disagreements today. One of the most important features of the IE platform that was integrated into Windows as an option was Active Desktop, but this feature seems so inconsequential today. Making the desktop background a web page was fraught with problems, and all that has survived is a way to enable single-click icons instead of the usual double-click to run a program. I don't think hardly anyone used it, especially after dealing with multiple desktop crashes. I remember it being a novelty for a while, but I soon stopped enabling it because it was so annoying and a double-click is so ingrained in my desktop usage.
Of course, the disagreement with the Justice Department over Microsoft's monopoly was not so insignificant. Part of the reason their tactics got them into trouble was because IE was offered as a free upgrade for older versions of Windows that didn't have it or had older versions of IE. If Microsoft had truly made IE an integrated part of Windows and only released new versions of it with new versions of Windows, Microsoft's competitors wouldn't have had as strong of a case. Microsoft wouldn't have had as strong of a monopoly, either, because IE was getting new versions much faster than Windows was and people that didn't upgrade Windows were still getting free upgrades of IE.
Even so, the government's eventual breakup proposal was preposterous. They wanted to force Microsoft to set prices for Windows versions with and without IE based on how many bytes each version was, like it was produce or meat or something. The government obviously had no understanding of what software really was, no idea how ridiculous that sounded, or what a good solution to the real problems of Microsoft's monopoly would actually look like. In the end that proposal was dropped, and the entire court case seemed to have done nothing more than give Microsoft a ton of bad press.
In the mean time Gates had done plenty of other damage to Microsoft and Windows because of deciding to pursue these retrenchment strategies with the browser and other things related to the Internet. Bank makes the case that Gates should have pursued the Internet platform strategy in order to disrupt his own business and grab the larger market that was just coming to light, but I'm not so sure that would have worked, either. If he had done that, would he have been able to beat Google before they rose to the top, or would he have been able to foresee the coming of mobile and the smartphone before Apple took over with the iPhone? It's hard to imagine Microsoft getting all of that right and still being top dog today. (Although they're now doing quite well now under Satya Nadella.)
There was so much more in this book, like the section on how XML came to be. (Of course bloated, complicated XML was created at Microsoft. In the book it was portrayed as a genius innovation by Adam Bosworth that would help Microsoft take over Internet data flows in spite of Gate's decisions. I'm so glad JSON has stopped that nonsense.) I could keep going, but it's all in the book. It was a wonderful trip down memory lane, covering plenty of things I had forgotten about that were a big deal at the time (remember the AOL shortcut bundled on the Windows Desktop). The book is decently written, if a bit confusing at times. Bank jumps around a lot, and there's no overarching timeline to the narrative. Regardless, it gives great insights into what was happening at Microsoft through all of the turmoil in its history and is well worth the quick read.
As the subtitle describes, Showstopper! is the story of how the first version of Windows NT was conceived and built. It makes for quite an engaging story, as the NT team was arranged within Microsoft in a unique way for the company. Instead of being a department that reported to and was directly overseen by Bill Gates, the team was more of a startup company within Microsoft that operated fairly independently and was left more or less to its own devices. Gates did check in and imposed some of his own requirements from time to time, but not anything like other departments within Microsoft.
One of the main reasons for this independence was the force of nature that was Dave Cutler, the chief architect and director of Windows NT. Cutler was aggressive and expected incredible things from his team, and he did not get along well with Gates, either. Gates had hired him when Cutler had left Digital Equipment Corp. and respected and trusted him enough to let Cutler run things as he saw fit, so Gates pretty much left him alone.
Cutler had brought along a number of programmers from his team at Digital to be the core of the NT team, and as he took on more Microsoft employees to build out the team, a rivalry emerged between the two groups:
Even with the occasional vagueness, other discussions were satisfyingly to the point, like whenever the client-server architecture of NT came up:
The book is also riddled with pieces of advice on software development, most often in the form of little narratives about different aspects of the project and a vast array of the programmers and testers that worked on it. Things like adding programmers to a late project makes it later, working longer hours is counterproductive, first make it right then make it fast, the number of bugs in a system is unknowable, and automated testing and stress tests improve code quality all appeared at various points in the story. It was enjoyable to see all of these hard-won nuggets of wisdom come up and be acknowledged during the course of such a high-profile project.
Sometimes the words of wisdom were quite humorous, too. At one point Cutler had written an email that included this gem: "If you don't put [bugs] in, you don't have to find them and take them out!" Well, yes, that's great. If only it were that easy! Of course he was trying to encourage his programmers to be more diligent and rigorous, but what a way to say it.
Throughout the book, new people were continuously introduced, each with their own mini-narratives told within the larger context of the NT project. It was nice to learn about so many different people that had a hand in the project, and there were dozens of stories related of the approximately 250 people that helped NT over the finish line, but it became exhausting to keep track of everyone as the names kept piling on. The number of people became pretty overwhelming even though only a small fraction of them made it into the book.
The scope and accomplishment that is Windows NT is quite astounding. Nothing like it had ever been done before, and the scale of the project was beyond anything achieved in software development up to that point. The scale of development wouldn't be surpassed until Windows 2000, seven years later. Even with the rough edges and occasional frustrations, the story of how NT was built was a fascinating and entertaining read. I would definitely recommend giving it a read if you're at all interested in how Microsoft managed to revolutionize its Windows operating system.
![]() | VS. | ![]() |
Breaking Windows
The narrative starts out with the backstory of how Gates came into his PC desktop monopoly by realizing that software—specifically the computer's operating system—would be an important and valuable part of the PC ecosystem. As PC hardware got cheaper and more prevalent, the software volumes would grow with the spread of the hardware, and at essentially zero marginal cost to Microsoft. All they needed to do was become the defacto standard OS. That's what Gates set out to do, and he succeeded with Windows 3.1 and then Windows 95. The bulk of the story takes place after Microsoft had achieved its monopoly and was deciding on strategies to defend it.
One of the main strategies was to identify competitors that were creating software that was somewhat tangential to Windows or could be added as a compelling feature, and whose software was becoming popular enough to potentially pose a threat to Windows by becoming a new platform. Microsoft would then create their own version of that software and integrate it into Windows or otherwise absorb the other company's software, nullifying the threat to their monopoly.
The most prominent example of this absorption strategy came with Internet Explorer and the browser wars between Microsoft and Netscape. Netscape Navigator started out with nearly the entire market of the World Wide Web before Microsoft got into the browser business. By the time Microsoft had revved up to IE 3.0, they had claimed a significant amount of market share from Netscape, and because of bundling IE with Windows and offering it for free to older versions of Windows, Netscape was doomed to lose in the long (or not-so-long) run.
Everything was not all peaches and cream within Microsoft, though. There were two warring camps fighting for the soul of Microsoft. On one side was the Windows team led by Jim Allchin that was developing the next big thing: Windows NT. On the other side was the Internet Platform and Tools Division led by Brad Silverberg that wanted to leave Windows behind and try to capture as much of this new Internet frontier as possible, using IE as the platform. Gates would end up siding with Allchin and IE became a part of the Windows platform instead of growing into one of its own.
It's almost comical seeing some of these disagreements today. One of the most important features of the IE platform that was integrated into Windows as an option was Active Desktop, but this feature seems so inconsequential today. Making the desktop background a web page was fraught with problems, and all that has survived is a way to enable single-click icons instead of the usual double-click to run a program. I don't think hardly anyone used it, especially after dealing with multiple desktop crashes. I remember it being a novelty for a while, but I soon stopped enabling it because it was so annoying and a double-click is so ingrained in my desktop usage.
Of course, the disagreement with the Justice Department over Microsoft's monopoly was not so insignificant. Part of the reason their tactics got them into trouble was because IE was offered as a free upgrade for older versions of Windows that didn't have it or had older versions of IE. If Microsoft had truly made IE an integrated part of Windows and only released new versions of it with new versions of Windows, Microsoft's competitors wouldn't have had as strong of a case. Microsoft wouldn't have had as strong of a monopoly, either, because IE was getting new versions much faster than Windows was and people that didn't upgrade Windows were still getting free upgrades of IE.
Even so, the government's eventual breakup proposal was preposterous. They wanted to force Microsoft to set prices for Windows versions with and without IE based on how many bytes each version was, like it was produce or meat or something. The government obviously had no understanding of what software really was, no idea how ridiculous that sounded, or what a good solution to the real problems of Microsoft's monopoly would actually look like. In the end that proposal was dropped, and the entire court case seemed to have done nothing more than give Microsoft a ton of bad press.
In the mean time Gates had done plenty of other damage to Microsoft and Windows because of deciding to pursue these retrenchment strategies with the browser and other things related to the Internet. Bank makes the case that Gates should have pursued the Internet platform strategy in order to disrupt his own business and grab the larger market that was just coming to light, but I'm not so sure that would have worked, either. If he had done that, would he have been able to beat Google before they rose to the top, or would he have been able to foresee the coming of mobile and the smartphone before Apple took over with the iPhone? It's hard to imagine Microsoft getting all of that right and still being top dog today. (Although they're now doing quite well now under Satya Nadella.)
There was so much more in this book, like the section on how XML came to be. (Of course bloated, complicated XML was created at Microsoft. In the book it was portrayed as a genius innovation by Adam Bosworth that would help Microsoft take over Internet data flows in spite of Gate's decisions. I'm so glad JSON has stopped that nonsense.) I could keep going, but it's all in the book. It was a wonderful trip down memory lane, covering plenty of things I had forgotten about that were a big deal at the time (remember the AOL shortcut bundled on the Windows Desktop). The book is decently written, if a bit confusing at times. Bank jumps around a lot, and there's no overarching timeline to the narrative. Regardless, it gives great insights into what was happening at Microsoft through all of the turmoil in its history and is well worth the quick read.
Showstopper!
As the subtitle describes, Showstopper! is the story of how the first version of Windows NT was conceived and built. It makes for quite an engaging story, as the NT team was arranged within Microsoft in a unique way for the company. Instead of being a department that reported to and was directly overseen by Bill Gates, the team was more of a startup company within Microsoft that operated fairly independently and was left more or less to its own devices. Gates did check in and imposed some of his own requirements from time to time, but not anything like other departments within Microsoft.
One of the main reasons for this independence was the force of nature that was Dave Cutler, the chief architect and director of Windows NT. Cutler was aggressive and expected incredible things from his team, and he did not get along well with Gates, either. Gates had hired him when Cutler had left Digital Equipment Corp. and respected and trusted him enough to let Cutler run things as he saw fit, so Gates pretty much left him alone.
Cutler had brought along a number of programmers from his team at Digital to be the core of the NT team, and as he took on more Microsoft employees to build out the team, a rivalry emerged between the two groups:
The Digital defectors also were more methodical about their jobs, hewing to textbook engineering practices in contrast to the Microsofties, who often approached a problem helter-skelter. Cutler's people took work seriously, while Microsofties sometimes tossed nerf balls in the hallways or strummed guitars in their offices. The differences in style were apparent to Cutler's people, who derisively referred to Microsoft as "Microslop." By the same token, Microsofties were put off by the clannishness of Cutler's gang.Regardless of these divisions, work got done and NT progressed through big scope changes and constant feature creep. Throughout the project Cutler never really trusted or approved of the graphics team. He had always been a terminal kind of guy and didn't see the need for a GUI, and he did not agree with the graphics team's much more laid back approach to software development. The graphics team was dealing with their own internal issues as well, having chosen a new, immature programming language to write the GUI: C++. While it was a new language at the time and the supporting tools were rough and unstable, G. Pascal Zachary's assessment of the language seems a little off:
While it was portable, however, C was difficult to master and gave a programmer a great deal of latitude, which increased the likelihood of coding errors. A more inspired choice—a gambler's choice—was C++, a newer language that was all the rage among software theorists. By preventing code writers from making mistakes, C++ promised faster results and greater consistency, which would benefit programs that were the work of many people.C++ is hardly easier to master than C! With C++ being a superset of C, C is most certainly the simpler language. While it may be true that C++ can support larger projects, it is also quite easy to make C++ programs much more complicated than C. These kinds of off-the-cuff assessments were fairly common in the book, and they made it seem like Zachary was either over-simplifying things or he didn't fully appreciate the technical aspects of these topics. This tendency to over-simplify was especially apparent whenever he was discussing features of NT. The discussions nearly always dealt in generalities, and it was difficult to figure out which features, exactly, he was talking about. He would mention that features were missing from NT or that programmers were adding features on their own whims without specifying what those features actually were. Not knowing what he was referring to became quite frustrating at times.
Even with the occasional vagueness, other discussions were satisfyingly to the point, like whenever the client-server architecture of NT came up:
Time and again, Cutler had hoped to dispel doubts about client-server. In his design, the kernel code treated the entire graphical portion of the operating system, including the Windows personality, as an application. It was a classic design choice. Client-server ensured reliability but degraded performance. It was probably Cutler's most momentous decision.The performance hit incurred with the client-server model was a constant issue during the development of NT, and it wasn't until near the end of the project, and after a year delay, that the performance was brought under control and near parity with Windows 3.1. The story of how Cutler's team achieved the necessary performance while fixing the innumerable bugs as NT came closer and closer to release was one of the best threads of the book.
The book is also riddled with pieces of advice on software development, most often in the form of little narratives about different aspects of the project and a vast array of the programmers and testers that worked on it. Things like adding programmers to a late project makes it later, working longer hours is counterproductive, first make it right then make it fast, the number of bugs in a system is unknowable, and automated testing and stress tests improve code quality all appeared at various points in the story. It was enjoyable to see all of these hard-won nuggets of wisdom come up and be acknowledged during the course of such a high-profile project.
Sometimes the words of wisdom were quite humorous, too. At one point Cutler had written an email that included this gem: "If you don't put [bugs] in, you don't have to find them and take them out!" Well, yes, that's great. If only it were that easy! Of course he was trying to encourage his programmers to be more diligent and rigorous, but what a way to say it.
Throughout the book, new people were continuously introduced, each with their own mini-narratives told within the larger context of the NT project. It was nice to learn about so many different people that had a hand in the project, and there were dozens of stories related of the approximately 250 people that helped NT over the finish line, but it became exhausting to keep track of everyone as the names kept piling on. The number of people became pretty overwhelming even though only a small fraction of them made it into the book.
The scope and accomplishment that is Windows NT is quite astounding. Nothing like it had ever been done before, and the scale of the project was beyond anything achieved in software development up to that point. The scale of development wouldn't be surpassed until Windows 2000, seven years later. Even with the rough edges and occasional frustrations, the story of how NT was built was a fascinating and entertaining read. I would definitely recommend giving it a read if you're at all interested in how Microsoft managed to revolutionize its Windows operating system.
Sunday, February 23, 2020
Thursday, February 20, 2020
Subscribe to:
Posts (Atom)


