Fork me on GitHub

Chris Frederick

A Short List of Video Games

September 24, 2013

I just created a Gist to serve as a personal reminder of all the video games that I have played before as well as the ones that I would like to play some day. I chose to publish this list as a Gist so that you are free to fork it and even suggest new additions, if you’d like.

I admit that the phrase “short list” may seem like a bit of a misnomer—the list is long and will only get longer—but this still only scratches the surface of the vast universe of games out there. Say what you will, but I think that we are truly in a golden age of gaming.

Hosting Multiple Domains With Linode

September 14, 2013

I wanted to host a second website on my Linode recently. Rather than look up the process for doing so again when/if I decide to host a third website on the same Linode, I realized that I should just write up my own quick start guide for future reference. I am posting it here on my blog because I assume that it will be useful to someone else, too. (When in doubt, make it public.)

Note that although I am explicitly writing about how to add a website to a Linode running Ubuntu, you should be able to use most of these instructions on any Ubuntu server. In fact, I’m not even going to explain how to use Linode’s control panel here—I will only provide command-line instructions.

I essentially distilled the information in this blog post directly from the Configuring Name-based Virtual Hosts section of the Hosting a Website quick start guide in the Linode Library. The Linode documentation is fantastic, by the way—I highly recommend that you read it at least once before you start following the procedure that I’ve outlined below.

Getting Started

Your first step, if you haven’t done so already, is to read Linode’s Getting Started and Securing Your Server quick start guides. I’ve highlighted the key points from the aforementioned documentation below.

  1. Provision your Linode. You need to select a data center and deploy a Linux distribution (Ubuntu for our purposes).

  2. Boot your Linode.

  3. Connect to your Linode with an SSH client.

  4. Set your hostname.

  5. Set your timezone.

  6. Install software updates. I do this so often that I might as well post the commands I use here.

    sudo apt-get update
    sudo apt-get upgrade --show-upgraded
    
  7. Add a new user.

  8. Set up SSH key pair authentication.

  9. Disable SSH password authentication and root login.

  10. Set up a firewall.

  11. Set up Fail2Ban.

  12. Install and optimize Apache.

Preparing an Environment for Name-Based Virtual Hosts

You should only need to follow the steps in this section once. Skip to the next section if you have already installed your first name-based virtual host.

  1. Disable the default Apache virtual host.

    sudo a2dissite default
    
  2. Navigate to your home directory.

    cd ~
    
  3. Create a folder to hold your websites.

    mkdir public
    
  4. Set your home directory (but not all of the files in it!) to be readable and accessible to all users on the system.

    sudo chmod a+rx ~
    
  5. Set the public directory (and all of the files in it) to be readable and accessible to all users on the system.

    sudo chmod -R a+rx ~/public
    

Adding Website Data

Repeat the following steps for each name-based virtual host that has its own set of files and directories. Skip to the following section if you would simply like to add a new domain name as an alias for an existing website.

  1. Create a set of folders inside ~/public/ to store your website’s files, logs, and backups (replace example.com with your domain name).

    mkdir -p public/example.com/{public,log,backup}
    
  2. Upload or create files in the public subfolder that you just created (e.g. ~/public/example.com/public/).

Configuring Virtual Hosts

Repeat the following steps for each name-based virtual host.

  1. Create the virtual host file for your website (replace example.com with your domain name and vi with your editor of choice).

    sudo vi /etc/apache2/sites-available/example.com
    
  2. Create a configuration for your virtual host. Linode has created some basic settings (shown below) to get you started. You may copy and paste these settings in to the virtual host file you just created.

Replace example_user with your username and example.com with your domain name.

    # domain: example.com
    # public: /home/example_user/public/example.com/

    <VirtualHost *:80>
      # Admin email, Server Name (domain name), and any aliases
      ServerAdmin webmaster@example.com
      ServerName  www.example.com
      ServerAlias example.com

      # Index file and Document Root (where the public files are located)
      DirectoryIndex index.html index.php
      DocumentRoot /home/example_user/public/example.com/public

      # Log file locations
      LogLevel warn
      ErrorLog  /home/example_user/public/example.com/log/error.log
      CustomLog /home/example_user/public/example.com/log/access.log combined
    </VirtualHost>
  1. Save the changes to the virtual host configuration file and exit the editor.

  2. Create a symbolic link to your new public directory (replace example.com with your domain name).

    sudo a2ensite example.com
    
  3. Gracefully restart Apache to save the changes.

    sudo service apache2 reload
    
  4. Add DNS records for your new domain, if you haven’t already.

Congratulations! You should now have a new name-based virtual host on your Linode.

TEPCO's Game of Whack-a-Mole

September 07, 2013

When I first read that Japanese government officials had denounced the Tokyo Electric Power Company (TEPCO) by drawing an analogy between its Fukushima cleanup efforts and a game of whack-a-mole, I have to admit that I initially enjoyed a bit of schadenfreude at TEPCO’s expense. It’s refreshing to see a company that has caused so much disruption to Japanese families finally get some kind of comeuppance—even if only in the form of a mild verbal lashing.

Once I got over my knee-jerk reaction, however, it gradually dawned on me that this is actually quite a boon for TEPCO. Bad press over the utility’s incompetence doesn’t change the fact that TEPCO’s plants power a third of Japan. Consumers are stuck with TEPCO whether they like it or not. We may laugh at the analogy between TEPCO and children playing whack-a-mole, but I imagine that the TEPCO executives are laughing too—all the way to the bank. In fact, they must be overjoyed that the government has decided to step in and take over the cleanup efforts, because this means that the financial burden of cleanup has been shifted from TEPCO to the Japanese taxpayer (in much the same way as the losses sustained by the U.S. financial system in 2007 were ultimately borne by the U.S. taxpayer). Furthermore, any failures in the cleanup effort will now be blamed on the Japanese government instead of TEPCO.

I can’t help but think of the following Calvin and Hobbes comic.

Calvin shoveling snow

“If you do the job badly enough, sometimes you don’t get asked to do it again.”

Indeed.

Git Tip of the Day: --color-words

September 04, 2013

I’ve always felt that Git’s default diff output left something to be desired, especially when it was applied to Markdown text files (like the ones used to generate this blog). Line-by-line diffs aren’t very helpful if every line represents a paragraph of text.

I was thus pleasantly surprised to stumble across this blog post, which—among other things—explains how to generate word-by-word diffs that wrap nicely. The first step is to configure the default Git pager to wrap lines using one of the following commands.

git config --global core.pager less -r
git config --global core.pager "less -+\$LESS -FRX"

The second step is to tell Git to generate a (colored!) word-by-word diff with the --color-words option.

git diff --color-words

And that’s all there is to it! Note that --color-words is technically equivalent to --word-diff=color, so if you’re interested in reading about the other available options to --word-diff you can check out the git-diff man page.

As helpful as this technique is, there is one caveat to keep in mind: as far as I can tell the --color-words option only works with the git-diff and git-log commands. If you happen to use git add -p to stage individual changes—like I do—you are stuck with the default line-by-line diff output of git-add. That’s really only a minor inconvenience, though, because you can still call git diff --color-words just before git add -p to get a nicely-formatted overview of your changes before you stage them.

I hope you found this tip to be as helpful as I did!

Nintendo 2DS

August 29, 2013

I don’t know what to think of the Nintendo 2DS. First of all, it has a clever yet strange name: as an overlapping combination of “2D” and “DS” (“dual screen”), it pretty much describes a system in the original Nintendo DS series rather than one in the Nintendo 3DS family (as the Nintendo 2DS is officially being marketed). I wonder if this is a sign that Nintendo is preparing to replace their existing Nintendo DS lineup—the Nintendo DSi and Nintendo DSi XL—with the Nintendo 2DS? That would seem to make more sense than simply releasing a new version of the Nintendo 3DS at a lower price point. After all, at $129.99 the Nintendo 2DS is only $40 cheaper than the Nintendo 3DS ($169.99).

Then again, if the Nintendo 2DS is indeed going to be the spiritual successor to the Nintendo DSi, why will the system be conspicuously absent in Japan? (As far as I can tell, the Nintendo 2DS has only been announced for sale in the Americas and Europe.) The reasons behind this decision are still mysterious to me, but if I were to hazard a guess it would be that the Nintendo 2DS appeals to the price-conscious sensibilities of Americans (and apparently Europeans) rather than the quality-conscious sensibilities of Japanese people. Furthermore, Nintendo’s brand awareness is very strong in Japan and thus the company may not need to constantly reduce prices in order to sell its products. Still, I wonder whether the $40 price difference between the Nintendo 2DS and the Nintendo 3DS is really significant enough to drive sales.

So all that being said, how does the Nintendo 2DS really stack up against its Nintendo 3DS brethren?

Nintendo of Europe’s website has helpfully provided a PDF with a side-by-side comparison of the systems in the Nintendo 3DS family. This comparison makes it clear that the Nintendo 2DS differs from the Nintendo 3DS and/or the Nintendo 3DS XL in the following ways.

  • The Nintendo 2DS has a 3.53-inch upper screen and 3.02-inch lower screen, just like the Nintendo 3DS—not the Nintendo 3DS XL
  • At 260 g, the Nintendo 2DS is heavier than the Nintendo 3DS (235 g) but lighter than the Nintendo 3DS XL (336 g)
  • The Nintendo 2DS does not have a clamshell design
  • The Nintendo 2DS does not have a 3D-enabled LCD

On the other hand, the Nintendo 2DS does share the following features with both the Nintendo 3DS and the Nintendo 3DS XL.

  • Two outer cameras and one inner camera
  • A Motion Sensor and Gyro Sensor
  • Wi-Fi support
  • StreetPass
  • SpotPass

In other words, from a game developer’s point of view the Nintendo 2DS has all the same capabilities as the other systems in the Nintendo 3DS family—except for a 3D-enabled screen, of course.

Speaking of that missing 3D-enabled screen, it’s easy to make fun of Nintendo for removing it from the Nintendo 2DS but in all honesty most people probably don’t care about it nearly as much as the tech pundits do. After all, haven’t Nintendo 3DS sales been disappointing despite the fact that the 3D screen was one of the system’s big value propositions, analagous to the motion controller that was introduced with the Wii? Nintendo may be a bit ahead of their time—I imagine that 3D screens will eventually be ubiquitous, but they’re certainly not as attractive to consumers now as Nintendo had hoped. Furthermore, the Nintendo 3DS has always allowed you to simply turn the 3D effect off, so developers had to design 3D games to be accessible on 2D screens even before the Nintendo 2DS was announced.

My final comment on the Nintendo 2DS hardware has to do with its deviation from the clamshell design that has characterized Nintendo’s handheld consoles for the past decade. Note that while the Nintendo 2DS certainly looks less elegant, the system should prove to be more durable because it has less moving parts (e.g. hinges) to break. As a result, this would be a perfect system for younger children who have trouble treating their expensive toys with care. Nevertheless, the screen will always be exposed unless you buy a carrying case ($12.99) to protect it—bringing the total cost of the Nintendo 2DS dangerously close to that of the Nintendo 3DS.

Discussion of the new system is inextricably tied to discussion of Nintendo’s overall business strategy. John Gruber, in reaction to Nintendo’s product announcement, is probably not alone in saying that Nintendo should “just give in and start making iOS games”. I have always been and remain skeptical of this idea: as much as I love my iPhone, I really don’t want it to take over every aspect of my digital life. I believe that games are a form of art, and that the act of consolidating handheld games onto touchscreen smartphones in general—and the iPhone in particular—is akin to limiting a painter to a single palette of colors and one canvas material. Yes, you can still produce works of art that way, but it severely hinders your creative potential. Think about it: how fun would the original Super Mario Bros. be on a touchscreen device? There is a synergy between game design and game hardware, and Nintendo has proved that they are willing and able to innovate in both areas.

Some (many?) may argue that Nintendo should develop games for iOS in addition to its own platforms, but I’m not so sure that that would be an efficient use of its resources. For all its clout, Nintendo is still a modestly-sized company with approximately 5,000 employees across all of its subsidiaries, and it probably doesn’t need to be siphoning its game design talent off of existing projects to focus on smartphones. As Nintendo has certainly learned by now, new hardware imposes new design constraints, which can have deep and significant effects on game design. While it’s true that Nintendo’s handheld systems have had touchscreens since the original Nintendo DS, the touchscreen was never the only input method. Besides, Nintendo probably isn’t interested in competing with smartphone hardware or software companies directly, and thus needs to differentiate itself by designing unique gaming experiences. I imagine that Nintendo would also be very wary about serving at the pleasure of the king that is Apple, in spite (or perhaps because) of its own history as the “king” of gaming in the late 1980s and early 1990s.

These are interesting times for mobile gaming. I hope that Nintendo knows what it’s doing.

Related Articles

August 28th, 2013

August 29th, 2013

August 30th, 2013

September 1st, 2013

September 2nd, 2013

September 3rd, 2013

September 5th, 2013

September 6th, 2013

September 7th, 2013

Calculating Git SHA-1 hashes in Ruby

May 27, 2013

Although the process by which Git calculates SHA-1 hashes is well documented in Pro Git, I had a hard time finding it today and decided to write a blog post that will (hopefully) be a bit easier for myself and others to search for later.

First of all, use the hash-object command as follows to print the SHA-1 hash that Git calculates for an object. (You can also pass a filename as an argument to hash-object.)

$ echo 'test content' | git hash-object --stdin
d670460b4b4aece5915caf5c68d12f560a9fe3e4

Note that, by default, echo prints a trailing newline character so this command is actually computing the SHA-1 hash of "test content\n". Interestingly enough, though, if you try to reproduce this behavior in Ruby by computing the SHA-1 hash of the same string, you get a different result.

$ irb
>> require 'digest/sha1'
=> true
>> puts Digest::SHA1.hexdigest "test content\n"
4fe2b8dd12cd9cd6a413ea960cd8c09c25f19527
=> nil

The reason for this, as explained in Pro Git, is that Git actually prepends the following information to a file’s contents before it calculates a hash.

  1. The object’s type—blob for a regular object, tree for a tree object, and commit for a commit object
  2. A space
  3. The (human-readable) number of bytes of data in the object
  4. A null byte (\0)

In other words, you need to run the following command to generate the appropriate hash.

$ irb
>> require 'digest/sha1'
=> true
>> puts Digest::SHA1.hexdigest "blob 13\0test content\n"
d670460b4b4aece5915caf5c68d12f560a9fe3e4
=> nil    

Hope this helps!

On Living in Japan

January 15, 2013

First, a quick disclaimer: I was born and raised in the United States. As a result, when I make observations about Japan they are based on—and contrasted with—my own experience living in the U.S. Needless to say, my life experiences may or may not be similar to your own. If you haven’t lived in the U.S. or known anyone who has, you may not find some of my observations to be very surprising at all; in fact, you may find my assumptions to be more interesting! Nevertheless, I hope that at least some of what I write here will be informative to you.

I have lived in Japan for nearly nine months now, and I think that I am finally ready to share several observations that I’ve made about domestic life here. Note that I am explicitly focusing on (what are to me) interesting aspects of Japanese residences; I will not discuss cultural differences between Japan and the U.S. per se. Although it’s true that I have immersed myself in the Japanese language and culture from abroad for over twelve years, I don’t feel qualified to pontificate on the Japanese people, language, and culture; I couldn’t do the subjects justice, nor would I wish to expend the requisite time and effort to do so if I could. No, I’m more interested in shedding some light on what it’s like to live in a Japanese home, to illustrate a number of small ways in which the trappings of everyday life differ between Japan and the United States.

Bedding

Japanese futons are far different from their eponymous doppelgängers in the western world. The differences are striking.

Japanese Futon:

Japanese futon

Western-Style Futon:

Western-style futon

Some salient facts about Japanese futons include the following.

  • A futon mainly comprises a (relatively thin) mattress and a comforter or blanket. An expensive winter comforter might be filled with down and a summer blanket may be little more than a bed-sized towel.
  • Futons are typically laid out on tatami flooring at night and are folded up and stored in a closet during the day.
  • Futons are supposed to be aired out in sunlight regularly.

I like the simplicity of the futon as well as its space-saving efficiency, and I am consistently amazed at how warm a good futon comforter can be. Nevertheless, there is also something to be said for sleeping on a thick, western-style mattress.

Laundry

As far as I can tell, most Japanese households don’t have dryers—and even the households that do use them very sparingly. (I’ve seen washing machines with built-in drying units in stores, but I haven’t actually seen one of these models in use yet.) Of course, the lack of dryers makes perfect economic sense if you think about it because they use a lot of electricity, which is relatively expensive here—and getting more expensive and even scarce now that all but two of Japan’s 54 nuclear reactors are offline. I’m sure that there are other reasons, as well, but in any event a corollary to the lack of dryers is the need to line dry all of one’s laundry, and a corollary to that is a heightened sensitivity to the weather. (Dehumidifiers actually appear to be sold primarily for drying laundry indoors on rainy days.) Thankfully, it’s sunny more often than not where I live—and in the middle of the summer a pair of jeans can dry out in two hours flat—but when it does rain, as well as during the winter months, clothes can take an entire day to dry. I recognize and appreciate the fact that this is a more environmentally friendly way to live, but I still can’t help but find the process of hanging clothes, waiting for them to dry, and then folding them again extremely tedious and time-consuming. At least I have a lot of podcasts that I can listen to!

Balconies

Since most people line dry their clothes and air out their futons in the sun, balconies are a pretty important component of Japanese homes. These balconies are usually rather large—at least by my (U.S.) standards—to accommodate both the clothing and bedding. Furthermore, because clothes dry better in direct sunlight, houses and apartment buildings tend to be designed so that every residence has a balcony that faces east, west, or—preferably—south. North-facing balconies are much less common.

Water

I’ve noticed that every Japanese home and apartment I have been in has used a tankless water heater instead of (what I consider to be) a “traditional” hot water tank. To their credit, the tankless water heaters work perfectly fine once you get used to the slight lag between the time that you open a hot-water faucet and the time that the hot water actually arrives from the heater.

What’s particularly interesting to me about these tankless water heaters is that they are usually operated by “remote controls” installed in both the kitchen and the bathroom, and for the vast majority of the day these controls are turned off. So even though water should theoretically be heated on demand, it usually isn’t heated at all because the heater itself is off. This means that tap water is tepid in the summer and frigid in the winter. Furthermore, the washing machines I’ve seen aren’t even connected to a hot water tap (if you want hot water you can either pour it in with a bucket or use a tube to suck it out of your bathtub—more on that later), so clothes are almost always washed in cold water, which not surprisingly doesn’t dissolve laundry detergent very well in the winter. I’m actually a bit surprised that people don’t have more problems with pipes freezing, but then again, temperatures don’t drop below freezing very often or very long in most of Japan. That being said, I have heard that heating works differently in the northern prefecture of Hokkaido, where the weather is colder and snow more common in the winter.

At this point, you may be wondering: if the tankless water heater is usually turned off, what in the world is it used for?

Baths

The answer is that, in general, hot water is used for bathing. In the U.S., this is often just a shower in the morning. In Japan, this is often a shower and a bath in the evening.

Japanese bathtubs are deeper—sometimes significantly so—than their counterparts in the U.S. They are meant for soaking, for relaxing after a long day, and for warming up in the winter. The water in the tub is used by all the members of a household, so everyone is supposed to take a shower and clean themselves off before they get in the tub. The remote control (often) installed above the bathtub is used to individually adjust the water temperature for the shower and the bath (the latter by periodically circulating hot water through a filter in the side of the tub). In my experience, bath water temperature is usually between 40° and 42°C (104° and 107.6°F), and I can attest to the fact that it really does feel good to take a nice, relaxing bath at the end of the day (except in the summer, anyway). As an added bonus, you can reuse the bath water for your washing machine’s first wash and rinse cycles!

Showers

Because you are expected to take a shower before you get in the bathtub, there is usually a hand-held shower head hanging on a rail next to the tub for you to use. There is also often a plastic stool for you to sit on while you shower yourself and a shallow bucket for you to fill with water—either from the tub next to you or from a faucet installed somewhere near the shower head—for rinsing yourself off in addition to or in lieu of the shower head. Furthermore, to facilitate showering outside of the tub, the entire room is built out of materials that are designed to get wet and there is even a drain in the floor.

Bathrooms

Incidentally, it’s worth noting that Japanese bathrooms are designed very differently from their western counterparts. A western-style bathroom typically consolidates a shower/bathtub, toilet, and sink in the same room. In Japan—excluding western-style hotel rooms—these are split up into three separate rooms. The toilet is located in a room about as large as a small walk-in closet; the sink is usually in the next small room down the hallway, which also commonly has the household’s washing machine; and the bathtub and shower are in most cases adjacent to the room with the sink and washing machine, and may be accessed through a door between them.

This setup definitely has its advantages: three different people can use the sink, toilet, and shower simultaneously without getting in each other’s way. Personally, I happen to think that it’s more sanitary to keep the toilet and shower in separate rooms anyway.

Heating and Air Conditioning

I’ve known about this for several years now, but I still admit that I was a bit surprised when I first discovered that very few Japanese residences have the kind of central heat/air systems that are common in the U.S. (Good insulation seems to be lacking, as well, with one possible exception being buildings in Hokkaido.) Instead, Japanese homes are typically heated and cooled one room at a time. In other words, you need to install a heater or air conditioner in every single room you want to heat or cool. Thankfully, you have a bit of flexibility in choosing how to heat your home: you can use any combination of electric space heaters, kerosene heaters (some of which have a flat surface on top for placing a kettle), gas heaters, “hot carpets”, kotatsu, and even heated toilet seats. Unfortunately, you have fewer options for cooling your home: you can really only use mechanical fans, hand fans, and wall-mounted air conditioners. You can—and probably should—carry a towel around for wiping your sweat off periodically, too, especially in the middle of the summer when it’s 35°C (95°F) outside and the humidity hovers around 70%.

Energy Costs

As I mentioned earlier, heat and electricity are expensive. I know that I represent an extremely small sample size, but consider the following energy costs.

  • For electricity, I now pay a base service charge of ¥819 plus ¥17.05 for each kWh up to 120, ¥21.09 for each kWh between 121 and 300, and ¥22.52 for each kWh over 300. In addition to that, I pay ~¥1.7/kWh in “fuel costs” and ~¥0.33/kWh in “renewable energy costs”.
  • For natural gas, I now either pay a base service charge of ¥724.50 and ~¥190 per cubic meter on months that I use less than 25 m3, or I pay a base service charge of ¥1890 and ~¥145/m3 on months that I use more than 25 m3.

To be fair, these rates feel exorbitant to me because I was used to paying for cheap hydroelectric power. Specifically, I used to pay a base service charge of ~$4.50 plus ~$0.05 for each kWh up to 10 per day and ~$0.10 for each kWh after that. So not accounting for my current “fuel costs” and “renewable energy costs”, my base service charge has more than doubled and my cost per kWh has quadrupled.

Feel free to work out how much your energy costs differ from these.

Ovens

Ovens don’t appear to be a standard appliance in Japanese residences, so you would need to buy your own standalone oven—and find somewhere in put it—if you wanted to do any baking at home. Of course, given the high cost of gas and electricity here, this may be for the best anyway.

Moving

I think that moving is unpleasant regardless of where you live, but in Japan it is particularly annoying—to put it mildly—because you have to bring and install almost all of your major appliances yourself. These include your refrigerator/freezer, your washing machine, your air conditioners, your heaters, and in some cases even your kitchen stove. (Thankfully, you aren’t expected to move your bathtub or water heater.) I had no idea how fortunate I was to have these appliances provided for me whenever I moved into a new apartment in the U.S.

That being said, moving in Japan isn’t without its advantages, either: I’m told that after you’ve moved into an apartment your rent doesn’t tend to change too much, unlike in the U.S. where your rent is often subject to yearly increases. I knew a number of people in the U.S. who decided to move because they had essentially been priced out of their own apartments. Of course, there are always exceptions: I hear that apartments in Kyoto have some kind of yearly “lease renewal fees” instead.

Recycling

Japan is very environmentally conscious with respect to trash and recycling. It has to be: with a population of over 125 million people in a country smaller than the state of California—most of which is forested or mountainous—there isn’t enough space to bury everyone’s garbage in landfills. Instead, as far as I can tell, the vast majority of residential trash is either burned or recycled. Households are responsible for separating their trash and recyclables into several categories, which include combustibles, non-combustibles, plastic, paper, aluminum, glass, and PET bottles. Virtually all disposable consumer goods have clear labeling to indicate how they are categorized. I really wish the United States would adopt a stricter recycling system like this, but I’m not going to hold my breath.

Final Thoughts

If I was asked what all of these observations have in common, I would have to say that they are all attempts to conserve space and resources, both of which are very limited in Japan. Nearly everything about the Japanese home reflects this reality. While I can fully appreciate the frugality inherent in the trade-offs that have been made, I still sometimes miss the little luxuries that I used to take for granted.

750 Words

January 09, 2013

I stumbled across 750 words some time ago and thought that it was a great idea. As is often the case, I forgot about it shortly thereafter. It’s a new year, though, and I have resolved to write more. 750 words seem like a good place to start.

Here’s a quick overview:

I’ve long been inspired by an idea I first learned about in The Artist’s Way called morning pages. Morning pages are three pages of writing done every day, typically encouraged to be in “long hand”, typically done in the morning, that can be about anything and everything that comes into your head. It’s about getting it all out of your head, and is not supposed to be edited or censored in any way. The idea is that if you can get in the habit of writing three pages a day, that it will help clear your mind and get the ideas flowing for the rest of the day. Unlike many of the other exercises in that book, I found that this one actually worked and was really really useful.

How much can one say in 750 words? How long will it take? You and I are about to find out together.

After a hiatus of many years, I finally started reading science fiction novels again last year. The catalyst? The Humble eBook Bundle.

As it happens, a coworker of mine had recommended Old Man’s War as one of the titles on his shortlist of great contemporary science fiction. I filed the name away for later—which of course is a euphemism for “more or less forgot it entirely.” Nevertheless, the seed had been planted.

As it also happens, I purchased my first iPad early in 2012 in preparation for my impending move from the United States to Japan. I had been an avid reader of (non-fiction) books through my local library, and I was afraid of losing easy access to all of that great English literature. Ebooks, I thought, were the solution that I was looking for. Although I had considered buying a Kindle, I ultimately decided on the iPad because I already owned an Apple laptop and felt that a “general-purpose” device would probably be a better use for my money in the long run. Be that as it may, I didn’t use my shiny new iPad as much as I had hoped, mainly because I didn’t want to buy any books encumbered by digital rights management, and those proved difficult to find.

Anyway, when I saw Old Man’s War in the Humble eBook Bundle, I knew that the stars had finally aligned and I had to grab it. I enjoyed the book so much, in fact, that I wanted to read the rest of the series. But how could I find DRM-free versions of those books?

Once again, I got very, very lucky. Unbeknownst to me, in April Tom Doherty Associates—the publisher of Old Man’s War—announced that they would remove digital rights management from all of their ebooks by early July 2012. Note that the Humble eBook Bundle went up for sale on October 9, three full months after Tom Doherty Associates' announcement. In other words, I could get the sequels to Old Man’s War entirely DRM-free! This was pretty exciting news to me.

Unfortunately, this being the real world, there are still a number of kinks to work out.

  1. I can’t buy ebooks directly from The Tor/Forge DRM-Free E-book Store. The site is advertised as “coming in summer 2012”, but that target clearly came and went a long time ago. I have no idea when or if the store will eventually materialize.
  2. Even though I can buy DRM-free ebooks through the iBookstore, I don’t have any way of knowing which ebooks are actually DRM-free until after I buy them. Thankfully, I have at least seen disclaimers like the following added to the end of the descriptions for DRM-free books: “At the publisher’s request, this title is being sold without Digital Rights Management software (DRM) applied.” I can only hope that Apple will eventually begin selling ebooks DRM-free just as it eventually began selling all of its music DRM-free.

I will say this, though: after reading a few ebooks on my iPad, I never want to go back to physical books again. Ebooks are infinitely light—or at least as light as your ebook reader of choice—and easily searchable. I can carry an entire library in my pocket. I can’t count the number of times that I agonized over whether to sell old books of mine because they were taking up too much space, or, conversely, wished that I could re-read a book that I once owned when I was much younger but has since been lost to time (and which may, in fact, still be languishing somewhere in my parents' house). Honestly, what’s the point of a bookshelf full of books other than as an antiquated trophy case of written ideas trapped in awkward, temporary physical relics? I realize that I may be in the minority here, but I honestly believe that in the war between bits and atoms, bits are going to win.

And that’s all I have for today! 836 words, 83 minutes. Thanks for reading.