In this episode, we talk about the fallout from the recent Hugo Awards, and the ramifications of the Sad and Rabid Puppy campaigns. We also review one of the recent Hugo winners, the excellent novel "The Three Body Problem."
Knotty_Geeks_Episode_38.mp3" width="290" height="24" />
Direct link to podcast
Notes from the show:
The Three Body Problem:
In this episode, we review three great science fiction books, we talk about the upcoming improvements in Intel’s Skylake CPUs, and we discuss the strangely absent Cultural Apocalypse.
Notes from the show:
Beautiful Intelligence book:
Gene Mapper book:
Gene inserting tool: CRISPR
Do we live in a simulation?
Discussion of the Creative Apocalypse:
Knotty_Geeks_Episode_37.mp3" width="290" height="24" />
Direct link to podcast
In this episode, we reboot the entire podcast! Well, not really. We’ve come back to our favorite wedge-shaped Starbucks to rediscover what we really loved most about the podcast: the relentless acceleration of technology and the convergence of many technologies into fewer, more powerful ones. We talk a little bit about our writing project, the short story We Choose To Go, and discuss the future of human civilization. You know, just random stuff.
Knotty_Geeks_Episode_36.mp3" width="290" height="24" />
Direct link to podcast
When I first met Zoe she was in bad shape. She was sitting in the back of a cage at the Vancouver SPCA. Her fur was matted and stringy, and she looked like the saddest creature I had ever seen. I put my fingers through the bars and she rubbed her chin on my hand. I fell instantly in love.
Zoe had been a stray as a young cat. She was rescued by the SPCA, then lived with a young family until her eighth birthday. At that point the family had a baby and bought another cat, and Zoe didn’t handle it well. Her card warned that she had issues with unwanted urination.
I watched as other people came into the shelter, petted Zoe, then read her card and walked on. Nobody wants middle-aged cats, and they certainly didn’t want one who had problems with peeing. I was going to pick her up right then, but I had to return the next day with proof that my building allowed pets. I vowed that if Zoe was still there when I got back that I would adopt her. Of course she was still available.
My friend Tzhe was with me and he drove us both home. I opened her cardboard box in the guest bathroom and she immediately jumped out and fled into the hidden depths of our walk-in closet. I had been a pet owner for thirty seconds now and already I felt like a failure. Fortunately Tzhe was able to coax her out and she slowly started to familiarize herself with her surroundings. She was incredibly nervous, but to my relief she did understand what to do when I repeatedly placed her on the litter box. Zoe had found her home.
A scared Zoe seconds after arriving at our home.
I bought a cat brush and groomed her twice a day, and her long hair became soft and lustrous again. She was initially very timid around strangers, but over the years she became more and more relaxed. She would hop up on the sofa as I played games or watched TV, and I would pet her for as long as she wanted. After a while she would hop down to the floor, flop over on her back, and I’d rub her tummy. Sometimes my wife and I would rub her face and ears at the same time and you could see her drinking in the affection like it was the sweetest wine. She never got tired of it. I could pet her until my hand felt like it was going to fall off and she would still want more.
Zoe after a few months, well-groomed and regal.
She was not a bold creature. One day I arrived home from work and she was meowing frantically next to a small bird that had gotten caught behind the blinds. She stood there as I rescued the poor frightened bird and guided it to freedom. Zoe loved to chase and eat flies, but anything larger was just too scary for her to deal with.
Zoe’s favorite game was “cat hockey”, where she would bat around a twist-tie and then leap after it. When we had our hardwood floors put in, we took Zoe with us to a nearby hotel while we literally waited for the dust to settle. After we returned, cat hockey was faster and more exciting.
Zoe expresses her love of the new floors
She wasn’t always easy to deal with. When I changed litter brands, she expressed her displeasure by peeing in my wife’s shoes. I switched back and all was well, but there was always the worry that she would urinate on things. When she got older I got a second litter box so she wouldn’t have to travel as far each time, but sometimes she still had accidents.
In her final years Zoe started to have health problems. Her kidneys and pancreas started acting up, and vet bills became expensive. But she never complained or got upset. She never lashed out at anyone. She was the sweetest creature I’d ever known, right up until the end.
A few days before she died, Zoe seemed to have a burst of energy. She desperately wanted to get into our bedroom, which we had always kept a cat-free zone because of my wife’s allergies. She had never before scratched at the door or tried to push her way in, and would even stop at the boundary if the door was open, knowing that she wasn’t allowed in. This time was different, however. She wanted to get in there one last time. My wife opened her eyes from a nap and saw Zoe sitting next to her, purring as if nothing was wrong.
I miss Zoe. She was my first pet, and I’ll never forget her. She was the cat that nobody wanted, but in the end I wanted her. And that made all the difference.
Software developers are notorious for underestimating how much time their projects will take to complete. It’s not borne of ignorance or maliciousness, but rather optimism: one always thinks that everything will go as well as it possibly could. Reality has different ideas.
My initial estimate for completing my first visual novel was an optimistic six months. I’m now thoroughly stuck into development, and my revised estimate is about double that figure, although if I’m in line with estimates made anywhere else by anyone else ever, that figure will probably end up tripling.
Nevertheless, I’m really enjoying the development process. I started (as writers might) with the character outlines and then the script, but I found that keeping track of all the branching paths for the dialog in Scrivener was awkward and looked sort of like pseudocode. So I saved a step and moved into writing the game code itself, in a text editor, using the Ren’Py engine.
As I was essentially writing the game itself at that point, I needed art assets, and I was writing faster than I could create them. So I whipped up some really rough backgrounds and character sketches in Photoshop and used them as placeholders. They look terrible, but they get the job done. At the same time, I started in on some of the 3D assets using Blender, as you can see from this first look at the Furious space carrier, the seat of all the action in the game.
There are eight main characters (not including yourself and the Furious’ Captain) in the game, and six primary locations on the Furious. I’ve outlined the main arc of the plot, and it features eight flight missions with an “intermission” between each one where the player does most of the interaction with the characters. In theory, this should lead to a fairly simple game, but the number of interactions and branching paths can quickly get out of control.
To avoid getting into infinite branches, the primary plot elements are fixed. The main thing the player has control over are dialog options with the various pilots in between missions. Depending on what options the player chooses, pilots will gain or lose points in various internal characteristics, like affection (towards the player), confidence, or skill. These variables will affect the outcomes of future missions.
I’m trying not to make the dialog choices black and white, “you are great/you suck” options. My primary inspiration are the Telltale game series, like Game of Thrones, where you are often presented with two options that both seem bad in different ways. The hard part is making sure that these decisions affect the outcome of the game in a meaningful way. A recent game that does this really well is Dontnod’s Life is Strange, where the player can make significant changes to the plot by paying attention to small details in the environment and dialogue.
For me, writing this game is a huge learning experience, and I’m bound to make some mistakes along the way. Fortunately, my fears about doing a bad job are outweighed by the sheer fun of actually doing it. It’s just about the optimal balance for me of writing, storytelling, programming and artistic design. So stay tuned!
I have a collection of old computers that seem to be approaching the end of their natural lives. The specs on one of them will seem familiar: a Core 2 Duo CPU, Windows XP, 2 GB of RAM, and a 19 inch 4:3 LCD monitor. Lots of people have computers like this. They are about eight to nine years old, and there is nothing particularly wrong with them, but these days they seem sluggish and ancient. They often get confined to closets or the recycling bin. However, there is a way to revive computers of this era, and it doesn’t cost that much. This is a story of how I gave my wife essentially a brand new computer for just over $50.
The first stop was Memory Express to pick up a brand new SSD. I asked the store clerk for a recommendation, and he told me about the Kingston SSD Now 300 series. The low-end, 120 GB version was just over $50, so I picked it up. It has good reviews and I like supporting a company that also supports professional Starcraft teams.
The next choice I had to make was what operating system to install. Windows 8 was right out, because my wife (like many people) has seen and dislikes the new user interface. Windows 7 might be a good choice, but getting a legal copy is expensive, and it’s an old and outdated operating system at this point. In the old days, Windows was a necessary choice because not many apps were web-based, and Linux distributions were still a bit finnicky to get going. Things are different now. But the most popular Linux distro, Ubuntu, has a very unusual user interface, so it wouldn’t be a good choice either.
I settled on Linux Mint 17, with the Xfce interface. It is the most lightweight clone of the standard Windows desktop, so it runs really well on older computers with limited amounts of RAM. It’s also familiar to anyone who has run Windows XP or 7. In fact, you can customize the bitmap image for the start button (and add the word "Start" to it). This makes it look a lot like good old XP, while simultaneously being a modern, secure operating system.
Linux Mint 17 comes pre-installed with Libre Office, which is a great clone of Microsoft Office and has an interface that is similar to Office’s standard menu and toolbar layout from 1995 through 2007. It also reads and writes Office documents seamlessly. Aside from using web applications, being able to write documents and spreadsheets was an important use case for my wife. She likes Libre Office better than the new Office "ribbon" interface that was introduced in 2007, and was using it on Windows XP before I upgraded, so this was a pretty seamless transition.
The only missing element for moving this computer to Linux would be gaming, but as my wife isn’t a gamer (apart from a few apps on her iPad) so that wasn’t an issue.
To install Linux Mint, I disconnected the existing two spinning hard drives and plugged the Kingston SSD into a single SATA port, then burned the .ISO to a DVD-R (I could have used a USB thumb drive, but it would have been a bit trickier, plus it’s been ages since I burned a DVD!) and booted from the shiny new disc. I let the installer format the entire SSD and install the operating system. Only once it was completely installed and running did I plug in the two drives again, setting them as secondary drives in the BIOS. Mint detected them instantly and I was able to copy over all the old documents on the drives to the new SSD. Having done this, I was able to disconnect the drives again to save power when running the computer.
It’s amazing how much faster this machine feels now. Launching LibreOffice takes less than half a second, compared to the half a minute it used to. It looks and feels like a brand new machine, and the price ($50 for the SSD and $0 for Linux Mint) couldn’t be beat.
After playing Christine Love’s amazing games Digital: A Love Story and Analogue: A Hate Story (which I reviewed here) I became obsessed with the possibilities of visual novels. They reminded me a bit of the Choose Your Own Adventure books that I adored as a child, but with many new possibilities and experiences that those books couldn’t offer.
I also loved them because they combined my two great loves: writing and gaming. Unlike with most games, where the story served as mere window dressing, visual novels put the writing front and center. So as I was casting about wondering what to write next after completing my science fiction novel trilogy, it struck me: why not make a visual novel myself?
The idea seized hold of me and wouldn’t let go. Unlike the effort required to make a full game (or even an extensive game mod), creating a short visual novel seemed like it was within my grasp. Usually these games are made with a writer and an artist collaborating together, but I love dabbling in basic 3D rendering and 2D drawn art, so why not do both? In fact, the first idea I had for a visual novel was a story I called "I only want to do everything", based on an AI that slowly learns how to live in a virtual world of its own creation. That idea turned out to be too open-ended and complex for my first visual novel, but I might return to it at a later date.
The story I ended up deciding on is a prequel to my trilogy of sci-fi novels. It is set on the Jaguar-class light carrier Furious during the first Earth-Zruthy war. This war is mentioned in Edge of Infinity by the protagonist Jack Davidson, whose parents were killed during that conflict. I never got a chance to delve more deeply into the war before now. Why were the Earth forces and the Zruthy fighting? What was the war like? How did it end? This visual novel gives me a chance to answer these questions.
The player portrays the fighter commander of the Furious, who was injured in combat and slowly recovering his or her memories. The player must talk to six different pilots on the ship, all of whom have very different personalities, likes and dislikes, and interests (I asked my wife, who is very interested in Myers-Brigg personality types, to help me with the character creation). By talking with the pilots before and after they fly out on missions, the player can subtly influence how they will perform under pressure. This will become more and more important as the missions get increasingly dangerous.
I’m having a blast creating the game in the Ren’Py visual novel engine, which is written in Python. Creating a visual novel is just the right combination of art, programming, and writing. I have no idea how long it will take to complete, but I’m estimating about six months right now. I can’t wait to finish it and show it to the world!
It’s hard to believe that William Gibson’s seminal book Neuromancer was first printed thirty years ago in 1984. Neuromancer gave the world the term "cyberspace" and created an entirely new genre of fiction known as cyberpunk. I remember reading this book as a young boy and being utterly entranced by this vision of the future that was so new and yet so utterly believable.
Neuromancer was a bestseller and its overwhelming success painted Gibson into a bit of a corner. After finishing two sequels, he felt he wanted to explore the more immediate future instead. In the mean time, the world was catching up to Gibson’s original vision. At some point the two converged, and Gibson wound up writing very interesting novels about the present while the world raced on to an uncertain future. On one hand, it was fascinating to note that we largely live in the world of Neuromancer (in broad strokes if not in actual details) but on the other hand I missed having Gibson’s view of what was to come.
With the release of The Peripheral, Gibson has jumped strongly back into speculative fiction, and the result is spectacular. As if to make up for lost time, The Peripheral includes not one but two futures, one set in the 2030s and the other about half a century later. A group of people in the far future manage to find a way to communicate digitally with the near future, and through advanced "peripheral" technology (essentially a biological avatar) they manage to bring people from the past to their present.
I almost didn’t want to write that much in this review, because knowing too much spoils some of the fun of reading it. I had deliberately avoided all reviews before buying my copy, so I went into it completely unprepared. Gibson doles out information in tiny morsels as the story goes along, which gives the reader a delightful sense of slowly coming to an understanding of both worlds. Initially, I wasn’t even certain that there were two realities, but I did feel like one set of characters were living in a world not too far from our own, whereas the others were living in some crazy world that made no sense at all. I loved piecing all the clues together at about the same rate as the characters were doing.
Speaking of the characters, the young heroine Flynn Fisher is one of Gibson’s most well-realized and relatable protagonists. While she is caught up in a whirlwind of shifting forces that she has little control over, she also manages to take initiative and make her own choices. The protagonist in the far future, Wilf Netherton, is a wonderful bundle of contradictions who accepts that his role as a Public Relations agent is really to be a professional liar.
The story itself, like the best science fiction, is a cautionary tale for our current society. It shows us two worlds that could very well arise from our own, and the inhabitants of both worlds long for things to be different than they are. The Peripheral is Gibson’s finest writing to date, and I can’t wait to read it again.
I remember the exact moment when I realized I was over World of Warcraft. I had been trying to get the "What a Long, Strange Trip It’s Been" achievement on my Mage character, which involved completing multiple "holiday" achievements that had to be completed within a certain time frame. I had only one thing left to go, which was to capture the flag in a Battleground during Children’s Week while I had my orphan tagging along.
World of Warcraft contains a lot of stuff that is basically nonsense, like this quest. I guess you could call it a "take your kid to work day" for heroic fantasy adventures. But I couldn’t do it. I kept dying over and over again, and I missed the window. I realized that to get the main achievement I would now have to wait an entire year until the next Children’s Week came along.
There were a lot of things leading up to my leaving the game, but that was the last straw. I cancelled my subscription.
I had been playing World of Warcraft for about five years at that point, and I felt I’d done everying I could do in the game. I’d quested, levelled up professions, explored the world as a Death Knight riding a goblin motorcycle, did player-versus-player combat in both the open world and in ranked battlegrounds, ran dungeons and a few raids, and lastly tried to get all the seasonal achievements. I had over a dozen characters strewn across multiple servers. It felt like it was enough. At some point, all games have to end, even MMOs.
But Blizzard managed to suck me back in with their latest expansion, Warlords of Draenor. It’s chock full of Warcraft nostalgia-- the main plotline involves going through a new Dark Portal to a Draenor that hasn’t been destroyed, thanks to some time-travelling intervention by the outlaw orc leader Garrosh Hellscream. The weird thing is that if you still have some lower-level characters (like I do), the old destroyed Draenor from Burning Crusade is still there, accessible through the old Dark Portal, as if time had never been altered. Maybe it’s a quantum thing. Trying to figure out all the lore of the game over its ten-year span is enough to make your head hurt.
The biggest and best new feature in the game is the garrison. This is a base that you get to construct on the new Draenor that is evocative of the old Warcraft Real-time Strategy games: you start with a Town Hall and build a Barracks, and even though the building time is stretched out over many days, it still feels a little bit like Warcraft III.
Blizzard has this amazing ability to keep refining tiny little details that improve the player’s quality of life. For example, you always used to have to hover over junk that you retrieved from dead monsters to see if it was, in fact, junk. Now, anything that can be sold to a vendor and has no other use is marked with a tiny little gold coin on the icon. In the past, you had to group up with other players even if you just wanted to kill a single elite monster in the open world. Now, if you happen to be fighting the monster and someone else joins in, you both get the credit and get the loot automatically.
It’s like coming back to a country that you last visited three years ago, and finding that everything is just a little bit nicer and a little bit easier to get around in.
I’ve missed being here. It feels nice to be back.
Last week I read an abolutely amazing article on retro computing. The author took a trip through the world of emulation, making stops at significant signposts in computing history such as the Amiga, LISP machines, and the NeXT computer. In doing so, he also found a way back to his childhood. I was deeply moved by this article and it inspired me to do a little emulating of my own.
But first, a little backstory. My father introduced me to computers for the first time, teaching me the basics of BASIC when I was just six years old, sitting on his knee in front of a terminal connected to the VGH mainframe. But it was my uncle, Allan Symonds, who provided a portal to personal computers. He had a mysterious all-in-one machine called a Heathkit H-89, and I fell in love with the big grey beast. I remember, with perfect clarity, one morning in December of 1979. We had celebrated Christmas at Uncle Allan’s house, and I had spent most of my time on the computer. My father tried to tell me we had to go. I pleaded for more time-- when else would I ever get to use this computer again?
"You can use it again when you get home," I my father said. "That’s not Uncle Allan’s computer. That’s your computer."
My jaw dropped. My seven year-old brain couldn’t even comprehend it.
But it was true.
I had that Heathkit between the ages of seven and seventeen, and I absolutely loved it. It was an oddball sort of computer, running an operating system called CP/M by this tiny company known as Digital Research. There weren’t that many games for it: my uncle gave me copies of Space Invaders, Missile Command, Space Pirates, and a Pac-Man-like game called Munchkin. Those were almost all the games that existed for that machine. I wanted more, but I figured I would have to write them myself. This was hard. I tried to learn assembly language, the only language fast enough to write games for such a slow machine, but I didn’t have the patience. I tried to learn C and Pascal, but compiling a simple "Hello, World" took about twenty disk swaps in the single floppy drive. There was only one language that I felt I could work with, and it was one that I already knew. It was from a tiny company as well, an outfit known back then as Micro-Soft.
Micro-Soft’s BASIC, or MBASIC for short, was an interpreted language that only took up about 25 kilobytes out of a 95 kb floppy. That left plenty of room for a game, but there were drawbacks. Being interpreted meant it was slow. Extremely slow. Fortunately, the manual had all sorts of helpful hints for increasing speed, such as typing DEFINT A-Z to force all variables to be integers. Who had time for floating point?
I figured out other optimization strategies over time. The Heathkit was a monochrome machine, and it had no bitmapped graphics. Instead, you could use a special escape code, CHR$(27);"F", to go into "graphics mode". In this mode, lower-case letters were displayed as a series of shapes: "y" was a diagonal line, "p" was a small rectangle, and so forth. You could use "reverse video" to flip the shapes’ pixels between light and dark. Other escape codes let you position the cursor anywhere on the 80 column by 25 line display. It wasn’t much, but it was enough to make crude games, and that’s all I ever wanted.
I asked Uncle Allan for help with writing my games in BASIC, and he taught me all about the Main Loop, the basic structure of all game programming that is still around today. Thanks to him, I was able to move on from just drawing pictures and start writing actual games.
I started many games in those years, but I finished relatively few. One of the ones I did finish was a Star Trek game where you commanded the USS Enterprise through a galaxy full of angry Klingons. It was insanely difficult. You had to time your commands perfectly to raise and lower shields, maneuver at impulse and jump to warp speed. Klingons would swarm you and could hit you from any direction, whereas you could only shoot forward. Even with your shields up, if you got hit you would lose energy, and if you ran out of energy you would die. If you tried to quickly warp out without knowing what was ahead of you, you would probably run into a star.
I remember beating it with great difficulty back then and feeling quite proud of myself. I can’t beat it today without modifying the code to make it a little less insane.
One of the last games I ever wrote on the Heathkit was based on the TV show Max Headroom, a series that I was completely in love with back then and still am today. I only ever completed the first stage: a daring helicopter run to Network 23. I wanted this game to have the best graphics I’d ever seen on a Heathkit. I wanted three-way parallax scrolling, so the buildings in the foreground would scroll more quickly. I wanted the helicopter to be superimposed on these scrolling buildings, and gunfire on top of that.
This was completely impossible and insane to even think about doing in interpreted BASIC on a 2 MHz 8-bit computer that was driving a 9600 baud terminal as its display. To the best of my knowledge, nobody ever did graphics like this on a Heathkit, not even using assembly language.
But I found a way. I used the terminal’s "delete" functions to scroll as fast as the display was able. I stored the buildings and the helicopter in string arrays, and defined them at the beginning of the program so they would be faster for the interpreter to recall. I only repainted bits of the helicopter that were broken by the scrolling boundaries. I cheated a bit and paused the action when the gun fired, then repainted the building bits.
It was a bit slow, but it was a fully functional game. You would want to stay at a high altitude to avoid the guns, but nearly-invisible barriers forced you to fly lower. Your best bet was to wait for the gun to fire, then fly up and right as quickly as possible. The gun would move in an arc, so you could anticipate where it would fire next.
Not long after I wrote this game, my Heathkit died. The company itself went out of business, so repairs were impossible. I moved on to PCs, running an operating system called DOS that to me looked strangely familiar. All my old games were stored on decaying floppy disks, and I thought I would never get to see them run again. Decades passed, but I hung on to those floppies out of nostalgia if nothing else.
A couple of years ago, I found a H-89 emulator written by Mark Garlanger. I emailed him and he told me he had some success recovering images from floppy disks, so if I would like to mail him mine he would try to save what he could. I didn’t hold out much hope. I remembered my Heathkit would have problems reading disks after a few years, and it had been decades. But I mailed them out anyway.
Mark was able to recover almost 95 percent of my data.
My grandfather died in 2001, and I saw my uncle at the funeral. My father died a year later, and I didn’t see Uncle Allan there, or any time since. I have been unable to get in touch with him. The Internet and even close family members have come up with nothing. He might still be alive, but with each passing year I start to doubt it more and more. All these important people in my life are disappearing one by one, and there is nothing I can do about it.
But thanks to Mark, those years of my life, the results of all the things my father and my uncle taught me, are preserved forever with perfect fidelity. It is as if no time has passed at all. My awkward teenaged self is calling out to me, wanting to show me this cool game he just made. I wish I could call him back and tell him that everything is going to be all right, that he’ll find his way eventually, that he’ll find the love of his life and he’ll get to write novels and work for game companies and have a good life.
But maybe, somehow, he knows.
I'm a writer and occasional programmer. I write science fiction stories and novels.
I also write technology articles for Ars Technica.
I'm the creator of newLISP on Rockets, a web development framework and blog application.