All posts by Jamie Todd Rubin

About Jamie Todd Rubin

Jamie Todd Rubin writes fiction and nonfiction for a variety of publications including Analog, Clarkesworld, The Daily Beast, 99U, Daily Science Fiction, Lightspeed, InterGalactic Medicine Show, and several anthologies. He was featured in Lifehacker’s How I Work series. He has been blogging since 2005. By day, he manages software projects and occasionally writes code. He lives in Arlington, Virginia with his wife and three children. Find him on Twitter at @jamietr.

To Snap or Not to Snap?

There are 25,766 photos in my digital photo library. On seeing that number recently, I longed for the days of film cameras with 24- and 36-roll clips of film. Back then, if you wanted to take a picture, you needed to make sure it was worth one of those 24 exposures. Now, it seems, I often have dozens of shots of the same scene, each taken milliseconds after the one before it, so similar that only a computer could detect the differences. And why bother deleting them? It’s not like they are taking up space in album somewhere, accumulating dust and wrinkling at the corners.

For the last several years, I have deliberately cut back on the pictures I take. Having a digital camera (as part of my phone) everywhere I go was a novelty at first, but I realized after the first ten or fifteen thousand photos that I could either be an observer or a participant. Others may balance these roles better than I can. I found when I took photos, I didn’t feel like a participant in the event. I didn’t remember the event as well. I wasn’t present in the moment, or to use the phrase of the day, I wasn’t mindful.

Back when photos came in batches of 24 or 36, it was was relatively easy to curate them. I took no time to flip through 24 photos and pick out the ones that were worth keeping, or sticking in a photo album. With nearly 26,000 photos that is nearly impossible. I did the math–that number averages out to about 6 photos a day, every day for the last 13 years.

The cost of the film alone would have made me much more selective about my photos. I checked and a 4-pack of 24-exposure film costs about $35. That’s about $0.36 per photo. It costs around $5 to develop a roll of that film, so call it another $0.21/photo. That’s $0.57 per photo. Looking at the 25,766 photos in my library, it would have cost me around $15,256 if those photos had been on film instead of digital. There’s no way I would have taken even a tenth of those photos if it cost me that much money.

Also, I’m not big a photo browser. I generally don’t go back and look at old photos unprompted. I’ll do it if the kids ask me to show them something, or if a specific need comes up, or if I am reminded of something. But with so many photos in such disorganized jumble of bits and bytes, it can be hard to find the specific photo I am looking for.

Thinking about all of this, I think I made the right decision to cut back on how many photos I take. I’d rather enjoy the moment and remember it (and maybe write about it later) than have a hundred photos that I won’t likely look at again. Also, there are usually half a dozen other people taking the same photo, so it’s around somewhere if I wanted it

Whether ’tis nobler in the mind to suffer the snaps and flashes of outrageous snapchatters, or take pen in hand and scribble what I remember and enjoy the moment, I think I’ll enjoy the moment.

Journal in Obsidian Notes?

Once I got the hang of how Obsidian worked for me, once I realized the power of its linking capabilities, and that it really did everything I wanted a note-taking app to do, it was natural to consider what could go into my vault. Daily notes were a given, of course. All of my reading notes, and even a version of my reading list could go in there. Borrowing some concepts from Zettelkasten, it could become a kind of digital commonplace book, something I’ve always wanted. What about my journal? With all of the other information in one place, linkable and searchable, it seemed to make sense that my journal should go there as well.

The thing is, my journal has always been handwritten, going back to 1996. There were times when I experimented with it in a digital form, but I always came back to the handwritten form. In the current incarnation (since late 2017), they fill eight Moleskine Art Collection sketchbooks.

My collection of journals.
My collection of Moleskine journals

As it turns out, how I keep my journal lends itself Obsidian linking. Rather than an entry-per-day, I number entries, beginning at 1. Each discrete entry gets its own number. I date the first one of each day, but there may be two or three entries in a day, each of which will have its own number. I did this thinking ahead: if I ever wanted to index the thing, I wouldn’t have to worry about what volume or page and entry was on. All I’d need was its entry number. (I took this lesson from Isaac Asimov’s description of how he numbered entries in his Biographical Encyclopedia of Science and Technology in order to avoid the tedious work of tying index entries to page numbers.) Thus, I have 1,782 unique “entries” each with its own number. This makes it ideal for linking in Obsidian.

Several weeks ago, I decided to give it a try, and I began writing my journal entries in Obsidian, giving each entry a unique number, continuing from where I left off. I liked being able to link these entries to other notes.

Journal entries listed in Obsidian
Journal entries in Obsidian

Something nagged at me, however. I missed writing in my journal. I missed how the pages contain more than just writing. I paste pictures and clippings in the pages. Sometimes I sketch things. It just didn’t feel the same typing the entries rather than writing them out in my journal.

A typical multimedia page from my journal.
A typical “multimedia” journal entry

It occurred to me that I might have the best of both worlds with a little effort. At the end of each week, for instance, I could type up the entries I’d written in the Moleskine notebook, copying the entries into Obsidian. Then they’d be there for searching and linking. After a little thought, that felt like a monumental waste of time.

Last night, I decided not to keep my journal in Obsidian and to continue with the notebooks. I did this for several reasons:

  1. I still think there is a compelling argument for how long paper lasts. Digital media has been around half a century or so. Paper has been around centuries. Witness John Adams’s diaries or Leonardo da Vinci’s notebooks.
  2. I don’t actually search through my journals that much to make it worthwhile to put every entry into digital form.
  3. When I do search them, I enjoy the feel of flipping through them, seeking out what I am looking for.

But there was one other thing that occurred to me that sealed the deal for me. My Daily Notes in Obsidian serve as an index to my life. If I needed to know when I wrote about something in my journal, I need go no further than my daily notes. I can search them for the appropriate reference and then use the date of those notes to look up any entries in my journal. Moreover, if I write something in the journal and want to make sure I can find it easily, I can just add a reference to the entry number in my daily notes.

That seemed to satisfy me, and with that, I began this morning, transcribing those entries I made in Obsidian back to my Moleskine notebook. Going forward, the journal will stay in a notebook, but I’ll rely more and more on the daily notes as a kind of compass for finding what I need.

How to Learn to Write Code in 37 Short Years, Part 1: Hello World!

Recently, I passed a personal milestone. It is an arbitrary milestone, one for which I am the sole judge, but it is one that has been 37 years in the making. I have been a professional developer (coder) for about 27 years now. In that time, I’ve generally had no problem considering myself a professional. No impostor syndrome there. But there is one thing from which I have refrained referring to myself: an expert.

Until now, that is. Now, after 37 years of learning how to write code, I think I do it at a level which could be considered expert. Perhaps even by someone other than myself.

“Developer” sounds a little phony to me. I’ve read about people who are developers (land developers) and I’ve never really been clear on what that entails. I prefer referring to myself as a (professional–now expert) “coder.” It’s less formal, but despite its reputation, I’ve always felt there is something informal about coding. I’ve been wary of the term “expert.” It seems to me that it is overused to such an extent as to water down the meaning. I’ve seen all kinds of books about becoming an “expert” this or that in 30 days. Maybe I’m just bitter at being a slow-learner but it took me 37 years before I finally considered myself an “expert.”

One thing I don’t consider myself is a software engineer. An engineer has a specific meaning in my mind, and entails a certain kind of formal education in software development that I lack. I am not an engineer. I am immediately suspect when I see “software engineer” on a resume when I don’t see an engineering degree along with it. I’m much less suspect if I see “coder.”

I tend to be a slow-learner, perhaps because I dive in head-first and try everything at once. I’ve written about how it took me 14 years of writing and submitting stories, collecting more than a hundred rejection slips before selling my first story. It took me 11 years of teaching myself to write code, before I landed my first (and so far, only) professional gig. In that regard, it only took another quarter century or so before I felt I could call myself an expert.

So how does one learn to write code in 37 short years? For me, it began with hangman, and WarGames.

The first computer I ever saw was a Commodore VIC-20. I saw it in my 5th grade math class sometime in the late winter or early spring of 1983. There are exactly 3 things that I remember from that math class. First, our teacher was missing part of a finger. Second, one of our lessons was learning to read the stock pages in The Providence Journal. Third, was the Commodore VIC-20.

There was no math associated with our introduction to that computer. I remember it was wheeled into the classroom, connected to a television set. We spent the class using the VIC-20 to play Hangman. I didn’t see a line of code during that introduction, but I was intrigued by what I saw.

The summer of 1983 was my last on the east coast before I moved with my family to Los Angeles. It was the summer that WarGames with Matthew Broderick and Ally Sheedy made its debut. I saw the movie in New York with my cousins. I don’t recall the movie making much of an impression one way or another at the time. What I remember most about that day was going back to my cousin’s house after the movie, and being introduced to his Timex Sinclair 1000. It was the first computer I ever laid my own hands on.

My cousin turned on the computer and showed my how to write a simple program in BASIC. The program was:

20 GOTO 10

The program doesn’t do much, but something in my brain clicked. It was like I understood the concept of programming in that instant. With a finite (even small) set of instructions, and some basic logic, you could make the computer do all kinds of things.

That evening, we made the computer break into a top secret installation. We didn’t have a modem or any kind of connection to the outside world. But using our memories of WarGames, and my quick absorption of BASIC, we wrote a program that made it seem like we were hacking into some secret computer system. I can’t remember what I program looked like, but it was probably something like this:

20 PRINT "Enter your password:"
30 INPUT x
40 IF x = "password" THEN GOTO 50 ELSE GOTO 60
50 PRINT "Welcome to Global Thermonuclear War"
60 PRINT "Wrong password"

Yeah, we didn’t have the logic quite right, but the idea that through some simple instructions you could make the computer to all kinds of things was a revelation for me.

At the end of that summer, we said goodbye to the east coast, and hello to Los Angeles. Any move is tough on an 11-year old, but moving across the country, away from all of your friends is particularly tough. But I had something cooking in my mind that I was looking forward to. I was going to figure out a way to get my own computer. I didn’t particularly like the keyboad on the Timex computer. What I had in mind was the VIC-20 I’d seen in my 5th grade math class. I thought about it so often that I’d dream about it. I remember a couple of occasions that I dreamed I’d gotten a VIC-20. I was so excited! Then I’d wake up, uncertain at first if it had been a dream, and then, crestfallen, that it had.

Until one day, I had one! My very own Commodore VIC-20. And it came with a tape drive! My real coding experience was about to begin…

A Weekend Traveling the World

I spent the weekend traveling the world, an event I had been training for my entire life. That training was inspired by–although I didn’t know it at the time–a talk with my mom when I was 5 or 6 years old, about the value of books. “Books can take you anywhere,” I remember her telling me. I seemed always to interpret things she told me literally, so there I was, youngster just beginning to read, and discovering just how book could take me places.

I quickly began to develop my imagination, realizing that this was the boarding pass required to turn pages of words in experiences. I drew a lot, I read more and more, I began to write my own stories. The earliest story I remember writing was for a social studies project in 3rd grade. Around that time I grew interested in airplanes and flying. I had no access to planes, but access to The Student Pilot’s Flight Manual and from that, I learned to draw control panels and would use those drawing to pretend I was flying a plane here and there.

The more I wrote, the more I read, the more my imagination improved. It was a painfully slow process day-to-day, but exercising it as I did, year in and year out, seemed to hone my imagination in to something I had more and more control over. I wrote more stories, I began submitting them, and eventually, even began to sell them. I greatly expanded the focus of my reading–from what was initially mostly science and science fiction to everything and anything that could interest me. I’ve often thought it interesting that, when reading an essay about quantum mechanics, I visualize what is being described as if I could actually see it. When reading about the death of a star by supernova, I am there, hovering at the outskirts of that unfortunate solar system to witness the event.

Stories pull me in, and the world melts away. It is a wonderful talent to have, although it has its darker side. I often envision what-if scenarios, and that same imagination makes them often feel too real for comfort.

We like getting out as family. We like road trips, both long and short, and in years past, our weekends would often be full of exploring nearby places (sometimes to the point where I needed a weekend off, just to relax). We’d drive down to Florida a few times a years, stopping a places along the way. We’d drive up to Maine in the summers doing the same. For a year now, we’ve been mostly stuck at home like everyone else, and then need to get out has been growing, even in me, someone perfectly content to stay in. It is an irony we are all currently experiencing that I am desperate to travel and cannot.

Which is how I came to Paul Theroux’s The Great Railway Bazaar on Saturday morning. I enjoy travel books, but hadn’t read anything by Theroux and so first thing Saturday, after building a fire in the fireplace, I sat with the book and traveled (mostly by train) from London through the Mid-East, and into India, and then up to Japan, and across the Trans-Siberian Railroad arriving, early Sunday morning, back in London.

This was the event that I had been training for all these years since my mom first put the idea in my head that books could take me anywhere. I back in time and across and across large swaths of the world in little over a day, sitting on my couch, in front of a fire, with temperatures in the teens outside. I didn’t feel like reading. It felt like traveling, it felt like I was there. I could see it, smell it, taste it, hear it. It was wonderful.

I finished The Great Railway Bazarr this morning, and decided I needed more, so now I am making my way Theroux’s 3 collections of essays (starting with the most recent one). The weekend may be coming to an end, but my travels, it seems, are just beginning.

30 Years of L.A. Story

Steve Martin’s L.A. Story is one of my favorite movies. I thought it first debuted 30 years ago this summer, but it turns out, it was first released on February 8, 1991, so it now just over 30 years old.

I saw the movie for the first time with my brother and distinctly recall the advertising for the movie as “the first great comedy of the 1990s.” I loved it. Aside from its Shakespearean overtones, it caricatured Los Angeles in a way seemed to perfectly capture all that the city was about in the early 90s. At the time I first saw the movie, I’d been living in L.A. for about 8 years, with another 11 years to go and the film was something I could recognize about the place where I lived.

L.A. Story became the first video I repeatedly rented in college. My roommates and I would watch the movie over and over again until we had every line of the film memorized (I can still remember most of the lines today). Enya’s music from the film is part of the Littlest Miss and my nap playlist. I am after reminded of the street art that appears in the film when I see photos of Santa Monica street art posted on Twitter by my by my great-great-great grandboss.

Even though L.A. didn’t seem so to me at the time, L.A. Story captured an idealized version of L.A. for me, one that I look back on fondly–something I never imagined I’d do while living there. I watched the movie for the first time in a while last summer and it was just as good as I remembered it being. It is one of those movies that does’t lose its luster as it ages.

When I first saw the film, I was nearly 19 years old. Thirty years later, as I sat down to write this post, a strange thing occurred to me. I had to look it up to confirm it, but confirm it I did. I am today, nearly 4 years older than Steve Martin was when the film came out. Even so, my hair isn’t quite as white as his was (except maybe on the sides).

Today when I think about L.A. Story, I sometimes wonder whatever happened to Harris K. Telemacher and Sara McDowel. Did they really live happily ever after? And what about SanDeE* (“Big-S, small-A, small-n, big-D, small-E, big-E… and there’s a star at the end”) and Roland? Whenever a story makes me wonder about where the characters might be thirty years later, it is a good story.

Ticking Clock: Behind the Scenes at 60 Minutes: A Fascinating Read–And a Struggle

It is rare that I don’t know what to make of a book. If I zip through a book with ease, it is usually a sign that I enjoyed it. If I struggle through it but finish, it was okay, but not necessarily something I’d write home about. But what about a book that I zip through with ease, and struggle with along the way? That doesn’t happen often, but it happened while reading Ira Rosen’s new book, Ticking Clock: Behind the Scenes at 60 Minutes.

Rosen was a long-time producer at 60 Minutes working with many of the correspondents, especially Mike Wallace and his book was about his time as a producer in television. (He also worked for ABC for a time before returning to 60 Minutes.) Hollywood memoirs are a kind of guilty pleasure of mine, and I particularly enjoy memoirs and biographies about journalists: My War by Andy Rooney, A Reporter’s Life by Walter Cronkite, A Life on the Road by Charles Kuralt to name just a few. But I struggled with Rosen’s book in ways that I did not with these other books.

While I wouldn’t characterize Rosen’s precisely as mean-spirited, it certainly came across as someone who decided to air all of his grievances and show the worst sides of those people he worked with. I think this would be understandable if Rosen had been treated poorly and that poor treatment affected him in a negative way. Rosen recounts many times when people like Mike Wallace, Diane Sawyer, and Morley Safer treated him or other people rudely. But what made Rosen’s account interesting was that he never seemed to mind this treatment. He was sort of immune to it, and focused on doing the best job as he could as a producer. So why complain about it now, in a book? I just couldn’t understand that.

Perhaps the reason is perspective: Rosen writes from the point of view of a producer, while other books I’ve read are from the points of view of the reporters themselves. Andy Rooney was grumpy at times, as everyone knows–that’s part of what people loved about him. He had complaints about CBS, but he generally didn’t single out people, but the organization as a whole. Cronkite and Kuralt, in their books, seemed to handle this by omissions: they wrote about people they admired, or who helped them out, and didn’t mention those who created problems or roadblocks.

Still, despite Rosen’s dramatic characterizations of those correspondents he worked with, the book was endlessly fascinating. Reading it, I felt like a fly on the wall at some interesting conversations. It made some of the more outlandish stories Rosen had to tell about people all the more out of place in the book, and made me wonder: was the book written as a memoir, or as memoir disguised a vehicle for Rosen to vent about his treatment as a producer? Maybe it was both, and maybe that’s what made it both a fascinating read and a struggle.

How Much Does It Cost To Browse the Internet, Ad-Free?

Nothing makes me give up on a website faster than seeing every available space on the page filled with ads. If the article I am reading is interesting enough, I’ll try to continue reading only to find that I have to scroll past a large ad every paragraph or two and then try to figure out if the text that I am reading is part of the original article, or ad copy. When the popups asking me to subscribe start, I’m out.

Economics was my worst subject in college, but it seems to me there must be a diminishing return for all of that advertising. If people bail before reading the article, let alone the ads, how can the site be worth advertising on?

I was thinking about this, and as my thoughts wandered, I began to think about cable TV. When I was a kid, there were 3 network channels, and UHF. Cable was a new phenomenon when I was 9 or 10 years old. The thing about some of the channels (like early HBO) that impressed me was that you could watch movies without commercials. Sure, you paid a monthly fee for that privilege, but it seemed moderate enough (to my 10-year-old self) to make skipping the commercials worthwhile.

I also recall the early days of the Internet, which came into its own in 1994, the same time I graduated from college and began my career. Back then, there wasn’t much advertising on websites. Indeed, for a time it seemed anathema. I remember sometime in the late 1990s, when I first saw a Yahoo! commercial on television, and thought, Wow, they have the kind of money to buy a television spot? In those days, you didn’t have to worry about pages filled with ads. You just hand to be careful of the blinking text that was all the rage for a time as people learned to use HTML.

The early days of Facebook also seem, in my memory, to be relatively ad-free, at least compared to today. I suppose that is the classic bait-and-switch of these services: grab you with the services, and then start putting ads in front of you if you want to continue using it–which, of course, many people do. A few months ago, I wondered why Facebook and other social media companies didn’t offer an ad-free version, one in which users would subscribe to via a monthly or annual fee. Imagine what it would be like to use these services without ads. After a few minutes thought (I was walking through the park and clearly remember where I was as I pondered this), I realized that social media companies must make far more money off showing ads to individuals than the would from any reasonable subscription fee that those individuals could pay.

Isaac Asimov, in his science essays, would occasionally explore extremes. I especially loved those essays: what’s the smallest possible distance? The largest? The coldest temperature that can exist? The hottest? It was a thought experiment as much as anything, and thinking of those essays made me wonder: is it possible to estimate how much it would cost the average individual to browse the Internet, completely ad-free? It doesn’t matter what the the answer is. What matters is the possibility of calculating it. I did some rough browsing on this question (seeing plenty of ads in the process) and didn’t come up with much. The cost questions center around how much ad companies make on people, or how much access to the Internet costs. Neither of those is what I am interested in.

Put another way: for the Internet to continue to have new content in much the same way it does today, but to be entirely ad-free, how much would access cost an individual? I imagine it would require calculating profits of countless companies and then dividing that number by total Internet users. What would the order of magnitude be for, say, one month of ad-free Internet browsing? Would it be $50/month per person? $500/month? $5,000/month?

I guess I’d like to know the answer, because once I know it, I’d wonder if it would be worth paying.

Mount To-Be-Read and the Danger of the Doubling Charm

There is a scene in one of the Harry Potter films where Harry and his friends end up in a treasure vault which has been boobie-trapped with a “Gemino Curse,” a variant of the Doubling Charm. Each thing touched, instantly doubles. Touch those things and they double. This continues without end. I have sympathy for Harry in that scene. I know the feeling. Each book I read spawns more books to read. And those books spawn more books. This continues in an endless doubling, tripling, quadrupling that has been growing increasingly doubtful of my ability to read every book ever written.

At various times, my to-be-read list can have anywhere from dozens to scores of books on it, each one of which is a butterfly’s flap to who knows how many other books to read.

This was illustrated to me in a stark way this afternoon, after I began playing around with the Mind-Map plug-in to Obsidian, my new favorite text editor. I was trying to see how my reading had progressed–and how Mount To-Be-Read had grown–since the weekend, just a few days ago.

I picked the New York Times Book Review as my starting point. (The Washington Post and a few other lists may have been involved as well.) From this I started listing out the books that interested me and that I ultimately read. From there, I began listing books I came across in those books that interested me and that I either noted on my list, or read. From there… well, you get the picture.

This formed a simple outline in my text file, and with a few keystrokes, I’d turned it into a mind-map:

A mind-map of recent reading.

Since Sunday, I’ve read 3 of the books on the mind-map (Probable Impossibilities by Alan Lightman, In Praise of Wasting Time also by Alan Lightman, and When Einstein Walked with Godel by Jim Holt). I’ve also nearly finished (as in I will finish it this evening.) The three books that I have finished spawned eight other books that have since been added to the mountain that is my to-be-read list. If we go with 2.67 new books per book I read, those eight newly added books will spawn 21 more books to add. Those 21 books will spawn 56 additional books.

You get the idea. I’m reminded of poor Ali Sard, in Dr. Seuss’s Did I Ever Tell You How Lucky You Are?. Ali is the one who had to mow grass in his uncle’s back yard, quick-growing grass:

The faster he mows it, the faster he grows it.

The faster I read, the more I fall behind.

The Most Successful People Wake Up Before 6:30am

Part of the beauty of the Internet is that it is an open forum for the exchange of ideas. Part of the problem with the Internet is that people can say anything. All things being equal, I’d prefer an Internet where people could say anything, but I’d certainly like to see more skepticism among its users.

There is so much on the Internet today that it is hard to get noticed without resorting to some kind of extreme. The result is some outlandish statements to attract attention, like one I encountered yesterday morning that asserted “The most successful people wake up before 6:30 am.” When I see an assertion like this, I roll my eyes. It is clearly an attempt at getting our attention. (The mildly observant reader will notice that I used that very line in the title of this post. I did so as a sort of experiment. I wonder (a) if this post will get more attention, and (b) if it will become one of the many evergreen posts I’ve written over the years.)

An assertion like “the most successful people wake up before 6:30 am” is so fraught with generalities that it is hard to know where to begin in interpreting it. To know what “most successful” means we first have to know what “successful” means. It seems to me that the definition of success varies based on a number of factors. Moreover, it is a generality. Successful in what? In life? In a career? In happiness? In love?

If we can manage to get to a definition of success that we can agree on, then we have to define what we mean by “most successful.” Is this the majority of successful people, meaning 50% plus one? It is a standard deviation, the narrow end of a Bell curve?

To me, an assertion like this is just asking for counter-examples. I consider myself a successful person based on my own criteria for success. But I spent only a relatively small fraction of my life waking before 6:30 am. These days, I generally wake up somewhere between 6:15 and 6:45 am. I rarely use an alarm. I’m not trying to wake up before 6:30 am. And I’m not sure I feel any more successful on days that I sleep in until 7 am as I do when I wake up at 6 am. (Sometime, waking at 6 am, I feel more sluggish than when I wake at 7 am.)

To me, an assertion like this has a specific type of person and a specific type of success built into it. It implies that someone working a night shift, for instance, can’t end up in the group of “most successful” people because they sleep through the day and may not wake up until the sun is going down. I suspect there are a lot of successful first-responders, doctors, pilots, and others who fall into this group.

And why 6:30 am? That seems arbitrary to me. I suspect part of the problem is that when culling examples of what we deem successful people, we find that these people wake up before 6:30 am. But aren’t we being selective in our sample? We are selecting people who are likely outliers in their success, who have the means broadcast their success, and who have discussed what they attribute to their success (or have had in implied about them). These outliers have to represent a small fraction of successful people, many of whom are too busy being successful to get involved in publicizing their success and writing about it for others to later cull as examples.

A final problem with an assertion like “the most successful people wake up before 6:30am” is that is has the illusion of being readily actionable–which alone makes it suspicious in my mind. It implies that because a person gets up before 6:30 am, they are successful, which is a fallacy encapsulated by the Latin phrase post hoc ergo propter hoc (because of this, therefore this). I suspect that there are many successful people who wake up after 6:30 am. I suspect that there are many unsuccessful people who wake up well before 6:30 am.

Still, I can see people being lured in by the simplicity of the implication. All I have to do to change my life is get up 2 hours earlier!

Vague assertions like these annoy me (clearly). Yesterday, the Little Miss was watching a gamer on YouTube play Minecraft. The gamer was decribing the two types of Minecraft players: those that play in survival mode, and those that play in creative mode. “People who play in creative mode,” this gamer stated, “are inherently lazy.”

I’ve played my share of Minecraft, and I have never once played in survival mode. I always play in creative mode. I never once thought of it as lazy. I thought of it as the most efficient way to get the most enjoyment out of the game that I could, by doing exactly what I wanted to–build things.

Looking at these two assertions, I come to the conclusion that I must have a fairly thick skin. I am not among the most successful people, and I am inherently lazy, it seems.

But I’m okay with that.

Fireplace Philosophy

We’ve been using our fireplace quite a bit this winter. We didn’t use it at all last winter. I like to think it has to do with the cold weather, but really, it is more about the ambiance. We have an open living room/dining room/kitchen area and the fireplace is in the living room, just beneath the TV mounted above it. Is is visible from anywhere in the living room/dining room/kitchen. In fact, it is visible from right here at my desk in the office.

Sitting by the fireplace, reading.

There is one corner of the sofa that closer to the fireplace than others. I like to sit there and read while the fire is roaring. I can feel the warmth from the fire. The only downside is that the flames often distract me from my book. I like to watch them dance around. I enjoy watching sparks separate from the flames like miniature sky lanterns, zipping up the chimney.

The burning wood smells pleasant. The crackling of the logs and snapping of the air around the flames is calming. Perhaps why a fireplace is so enjoyable is that it engages nearly all of our senses at once. We see the flames, feel the warmth, smell the wood, and hear the snap-crack-pop of the air and logs. Lately, I’ve been keeping the fire going most of the day, allowing it to burn out at night before we head off to bed.

Sometimes, however, I am distracted. Busy with work, or stuck in meetings, the flames may die out, and when I wander from office to the living room, I’ll notice that the flames have gone out, and only smoldering embers remain. That’s my cue to get things going again.

Until this afternoon, however, I never actually witnessed the flame wink out. I was sitting on the couch, reading the essay titled, “A Mathematical Romance” in Jim Holt’s enjoyable book, When Einstein Walked With Godel. There is some tricky (for me) mathematical discussion in the book, and whenever I read tricky mathematical discussions, I have to pause and visualize each step in my head to make certain I am getting it. In this case, I looked up from the book, and stared at the fireplace. A single flame danced sluggishly about. I watched the flame flicker slowly here and there. And then, just like that, it winked out. It was just gone. All that was left was the smoldering embers of what was left of the log.

I stared at the log, all thoughts of math gone from head. I was overcome by a kind of sadness. I’d witnessed the death of a flame. I’d seen it wink out of existence. In that moment, my mind jumped billions of years into the future, to an outpost somewhere outside our solar system. I seemed to sit there, in a comfortable room, warmed from a source of heat I couldn’t quite see. I was reading a book of science essays, very much like the book I’d been reading minutes–and billions of years–ago. Before me was view of a very dim star, centered against a background of other stars.

I looked up from my book in order to visualize the math that I’d been reading about–just in time to see that dim star–our star, the sun–flicker for the last time, and then wink out completely.

Who knows if there will be anyone around in several billion years from now to watch the sun wink out the way I watched the flame in the fireplace wink out. If they happen to be our descendants, I imagine they will be unrecognizable. But, if they recognize the star that served as the life source for their ancestors, I can imagine them feeling a moment of sadness as they watch it wink out. I wondered, as I returned to the sofa, and stood to light more wood, is it better to to notice and feel that momentary sense of loss? Or is it better for flames to wink out unnoticed by others, like a dog walking into the woods to die?

How I Capture Reading Notes in Obsidian

In addition to automating my daily notes with Obsidian, it quickly became clear to me that Obsidian‘s note-linking capabilities would allow me to capture my reading notes in Obsidian in a really useful way. Moreover, because of Obsidian’s powerful linking capability, it occurred to me that my Obsidian vault could serve as a database for my reading. To describe how I managed to do this (so far) in a step-by-step manner will required a little history first.

A Brief History of My Reading List

I began keeping a list of every book I finished reading back on January 1, 1996. Although I am no longer certain of why I started keeping the list (was it part of a New Year’s resolution?) I am fairly certain that I was influenced by an early reading list I found on the Internet, Eric W. Leuliette’s “What I Have Read Since 1974“.

As a developer (even back then), I decided I would build an elaborate relational database to store my reading list. Over the years, it went through many iterations, and forms. When time became short, I moved the list out of the database and into Excel, or Google Sheets. Finally, several years ago, I settled on a plain text file using Markdown format, and that is how I’ve kept my list ever since.

But I’ve been bothered by shortcomings on this list. There are redundancies I don’t like about it. I have no easy way of referring to books or authors separate from the list. There are things I’d like to automate about it but that the format makes tricky.

A Brief History of My Reading Notes

With all of the reading I do, I have trouble remembering important details of what I read about. So I started keeping notes on my reading. This evolved out of how I kept notes on my reading back in college, and has continued to evolve over the decades since. It was in college that I first decided it was okay for me to write in my books. After all, if I was spending so much money on them, I might as well make them my own, right?

These days, I highlight books, writing margins, and with e-books, I highlight and make short notes on my Kindle devices and apps. But I still have no good way of aggregating these notes into useful groups, categories, and certainly no way of readily searching them.

As I started using Obsidian, and began to see how I could better organize my books and reading lists in its vault structure, I began to get a hint of ways that I might start to link my reading notes back to the books they are associated with, my reading, and other notes.

Enter Zettelkasten

I’d never heard of Zettelkasten before I started using Obsidian. Zettelkasten was originally invented as a way to link paper notes together to be able to easily create connections (links) between then. While it was workable on paper, such a process could be greatly improved with hypertext tools, and it so happens that Obsidian’s note-linking capability is idea for this.

One important idea from Zettelkasten is that a note should contain a single thought or piece of information (say, a passage highlighted in a book). That note is given a unique identifier. In addition to the passage, one would add their own thoughts to the note, and perhaps further link that note to other notes and ideas that are related to it. Zettelkasten has its own unique numbering system for “naming” the notes. Obsidian has a plug-in for creating a “Zettelkasten number” for this purpose that is based on the date/time the note is created. I wasn’t particularly fond of that identifier because it duplicates information already contained in the note itself. After all, the note is just a file in the file system, and has its own create and modified date/times as part of the file. A good identifier does’t embed real data. It’s just an identifier.

I also struggled a bit to figure out how this would work for my reading notes. I originally imagined that if I had a note for each book I read, I could simply add my highlights and annotations to that note. Zettelkasten, however, suggested that rather than adding that highlight to the book note, I’d create a separate note for just the highlight or annotation, and then link it to the book note–as well any other notes it might make sense to link it to. This took a while for me to process, and I thought about it a lot as I built out my reading library in Obsidian.

My Obsidian Library

So how did I decided to structure my reading notes in Obsidian? I’ll try to go through the step-by-step process I have for putting this all together, in case someone is interested in reproducing this.

Step 1: Establishing the structure

I decided that because of Obsidian’s great linking capability, I could use the file system itself as a relational database. In deciding this, I further decided that there were 3 main “objects” I wanted to be able to capture at a kind of atomic level. That is, three things that make up the structure of my reading library:

  1. Things I read, e.g., books, articles, stories, etc.
  2. Authors: the people who write the things in #1.
  3. My notes as they relate to #1 and #2.

From this, I established the following structure of folders in within my Obsidian vault:

My folder structure for Reading notes in Obsidian.
  • Commonplace Book contains all of my reading notes.
  • Library contains all of the “atomic” notes that make up my reading library:
    • Authors: a single note for each unique author in my library
    • Articles: a single note for each unique article (often not tied to a book) in my library.
    • Book: a single note for each unique book in my library
    • Essays: a single note for each unique essay in my library; these are often related to books.
    • Stories: a single note for each unique story in my library.

Step 2: Deciding what goes into a note

Once I had my structure, I had to decide what goes into a note of each type. What is it I want to know about authors, books, stories, etc.? This was fairly easy for me as I’ve been thinking about it for a long time (years, actually). I had in mind an idea that I could write an API that uses these files as a database to query them and produce results. With that in mind, I decided to start by keeping things simple, knowing that I could add detail as needed going forward.

For authors, I wanted just some basic information. Here is a typical author note, in this case, for Alan Lightman, whose new book I read earlier this week:

A sample author note for Alan Lightman.

The backlinks section is generated automatically by a script that I have that runs nightly. I know that I could just click on the “Linked mentions” in Obsidian to see all of the backlinks, but I wanted the related books on the note as a reference in case I access the file outside of Obsidian.

For books (or essays, stories, articles), I also kept things simple. A typical book (or essay, or article, or story) looks like this:

A sample title note for In Praise of Wasting Time

Note that in both authors and books there are links back and forth between the files. The book file refers to the author. The author file has link references back to the books. Moreover, you’ll note that in the book, there is an “Annotations” section with a list of links. These are auto-generated links to my notes and highlights for the book. I’ll have more to say on these shortly, but the important thing is that each note and highlight is a separate file (in the Zettelkasten vain) and is included with the book as a “transclusion” link, meaning that when I view the note in preview mode, it “includes” the links files as part of the note, like this:

Title note in preview mode with transcluded annotations visible.

Step 3. Populating the database

Once I had the structure I wanted, I needed to populate my database. I was fortunate in this regard on 2 counts: (1) I happened to recently create a SQLite database of my books, and (2) I can write code relatively easily. I wrote a script that crawled my book database, and from it, creating the notes for books and authors in Obsidian. This turned out to be a surprisingly simple exercise. (The Python script was 130 lines.)

My digital commonplace book

I first learned of commonplace books reading a biography of Thomas Jefferson (in this case, it was Williard Sterne Randall’s Thomas Jefferson: A Life.) Jefferson (and others in his time) would copy passages from their reading into a book. This helped with memorization, but it also provided a resource where they could add notes and observations. I’ve always liked this concept, and I decided that Obsidian would finally allow me to put it into action in a way I’d envisioned.

It is trivial to create a note and add it to the note containing the book to which it is related. But what if the note ultimately relates to more than one thing? Reading about Zettelkaten provided me with insights into how I might handle this. The naming convention in Zettelkasten (and the way it is implemented in Obsidian) bothered me. Neither made much sense. How do you search for things with essentially coded filenames?

I was in the shower when I finally had a breakthrough insight on this. I’m not searching for a filename, I’m searching for file content. If each annotation and highlight I can link it to as many notes as makes sense. Furthermore, I can add tags to each note. The name of the file doesn’t matter. What matter is how it links to other notes, and that all files are searchable.

I still didn’t like the file-naming scheme for Zettelkasten in Obsidian, which essentially uses a datetime stamp down to the current second. So a file might be named: 20210215084456. Given that one is not likely to create two of these notes within the same second, it guarantees uniqueness. But from a database perspective, identifiers like these are not supposed to embed any information. They should be strictly identifiers. Moreover, the with the date embedded in the note title, I would be duplicating information that already exists in the file properties.

I decided instead to use a Guid, or what is sometimes called a UUID. This is another form of a unique identifier that doesn’t embed information, just produces a unique code. (For those tech-savvy folks reading this, I used Python’s UUID4 which doesn’t use the MAC address as part of the identifier.)

When I have a new note or highlight for a book, it goes into my Commonplace Book folder in Obsidian. These notes also have a specific structure. A typical one looks like this:

A typical note, Zettelkasten style.

Each annotation begins with a Source that links back to the source for that annotation. It may or may not have tags associated with it. That is followed by the body of the annotation, which may be a highlighted passage. Finally, there are my own notes related to the specific passage. In the above example, my notes also link to another book, making this particular annotation related to more than one note. That is, a link has been created between Creativity, Inc by Ed Catmull and Amy Wallace, and On Writing by Stephen King.

Automating my annotations

Over the weekend, I got a start on automating these annotations. I wrote a Python script that reads a CSV files exported from Kindle, and creates a unique note for each annotation in the file, relating it back to the source book in my Library. My process is roughly this (I say roughly because this is still new):

  1. When I finish reading a book, I export the annotations from my Kindle, which sends me an email. That email has a CSV attachment which I save in a folder.
  2. A script runs, and processes and CSV files I have in the folder, creating the notes and links.
  3. The script, outputs a list resulting annotations for each file. I copy this and paste it into the “Annotations” section of the source book or article. That makes it easy to view the annotations inline when previewing the note. An example of the output from the script looks like this:
Output from my annotation import script.

Toward an API for my books and annotations

I am able to do the above automation because I have a standardized structure to my books and author notes. That standardization allowed me to write an API for my book library. From this API I can, for instance, check to see if a title exists in my library already. I can grab information about a book or author and then use it in some way. The API typically returns data in JSON format. For instance, if I call the function biblio.search_by_title("Beyond"), I get a JSON formatted return containing the following:

      "title":"_Beyond Band of Brothers: The War Memoirs of Major Dick Winters_",
      "link":"[[Beyond Band of Brothers (334)]]",
            "author":"Winters, Richard",
            "authorFirstLast":"Richard Winters",
            "authorLink":"[[Winters, Richard]]",
      "title":"_Beyond Apollo_",
      "link":"[[Beyond Apollo (58)]]",
            "author":"Malzberg, Barry N",
            "authorFirstLast":"Barry N Malzberg",
            "authorLink":"[[Malzberg, Barry N]]",
                  "name":"Barry, Mike",
                  "nameLink":"[[Barry, Mike]]"
      "title":"_Beyond the Blue Event Horizon_",
      "link":"[[Beyond the Blue Event Horizon (259)]]",
            "author":"Pohl, Frederik",
            "authorFirstLast":"Frederik Pohl",
            "authorLink":"[[Pohl, Frederik]]",

The results so far

I’ve linked all of this together using my master reading list note. This note contains a list of everything I have read since 1996 and serves as a kind of index to my reading:

A sample from my reading list index note.

A big part of the way Obsidian works is that it can show you the relationships between your notes. While I am still working on importing all of the notes I have in my Kindle, I can already see a a network of relationships when I view the graph of my Obsidian vault:

A graph of the relationships between all of my notes.

Most of my notes are book and reading-related at this point. That big dot in the center is the master reading list illustrated above. If I highlight it, this is what I see:

Sample of a highlighted node on the graph.

From there, you can see other nodes and relationships that have started to form. For instance, if I hover over one of the Alan Lightman books I finished yesterday, In Praise of Wasting Time, you can see a little network of links coming off that book:

Some of those links point to annotation files. Another points back to the note for Alan Lightman. And a few of the annotation links point to seemingly unrelated notes.

Here is another example. One of the big nodes is for John W. Campbell, editor of Astounding Science Fiction in the late 1930s through his head in the early 1970s. I read many of those old issue when I was taking my Vacation in the Golden Age of Science Fiction. So Campbell shows up a lot on my master reading list:

Highlighting an author node on the graph.

You can see that Campbell is linked to all of the issues of Astounding that I have read. I have started to bring my notes in for those issues. If we look at the July 1939 issue, for instance, you can see this is related to all of the stories and articles and authors in that issue:

Currently, the notes for each story are part of the story note, but I plan on breaking those out into their own Zettelkasten-style notes as I’ve done for my other notes and annotations.


Keep in mind, that this is all being done with plain text files, something that I like because the format is compatible virtually anywhere. This could be done as easily on a Windows machine as a Mac. It could be done easily on a Linux machine. The openness and longevity of plain text (which has been around for fifty years now) is a big part of what I like about this system.

The linking that Obsidian provides from within its application makes all of this useful. But once established, those links are just as useful outside Obsidian with a little coding–as I’ve done with my API for books and authors. And this API is extensible. This week, I plan to add capability for the API to return any annotations when returning a “book” object. So in addition to what is returned by the JSON format illustrated above, that will soon contain a node for annotations related to that book.

Mostly, I am satisfied that I now have a simple way of keeping my reading notes in a useful form. These are easily searchable, they are easily linked. I can continue to capture highlights and brief notes as a I read. The import function allows a nice step to expand on my annotations as I review them after they’ve been pulled into Obsidian.

It did take me some time to get the infrastructure in place, but now that it is there, I am able to focus on reading, notes, and let the system organize them for me.

A Digital Commonplace Book Protocol for Internet Annotations

Any time I find myself thinking how great the Internet is, my thoughts drift to the one area in which I find it sorely lacking: a native annotation capability. The notion of hypertext and the linking of documents in a digital network is genius. It seems to me that if you can conceive of this, you have to understand that it works well only when you are talking about large volumes of “pages” or documents. And if you imagine large volumes of documents and the rabbit hole the links lead you down, you’ve got to wonder how we missed the native ability to annotate these documents as we go.

There are third-party tools that help with this. These tools can clip articles and store the clipped versions locally. Some of them provide tools for marking up the articles–highlighting, or adding your own annotations. But these often feel flimsy to me. It seems to me that what we need, is foundational tool for annotating what we read on the Internet. And while this does’t seem to be an operating system level function, it certainly seems to be something that a well-designed web browser should be able to do as part of its basic functionality.

Requirement for a Digital Commonplace Book protocol

The Internet is full of standards and protocols, and if I were designing web browsers, I’d see if I could come up with a standard for what I’d call a “digital commonplace book” protocol–DCB for short, since above all, a protocol must have an abbreviation. My DCB protocol would differ in some ways from tools like Pocket or Evernote. My list of requirements for a DCB would look as follows:

  • HTML protocols would be extended to support DCB. There is some additional metadata that would be needed to support annotations, like versioning, and being able to locate specific pieces of text or objects on the page.
  • Highlights and annotations could be stored locally or in a service (like Evernote or Pocket)
  • In addition to the highlights and annotation data being stored, information about the specific page and page version would need to be stored as well.
  • When a browser renders a page, it would look at the digital commonplace book to see if that page had entries, and apply CSS to the page to show the highlights and annotations when viewing the page.
  • If the page had changed since the annotations were captured, the meta-data collected as part of the annotation could provide a reference to the page version it was captured on, and the browser would have a kind of timeline slider for the page that allows you to scroll back in time to see the pages as it was at the time you captured your annotations.
  • On the server side, it might be useful to log how many times (and what parts) of a page have been annotated. These would all be anonymous logs. The site owner would not know who annotated the pages, just that (a) there was an annotation, and it which part was annotated. This would be optional at the site, or even page level.
  • The annotations features would be built into the browser, and the storage format would be standardized, and compatible with any browser.
  • Browsers would provide mechanisms for tagging, updating, viewing, searching, and exporting annotations.
  • The format of the annotations would be an open format readily accessible to other applications and protocols. JSON might be a good start.

The bottom line for me is that if I highlighted some text on a page in a browser, and made some notes about it, and then came back to that page a few days later, the browser would show my highlights and annotations inline as I viewed the page.

Making Kindle annotations compatible with the DCB protocol

The other major source of annotations I make are in the books, magazines and newspapers I read. And while Kindle provides a useful mechanism for highlights an annotating passages, it’s a lot easier to the get the data in than to get the data out.

I would make Kindle apps and devices compatible with the DCB protocol. I imagine this wouldn’t be too difficult, considering that the annotation functionality is already there in the devices and apps, and would just require some tweaking to make it compatible with such a protocol. The part I would spend a lot of time on is making sure it is as easy to get my annotations out as it is to get them in.

I was thinking about this because I am getting ready to write my next post on how I’m using Obsidian to catalog my reading and reading-related notes. I read in all kinds of mediums. I read web pages, articles in apps, on the Kindle, via Audible audiobooks, and of course on good old-fashioned paper.

For me, all books are interactive. I converse with the authors in the margins. I highlight passages and come back later and make notes on why I highlighted them. Long gone are the days when I revered the pristine look of the printed page, over the page that I have made my own. I encourage my kids to do the same.

In thinking about how I’ve organized my reading notes in Obsidian, it occurred to me my methods could be greatly improved if there was a standardized protocol for a digital commonplace book. Alas, one doesn’t exist at this point.

But at least you now have the context for why I organize my reading notes the way I do–but I’m getting ahead of myself here. That will have to wait for another post.