Categories
Technology

Reversi: A Postmortem

Spring quarter consisted of two things: beginning the internship, and an “intro to programming” course. Which, at first glance, seems like it would’ve been a “coast to an easy A” kind of thing for me, but that wasn’t my goal. And, to quote the Dean of UCI’s Graduate Division, “grad school is for you.”

So, at the start of the quarter, I sat down to figure out what my goals for this class would be, and came up with two things. The first, which I won’t be writing about, was to get a bit more teaching experience – in the vein of “guiding people to asking the right questions,” rather than just showing them the answers.

Second, and the topic of this post, was that I wanted to learn Vapor. The professor was kind enough to let me do this – instead of doing the course project (an online game of Reversi) in Node, I did it in Vapor.

As a learning exercise, I’d say it was… okay.

What Went Well

I love Swift as a language. The type system just fits in my head, it aligns incredibly well with how I think.

In this case, that meant representing all the events to the server, and the responses from the server, as enums.

It also meant that I could have a solid Game class that represented the whole game board, with some neat logic, like getters that calculate the current score and if the game has ended. Pair those with a custom Codable implementation, and you’ve moved the majority of the logic to the server.

… and What Didn’t

The fact that I’m representing events to and from the server as enums, instead of using Vapor’s routing system, was a result of tacking on another thing I wanted to learn about, and trying to loosely hew to the nominal course objectives. The official version of the project used WebSockets for all the communication. Vapor supports WebSockets. Great combo, right?

Well, sure, but it meant I did almost nothing with the actual routing. Instead I re-implemented a lot of it by hand, and not in a very clean way. Vapor doesn’t scope things the way I expected – based on some experimentation, it instantiates a single copy of your controller class and reuses it, rather than having one per connection. So instead of having nice class-level storage of variables, and splitting everything up into functions with the main one handling routing, it all wound up crammed into the main function. Just so I could maintain the proper scope on variables. I’m still not happy about it.

What’s Next

I’d like to keep tinkering with Vapor. When I’ve got the time, I have a project in mind where it seems like a good fit.

In the meantime, I hope their documentation improves a lot. The docs they have are good tutorials, and cover their material well; they also, it feels like, leave out the lion’s share of the actual framework. By the end of the project, I’d given up on the docs and was just skimming through the source code on GitHub, trying to find the implementation of whatever I was trying to work with. (This, by the way, doesn’t work with Leaf, the templating engine – the docs are basically nonexistent, and the code is abstracted enough that you can’t really skim it, either.)

Complaints aside, I still like Vapor. I picked up a book on the framework, which seems like a pretty good reference on the topic.

And hey, it was a neat little project. (The JavaScript is a disorganized mess, but it’s also aggressively vanilla – while the rest of the class was learning about NPM, I decided to see how far I could get with no JS dependencies whatsoever. Answer: very.) Check it out, if you’d like:

Categories
Review

“alt.sherlock.holmes”

Jamie Wyman, Gini Koch, Glen Mehn
I’ve probably mentioned before that I’m a sucker for Sherlock Holmes stories. If not, you may have been able to figure it out, based on the number of books I’ve read in the genre.1 I believe I picked this one up as part of a Humble Bundle (or Storybundle, more likely) based entirely on the fact that there was a book in there titled “alt.sherlock.holmes.”
And for that, it was worth it, because this was quite fine. Three different takes on Sherlock Holmes, all unique and interesting. I’ll say right off that my favorite was the second of the three — almost the inverse of Elementary, in a way, with handsome Dr. Watson being recruited by a still-named-Sherlock, definitely-just-miss-Holmes to investigate some very Hollywood murders. The third take, featuring Sherlock and Watson in 1960s New York, was more traditional in its take—Mycroft, I think, being the biggest difference from my mental image of him, as he’s gone a bit more sinister—although having the two actually sleeping together was a nice touch.2 The first was the furthest-out, with Sherlock not especially being a detective, and the setting—a circus—by far the most unique. Unfortunately, it was also the most predictable; in the larger story told there, I picked out the culprit within the first chapter. Still, it was an interesting read.3
All in all, if you like a good Sherlock Holmes story, give these a read.


  1. And those were just the ones that I could find by searching my archives for “Sherlock Holmes”; I know off the top of my head that there’s at least one more. 
  2. I know a few people have written theses about the queer theory of Sherlock Holmes, and I tend to like those interpretations. Historians have gone to great lengths to erase queer people from history (yep, nothing gay at all about Shakespeare writing a bunch of love sonnets to a man, let’s just… republish those with all the pronouns swapped, shall we?) and I am all in favor of putting some of that queer history back, even if it’s in the form of fiction. 
  3. Admittedly, the 1960s version was also quite predictable, but that’s because I took a history class on the 1960s and picked up a great deal of well-informed cynicism as a result. 
Categories
Review

“Redemption’s Blade”

Adrian Tchaikovsky 
This fledgling series, I found out by trawling through Wikipedia a bit, is called “After the War,” and that’s a fitting title if ever I heard one.
The book has extreme Dungeons and Dragons energy. You could use the setting for a game with absolutely no issue, and even the pattern of events in the book feels episodic in the way that a long-running campaign does. What’s really interesting, though, is that the book opens in the aftermath of that long-running campaign. The Big Bad is dead; the gang broke up, and our protagonist already has the endgame-level weapon, an infinitely sharp sword. (Her first side quest, for reference, is trying to find a scabbard that will last for more than a couple hours, so she can walk around without worrying about accidentally cutting off someone’s leg by bumping into them.)
What I really liked about the book is that it’s all about the forgotten bits of world building. Sure, the Big Bad is dead, but that doesn’t change the fact that he’d assembled a massive army, half of which were unnatural abominations created via dark magic. The lands he conquered are still devastated. The nations he crushed don’t magically spring back into being; their scattered (and, largely, dismembered) peoples can’t just reappear back in their homelands, none the worse for the wear. And the grand coalition, all the free nations of the world banding together to fight against the army of darkness? Well, politics kicked back into gear pretty quickly.
“Redemption’s Blade” is one of the best books I’ve read recently, and I can absolutely recommend it to. Give it a read.

Categories
Review

“Harry Potter and the Cursed Child”

J.K. Rowling, Jack Thorne, John Tiffany
I am disappointed and intrigued.
Let’s start with the disappointment: First, that JK Rowling managed to create a couple characters with truly excellent chemistry, and then aggressively refused to let it actually happen. (And here is where I say that I’m disappointed but not surprised, because she isn’t exactly the most woke about queer representation.)
Secondly, that this is such a weird development for some of the characters. What’s going on with Ron? Ron is a complex and interesting character, who the movies didn’t do justice, and got turned into something barely more than comic relief in Cursed Child.
(And here’s where I throw the spoiler warning; the play-and-book have only been out for three years, and if you’re like me, that’s not enough time to guarantee you know how it goes.)
And thirdly, that this completely breaks some of the rules the original series had established. (Though, admittedly, Fantastic Beasts did that first — apparently magic in the ‘30s was a couple of orders of magnitude more powerful? Why?) In the books, time travel had rules that made sense. Your can’t cause a paradox, because you’ve already time traveled. Here, though, suddenly we care about the grandfather paradox?
And yet, I’m still intrigued. Because Albus and Scorpius are fun together. Because it’s another look into the magical world that was the shared childhood of my generation. Because it’s written as a play, and I cannot fathom how they would stage some of this.
It’s an alright read, doesn’t take too long, so if you’re at all interested, give it a go. And if you’ve got a chance to see the actual play… that’s probably worth the time, just to see the staging.

Categories
Review

“Creative Confidence”

Tom Kelley, David Kelley
There something about this genre of book that just doesn’t sit right with me.1 I appreciate the points that they’re making, but it always feels like 80% of the book is one big humblebrag about all the people the author has worked with. How many big-name companies can we name-drop? Why yes, I have worked with Proctor & Gamble, how ever did you notice?
I suppose part of it is that they’re trying to establish why you should listen to them, and demonstrate that the ideas are good, which is a valid thing to do. In execution, though, it always feels excessive. Like a good editor could cut at least half of the book away without actually losing anything of use, but opted not to because the result would be too short and necessitate a lower price.
All of which is to say, this is definitely one of those business/self-help books, and it could be edited down into a pamphlet if you really wanted. But it was still interesting to read—the ideas are good. It’s almost like running one of the most famous design firms in the world and teaching at one of the most prestigious schools of design actually means something! Give it a read, if you’re interested. (And no, being creative isn’t a prerequisite—that’s one of the key points of the book. Spoilers.)


  1. In this case, I think “this genre of book” means “if you told me they gave a TED Talk espousing these ideas, I would be utterly unsurprised.” 
Categories
Programming Tools

Playlister

In the past couple months, I’ve had an ongoing series on converting iTunes playlists to text files, with a brief digression into scripting with Swift. While I doubt that I’m entirely done with the topic, I have reached a point where I’m ready enough to do another write-up.
This morning, I made playlister available to the public. It is not a consumer-facing application like my others; it is very much a tool for people who are comfortable with the command line.
In between the previous iteration of this tool and the current, I actually had a version of playlister built and shareable (Chase has that version installed on his Mac, actually) but, before releasing it to the public, I looked at the code and thought “I can do better.”1
So I buckled down and spent some time indulging in my love for API design, and tried some tricks I’ve been wanting to try.
The rewritten version ships with a library, LibPlaylister, that provides the basic ideas — protocols that allow for interacting with the library, playlists, and tracks; conversion to Markdown — as well as some neat new tricks. There’s some hooks for customization, such as the RatingFormatter protocol, and included FiveStarRatingFormatter, and the new LinkStore protocol, which provides a layer of abstraction on the SQLite-based caching of links.2
It was also an excuse to add to my Swift toolbox. I worked with SwiftCLI for a while, and then converted to ArgumentParser when that was released. I’ve done file interactions, and a lightweight database. I’ve learned a lot about Swift Package Manager.3 I learned a bit about XCTest, and figured out how to get it working in GitHub Actions. (And, more interestingly, figured out how to conditionally include frameworks in an SPM package. I wanted the tests running on Linux, but Linux… doesn’t have the iTunesLibrary framework, shockingly.)
I had fun building this, and will probably continue to tweak it. (I mean, it could be fun to get it automatically pulling links from the iTunes Search API, and just asking ‘is this the right link?’ instead of requiring manual entry.4)
For now, though, it’s ready enough to share, and made for a fun write-up and a good way to de-stress by tinkering.


  1. Interesting aside from giving that to Chase: Did you know that macOS has a ‘quarantine’ flag it puts on executables sent via AirDrop? That was some fun googling to figure out. The solution: xattr -d com.apple.quarantine ./playlister 
  2. That caching is definitely the biggest productivity gain of this, as compared to the previous version — now, when I go to write up my monthly playlist, the whole first part of the playlist doesn’t require any interaction at all. 
  3. Coming from working with nom’s package.json format at work, SPM Package.swift files are nice. Like, you can have comments in them! And, more, you can have actual code, so you can do neat stuff like this
  4. Although, at that point, I’d probably wind up writing it up as a SwiftUI app so I can show images. Which… might have been part of the inspiration for making LibPlaylister a separate library. 
Categories
Education

User Testing

I am rather bad at the whole concept of relaxation. I say this as an introduction, because writing this post is my idea of taking a break from putting together the final presentation for my class on user testing.
The course has been interesting overall. I will readily admit that I don’t intend to make a career of user research, but I am glad I’ve had the experience. Research is, after all, critical to design and development both. We can try to stick to the whole “if we asked people what they wanted, they would’ve said ‘a faster horse’” thing, but, shockingly, we actually aren’t omniscient. We aren’t our users.
Throughout the course of the course (and now you can tell my brain is a bit fried, because I’m throwing in wordplay), we’ve used a few different techniques. My favorite so far has been card sorting: it’s easy to explain, quick to do, and works very well for figuring out a sensible way to organize a bunch of stuff.1
I also quite enjoyed the competitive analysis assignment—going through, as best as I could, the entire market for a specific category was a surprisingly fun challenge. It’s also immediately visible how useful it is, from a strategic perspective: at the end of that assignment, I closed out an open project I had where I’d been putting together sketches for a fitness application. While it would’ve been fun to build, it really wouldn’t have had anything truly unique to establish itself in the market, and I’m too much of a Broke Millennial to be able to devote that much time to ‘fun to build.’2
We also did some quantitative and qualitative user testing, which I found interesting, but also served as the main argument for my “I don’t have a career as a researcher ahead of me” stance. Interesting, yes; useful, when done right; surprisingly difficult to do right, absolutely.
The qualitative structure was a bit more forgiving than the quantitative. We used UserTesting.com, which has a well-polished interface for assembling a test, a slightly less well-polished interface for going through a test, and a checkout page that leaked memory at an astonishing rate.34 Those complaints aside, the actual data I got was very helpful—the biggest issue I had with it was because of my own mistake, and the more open nature of the test meant that even that failure helped me sort out the answer to a different question I had.5
Going into the class, I thought I was going to like the quantitative testing more—I majored in computer science, and threw in a minor in math at the end, I’m a Numbers Guy. In execution, though, I wasn’t a fan. Part of this is probably due to the software we used: I was utterly unimpressed with Loop11. Their test assembly and reporting interface felt very Web 2.0, which I always find a bit alarming for an online-only business, and while the test-taking interface was a bit better (hello, Material Design 1.0!) it was unusable in Safari and a privacy disaster waiting to happen everywhere else.67 And for all that trouble, the data I got wasn’t all that useful. Though, a caveat to that: quantitative testing is more appropriate for summative testing, verifying that your completed design/product works as it’s supposed to, and I won’t be in a position to actually do that sort of testing for, oh, months at the earliest. Certainly not in time to use the results for this class, so I misused the technique a little bit in order to have something to work with.
As I said at the start, though I don’t intend to make a career of this, I’m glad to have taken the class—at very least, it means I’ll have that much more respect for the work my colleagues who do make a career of it are doing. And I sincerely doubt that this will be the last time that I do some testing myself; it’s important to do, and I quite like having the data to validate my designs.


  1. You can do it with actual cards, if you have time and are actually in the same place as your participants. If not, you can use online tools. We used OptimalSort, which is available as part of the OptimalWorkshop suite of tools. If that’s the only thing you’re going to do with it, I honestly can’t recommend it, because while it’s a good tool, it is not, on its own, worth the price. (Having seen their pricing structure, am I considering breaking into that market? Only vaguely.) 
  2. But hey, while we’re on the topic, check out some of my apps
  3. I left the tab alone for ten minutes and came back to 30,000 error messages in Safari’s console and about 2 gigabytes of RAM consumed. On their checkout page. C’mon, folks, that’s just embarrassing. 
  4. To be fair, I’ve got a pile of content blockers enabled, and at a quick glance quite a few of the error messages where a result of that. On the other hand, you shouldn’t be throwing that many little privacy-violating scripts at people to start with, and you definitely shouldn’t be doing it so badly
  5. I’m being intentionally vague about what I was actually testing, because it’s something I may yet fully develop, and I don’t talk about things until they’re good and ready. 
  6. I suspect Safari’s refusal to work with it was related to the latter concern; I didn’t dig into what was going wrong, just threw my hands in the air in disgust and installed Firefox. 
  7. As far as I can tell from some cursory inspection of the functionality of their ‘no code’ feature, it works by having your testers install a browser extension that… executes a man-in-the-middle attack, of sorts, on every page they view. When asking people to do the test, I told them to install the extension, do the test, and then immediately uninstall the extension—and that because I didn’t want to try walking people through installing a completely separate browser to do it in, like I did. 
Categories
Programming

Relational Databases

Inspired by a mix of Julia Evans and how much fun I had last time, I threw together another sketchnote on the basics of relational databases.

Relational Databases: How we store data! They model relations between things. Databases have tables, which have rows and columns.  A column has one type of data, like CHAR, VARCHAR, and NVARCHAR for text, INT, BIGINT, FLOAT, and DOUBLE for numbers, BOOL for booleans, and DATETIME for dates and times. Columns can also be nullable, which basically means ‘optional.’ Having a single type of data per column allows databases to be very fast and efficient. Rows are the actual data in the database, and are also referred to as ‘records’ or ‘entries.’ Keys: a table has a column as its primary key. That means that each row has a unique value there, which you can use to identify the row. Kinda like a social security number, or your phone number - it’s uniquely yours! A foreign key is a value that is the primary key of another table. You can use it to reference a row in a different table.
(Obviously I’m skipping over a lot of detail, but as a very quick intro to what a relational database is, I think it works!)
Categories
Education Portfolio

Value-Sensitive Design

The first unit in our course on Advanced Design and Prototyping focused on Value-Sensitive Design, and a couple of the assignments we did as part of it were pretty fun.

The first was to do a sketchnote on the concept itself. I’ll admit, I was a bit skeptical of the concept of sketchnoting – I thought it would be fun, but I didn’t think it would actually be all that useful. In doing it, however, I found that it helped me to coalesce my thoughts a bit – though, admittedly, that may have more to do with the fact that it forced me to go through my typed notes again than the sketchnoting itself. Still, it was a fun way to do that bit of studying, so I think I’ll try to add it to my workflow in the future.

Presented with apologies for my terrible handwriting.

Another activity was to put together a presentation, going through some value-sensitive design processes and presenting our ‘findings.’ Of the available prompts, I chose the one that boiled down to “your team has just been hired to design a photo-sharing application; you’re in charge of the VSD portion. Go.”

Categories
Portfolio Review

Competitive Analysis: Fitness Apps

The second unit in my course on User Experience and Evaluation was on competitive analysis — looking over the competitive landscape in a given marketplace, and using that data to figure out both the low-level design and high-level strategy you should use to effectively compete.

While I considered doing an analysis of the productivity management/to-do-list marketplace (an area on which I have many opinions), I realized that the end result of that analysis would be “the marketplace is saturated, and the ‘table stakes’ level of functionality is prohibitively expensive to achieve.” Not the most exciting result.

Instead, I looked at another area where I’ve gone through a surprising number of apps: fitness tracking. Specifically, workout planning and tracking – I did a previous assignment on how people use the gym, and one of my findings was “hoo boy are there a lot of different systems for planning and tracking a workout.”

After downloading quite a few apps and compiling a rather monstrous spreadsheet, I put together the results into a report, which I’m now posting here.

(Will I be using these findings to develop an app? … No comment.)

For those using screen readers, or who prefer their own reading environment, you can download the full presentation PDF here:

Categories
Review

“Children of the Eighth Day,” or, “but at least nobody cares that the prince is gay”

Don Sakers
I mentioned in my last review that I was reading this omnibus; I didn’t review the short story in the middle, as it seemed a bit too short to be worth the effort, but did enjoy it. And it provided a good introduction to the characters here, eased the transition of skipping forward half a millennium or so.
I’ll start off by saying that I enjoyed “Children of the Eighth Day,” but temper that by saying it wasn’t as good as “Dance for the Ivory Madonna.” It’s more removed — it’s a space opera, and I’m much less familiar with the goings-on of an interstellar empire than I am of the modern world.
The overall flow was interesting — the first half of the book wraps up far more than I thought it would, and the second half has an entirely different set of issues for the characters to confront.
In retrospect, I think the short story leading in to this is not just helpful, but perhaps necessary, to be able to at all follow the events of the first few chapters. Things kick off very quickly, and trying to figure out the context of the Empire and the Family would be a bit much in addition to the actual events of the plot.
Final verdict: I do recommend the omnibus as a whole, but it might be worth reading it out of order — there’s a bit of spoiler effect for “Ivory Madonna,” as historical context, but I don’t think it gives away enough to really ruin the book for you, if you do read it in that order.

Categories
Review

“Dance for the Ivory Madonna,” or, “actually, some of this might work”

Don Sakers
This is… the most fun piece of cyberpunk I’ve read. I was going to add a qualifier to that, but in trying to come up with one, I realized it doesn’t need one; it’s just the best one.
Unlike most cyberpunk, it doesn’t feel dated by the technology. Sure, it’s set in the future, which helps, but it’s set in a future that feels like a reasonable future based on our current technology, not based on the 1980s.
The setting is fascinating: the world map has been severely redrawn, most noticeably by the USA splitting into several pieces, and by the fledgling African Union actually taking off and becoming a (if not the) world power. At the same time, however, those national divides have become less important, with the UN finally taking over global police actions, aided by a technocratic NGO, the Nexus.
The protagonist is a Nexus operative, and as the story goes on you find out he’s veritable royalty — his father a founding member of Umoji, the African economic union, his grandmother the person whose ideas gave birth to the Nexus, and a few other fun surprised along the way. (I won’t spoil any more than that, it truly was fun finding things out as I went.)
Throw in the global economy being run by AIs, a well-explained split between AR and VR, and a space program based on a mix of ion thrusters and orbital velocity cannons paired with gigawatt-laser-pumped-solar-sails, and I am sold on this setting.
I’m interested to read more of this — I’m reading the Worlds Afire omnibus, which includes three books in the series, if I’m remembering correctly. However, the series isn’t just in this one era, it’s apparently operating on a truly enormous scale, so it’s very possible that the events of the next book will be more than a billion years removed from what I just read.
As long as the next is further into the future, though, I can reasonably expect to see at least historical references to the characters here — the results of the plot certainly feel big enough that they’d carry a long ways throughout human history.
If I’ve sold you on this book now, which I rather hope I have, because it’s a delight, you can go grab the omnibus.

Categories
Review

“Please Don’t Tell My Parents You Believe Her,” or, “a much better end than I was expecting”

Richard Roberts
This is another book that I put off reading for a while. I knew going in that it was the last in the series — Roberts’ blog made that pretty clear — and then, shortly after I bought it, his publisher went under (or something? I’m unclear) and seemed to pretty effectively tank any hope for future works in the amazing world he’s built here.1
And that’s what always shines to me about his books: the world-building. Roberts has a gift for showing without telling, and manages to perfect balance explaining a little bit and leaving a bit to the imagination. One of my favorite scenes in “… You Believe Her” was Penny, sitting on a train, watching a couple boys study. It’s just that one of them was using his telekinesis to levitate the book instead of holding it with his hands. And she goes off on a little tangent, thinking about the statistics of superpowers, and we find out that the superheroes and supervillains are the statistical outliers, while there are also sorts of normal people who use their powers to… not wear spandex and beat each other up. To study. To do their jobs. To make music, or build cool computers.
That’s what I love about the series. It’s a great big world, and Roberts wants to follow the same “but what about-“ trail of implications that I always do.
It’s also hilarious, if my gushing over the world building hasn’t sold you. This book introduces Gerty the Animatronic Goat, who I described to my friend as “the single best comic-relief character I’ve ever read.” It’s silly, and wholesome, and my jaw is a little sore from how much I smiled while I was reading the book.
And the thing is, Gerty is present throughout the book, and it’s necessary. She’s comic relief, because what’s actually happening in the plot is heavy. It’s probably a requirement to read the previous book first, to be able to follow what’s going on, as it starts off pretty in the middle of things.
It’s dark and sad, and happy and silly. It’s an excellent read. Check it out.2


  1. Happy follow-up, though: I believe he’s since got the rights sorted out enough that he can resume his plans to write more in this world. 
  2. And join me in reading Roberts’ new book, in a totally different setting. I had the chance to read an early-release version of the first couple chapters a while back, and I’ve been looking forward to the full novel ever since. Hopefully I don’t take quite as long to get around to reading it as I did this one. 
Categories
Review

“Red, White, and Royal Blue,” or, “I was wrong about which genre this book was”

Casey McQuiston
I put off reading this one for a while, because it seemed like it was going to be dumb and fluffy, the sort of thing I like to save for when I’m stressed and need something easy and happy. And I’m quite happy to have been wrong about it, in part: while it’s certainly fluffy, it’s less dumb than I was expecting. Sure, the protagonist spends a bit too long not quite grasping what’s going on, but that actually gets turned around pretty well later on. And it’s a surprisingly good political novel, too — the backdrop of “being the son of the President” isn’t left as window-dressing, instead becoming a significant driver of the plot.
The cast is delightful — there’s a good deal of family drama going on, and it feels real, and rough at times.
All in all, I loved this book — stayed up too late reading it, laughed the way through, and would happily read it again. I can heartily recommend it.

Categories
Review

“The Plutonium Files,” or, “‘it’s a good thing we’re the good guys and the laws don’t apply to us,’ they said”

Eileen Welsome
I’m not sure what it says about me that all of my nonfiction reading is about the Cold War, but here we are again.
The funny thing about this book — and there isn’t much of that, because it’s a detailed account of some truly horrible things — is what did and didn’t stick in my mind. A lot of the book was about trying to humanize the victims of the experiments, and that aspect didn’t really land for me. The actual experiments, what was done, did stick, to a degree; having just finished my read, the ones I most remember are the prison experiments in Oregon and Washington, the radioactive iron supplements at Vanderbilt, a bit about the total-body irradiation experiments, and, of course, the titular plutonium trials. Some of the accidents also stood out to me — there’s a discussion of a man who took a plutonium criticality to the face, and the summary of how thoroughly screwed you are by that is that, when he threw up on the floor of the hospital an hour or two later, after they’d cleaned the floor, they had to get out a geiger counter to check if it was safe for anyone to walk there. (He didn’t survive; to add insult to horrible injury, his body was then parceled out to labs around the country, without the permission or knowledge of his next of kin.)
There were also a couple figures, dropped in as part of an anecdote in the portion of the book about the pilots who flew planes through mushroom clouds to measure their effects, that lodged in my head pretty effectively.
The first set of tests after WWII ended were called Operation Crossroads. The second of these was an underwater detonation; I’ve heard the story before that, during the explosion, a Japanese battleship was thrown — 30,000 tons of metal, launched out of the water. (I’ve been trying to confirm this story in writing this, but haven’t found any clear evidence either way, so I’m going to call it apocryphal and move on.)
This story, though, was from the Castle series, Castle Bravo, the first thermonuclear weapon test. 15 megatons of TNT; while it wasn’t a useable weapon — the device was the size of a small building, and had to be constructed in-place on the ‘target’ island — it was mind-boggling in scale. Because, 15 megatons of TNT, that’s… a number. But what the book described was a 20-mile-wide column of water and mud, 45,000 feet tall. Again, mind-boggling in scale, but slightly easier to conceptualize; just imagine a mountain, and then… make it taller.
The figure that truly got to me, though, was the statement that it took hours for the water and mud to finish falling back into the ocean. Hours.
These nuclear tests were also so bright that test animals, 350 miles away, got retinal burns from looking directly at it.
It’s a scale of destruction that I can’t fit in my mind. Humans aren’t equipped to think about this sort of thing.
And it’s not the scariest part, is the thing. Sure, you can erase a city in the blink of an eye.
This is where the book shines: it’s about the radiation, and just how scary and insidious it is. I’ve mentioned before that people aren’t afraid enough of nuclear war; at risk of sounding like a broken record, I’ll say it again. Write your Congresspeople, and advocate for disarmament, everyone.