10 interesting stories served every morning and every evening.
X-COM seemed to come out of nowhere. Its release was not preceded by an enormous marketing campaign with an enormous amount of hype. It had no video demo playing in the front window of Babbages, it wasn’t advertised twelve months in advance on glossy foldout magazine inserts, it had no ﬂashing point-of-purchase kiosks. It didn’t come in a box designed by origamists from the school of abstract expressionism. It featured no full-motion video starring the best TV actors of the 80s; it had no voice-overs. It offered neither Super VGA graphics, nor General MIDI support. It wasn’t Doom-like, Myst-like, or otherwise like a hit game from the previous season; it didn’t steal the best features from several other successful games. It wasn’t even on a CD-ROM!
In short, if you plugged X-COM’s variables into the “success formula” currently in use by the majority of large game companies, you’d come up with a big, fat goose egg. According to the prevailing wisdom, there’s no way X-COM could survive in today’s gaming marketplace. And yet it sold and sold, and gamers played on and on.
— Chris Lombardi, writing in the April 1995 issue of Computer Gaming World
In the early days of game development, there existed little to no separation between the roles of game programmer and game designer. Those stalwart pioneers who programmed the games they themselves designed could be grouped into two broad categories, depending on the side from which they entered the ﬁeld. There were the technologists, who were fascinated ﬁrst and foremost with the inner workings of computers, and chose games as the most challenging, creatively satisfying type of software to which they could apply their talents. And then there were those who loved games themselves above all else, and learned to program computers strictly in order to make better, more exciting ones than could be implemented using only paper, cardboard, and the players’ imaginations. Julian Gollop, the mastermind behind the legendary original X-COM, fell most definitely into this latter category. He turned to the computer only when the games he wanted to make left him no other choice.
Growing up in the English county of Essex, Julian and his younger brother Nick lived surrounded by games, courtesy of their father. “Every Christmas, we didn’t watch TV, we’d play games endlessly,” Julian says. From Cluedo, they progressed to Escape from Colditz, then on to the likes of Sniper! and Squad Leader.
Julian turned ﬁfteen in 1980, the year that the Sinclair ZX80 arrived to set off a microcomputer fever all across Britain, but he was initially immune to the afﬂiction. Unimpressed by the simplistic games he saw being implemented on those early machines, which often had as little as 1 K of memory, he started making his own designs to be played the old-fashioned way, face-to-face around a tabletop. It was only when he hit a wall of complexity with one of them that he reassessed the potential of computers.
The game in question was called Time Lords; as the name would imply, it was based on the Doctor Who television serials. It asked two to ﬁve players to travel through time and space and alter the course of history to their advantage, but grew so complex that it came to require an additional person to serve in the less-than-rewarding capacity of referee.
By this point, it was 1982, and a friend of Julian’s named Andy Greene had acquired one of the ﬁrst BBC Micros. Its relatively cavernous 32 K of memory opened up the possibility of using the computer as a referee instead of a bored human. Greene coded up the program in BASIC, staying faithful to Julian’s board game to the extent of demanding that players leave the room when it wasn’t their turn, so as not to see anything they weren’t supposed to of their opponents’ actions. The owner of the tabletop-games store where Julian shopped was so impressed with the result that he founded a new company, Red Shift Games, in order to publish it. They all traveled to computer fairs together, carrying copies of the computerized Time Lords packaged in Ziploc baggies. The game didn’t take the world by storm — Personal Computer News, one of the few publications to review it, pronounced it a “bored game” instead of a board game — but it was a start.
The two friends next made Islandia, another multiplayer strategy game of a similar stripe. In the meantime, Julian acquired a Sinclair Spectrum, the cheap and cheerful little machine destined to drive British computer gaming for the next half-decade. Having now a strong motivation to learn to program it, Julian did just that. His ﬁrst self-coded game, and his ﬁrst on the Spectrum, appeared in 1984 in the form of Nebula, a conquer-the-galaxy exercise that for the ﬁrst time offered a computer opponent to play against.
The artiﬁcial intelligence disappeared again from his next game, but it mattered not at all. Rebelstar Raiders was the prototype for Julian Gollop’s most famous work. In contrast to the big-picture strategy of his earlier games, it honed in on individual soldiers in conﬂict with one another in a Starship Troopers-like science-ﬁctional milieu. Still, it was very much based on the board games he loved; there was a lot of Sniper! and Squad Leader in its turn-based design. Despite being such a cerebral game, despite being one that you couldn’t even play without a mate to hand, it attracted considerable attention. Red Shift faded out of existence shortly thereafter as its owner lost interest in the endeavor, but Rebelstar Raiders had already made Julian’s reputation, such that other publishers were now knocking at his door.
It must have been a thrill for Julian Gollop the board-game fanatic when Games Workshop, the leading British publisher of hobbyist tabletop games, signed him to make a computer game for their new — if ultimately brief-lived — digital division. Chaos, a spell-slinging fantasy free-for-all ironically based to some extent on a Games Workshop board game known as Warlock — not that Julian told them that! — didn’t sell as well as Rebelstar Raiders, although it has since become something of a cult classic.
So, understandably, Julian went where the market was. Between 1986 and 1988, he produced three more iterations on the Rebelstar Raiders concept, each boasting computer opponents as well as multiplayer options and each elaborating further upon the foundation of its predecessor. Game designers are a bit like authors in some ways. Some authors — like, say, Margaret Atwood — try their hands at a wide variety of genres and approaches, while others — like, say, John Cheever — compulsively sift through the same material in search of new nuggets of insight. Julian became, in the minds of the British public at least, an example of the Cheever type of designer. “It could be said by the cruelest among us that Julian has only ever written one game,” wrote the magazine New Computer Express in 1990, “but has released various substantially enhanced versions of it over the years.”
Of those enhanced versions, Julian published Rebelstar and Rebelstar 2: Alien Encounter through Firebird as a lone-wolf developer, then published Laser Squad through a small outﬁt known as Blaze Software. Before he made this last game, he founded a company called Target Games — soon to be renamed to the less generic Mythos Games — with his father as silent partner and his brother Nick in an active role; the latter had by now become an accomplished programmer in his own right, in fact surpassing Julian’s talents in that area. In 1990, the brothers made the Chaos sequel Lords of Chaos together in order to prove to the likes of New Computer Express that Julian was at least a two-trick pony. And then came the series of events that would lead to Julian Gollop, whose games were reasonably popular in Britain but virtually unknown elsewhere, becoming one of the acknowledged leading lights of strategy gaming all over the world.
The road to X-COM traveled through the terrain of happenstance rather than any master plan. Julian’s career-deﬁning project started as Laser Squad 2 in spirit and even in name, the next manifestation of his ongoing obsession with small-scale, turn-based, single-unit tactics. The big leap forward this time was to be an isometric viewpoint, adding an element of depth to the battleﬁeld. He and Nick coded a proof of concept on an Atari ST. While they were doing so, Blaze Software disappeared, yet another ephemeral entity in a volatile industry. Now, the brothers needed a new publisher for their latest game.
Both of them had been playing hours and hours of Railroad Tycoon, from the American publisher MicroProse. Knowing that MicroProse had a British branch, they decided to take their demo there ﬁrst. It was a bold move in its way; as I’ve already noted, their games were popular in their sphere, but had mostly borne the imprints of smaller publishers and had mostly been sold at cheaper price points. MicroProse was a different animal entirely, carrying with it the cachet that still clung in Europe to American games, with their bigger budgets and higher production values. In their quiet English way, the Gollops were making a bid for the big leagues.
Luckily for them, MicroProse’s British ofﬁce was far more than just a foreign adjunct to the American headquarters. It was a dynamic, creative place in its own right, which took advantage of the laissez-faire attitude of “Wild” Bill Stealey, MicroProse’s ﬂamboyant ﬂy-boy founder, to blaze its own trails. When the Gollops brought in the nascent Laser Squad 2, they were gratiﬁed to ﬁnd that just about everyone at MicroProse UK already knew of them and their games. Peter Moreland, the head of development, was cautiously interested, but with plenty of caveats. For one thing, they would need to make the game on MS-DOS rather than the Atari ST in order to reach the American market. For another, a small-scale tactical-combat game alone wouldn’t be sufﬁcient — wouldn’t be, he said, “MicroProse enough.” After making their name in the 1980s with Wild Bill’s beloved ﬂight simulators, MicroProse was becoming at least as well known in this incipient new decade for grand-strategy games of or in the spirit of their star designer Sid Meier, like the aforementioned Railroad Tycoon and the soon-to-be-released Civilization. The emphasis here was on the “grand.” A Laser Squad 2 just wouldn’t be big enough for MicroProse.
Finally, Moreland wasn’t thrilled by all these far-future soldiers ﬁghting battles in unknown regions of space for reasons that were abstract at best. Who could really relate to any of that? He wanted something more down to earth — literally. Maybe something to do with alien visitors in UFOs… that sort of thing. Julian nodded along, then went home to do some research and reﬁne his proposal.
He quickly learned that he was living in the midst of a fecund period in the peculiar ﬁeld of UFOlogy. In 1989, a sketchy character named Bob Lazar had given an interview for a Las Vegas television station in which he claimed to have been employed as a civilian contractor at the top-secret Nevada military base known only as Area 51. In that location, so he said, the American Air Force was actively engaged in testing fantastic technologies derived from extraterrestrial visitors. The interview would go down in history as the wellspring of a whole generation of starry-eyed conspiracy theorists, whose outlandish beliefs would soon enter the popular media zeitgeist via such vehicles as the television series The X-Files. When Julian ﬁrst investigated the subject in 1991, however, UFOs and aliens were still a fairly underground obsession. Nevertheless, he took much from the early lore and legends of Area 51, such as a supposed new chemical element — called ununpentium by Lazar, elerium by the eventual game — which powered the aliens’ spaceships.
His other major source of inspiration was the 1970 British television series entitled simply UFO. In fact, his game would eventually be released as UFO: Enemy Unknown in Europe, capitalizing on the association with a show that a surprising number of people there still remembered. (I’ve chosen to use the American name of X-COM globally in this article because all subsequent games in the franchise would be known all over the world under that name; it has long since become the iconic one.) UFO the television series takes place in the then-near-future of 1980, when aliens are visiting the Earth in ever-increasing numbers, abducting humans and wreaking more and more havoc. An international organization known as SHADO (“Supreme Headquarters Alien Defence Organisation”) has been formed to combat the menace. The show follows the exploits of the SHADO operatives, complete with outlandish “futuristic” costumes and sets and gloriously cheesy special effects. Gollop lifted this basic scenario and moved it to his own near-future: to the year 1999, thus managing to nail not only his decade’s burgeoning obsession with aliens but also its unease about the looming millennium.
The game is divided into two distinct halves — so much so that each half is almost literally an entirely separate game: each unloads itself completely from memory to run a separate executable ﬁle at the point of transition, caching on the hard drive before doing so the relatively small amount of state data which its companion needs to access.
The ﬁrst part that you see is the strategic level. As the general in charge of the “Extra-Terrestrial Combat Force,” or X-COM — the name was suggested by Stephen Hand and Mike Brunton, two in-house design consultants at MicroProse UK — you must hire soldiers and buy equipment for them; research new technologies, a process which comes more and more to entail reverse-engineering captured alien artifacts in order to use your enemy’s own technology against them; build new bases at strategic locations around the world, as well as improve your existing ones (you start with just one modest base); and send your aircraft out to intercept the alien craft that are swarming the Earth. In keeping with the timeless logic of computer games, the countries of the Earth have chosen to make X-COM, the planet’s one real hope for defeating the alien menace, into a resource-constrained semi-capitalist enterprise; you’ll often need to sell gadgets you’ve manufactured or stolen from the aliens in order to make ends meet, and if you fail to perform well your sponsoring countries will cut their funding.
This half of the game was a dizzying leap into uncharted territory for the Gollop brothers. Thankfully, then, they were on very familiar ground when it came to the other half: the half that kicks in when your airborne interceptors force a UFO to land, or when you manage to catch the aliens in the act of terrorizing some poor city, or when the aliens themselves attack one of your bases. Here you ﬁnd yourself in what amounts to Laser Squad 2 in form and spirit if not in name: an ultra-detailed turn-based single-unit combat simulator, the latest version of a game which Julian Gollop had already made four times before. (Or close enough to it, at any rate: X-COM, the culmination of what had begun with Rebelstar Raiders on the Spectrum, is ironically single-player only, whereas that ﬁrst game had not just allowed but required two humans to play.) Although the strategic layer sounds far more complex than this tactical layer — and, indeed, it is in certain ways — it’s actually the tactical game where you spend the majority of your time, ﬁghting battles which can consume an entire evening each.
For all their differences, the two halves of the game do interlock in the end as two facets of a whole. Your research efforts, equipment purchases, and hiring practices in the strategic half determine the nature of the force you lead into the tactical man-against-alien battles. Less obviously but just as significantly, your primary reward for said battles proves to be the recovery of alien equipment, alien corpses, and even live alien specimens (all is fair in love and genocidal interplanetary war), which you cart back to your bases to place at the disposal of your research teams. And so the symbiotic relationship continues: your researchers use what you recover as grist for their mill, which lets you go into tougher battles with better equipment to hand, thereby to bring back still richer spoils.
The capsule description of the ﬁnished game which I’ve just provided mirrors almost perfectly the proposal which Julian Gollop delivered to MicroProse; the design would change surprisingly little in the process of development. MicroProse thought it sounded just ﬁne as-is.
The contract which the Gollops signed with MicroProse speciﬁed that the former would be responsible for all of the design and coding, while the latter would provide the visual and audio assets. MicroProse UK did hold up their end of the bargain, but had an oddly casual attitude toward the project in general. Julian remembers their producer as “very laid back — he would come over once a month, we would go to the pub, talk about the game for a bit, and he would go home.” Otherwise, the Gollops worked largely alone after their ﬁrst rush of consultations with the MicroProse mother ship had faded into the past. Time dragged on and on while they struggled with this massively complicated game, one half of which was unlike anything they had ever even contemplated before.
As it did so, much happened in the broader world of MicroProse. On the positive side, Sid Meier’s Civilization was released at the end of 1991. But despite this and some other success stories, MicroProse’s ﬁnancial foundation was growing ever more shaky, as their ambitions outran their core competencies. The company lost millions on an ill-judged attempt to enter the stand-up arcade market, then lost millions more on baroque CRPGs and ﬂashy interactivity-lite adventure games. After an IPO that was supposed to bail them out went badly off the rails, Wild Bill Stealey sold out in June of 1993 to Spectrum Holobyte, another American publisher. The deal seemed to make sense: Spectrum Holobyte had a lot of money, thanks not least to generous venture capitalists, but a rather thin portfolio of games, while MicroProse had a lot of games both out and in the pipeline but had just about run out of money.
Spectrum Holobyte sifted carefully through their new possession’s projects in development, passing judgment on which were potential winners and which certain losers. According to Julian Gollop, Spectrum Holobyte told MicroProse UK in no uncertain terms to cancel X-COM. On the face of it, it wasn’t an unreasonable point of view to take. The Gollops had been working for almost two years by this point, and still had few concrete results to show for their efforts. It really did seem that they were hopelessly out of their depth. Luckily for them, however, Peter Moreland and others in the British ofﬁce still believed in them. They nodded along with the order to bin X-COM, then quietly kept the project on the books. At this point, it didn’t cost them much of anything to do so; the art was already done, and now it was up to the Gollops to sink or swim with it.
X-COM bobbed up to the surface six months later, when the new, allegedly joint management team — Stealey would soon leave the company, feeling himself to have been thoroughly sidelined — started casting about for a game to feature in Europe in the ﬁrst quarter of 1994, thereby to make the accountants happy. Peter Moreland piped up sheepishly: “You remember that UFO project you told us to cancel? Well, it’s actually still kicking around…” And so the Gollop brothers, who had been laboring under strangely little external pressure for the past 26 months or so, were now ordered to get their game done already. They managed it, just — UFO: Enemy Unknown shipped in Europe in March of 1994 — but some of the problems in the ﬁnished game definitely stem from the deadline that was so arbitrarily imposed from on high.
But if the game could have used a few more months in the oven, it nonetheless shipped in better condition than many other MicroProse games had during the recent stretch of ﬁnancial difﬁculties. It garnered immediate rave reviews, while its sales also received a boost from another source. The ﬁrst episode of The X-Files had aired the previous September in the United States, followed by airings across Europe. Just like that, a game about hostile alien visitors seemed a lot more relevant. Indeed, the game possessed much the same foreboding atmosphere as the show, from its muted color palette to MicroProse composer John Broomhall’s quietly malevolent soundtrack, which he had created in just two months in the ﬁnal mad rush up to the release deadline. He couldn’t have done a better job if he’d had two years.
X-COM: UFO Defense shipped a few months later in North America, into a cultural zeitgeist that was if anything even more primed for it. Computer Gaming World, the American industry’s journal of record, gave it ﬁve stars out of ﬁve, and its sales soared well into the six digits. As the quote that opened this article attests, X-COM was in many ways the antithesis of what most publishers believed constituted a hit game in the context of 1994. Its graphics were little more than functional; it had no full-motion video, no real-time 3D rendering, no digitized voices; it ﬁt perfectly well on a few ﬂoppy disks, thank you very much, with no need for any new-fangled CD-ROM drive. And yet it sold better than the vast majority of those other “cutting-edge” games. Many took its success as a welcome sign that gaming hadn’t yet lost its soul completely — that good old-fashioned gameplay could still trump production values from time to time.
The original X-COM‘s reputation has only grown more hallowed in the years since its release. It’s become a perennial on best-games-of-all-time lists, even ones whose authors weren’t yet born at the time of its release. For this is a game, so we’re told, that transcends its archaic presentation, that absolutely any student of game design needs to play.
That’s rather ironic in that X-COM is a game that really shouldn’t work at all according to many of the conventional rules of design. For example, it’s one of the most famous of all violators of what’s become known as the Covert Action Rule, as formulated by Sid Meier and named after one of his own less successful designs. The rule states that pacing is as important in a strategy game as it is in any other genre, that “mini-games” which pull the player away from the overarching strategic view need to be short and to the point, as is the case in Meier’s classic Pirates!. If they drag on too long, Meier tells us, the player loses focus on the bigger picture, forgets what she’s been trying to accomplish there, gets pulled out of that elusive state of “ﬂow.”
But, as I already noted, X-COM‘s tactical battles can drag on for an hour or two at a time — and no one seems be bothered by this at all. What gives?
By way of an answer to that question, I would ﬁrst note that the Covert Action Rule is, like virtually all supposedly hard-and-fast rules of game design, riddled with caveats and exceptions. (Personally, I don’t even agree that violating the yet-to-be-formulated Covert Action Rule was the worst problem of Covert Action itself.) And I would also note that X-COM does at least a couple of things extraordinarily well as compensation, better than any strategy game that came before it. Indeed, one can argue that no earlier grand-strategy game even attempted to do these things — not, at least, to anything like the same extent. Interestingly, both inspired strokes are borrowed from other gaming genres.
The ﬁrst is the intriguing mystery surrounding the aliens, which is peeled back layer by layer as you progress. As your scientists study the equipment and alien corpses brought back from the battle sites and interrogate the live aliens your soldiers have captured, you learn more and more about where your enemies come from and what motivates them to attack the Earth so relentlessly. It doesn’t take long to reach a point where you look forward to the next piece of this puzzle as excitedly as you do the next cool gun or piece of armor. By the time the whole experience culminates in a desperate attack on the aliens’ home base, you’re all in. Granted, a byproduct of this sense of unfolding discovery is that you may not feel like revisiting the game after you win; for many or most of us, this is a strategy game to play through once rather than over and over again. But on the other hand, considering the ﬁfty hours or more it will take you to get through it once, it’s hard to complain overmuch about that fact. Needless to say, when you do play it for the ﬁrst time you should meticulously avoid spoilers about What Is Really Going On Here.
X-COM‘s other, even more brilliant stroke is the sense of identiﬁcation it builds between you and the soldiers you send into battle. Each soldier has unique strengths and weaknesses, forcing you to carefully consider the role she plays in combat: a burly, fearless character who can carry enough weaponry to outﬁt your average platoon but couldn’t hit the proverbial broad side of a barn must be handled in a very different way from a slender, nervous sharpshooter. As your soldiers (hopefully) survive missions, their skills improve, CRPG-style. Thus you have plenty of practical reasons to be more loathe to lose a seasoned veteran than a greenhorn fresh out of basic training. And yet this purely zero-sum calculus doesn’t fully explain why each mission is so nail-bitingly tense, so full of agonizing decisions balancing risk against reward.
One of X-COM‘s most deﬁning design choices is also one of its simplest: it lets you name each soldier for yourself. As you play, you form a picture of each of them in your imagination, even though the game itself never describes any of them to you as anything other than a list of numbers. Losing a soldier who’s been around for a while feels weirdly like losing a genuine acquaintance. For here too you can’t help but embellish the thin scaffolding of fact the game provides with your own story of what happened: the grizzled old-timer who went out one time too many, whose nerves just couldn’t handle another ﬁreﬁght; the foolhardy, testosterone-addled youth who threw himself into every battle like he was indestructible, until one day he wasn’t. X-COM provides the merest glimpse of what it must feel like to be an actual commander in war: the overwhelming stress of having the lives of others hanging on your decisions, the guilty second-guessing that inevitably goes on when you lose someone. It has something that games all too often lack: a sense of consequences for your actions. Theoretically at least, the best way to play it is in iron-man mode: no saving and restoring to ﬁx bad outcomes, dead is dead, own your decisions as commander.
In one of those strange concordances that tend to crop up in many creative ﬁelds, X-COM wasn’t the only strategy game of 1994 to bring in CRPG elements to great effect. Ironically, these innovations occurred just as the CRPG genre itself was in its worst doldrums since Ultima I and Wizadry I had ﬁrst brought it to prominence. Today, even as the CRPG has long since regained its mojo as a gaming genre, CRPG elements have become the special sauce ladled over a wide array of other types of games. X-COM was among the ﬁrst to show how tasty the end result could be.
I have to say, however, that I ﬁnd other elements of X-COM less appetizing, and that its strengths don’t quite overcome its weaknesses in my mind sufﬁciently to win it a place on my personal list of best games ever. My ﬁrst stumbling block is the game’s learning curve, which is not just steep but unnecessarily so. I’d like to quote Garth Deangelis, who led the team that created XCOM: Enemy Unknown, the critically acclaimed franchise reboot that was released in 2012:
While [the original X-COM] may have been magnificent, it was also a unique beast when it came to beginning a new game. We often joked that the diehards who mastered the game independently belonged to an elite club because by today’s standards the learning curve was like climbing Mount Everest.
As soon as you ﬁre up the original, you’re placed in a Geoscape with the Earth silently looming, and various options to explore within your base — including reading (unexplained) ﬁnancial reports, approving manufacturing requests (without any context as to what those would mean later on), and examining a blueprint (which hinted at the possibility for base expansion), for example — the player is given no direction.
Even going on your ﬁrst combat mission can be a bit of a mystery (and when you ﬁrst step off the Skyranger, the game will kill off a few of your soldiers before you even see your ﬁrst alien — welcome to X-COM!).
There’s certainly a place for complex games, and complexity will always come complete with a learning curve of some sort. But, again, X-COM‘s curve is just unnecessarily steep. Consider: when you begin a new game, you have two interceptors already in your hangar for bringing down UFOs. Fair enough. Unfortunately, they come equipped with sub-optimal Stingray missiles and borderline-useless cannon. So, one of the ﬁrst tasks of the experienced player becomes to requisition some more advanced Avalanche missiles, put them on her interceptors, and sell off the old junk. Why can the game not just start you off with a reasonable weapons load-out? A similar question applies to the equipment carried by your individual soldiers, as it does to the well-nigh indefensible layout of your starting base itself, which makes it guaranteed to fall to the ﬁrst squad of marauding aliens who come calling. The new player is likely to assume, reasonably enough, that the decisions the game has already made for her are good ones. She ﬁnds out otherwise only by being kicked in the teeth as a result of them. This is not good game design. The impression created is of a game that is not tough but fair, but rather actively out to get her.
You’ll never use a large swath of the subpar weapons and equipment included in X-COM, which rather begs the questions what they’re doing in there. The game could have profited greatly from an editor empowered to pare back all of this extraneous nonsense and hone in on its core appeal. Likewise, the user interface in the strategic portion operates on the principle that, if one mouse click is good, ten must be that much better; everything is way more convoluted than it needs to be. Just buying and selling equipment is agonizing.
The tactical game’s interface is also dauntingly complex, but does have somewhat more method to its madness, being the beneﬁciary of all of Julian Gollop’s earlier experience with this sort of game. Still, even tactical combat, so widely and justly lauded as the beating heart of X-COM, is not without its frustrations. Certainly every X-COM player is all too familiar with the last-alien-on-the-map syndrome, where you sometimes have to spend ﬁfteen or twenty minutes methodically hunting the one remaining enemy, who’s hunkered down in some obscure corner somewhere. The nature of the game is such that you can’t relax even in these situations; getting careless can still get one or more of your precious soldiers killed before you even realize what’s happening. But, although perhaps a realistic depiction of war, this part of the game just isn’t much fun. The problem is frustrating not least because it’s so easily soluble: just have the remaining aliens commit suicide to avoid capture — something entirely in keeping with their nature — when their numbers get too depleted.
All of these niggling problems mark X-COM as the kind of game I have to rant about here all too often: the kind that was never actually played before its release. For all its extended development time, it still needed a few more months ﬁlled with play-testing and polishing to reach its full potential. X-COM‘s most infamous bug serves as a reminder of just how little of either it got: its difﬁculty levels are broken. If you select something other than the “beginner” difﬁculty, it reverts back to the easiest level after the ﬁrst combat mission. In one sense, this is a blessing: the beginner difﬁculty is more than difﬁcult enough for the vast majority of players. On the other, though… how the heck could something as basic as that be overlooked? There’s only one way that I can see: if you barely played the game at all before you put it in a box and shipped it out the door.
To his credit, Julian Gollop himself is well aware of these issues and freely acknowledges them — does so much more freely in fact than some of his game’s biggest fans. He notes the inﬂuence of vintage Avalon Hill and SPI board games, some of which were so demanding that just being able to play them at all — never mind playing them well — was an odd sort of badge of honor for the grognards of the 1970s and early 1980s. He would appear to agree with me that there’s a bit too much of their style of complexity-for-its-own-sake in X-COM:
I believe that a good game may have relatively simple rules, but have complex situations arise from them. Strategy games tend to do that very well, you know — even the simplest ones are very good at that. I think it’s possible to have an accessible game which doesn’t have amazingly complex rules, but still has a kind of emerging complexity within what happens — you know, what players do, what players explore. For me, that’s the Holy Grail of game design. So, I don’t think that I would probably go back to making games as complex as [X-COM].
Like poets, game designers often simplify their work as they age, the better to capture the real essence of what they’re trying to express.
But whatever their ﬁnal evaluation of the ﬁrst game, most players then and now would agree that few franchises have been as thoroughly botched by their trustees as X-COM was afterward. When the ﬁrst X-COM became an out-of-left-ﬁeld hit, MicroProse UK, who had great need of hits at the time to impress the Spectrum Holobyte brass, wanted the Gollops to provide a sequel within a year. Knowing that that amount of time would allow them to do little more than reskin the existing engine, they worked out a deal: they would give their publisher their source code and let them make a quickie sequel in-house, while they themselves developed a more ambitious sequel for later release.
The in-house MicroProse project became 1995’s X-COM: Terror from the Deep, which posited that, forty years after their defeat at the end of the ﬁrst game, the aliens have returned to try again. The wrinkle this time is that they’ve set up bases under the Earth’s oceans, which you must attack and eradicate. Unfortunately, Terror from the Deep does little to correct the original’s problems; if anything, it makes them worse. Most notably, it’s an even more difﬁcult game than its predecessor, a decision that’s hard to understand on any level. Was anyone really complaining that X-COM was too easy? All in all, Terror from the Deep is exactly the unimaginative quickie sequel which the Gollops weren’t excited about having to make.
Nevertheless, it’s arguably the best of the post-original, pre-reboot generation of X-COM games. X-COM: Apocalypse, the Gollops’ own sequel, was a project on a vastly greater scale than the ﬁrst two X-COM games, a scale to which they themselves struggled to adapt. It was riven by bureaucratic snafus and constant conﬂict between developer and publisher, and the resulting process of design-by-fractious-committee turned it into a game that did a lot of different things — turned-based and real-time combat in the very same game! — but did none of them all that well, nor even looked all that good whilst doing them. Julian Gollop today calls it “the worst experience of my entire career” and “a nightmare.” He and Nick cut all ties with MicroProse after its 1997 release.
After that, MicroProse lost the plot entirely, stamping the X-COM label onto games that had virtually nothing in common with the ﬁrst one. X-COM: Interceptor (1998) was a space simulator in the mode of Wing Commander; Em@il Games: X-COM (1999) was a casual multiplayer networked affair; X-COM: Enforcer (2001) was a mindless shoot-em-up. This last proved to be the ﬁnal straw; the X-COM name disappeared for the next eleven years, until XCOM: Enemy Unknown, the reboot by Firaxis Games.
If you ask me, said reboot is in absolute terms a better game than the original, picking up on almost all of its considerable strengths while eliminating most of its weaknesses. But it cannot, of course, lay claim to the same importance in the history of gaming. Despite its ﬂaws, the original X-COM taught designers to personalize strategy games, showed them how to raise the emotional stakes in a genre previously associated only with cool calculation. For that reason, it richly deserves its reputation as one of the most important games of its era.
(Sources: the book Grand Thieves and Tomb Raiders: How British Video Games Conquered the World by Magnus Anderson and Rebecca Levene; Amstrad Action of October 1989; Computer Gaming World of August 1994, September 1994, April 1995, and July 1995; Crash of Christmas 1988 and May 1989; Game Developer of April 2013; Retro Gamer 13, 68, 81, 104, 106, 112, and 124; Amiga Format of December 1989, June 1994, and November 1994; Amiga Format of December 1989, June 1994, and November 1994; Computer and Video Games of December 1988; Games TM 46; New Computer Express of September 15 1990; Games Machine of July 1988; Your Sinclair of August 1990 and September 1990; Personal Computer News of July 21 1983. Online sources include Julian Gollop’s X-COM postmortem from the 2013 Game Developers Conference, “The Story of X-COM at EuroGamer, and David Jenkins’s interview with Julian Gollop at Metro.
The original X-COM is available for digital purchase at GOG.com, as are most of the other X-COM games mentioned in this article.)
My least favorite Rust type is std::ops::Range.
Range is a foundational type, with magic syntax but a simple definition:
Idx is typically an integral type, but you can make a Range of anything, which will become important later. Here’s a range of Unit:
What’s wrong with Range? This will be a critique on Rust’s own terms.
Any Rust tutorial will cover borrowing, lifetimes, ownership, etc. You think you understand, then this:
You need the borrow because you can’t like, OWN a number, man!
Heh, no, it’s because, what if you wanted to make a Range instead:
Range requires the borrow, so the vastly more common Range etc. forces it as well.
We’re not done picking on the borrow checker. Range makes you clone even when there’s no ownership transfer:
Range could be Copy, but some Ranges are also iterators and you might copy one by mistake:
so Ranges which are not used as iterators (many cannot be, like Range or Range) pay the price, and so does any type which embeds a Range.
This is abusing the borrow checker as a bad linter. Range undermines the story of lifetimes and ownership, making the borrow checker feel arbitrary.
Rust will happily construct a backwards Range, which ends before it starts:
Is this backwards range valid? Its len() is 0, it contains() nothing, it yields nothing as an iterator. But if you try to use it to index into a slice, you get a panic! So it looks valid but is primed to explode!
This is because - again - you can make a Range of anything. If you try to enforce that start dyn Error can’t be invalid, so a Range of int never gets to be.
A practical problem is writing correct bounds checks. For example, consider the get_unchecked function on slice - it says “an out-of-bounds index is undeﬁned behavior” but never deﬁnes what out of bounds means. So how does one even call this function safely?
Restated: a Range with start 0 and length 0 may be out of bounds. That’s wild.
A regex engine (here’s one) often deals in ranges of char, for example /[a-z]/. Should it use Range?
No! The footgun is /[\u10FFFF]/, which is the largest char. Range cannot represent this value, even though it has the bits to do so.
Is RangeInclusive a better choice? This uses an additional bool ﬁeld to mean…stuff, and it needs to be separately checked in several places. This is a silly expensive representation, pushing RangeInclusive to 12 bytes even though it would ﬁt in 8, with bits to spare. Not a good choice for a perf-sensitive regex algorithm.
The problem is Range is overloaded: it’s too ﬂexible, it wants to be everything.
* You can make silly Ranges out of anything
These goals are in tension, and it meets none of them well.
Perhaps it’s too late and we must live with this wart, but a recipe for a different approach:
Limit Range to Copy + PartialOrd types. There may be occasional uses for Range or Range, but it’s not worth forcing borrowing for the common case.
Now that Range always knows how to compare its ends, enforce that start at construction time. For Ranges constructed from constants, this will be free. This avoids the “looks valid, actually explodes” problem and will unlock further optimizations:
Range::is_empty() could be written naturally instead of a a bizarre way just for NaNs
[T]::get() would need to branch once, not twice
Range::len() could just be a sub and not require a branch
Give Range an iter() method, like other collections have. Now Range is not an Iterator, just like Vec is not an Iterator, and Range can be easily made Copy. This does mean writing for n in (1..10).iter(), but Rust already requires that for collections, so it’s more consistent.
Now that Range is not an Iterator, RangeInclusive can drop its extra bool. It would simply be a pair of indexes, and could not be empty (that’s what Swift does).
Firefox includes a built-in PDF viewer to display PDF ﬁles inside the browser window. This article explains how to use the built-in PDF viewer, how to ﬁx the common issues you might encounter, and how to use another PDF viewer.
Firefox includes a built-in PDF viewer that allows you to view almost all PDF ﬁles found on the web without an external application (exceptions to this are PDF ﬁles with a MIME type incorrectly set). This built-in PDF viewer is enabled by default. When you click on a link to a PDF ﬁle or open it from the Firefox Downloads panel, it will be rendered with the built-in pdf viewer.
Some PDFs ﬁles have interactive ﬁelds to ﬁll in data (such as on forms). Using Firefox’s built-in PDF viewer you can ﬁll out ﬁelds such as text, check boxes and radio buttons. After entering data into these ﬁelds you can download the ﬁle to have the ﬁlled out version saved to your computer.
* View document thumbnails or outline: The slider button on the far left will open a sidebar with thumbnails of the document’s pages. Some documents will also have an outline view available. These make it easy to navigate through a long document.
* Page up and down or skip directly to a page: You can use the up and down arrows to page through a document or enter the number of the page you want to go to.
* Change the size of the document: Use the + and - buttons to zoom in and out or choose a zoom setting from the dropdown menu.
* Fullscreen or Presentation mode: Click the fullscreen button to allow the PDF ﬁle to take over your entire screen. Press to exit fullscreen mode.
* Print: Click the Printer button to open the print setup dialog.
* Download: Click the Download button to save the PDF ﬁle to your computer or to open it with a PDF reader program.
* Copy current view: Hold down the key while you click
the current view button to open the current view in another tab or window.
* With certain types of PDF ﬁles, the PDF Viewer may have problems displaying fonts, colors or the whole document. If some PDF ﬁles don’t render well or are blank, click the download button on the right side of the document header to open it with the default PDF viewer application on your computer.
* If you can’t open any PDF ﬁles with the built-in PDF viewer, a Firefox extension could be the cause. You can disable all of your extensions, to see if one of them was the problem. For details, see Troubleshoot extensions, themes and hardware acceleration issues to solve common Firefox problems.
You can also use a different third party PDF viewer instead of Firefox’s built-in PDF viewer. To change from using the built-in PDF viewer to another PDF viewer:
In the panel, go down to the Applications section.
Find Portable Document Format (PDF) in the list and click on the entry to select it.
Click on the arrow under the Action column for the above entry and select the PDF viewer you wish to use from the drop-down menu.
Set Firefox to ask you what to do with PDF ﬁles
If you want Firefox to always ask you what to do with PDF ﬁles, follow the above steps to change the action for the Portable Document Format (PDF) entry, except select Always ask from the drop-down menu. The next time you click on a link to download a PDF ﬁle, Firefox will show you a prompt asking what to do with the ﬁle. You can then choose to open it with Firefox’s built-in PDF viewer, open it with a different PDF application, or you can choose to save the ﬁle.
For more information, see Change what Firefox does when you click on or download a ﬁle.
You can choose to have Firefox’s built-in PDF viewer as the default for viewing PDFs in the browser but open downloaded PDF ﬁles with a third party tool. To open a PDF ﬁle you downloaded in Firefox, using a third party viewer:
Open the Downloads panel by clicking the
download icon next to the address bar.
Right-click on the ﬁle folder icon
of the PDF ﬁle and select Hold down the key while you click (two ﬁnger click) the magnifying glass icon
of the PDF ﬁle and select
Then in the Downloads folder, on the ﬁle and select and choose your favorite PDF viewer.
Postgres 13 is almost here. It’s been in beta since May, and the general availability release is coming any day. We’ve been following Postgres 13 closely here at pganalyze, and have been running the beta in one of our staging environments for several months now.
There are no big new features in Postgres 13, but there are a lot of small but important incremental improvements. Let’s take a look.
Postgres 13 performance improvements include both built-in optimizations and heuristics that will make your database run better out of the box, as well as additional features to give you more ﬂexibility in optimizing your schema and queries.
Postgres 13 introduces a way for B-Tree indexes to avoid storing duplicate entries in some situations. In general, a B-Tree index consists of a tree of indexed values, with each leaf node pointing to a particular row version. Because each leaf points to one row version, if you are indexing non-unique values, those values need to be repeated.
The de-duplication mechanism avoids that by having a leaf node point to several row versions if possible, which leads to smaller indexes.
Here is an example from our own pganalyze application schema: We have a queries table to track all the queries we monitor, and a database_id ﬁeld to track which database they belong to. We index database_id (so we can quickly fetch queries for a speciﬁc database), and because each database typically has more than one query, there is a lot of duplication in this index.
New B-Tree indexes in Postgres 13 use the deduplication feature by default, but if for some reason, you need to turn it off, you can control it with the deduplicate_items storage parameter. Here we create the same index in two different ways, with deduplication explicitly on and off (though again, you don’t need to specify on—this is the default):
With deduplication, the new index is more than three times smaller! Smaller indexes are faster to load from disk, and take up less space in memory, meaning there’s more room for your data.
One interesting note here is that the index entries point to row versions (as in, a row the way it exists in one speciﬁc MVCC state), not rows themselves, so this feature can improve index size even for unique indexes, where one would not expect any duplication to occur.
Note that deduplication is not possible in all cases (see above link for details), and that you will need to reindex before you can take advantage of it if upgrading via pg_upgrade.
Postgres 10 introduced the concept of extended statistics. Postgres keeps some statistics about the “shape” of your data to ensure it can plan queries efﬁciently, but the statistics kept by default cannot track things like inter-column dependencies. Extended statistics were introduced to address that: These are database objects (like indexes) that you create manually with
CREATE STATISTICS to give the query planner more information for more speciﬁc situations. These would be expensive for Postgres to determine automatically, but armed with an understanding of the semantics of your schema, you can provide that additional info. Used carefully, this can lead to
massive performance improvements.
Postgres 13 brings a number of small but important improvements to extended statistics, including support for using them with OR clauses and in IN/ANY constant lists, allowing consideration of multiple extended statistics objects in planning a query, and support for
setting a statistics target for extended statistics:
Like with the regular statistics target, this is a trade-off between additional planning time (and longer ANALYZE runs), versus having more precise plans. We recommend using this in a targeted manner using EXPLAIN plans to conﬁrm plan changes.
Postgres multi-version concurrency control means you need to run VACUUM regularly (usually you can rely on the autovacuum process, though it may need some tuning). In Postgres 13, one notable improvement is that multiple indexes for a single table can be vacuumed in parallel. This can lead to big performance improvements in VACUUM work. Parallel VACUUM is the default and can be controlled with the PARALLEL option:
Parallel VACUUM occurs when the following is true:
* Sufﬁcient parallel workers are available, based on the system-wide limit set by max_parallel_maintenance_workers (defaults to 2)
* There are multiple indexes on the table (one index can be processed by one worker at a time)
* Index types support it (all built-in index types support parallelism to some extent)
* The indexes are large enough to exceed min_parallel_index_scan_size (defaults to 512 kB)
Be aware that parallel VACUUM is currently not supported for autovacuum. This new feature is intended for use in manual VACUUM runs that need to complete quickly, such as when insufﬁcient autovacuum tuning has lead to an imminent TXID wraparound, and you need to intervene to ﬁx it.
On that note, an important autovacuum improvement in Postgres 13 is that the autovacuum background process can now be triggered by INSERT statements for append-only tables. The main purpose of VACUUM is to clean up old versions of updated and deleted rows, but it is also essential to set pages as all-visible for MVCC bookkeeping. All-visible pages allow index-only scans to avoid checking visibility status row-by-row, making them faster.
We make extensive use of append-only tables at pganalyze for our timeseries data, and this improvement will make our lives considerably easier, avoiding the occasional manual VACUUM run on these tables. This new behavior can be controlled by the autovacuum_vacuum_insert_threshold and autovacuum_vacuum_insert_scale_factor variables.
Sorting data is a common database task, and Postgres has a number of features to avoid unnecessary work here. For example, if you have a B-Tree index on a column, and you query your table ordered by that column, it can just scan that index in order to get sorted data.
In Postgres 13, this is improved to handle partially sorted data. If you have an index on (a, b) (or the data is already sorted by (a, b) for another reason), and you issue a query to order by (a, b, c), Postgres understands that the input data is already partially sorted, and can avoid re-sorting the whole dataset. This is especially useful if you have a LIMIT in your query, since this can avoid even more work.
Monitoring improvements in Postgres 13 include more details on WAL usage, more options for logging your queries, and more information on query planning.
The write-ahead log (WAL) ensures your data stays consistent in the event of a crash, even mid-write. Consistency is a fundamental property of databases—it ensures your transaction either committed or did not commit; you don’t have to worry about in-between states. But on a busy system, WAL writes can often be a bottleneck. To help diagnose this, Postgres 13 includes more information on WAL usage from your queries.
EXPLAIN now supports information about WAL records generated during execution:
You can see that the WAL line includes the number of records generated, the number of full page images (fpi), and the number of WAL bytes generated. Only non-zero values are printed in the default text format.
This is also available in pg_stat_statements. For example, on our staging environment, here is what we ran to get the statement that produced the most WAL records:
Like many other values in pg_stat_statements, the wal_records, wal_fpi, and wal_bytes values here are cumulative since the last pg_stat_statements_reset call.
This info can help you identify your write-heavy queries and optimize as necessary. Note that write-heavy queries can also affect replication: If you see replication lag, you can use these new features to understand better which statements are causing it.
Settings like log_min_duration_statement are great to help you understand your slow queries, but how slow is slow? Is the reporting query that runs overnight slow compared to the 5s query that runs in the context of a web request? Is that 5s query, that runs once in a rarely-used endpoint, slow compared to a 100ms query that runs twenty times to load your home page?
Until now, log_min_duration_statement was one blunt tool for all these situations, but Postgres 13 brings some ﬂexibility with sampling-based statement logging. You can set log_min_duration_sample to enable sampling, and then either set
log_statement_sample_rate or log_transaction_sample_rate to control sampling.
Both of these settings work in a similar manner: they range from 0 to 1, and determine the chance that a statement will be randomly selected for logging. The former applies to individual statements, the latter determines logging for all statements in a transaction. If both log_min_duration_statement and
log_min_duration_sample are set, the former should be a higher threshold that logs everything, and the latter can be a lower threshold that logs only occasionally.
Another great statement logging improvement is being able to log parameters for failed statements
with log_parameter_max_length_on_error. Here’s an example of setting this to -1 (unlimited) and trying to run SELECT pg_sleep($1) (with parameter $1 set to 3) on a connection with a
statement_timeout of 1s:
The timeout case is especially useful: Since both the query text and the parameters are now available in the logs, you could run EXPLAIN on any failed query to ﬁgure out what query plan caused it to hit the time-out (N. B.: you are not guaranteed to get the same plan that failed, but depending on your workload, the odds are pretty good).
The usual culprit in slow queries is the query execution itself, but with a complex schema and an elaborate query, planning can take significant time as well. Postgres 13 introduces two new changes that make it easier to keep an eye on planning:
First, the BUFFERS option to EXPLAIN gives you more information on memory usage during query planning. Postgres manages memory for your data and indexes using a “buffer pool”, and the BUFFERS option can show you which parts of your query are using that memory and how. The
EXPLAIN documentation has some more details. New in Postgres 13 is the ability to see how buffers are used during query planning:
Second, pg_stat_statements will keep track of time spent planning if you enable the
This is turned off by default due to performance overhead for certain workloads, but if you suspect planning time is an issue, it’s definitely worth checking out. For more details on the performance regression, see
this mailing list discussion; this is expected to be resolved in the future and the default may change.
Postgres 13 usability improvements include better documentation, better built-in UUID support, and some handy
Any complex system will develop its own jargon, and Postgres is no exception. Some of it comes from the database ﬁeld in general, some of it is Postgres-speciﬁc. Having dedicated language to talk precisely about speciﬁc technical concepts is very useful, but it can be confusing for newcomers.
A collection of attributes in a ﬁxed order. That order may be deﬁned by the table (or other relation) where the tuple is contained, in which case the tuple is often called a row. It may also be deﬁned by the structure of a result set, in which case it is sometimes called a record.
- PostgreSQL Glossary
You are likely familiar with the terms above, but if you ever run across something you are unclear on, those and many others are now documented in a new glossary. And now that there’s an established place to do so, we can look forward to other technical terms being added here in the future.
If you use UUIDs in your system (and you should consider it—they’re pretty handy), you’re probably pretty familiar with the uuid-ossp extension. The base uuid type is built in, but by default, there’s no simple mechanism to automaticly generate new ones. The uuid-ossp extension ships with Postgres, but must be enabled explicitly to create UUID-generation functions like the common uuid_generate_v4.
Postgres 13 ships with a gen_random_uuid function that is equivalent to uuid_generate_v4, but available by default. If you were only using uuid-ossp for that function, you no longer need the extension:
There are a number of small psql improvements in Postgres 13. My favorite is that \e, the command to invoke your $EDITOR on the current query buffer, will now display the query text when you save and exit (unless you directly submit it by ending with a semicolon or \g). Previously, the query text was saved, but hidden. Compare opening your editor and saving SELECT 1 in psql 11:
It’s now clear what query text will be submitted when you complete your query.
Postgres 13 also includes additional ways to customize your psql prompt. You can do so, as always, with
\set (typically in your .psqlrc), but there’s a couple of new substitutions available:
* %x will display the status of the current transaction: an empty string for no
transaction, * when in an open transaction, ! when in a failed transaction, or ? when the
transaction state is unknown (typically when there is no connection to the server)
* %w will pad PROMPT2 (used when more input is expected) to be the same width as PROMPT1 to keep things
There are some other small improvements
as well. And these are all client-side changes, so they will also work if you are using a new psql with an older server!
These are just a few of the many small improvements that come with Postgres 13. There are many others, like partial TOAST decompression, trusted extensions (so you can enable them without being superuser), PL/pgSQL performance improvements, and more. You can check out the full release notes on the Postgres web site.
We’re very excited for this release. We already support monitoring Postgres 13 in pganalyze, and are already working on incorporating the new monitoring features directly into the product to give you better insights into your database.
Share this article: If you liked this article you might want to tweet it to your peers.
BEIJING (Reuters) - China is pushing growing numbers of Tibetan rural laborers off the land and into recently built military-style training centers where they are turned into factory workers, mirroring a program in the western Xinjiang region that rights groups have branded coercive labor.
Beijing has set quotas for the mass transfer of rural laborers within Tibet and to other parts of China, according to over a hundred state media reports, policy documents from government bureaus in Tibet and procurement requests released between 2016-2020 and reviewed by Reuters. The quota effort marks a rapid expansion of an initiative designed to provide loyal workers for Chinese industry.
A notice posted to the website of Tibet’s regional government website last month said over half a million people were trained as part of the project in the ﬁrst seven months of 2020 - around 15% of the region’s population. Of this total, almost 50,000 have been transferred into jobs within Tibet, and several thousand have been sent to other parts of China. Many end up in low paid work, including textile manufacturing, construction and agriculture.
“This is now, in my opinion, the strongest, most clear and targeted attack on traditional Tibetan livelihoods that we have seen almost since the Cultural Revolution” of 1966 to 1976, said Adrian Zenz, an independent Tibet and Xinjiang researcher, who compiled the core ﬁndings about the program. These are detailed in a report released this week by the Jamestown Foundation, a Washington, D. C.-based institute that focuses on policy issues of strategic importance to the U.S. “It’s a coercive lifestyle change from nomadism and farming to wage labor.”
Reuters corroborated Zenz’s ﬁndings and found additional policy documents, company reports, procurement ﬁlings and state media reports that describe the program.
In a statement to Reuters, China’s Ministry of Foreign Affairs strongly denied the involvement of forced labor, and said China is a country with rule of law and that workers are voluntary and properly compensated.
“What these people with ulterior motives are calling ‘forced labor’ simply does not exist. We hope the international community will distinguish right from wrong, respect facts, and not be fooled by lies,” it said.
Moving surplus rural labor into industry is a key part of China’s drive to boost the economy and reduce poverty. But in areas like Xinjiang and Tibet, with large ethnic populations and a history of unrest, rights groups say the programs include an outsized emphasis on ideological training. And the government quotas and military-style management, they say, suggest the transfers have coercive elements.
China seized control of Tibet after Chinese troops entered the region in 1950, in what Beijing calls a “peaceful liberation.” Tibet has since become one of the most restricted and sensitive areas in the country.
The Tibetan program is expanding as international pressure is growing over similar projects in Xinjiang, some of which have been linked to mass detention centers. A United Nations report has estimated that around one million people in Xinjiang, mostly ethnic Uighurs, were detained in camps and subjected to ideological education. China initially denied the existence of the camps, but has since said they are vocational and education centers, and that all the people have “graduated.”
Reuters was unable to ascertain the conditions of the transferred Tibetan workers. Foreign journalists are not permitted to enter the region, and other foreign citizens are only permitted on government-approved tours.
In recent years, Xinjiang and Tibet have been the target of harsh policies in pursuit of what Chinese authorities call “stability maintenance.” These policies are broadly aimed at quelling dissent, unrest or separatism and include restricting the travel of ethnic citizens to other parts of China and abroad, and tightening control over religious activities.
In August, President Xi Jinping said China will again step up efforts against separatism in Tibet, where ethnic Tibetans make up around 90% of the population, according to census data. Critics, spearheaded by Tibetan spiritual leader the Dalai Lama, accuse the Chinese authorities of carrying out “cultural genocide” in the region. The 85-year-old Nobel Laureate has been based in Dharamsala, India, since he ﬂed China in 1959 following a failed uprising against Chinese authorities.
While there has been some evidence of military-style training and labor transfers in Tibet in the past, this new, enlarged program represents the ﬁrst on a mass scale and the ﬁrst to openly set quotas for transfers outside the region.
A key element, described in multiple regional policy documents, involves sending ofﬁcials into villages and townships to gather data on rural laborers and conduct education activities, aimed at building loyalty.
State media described one such operation in villages near the Tibetan capital, Lhasa. Ofﬁcials carried out over a thousand anti-separatism education sessions, according to the state media report, “allowing the people of all ethnic groups to feel the care and concern of the Party Central Committee,” referring to China’s ruling Communist Party.
The report said the sessions included songs, dances and sketches in “easy to understand language.” Such “education” work took place prior to the rollout of the wider transfers this year.
The model is similar to Xinjiang, and researchers say a key link between the two is the former Tibet Communist Party Secretary Chen Quanguo, who took over the same post in Xinjiang in 2016 and spearheaded the development of Xinjiang’s camp system. The Xinjiang government, where Chen remains Party boss, did not respond to a request for comment.
“In Tibet, he was doing a slightly lower level, under the radar, version of what was implemented in Xinjiang,” said Allen Carlson, Associate Professor in Cornell University’s Government Department.
Around 70% of Tibet’s population is classiﬁed as rural, according to 2018 ﬁgures from China’s National Bureau of Statistics. This includes a large proportion of subsistence farmers, posing a challenge for China’s poverty alleviation program, which measures its success on levels of basic income. China has pledged to eradicate rural poverty in the country by the end of 2020.
“In order to cope with the increasing downward economic pressure on the employment income of rural workers, we will now increase the intensity of precision skills training … and carry out organized and large-scale transfer of employment across provinces, regions and cities,” said a working plan released by Tibet’s Human Resources and Social Security Department in July. The plan included 2020 quotas for the program in different areas.
Some of the policy documents and state media reports reviewed by Reuters make reference to unspeciﬁed punishments for ofﬁcials who fail to meet their quotas. One prefecture level implementation plan called for “strict reward and punishment measures” for ofﬁcials.
As in Xinjiang, private intermediaries, such as agents and companies, that organize transfers can receive subsidies set at 500 yuan ($74) for each laborer moved out of the region and 300 yuan ($44) for those placed within Tibet, according to regional and prefecture level notices.
Ofﬁcials have previously said that labor transfer programs in other parts of China are voluntary, and many of the Tibetan government documents also mention mechanisms to ensure laborers’ rights, but they don’t provide details. Advocates, rights groups and researchers say it’s unlikely laborers are able to decline work placements, though they acknowledge that some may be voluntary.
“These recent announcements dramatically and dangerously expand these programs, including ‘thought training’ with the government’s coordination, and represent a dangerous escalation,” said Matteo Mecacci, president of U. S. based advocacy group, the International Campaign for Tibet.
The government documents reviewed by Reuters put a strong emphasis on ideological education to correct the “thinking concepts” of laborers. “There is the assertion that minorities are low in discipline, that their minds must be changed, that they must be convinced to participate,” said Zenz, the Tibet-Xinjiang researcher based in Minnesota.
One policy document, posted on the website of the Nagqu City government in Tibet’s east in December 2018, reveals early goals for the plan and sheds light on the approach. It describes how ofﬁcials visited villages to collect data on 57,800 laborers. Their aim was to tackle “can’t do, don’t want to do and don’t dare to do” attitudes toward work, the document says. It calls for unspeciﬁed measures to “effectively eliminate ‘lazy people.’”
A report released in January by the Tibetan arm of the Chinese People’s Political Consultative Conference, a high-proﬁle advisory body to the government, describes internal discussions on strategies to tackle the “mental poverty” of rural laborers, including sending teams of ofﬁcials into villages to carry out education and “guide the masses to create a happy life with their hardworking hands.”
Rural workers who are moved into vocational training centers receive ideological education - what China calls “military-style” training - according to multiple Tibetan regional and district-level policy documents describing the program in late 2019 and 2020. The training emphasises strict discipline, and participants are required to perform military drills and dress in uniforms.
It is not clear what proportion of participants in the labor transfer program undergo such military-style training. But policy documents from Ngari, Xigatze and Shannan, three districts which account for around a third of Tibet’s population, call for the “vigorous promotion of military-style training.” Region-wide policy notices also make reference to this training method.
Small-scale versions of similar military-style training initiatives have existed in the region for over a decade, but construction of new facilities increased sharply in 2016, and recent policy documents call for more investment in such sites. A review of satellite imagery and documents relating to over a dozen facilities in different districts in Tibet shows that some are built near to or within existing vocational centers.
The policy documents describe a teaching program that combines skills education, legal education and “gratitude education,” designed to boost loyalty to the Party.
James Leibold, professor at Australia’s La Trobe University who specializes in Tibet and Xinjiang, says there are different levels of military-style training, with some less restrictive than others, but that there is a focus on conformity.
“Tibetans are seen as lazy, backward, slow or dirty, and so what they want to do is to get them marching to the same beat… That’s a big part of this type of military-style education.”
In eastern Tibet’s Chamdo district, where some of the earliest military-style training programs emerged, state media images from 2016 show laborers lining up in drill formation in military fatigues. In images published by state media in July this year, waitresses in military clothing are seen training at a vocational facility in the same district. Pictures posted online from the “Chamdo Golden Sunshine Vocational Training School” show rows of basic white shed-like accommodation with blue roofs. In one image, banners hanging on the wall behind a row of graduates say the labor transfer project is overseen by the local Human Resources and Social Security Department.
The vocational skills learned by trainees include textiles, construction, agriculture and ethnic handicrafts. One vocational center describes elements of training including “Mandarin language, legal training and political education.” A separate regional policy document says the goal is to “gradually realize the transition from ‘I must work’ to ‘I want to work.’”
Regional and prefecture level policy documents place an emphasis on training batches of workers for speciﬁc companies or projects. Rights groups say this on-demand approach increases the likelihood that the programs are coercive.
Workers transferred under the programs can be difﬁcult to trace, particularly those sent to other parts of China. In similar mass transfers of Uighur people from Xinjiang, workers were discovered in the supply chains of 83 global brands, according to a report released by the The Australian Strategic Policy Institute (ASPI).
Researchers and rights groups say transfers from these regions pose a challenge because without access they can’t assess whether the practice constitutes forced labor, and transferred workers often work alongside non-transferred counterparts.
Tibetan state media reports in July say that in 2020 some of the workers transferred outside of Tibet were sent to construction projects in Qinghai and Sichuan. Others transferred within Tibet were trained in textiles, security and agricultural production work.
Regional Tibetan government policy notices and prefecture implementation plans provide local government ofﬁces with quotas for 2020, including for Tibetan workers sent to other parts of China. Larger districts are expected to supply more workers to other areas of the country - 1,000 from the Tibetan capital Lhasa, 1,400 from Xigaze, and 800 from Shannan.
Reuters reviewed policy notices put out by Tibet and a dozen other provinces that have accepted Tibetan laborers. These documents reveal that workers are often moved in groups and stay in collective accommodation.
Local government documents inside Tibet and in three other provinces say workers remain in centralised accommodation after they are transferred, separated from other workers and under supervision. One state media document, describing a transfer within the region, referred to it as a “point to point ‘nanny’ service.”
The Tibetan Human Resources and Social Security Department noted in July that people are grouped into teams of 10 to 30. They travel with team leaders and are managed by “employment liaison services.” The department said the groups are tightly managed, especially when moving outside Tibet, where the liaison ofﬁcers are responsible for carrying out “further education activities and reducing homesickness complexes.” It said the government is responsible for caring for “left-behind women, children and the elderly.”
You can pause and play audio or video in Firefox right from your keyboard or headset, giving you easy access to control your media when in another Firefox tab, another program, or even when your computer is locked.
In addition to our default, dark and light themes, with this release, Firefox introduces the Alpenglow theme: a colorful appearance for buttons, menus, and windows. You can update your Firefox themes under settings or preferences.
For our users in the US and Canada, Firefox can now save, manage, and auto-ﬁll credit card information for you, making shopping on Firefox ever more convenient. To ensure the smoothest experience, this will be rolling out to users gradually.
Firefox supports AcroForm, which will soon allow you to ﬁll in, print, and save supported PDF forms and the PDF viewer also has a new fresh look.
Our users in Austria, Belgium and Switzerland using the German version of Firefox will now see Pocket recommendations in their new tab featuring some of the best stories on the web. If you don’t see them, you can turn on Pocket articles in your new tab by following these steps. In addition to Firefox’s new tab, Pocket is also available as an app on iOS and Android.
As the population increasingly moves towards tech jobs, there’s now a shortage of coconut harvesters in India. That’s why scientists there have built a tree-climbing coconut-harvesting robot, that could perhaps someday take up the slack.
The prototype device was created by a team at Amrita Vishwa Vidyapeetham University, led by Asst. Prof. Rajesh Kannan Megalingam. Known as Amaran, it’s currently in its sixth incarnation, and has been in development for three years.
In a 15-minute process, users start by manually assembling the robot’s ring-shaped body around the base of a coconut tree. Utilizing its eight inward-facing omnidirectional rubber wheels, Amaran then makes its way up to the top.
A user wirelessly controls it from the ground, utilizing either a joystick unit or a smartphone app to move it up and down, and to rotate it around the trunk.
Once the robot has reached the coconuts, its arm is extended and positioned at the base of a bunch of ripe coconuts. Utilizing a circular saw blade on the end of the arm, Amaran then cuts through that base, allowing the coconuts to fall to the ground.
In ﬁeld tests conducted at a coconut farm, the robot successfully climbed trees up to 15.2 m (49.9 ft) in height, with trunk inclinations of up to 30 degrees. Additionally, while human coconut harvesters were found to work faster, Amaran could work for longer, potentially making up the difference.
A paper on the research was recently published in the journal IEEE/ASME Transactions on Mechatronics.
The robot can be seen in use, in the video below.
The mystery of why an entire village lost its broadband every morning at 7am was solved when engineers discovered an old television was to blame.
An unnamed householder in Aberhosan, Powys, was unaware the old set would emit a signal which would interfere with the entire village’s broadband.
After 18 months engineers began an investigation after a cable replacement programme failed to ﬁx the issue.
The embarrassed householder promised not to use the television again.
The village now has a stable broadband signal.
Openreach engineers were bafﬂed by the continuous problem and it wasn’t until they used a monitoring device that they found the fault.
The householder would switch their TV set on at 7am every morning - and electrical interference emitted by their second-hand television was affecting the broadband signal.
The owner, who does not want to be identiﬁed, was “mortiﬁed” to ﬁnd out their old TV was causing the problem, according to Openreach.
“They immediately agreed to switch it off and not use it again,” said engineer Michael Jones.
Engineers walked around the village with a monitor called a spectrum analyser to try to ﬁnd any “electrical noise” to help pinpoint the problem.
“At 7am, like clockwork, it happened,” said Mr Jones.
“Our device picked up a large burst of electrical interference in the village.
“It turned out that at 7am every morning the occupant would switch on their old TV which would, in turn, knock out broadband for the entire village.”
The TV was found to be emitting a single high-level impulse noise (SHINE), which causes electrical interference in other devices.
Mr Jones said the problem has not returned since the fault was identiﬁed.
Suzanne Rutherford, Openreach chief engineer’s lead for Wales, said anything with electric components - from outdoor lights to microwaves - can potentially have an impact on broadband connections.
“We’d just advise the public to make sure that their electric appliances are properly certiﬁed and meet current British standards,” she said.
“And if you have a fault, report it to your service provider in the ﬁrst instance so that we can investigate.”
Content available under the CC-By 3.0 license
How to take meeting notesSign up to like postLong time no chat. I’ve spent August ﬁguring out how learning works and how we can apply spatial cognition and computers to improve how we learn. And I’ve got some pretty exciting stuff coming out in the next few weeks. Spoiler: if you’ve ever tried learning how to program but failed miserably, you’ll appreciate this even more. But today I want to talk memory.A few months back, I’ve started taking extensive meeting notes as a part of my memory experiment. In four weeks, I trained myself to remember about 90-95% of everything that happens at a meeting. And I’m still fascinated by how delighted people are to receive a detailed note with everything we discussed (ideas, concepts, projects, etc.). After polishing my method for two months, I’m now ready to share it with you. Here’s why you might be interested:You can delight the people you meet with by sending a detailed note with everything you covered on a meeting (very few people do that)You can foster relationships with friends by sharing relevant meeting notes aroundYou can turn meeting notes into novel, relevant, and personalized content for your audienceEnjoy your reading & take better notes,
- VI do not take notes during the meeting. I’ve tried this many times and always found it to be distracting. I couldn’t concentrate on writing and listening to the person at the same time. This led to bad notes and poor conversation.Instead, I take notes after the meeting. Whenever I meet someone, I try to pay attention to what they’re saying and be fully engaged. If I’m taking this meeting, then I better pay attention to it. And if it’s not worth my full attention, then I shouldn’t spend time on it.Immediately after I come back home, I sit down and pull out a piece of paper and my iPad with the Drafts app. In Drafts, I begin what I call descriptive writing. I write in the ﬁrst person just about everything I remember from the meeting. Usually, to get going, I begin with something like:“Just came back from meeting such and such, we went to this nice new sushi place in the city that just opened a few weeks back..” Writing from the ﬁrst person helps avoid the writer’s block that arises because you’re trying to convert the stuff you hear in your head (in the ﬁrst person) into the stuff how it’s supposed to be written (in the third person) .The purpose of recalling these seemingly irrelevant details is to activate the brain’s areas that store information that you need. In a technical language, to use implicit memories of space, things, and faces to increase the likelihood of recalling more abstract things like ideas and concepts.Here’s how my Drafts ﬁle looks like when I begin recalling ideas:Once I get going, I turn to my piece of paper and start writing & sketching concepts and ideas that I remember from the meeting. I do not write them in a list; instead, I scatter them around the paper piece and use lots of rough sketches, arrows, lines, and boxes. This leads to enhanced spatial cognition because I can see unobvious relations between ideas that are impossible to see in a list view.Here’s how my paper notes look like when I’m in the middle of the recall process: I begin from any level here. If we talked about education for two hours, but I remembered the marathon that we discussed when we were ordering food ﬁrst, I’d jot down the marathon ﬁrst. On this step, I use categories  to pull out even more memories from my head. If we talked about nutrition, I’d tell myself: “OK I remember we’ve talked about nutrition, but what’s the next layer above nutrition? Oh, that’s health. And have we talked about anything else health-related such as ﬁtness? Oh yeah, marathons!” I switch back and forth between the two interfaces but spend 90% of my time on paper because of how powerful it is. It just feels different. Unfortunately, there’s no software for thinking that uses more than two modes of thought .I also do not write fully formed sentences on paper; they’re more like hooks to remember things when I’ll be writing a note. I suspect this also helps to compress ideas into chunks, which leads to higher speed of thought (that is audacious speculation, I know). Once I feel like I’m slowing down (usually after 5-7 minutes of doing the Drafts/paper part), I begin doing three other things: drawing the person, drawing the map, and drawing the timeline.Here’s how it looks:First, I sketch the person in the bottom right corner of the piece of paper. Drawing helps me bring back many other emotion-related things because I begin remembering emotions I’ve implicitly stored (i.e., when the person was angry, happy, loud, etc.). I’m by no means good at drawing, but the idea is to produce at least a somewhat close representation of a person as you can get to aid your mind with recalling thoughts. See the image above for details.Second, I draw a map of where we’ve been. If we went for a walk, I draw a map of the space that we covered. If we were inside, I draw a map of the room we were sitting in. Creating a map helps activate the brain’s area responsible for space, and I get many memories out of it . Plus, it’s a lot of fun! One interesting observation here: whenever I draw a visual representation of the place (i.e., if it’s a coffee shop, then tables, other people around, the bar, etc.), I begin recalling space-related ideas that we’ve covered with the person (i.e., countries, travel, routes, even loosely related things like the biography of a person who lived somewhere). I don’t yet know how to explain this, but it works every time. Last week, when I watched Peter Thiel’s speech at the WIRED UK, and I jot down the scene, I instantly began remembering how he talked about China and new cities in the ocean; all space-related ideas from the talk.Third, I draw a horizontal timeline diagram of the meeting and map different things that we covered on that timeline. I haven’t ﬁgured out how this works yet, but drawing a timeline and then mapping various conversation topics helps to identify things that were before or after this particular topic in time, left or right on the timeline. The timeline also uncovers additional ideas that I missed. In addition to that, I go forward and back in time when I’m recalling concepts. I try to remember things sequentially, both from the beginning and from the end of the meeting.Once I feel like I’ve reached a critical mass and hit the inﬂection point of understanding what the meeting was about, I get back to my input environment, Drafts, and start writing notes. I’m bilingual and meet with many Russian-speaking folks, so I write in Russian if I need to. During the spatial thinking process on paper, I usually identify clusters such as “education” or “health”, and draw a circle around them to make them stand out. So when I begin writing textual notes in my input environment, I start from those clusters and use them as section titles, such as Notes–Education or Notes–Health. Clustering seems to improve my ability to recall things that were left behind when I was doing the spatial thinking process and visual thinking with illustrations. Another interesting observation is that clustering helps to connect ideas from the meeting to my own thinking, supposedly because I focus my attention on the things I’m writing, which triggers associative thought. The whole process takes about 30 minutes per 1.5-2h meeting. When I ﬁnish writing notes, I add materials that I think are relevant to what we covered. As a result, I get about 500 words with links that I send to the person.Here’s how a full notes ﬁle looks like (in Russian):To build a habit, you need to tie the process of taking meeting notes to a speciﬁc thing you do with no exception. For example, you can commit to begin writing meeting notes immediately after returning home and getting your shoes off. That’s how you make it stick .As for the process itself, this is something you learn best by doing. So whenever you meet someone, try to pay attention to what the person is saying. There’s no need to use special mnemonics or convulsively writing down notes. Once you come back home and take your shoes off, do the following:Open up your favorite text editor on your computer or phoneFind a piece of paper and a pen (I use plain white A4 paper and a black gel pen); paper needs to be disposable so that you wouldn’t be afraid to sketch things and go really fastBegin writing in your text editor; if you don’t know what to write or don’t seem to remember anything, begin describing the previous 5-10 minutes in the ﬁrst tense and ideas will come. For example, “Just came back home after meeting such and such, we’ve been to such and such place and had such and such food”Once you begin remembering things, jump to the piece of paper and continue thinking there instead of writing them in the input environment; this will unlock a new stream of ideas and help you see new things because of spatial cognitionApply categories, drawings, maps, and timelines to bring back even more exciting ideasContinue switching the interfaces until you feel like you’ve got enough written on paperJump to your text editor and write notes based on what you have on paperAdd relevant links and materials and send to the personHow to turn meeting notes into contentAfter months of taking notes, I’ve ﬁgured that meeting notes are a unique content type. I’ve begun editing them slightly to omit personal details and sending them to people who I thought would be interested. It worked surprisingly well; from ~150 people I shared a note with about 95% replied and said they loved it. The big learning is that meeting notes might be an interesting new content type that people aren’t yet bored with. Novelty. We don’t repeat things at meetings because we know the person already knows them. Relevance. We talk about things & ideas that are interesting to both parties; we understand this by tracking hundreds of signals from their face, body language, and words in real time. On Facebook, the only feedback channel is likes; I don’t see their “meh” faces when they’re reading my stuff and can’t understand what kind of reaction my ideas trigger. Quality. The quality of information shared during the meeting is higher than in one-to-many publishing on Facebook.Personalization. Sharing ideas with people I know loosely and adding a personal touch (i.e., “hey I thought this would be interesting to you because..”) increases the probability of a note to be read, which, in turn, increases the likelihood of the learning process hierarchy to be completed, changes in the long-term memory created, and transfer to real life occurred.Channels. More and more people stop using socials for content discovery because of ads/low-quality information. This change suggests there’s an opportunity for a new, more personal channel.That’s why I’m doing an experiment and putting my meeting notes online. You can subscribe to receive updates by replying to this email. Whenever I meet someone, I’ll email you my meeting notes (approximately once in 2 weeks). Other thoughts that didn’t ﬁt the main storylineIt seems that the process trains my mental machinery to pay attention; I have no proof but my remembering accuracy (how much I can bring back) and ease of recall has increased ~2-4x after two months of doing this; I’m now able to recall about 90-95% of a meeting.The use of different categories of information (i.e., questions we discussed, when a person was angry or excited or happy, concepts we covered, mathematical notations we applied such as graphs or matrixes or spectrums, people we referenced, etc.) seems to help with remembering by dissecting the whole body of things we covered into different dimensions and sectors. I’m curious about how this ﬁrst-time active recall aids impact long-term memory; because things that make the cognitive process easier usually don’t get remembered well. I use the same process and three reﬂections questions to any piece of content that I consume, and it works exceptionally well. When I ﬁnish reading or watching something, I ask myself:What are the key ideas? How can I apply this knowledge that I learned? How do these ideas relate to what I already know? A good place to jump into relevant active recall studies is this Wiki page. I suspect the term came from Stephen King, but it’s also very often referred to as “Dear Joel.” For more information on categories, refer to Barbara Tversky’s Mind in Motion book, p.35 & p.51. My dad designs furniture for 30 years and he feels the same about AutoCAD. If you’d like to learn more about modes of thought and how we ended up constraining ourselves in a small rectangle that sits on a table, watch this talk from Bret Victor. For more information on how grid cells work, Barbara Tversky’s Mind in Motion book, p.69. And yes, such sequencing works for any habit.Sign up to like post