Modern Spellbooks

Modern Spellbooks

My New SQL Spellbook As technology gets newer and I get older, learning new things becomes frustrating. For example, I want to learn how to work with MySQL for web development, program 3D games, and play the guitar, but my lack of ability in these areas prevents me from achieving my overall life goals. There’s also day-to-day stuff that, as a 40-year old American male, I feel I should know: balance my household finances, invest in the markets, ride horses, and flirt with women without throwing up. These are tasks that are, from my perspective, hard to learn for several reasons: a lack of good mentors, reference materials, and classes. And that’s even without mentioning the magnetic properties of my ass with respect to my couch.

When I overcome these obstacles, I still hit the proverbial brick wall; for whatever reason, my brain can’t quite deal with the important task of learning before getting bored or sleepy, and I end up going to get a sandwich instead or watching Age of Love on TV.

It’s easy to presume, as I join the ranks of the Newly Old, that my mind is becoming less flexible. This is the common wisdom; for example, people say that it’s tough to learn languages when you’re older, and that we should have done it when our minds were most facile: around the age of 6, I think. Although I don’t have any studies to back me up, I’m pretty sure that other factors are greater contributors:

  • We’re self-conscious about not being competent in front of other adults, so we iterate less and thus learn more slowly.
  • We’re not particularly motivated, given that mass media tells us it’s supposed to be easy. When it’s not, we give up.

Since we’re all grown up and have our own money, we expect to be able to buy knowledge and expertise readily. It’s really amazing just what you can buy, and we’ve grown to expect the easy access or we get real mad. It doesn’t help that our advertising, at least here in the USA, tends to emphasize the quick and easy fix. We expect instant gratification, and thus we’ve forgotten how hard it was to learn our first lessons, and we’ve also perhaps forgotten how to learn for ourselves. I wonder if kids these days even know what it’s like to have to wait for anything.


Yesterday morning I was doing my morning coffee thing, glumly looking at all the things I wanted to do that I was unable to follow through with due to a lack of understanding. One of the main ones has been transitioning my blog to Expression Engine, which I think will allow me to more easily expand the content offerings on my website while improving overall service. I had met up with Mark J. Reeves recently for lunch recently to catch up, and asked him about the possibility of writing a web service that would save data from my Flash Apps and integrate with the Expression Engine user management system. Mark, who’s a competent execution-oriented web developer, told me exactly what I needed to do: write some SQL queries to access the pertinent database tables, maybe even repurpose the underlying blog engine to store data for me in custom fields. The problem: I don’t know SQL, or what tools to use, or even how to talk to the database. I am paralyzed by not knowing what the best practices are, haunted by issues of scalability and security, and most importantly of all: I was not looking forward to learning all that stuff. I could not readily apprehend the structure of the material, and therefore I could not approach it logically.

Reflecting on this experience, I found myself reminiscing about my youth, when I first started learning about computers. Today, computers don’t scare me at all, and it’s because I have experienced them nearly to the transistor level of operation. As a result, I can look at a computer system and “read its aura” to figure out what’s really going on. That is now, but when I was in the 7th grade, computers were as mysterious to me as, um, MySQL is to me right now. I vowed that I would master the computer and learn all its secrets. Somehow.

And so I started my notebook:

My Secret Apple II Notebook Some historical notes first: this actually isn’t the original notebook: it’s a manually-transcribed copy. The original copy went to a kid named Derek Bumpas, which I handed to him just before I graduated; he had a good attitude and was eager to learn even though he was in the 8th or 9th grade. He recently contacted me, some 20 years later, to say that getting that notebook had meant a great deal to him, and had helped put him on his path in computer science. That was really nice to hear.

The Notebook, Open When I first started taking these notes—recall that there was no Internet, hard disks, or multi-window multi-tasking operating systems—paper was the only way to simultaneously take notes and learn. Every nugget of wisdom gleaned from hours of tinkering was transcribed, as cleanly as I could, into this notebook so I could share information with friends at school. There were all kinds of things in the book, all of them interesting to me. It was, in essence, my spellbook. Here’s some of the entries:


Applesoft Text FormattingAn Applesoft BASIC routine to reformat a long string so it would display nicely on a 40-character wide text display; in today’s desktop publishing terms, it does “ragged-right justification” for a monospaced font. This was a common task that I had to solve in my various text-based programs, as I was pretty obsessed back then with things looking right. I finally wrote it down…my first incantation.


Sword of Kadash Sector Address Header Code FragmentAs a high school kid without any money, we often “had” to copy software. The difference was that software back then came on 5.25″ floppy disks that were copy-protected using peculiar algorithms; it was a fun challenge to try to figure out exactly how to elegantly disable them by rewriting the program code. This was my real education in computer software debugging. The code listing shown here is written in 6502 assembly language, revealing the method behind the protection. By understanding the principle behind the interaction with the disk hardware’s imperfections and the software code that exploited them, a copy-protected disk could be transmuted into one that was easily-copied with everyday copy utilities.


Beyond Castle Wolfenstein Shooting Routine NotesAs I started to understand assembly language, I learned how mapping the interface between code and hardware (the “input/output”, or I/O routines) allowed one to zero-in on the game logic itself. For example, say I wanted to be able to change a shooting game so I had “unlimited bullets”. By looking for the specific code that read the joystick button state (e.g.: is it pressed?) I could easily find the code that was responsible for checking how much ammunition was left. And once you decode one piece of code, you can infer the purpose of surrounding code. I was able to modify the game Beyond Castle Wolfenstein (the original Apple II one from 1984) to give me a 30-round submachine gun with burst capability, and rewrote the opening story to explain why you had one in the first place. This changed the nature of the game quite dramatically. By documenting the logic behind the software and noting the location of critical routines, the granting of unnatural abilities within the game world became possible.


Steps for Deprotecting a Particular DiskI attended an American high school in Taiwan, and software was difficult to find for teaching purposes. Taiwan being a rather gray area in terms of copyright, my science professors would sometimes enlist my help to help them make backups of the US-sourced software; the humidity and mold in Taiwan tended to eat disks very quickly in the sub-tropical environment. Most of the time, educational software was protected with fairly straight-forward techniques using off-the-shelf protection systems. Because they were rather generic, the same general process could be used to remove the locks with just a few steps. In this photo, I wrote down the process of disenchanting this particularly piece of software, which required the use of a specialized instrument called “Advanced DeMuffin”.


Electronic Arts Boot Tracing NotesAnd then there were the great unsolved challenges against which I beat my head. Electronic Arts had a very advanced protection routine that was designed specifically to defeat the casual copy breaker; you needed special hardware installed in your computer to even get at the code, and then you needed to understand it. I spend many hours trying to understand just how Electronic Arts’ incredibly fast boot system worked, and once I understood that I tried to trace how they were doing the copy protection. Smarter crackers in the U.S. had already done it, but it was beyond my abilities and knowledge to follow. Here’s a fragment of my research on the area…to me, to be able to understand this code would be like transmuting lead into gold. I should search online to see if any back issues of Computist describe this. I still kind of want to know how it worked.


It’s been years since I’ve kept any kind of notebook like this, with the exception of my patentable ideas journal. There’s so much material out there now that the task of learning is equated with finding resources: the right teacher, book, or online tutorial is perceived as the “magic bullet” that will get things done. However, what I have forgotten is that the process of distilling these ideas into a form that I can invoke at will is necessary as well. It’s my missing link.

I went out and bought some of the larger Quadrille-ruled Moleskine Cahiers ($14.95 for 3), and pasted a paper label on the front of it (the picture is at the top of this post). The idea is to start recording the same kind of notes that I used to do in the 7th through 12th grade; looking back, it was a highly productive period of time for me, though I didn’t recognize it then. I’m thinking of just writing down really basic things that are currently mystifying, by hand, for reference in this book. I know there are plenty of reference books and online sources that purport to do this already, but do you think any aspiring wizard would buy their spellbook off-the-shelf? NO WAY! They would be told by their cantankerous mentors to go find a sturdy book and pen, and transcribe their spells themselves by hand. Because that’s the way you learn, and that’s the way you bind the magic to yourself.


Ok, you may have figured out that this whole “spellbook” thing is just an amusing way for me to start learning again. The main takeaway is this: by assembling my own book of “recipes” that actually make something, I’m much more likely to maintain some kind of focus on learning. In the past, what I’ve done is just read everything and picked out the main principles as they’ve revealed themselves. What I have forgotten is that transcribing the nuggets is just as useful. I think I probably forgot this because it’s so easy to just let the actual implementation replace documentation: Photoshop files, HTML, javascript libraries, etc. I don’t think this is a good foundation, because you can cut ‘n paste your way very quickly into the structural equivalent to spaghetti code.

Packaging the information into nuggets as I learn, which I used to do when I was younger, may be the way for me to approach the new technologies that are making my head hurt now. As an adult I had expected things to get easier, but really they are just as hard. Fortunately, I now remember how I worked through the challenge.

We’ll see how it goes. In the meantime, I’m just pleased with the way my new SQL notebook looks :-)


  1. Rian 17 years ago

    Depending on how deep you want to dig into SQL I’m pretty sure you can pick this up fast! Anyone with this kind of background will undoubtedly be able to grasp the basics of SQL.

    If you need some help, just give me a shout and perhaps I can try to help you understand!

  2. barbex 17 years ago

      for example, people say that it’s tough to learn languages when you’re older, and that we should have done it when our minds were most facile: around the age of 6, I think.<<


    Well, I will be turning 40 soon and I just refuse to accept that I can’t learn new things anymore! For example I sucked at english in school and I was 21 when I finally learned it well enough. (I had to because I was living in the States for a year!) So it is not all about being under 10!

    Giving the right determination I’m convinced that we can all learn things that are interesting to us no matter how old we are.
    A bit of wishful thinking may play into this as well, I don’t want to feel too old for learning! What a horrible outlook that would be.

  3. Amanda Himelein 17 years ago

    :)  I’ve been beating my head on a wall trying to make MS Frontpage work… what I needed was a spellbook.  I’ve got one off-the-shelf (library), but it’s definitely not as effective.  And I’ve had Excel commands memorized as far back as I can remember, so it’s not something that occurred to me to write down.

    Great idea.  Thx.

  4. Mark J. Reeves 17 years ago

    I think you’re onto something here. By the time I was a senior in college, I learned the best way to study when cramming for a test: I’d take 1 sheet of paper, front and back, and go through my notes, and copy every relevant thing onto it. It wasn’t just the act of writing, but writing and organizing with a finite space that helped synthesize the material.

    I think that process originated with a professor who would all 1 sheet’s worth of notes for an open-book test.

  5. Samuel Kordik 17 years ago

    Dave, yet another great idea encapsulated with wonderful presentation.
    I’m going to have to try this one out…
    Where do you get your Moleskines?

  6. Elliot 17 years ago

    The way you are talking about MySQL is exactly the way I feel about graphical design.

    I’ve benefited from the work you share here, and know a bit about MySQL, so email me if you want to talk through any MySQL questions.

  7. Bronwyn 17 years ago

    I love the spellbook metaphor, and I agree that there’s nothing like taking your own notes.

  8. Vladimir Cezar 17 years ago

    This was one of the most inspirational posts I’ve read in my travels on the Net. Thank you kindly. I’m going to start my own “Spell books” on the (oh so many) subjects I’m interested in.

    Keep up the good work!

  9. andrew 17 years ago

    Off-topic a little bit, but you mention an “American school in Taiwan.” Did you attend Taipei American School? I spent 6th and 7th grade there…

  10. Mark 17 years ago

    A fun and fascinating post.  Thanks.

    It’s interesting:  when working with computers, I often feel like writing the things down (especially writing code snippets down) feels like a waste because they can’t do anything until they get types, anyway.

    But, back when I was learning C (with a battered copy of the K&R book borrowed from my uncle) I still fooled around on paper with that kind of stuff.  I learned it quick.

    Now, with stuff I learned after I stopped the note-making, I find that if it’s not something that I put into pracrice very regularly, I need to keep the pile of reference books very handy.

    Good thought on something to try.  (For example, I have this massive blind spot for regex…)

  11. Joe 17 years ago

    At 26 I very much feel exactly what you describe about trying to learn something very new (in my case, French).

    I suffer the same motivation problem in that I feel like if I think, read and talk /about/ it enough, I’ll eventually be able to just acquire it the way buying a book on Python practically gives me the usable knowledge (because that’s just YAL)—I’m just not acclimated to the tough learning process anymore.  And I’m far too self-conscious to practice the little I do know to ingrain it and build on it.

    Thank you for capturing that sense so well, and making me feel not alone in this.

  12. Corrie 17 years ago

    “And that’s even without mentioning the magnetic properties of my ass with respect to my couch.”

    Dave, that is one of the best lines I have read in the last few days.

    I love the concept of a spellbook. Thank you for sharing!

  13. David "Lahntis" Martin 17 years ago

    Hey Dave, awesome post!  I have been doing this for quite some time now using the Levenger system.  I prefer the circa system as I can later organize these notes in groupings by notebook.

  14. Penny 17 years ago

    This is a fantastic post! The spellbook metaphor is inspired. I especially love this line: “Because that’s the way you learn, and that’s the way you bind the magic to yourself.” How true this is. It’s the time we spend processing the material that makes it stick with us. I keep buying books as if I can absorb the material by osmosis while it sits on my shelf. But the real magic only occurs once you claim the material as your own.

  15. DiNitro 17 years ago

    Another awesome post and continued inspiration from the master at great ideas and ways to communicate them.  Dave you ought to write a book about your explorations and approaches.  I have seen many books that do not offer a fraction of what you provide here.

    I use a host of notebooks for all kinds of record-keeping and journaling, etc.  And I would have to say that I have spent a lifetime looking for the perfect notebooks or journals.  I use in various forms and purposes the Circa system, Moleskins, and others, but some of my favorites are not usually sold in the states, but only in Europe.  Last time there, while on vacation I hit the local stationary and supply stores and the neat things they have are amazing.  My travel bags are often chock full of new journals and notebooks that never make it over the pond.

    Moleskins are almost perfect, but as a user of roller balls, gel pens and fountain pens, I find the paper to bleed thru onto the back side, making notes on the back side of each page difficult to read as a result.  If anyone has thoughts on this, save my using a freakin old fash ball-point pen (Yuk), I would be most interested in hearing them.

    Beyond that, thanks Dave for constantly creating new ideas and bringing back the best of the old for us to rethink and re-use.

  16. Margaret 17 years ago

    GREAT post—thanks so much!  I did a similar thing when I was having to wade through a bunch of dBase III code used to generate financial reports in a new job.  They’d hired me because I was a CPA but fortunately I was a decent programmer, too.  I loved your reference to “spaghetti code”, because that is much of what I was wading through and had to make my own “spell book” as I went along (which eventually morphed into clear procedures for my successor to follow).

    More recently, I hand-copied many chunks of GTD into my own notebook, to ‘bind the magic to me’ and help it solidify.  BTW – appreciated the GTD post from May 28, 2006—a thoughtful overview/synthesis of the process—which is what led me to this post.

  17. dave 17 years ago

    I have two basic journals, one work and the other personal.  Work only stays at work and gets all my diagrams and todos:
    <a>work journal</a>

    My personal journal gets all the other stuff:
    <a>personal journal</a>

    Analog rules.


  18. Dave Seah 17 years ago

    Rian: Thanks for the encouraging words! What do you think might be the equivalent of “level 1 spells”, assuming a PHP and MySQL combination, for a spellbook?

    Barbex: That’s the right attitude! I think determination and immersion are the keys, and related to that is motivation, clarity, and constant feedback whether things are working well or not. Plus, a little randomness and environmental behavior shaping keeps things interesting. Oops, I’ve just defined my ideal learning philosophy :-)

    Amanda: Good luck with Frontpage! A random thought is that you might need small incantations that, when cast in the right order, create your overall design. It’s a little more challenging to work from the outside in. Just something to think about.

    Mark: Heh, I had the same experience…all the material would come together on exam day, and I’d kick myself for not doing it first. I never made the connection though that by assembling the spellbook as I went, that I might have more effectively learned. I focused more on capturing information then, not structuring it so it made sense (lots of text books are just horrible…don’t get me started on that)

    Samuel: I bought my moleskines at the local Barnes & Noble. Seemed to be about the same price as everywhere else.

  19. Dave Seah 17 years ago

    Elliot: I’ll ask ya the same question I asked Rian! I am assembling the source materials for the SQL spellbook on the Wiki.

    Bronwyn: Thanks! I’m not surprised you do :-)

    Vladimir: Wow, high praise! I hope you share some of your approaches to this in the future. Thanks for visiting!

    Andrew: Yep, that’s Taipei American School, from 1976 to 1986.

    Mark: Ouch, RegEx is DARK MAGIC indeed! Good luck, and thanks for corroborating your experience with mine! :-D

    Joe: Yah, the Yet Another Language (YAL) gives me confidence, but also instills a kind of lackadaisical attitude in me. It’s time to get busy :-)

    Corrie: LOL, glad you liked that phrase. I keep seeing things to tweak in its phrasing now that you’ve pointed it out :-)

    Lahntis: Ooo, I’d love to see a picture of your notebooks!

    Penny: That “bind the magic” phrase does seem really important…I wasn’t thinking it at the time, but it is maybe the essential nugget to take away. Good call!

    DiNitro: You are too kind! There are a lot of great jumping off points in your comment too… all the great stationery and pens overseas (what we have here in the US is pretty lame except for a few systems here and there). I’m curious what kind of book I might make with explorations and approaches, though since my approach is “make it up as you go” based on observation and experimentation (the “scientific creative method” I wrote about recently), maybe it doesn’t make sense. Duh, actually that is the book, isn’t it…the SCM. It’s the second leg of my coming design practice refocus. I’ll likely write about it soon.

  20. Dave Seah 17 years ago

    Margaret: Hee! That’s awesome that you created your own spellbook from pre-existing code. I did that with a game once, when our lead programmer was leaving and we weren’t sure how to handle maintainance once he was gone. I went through the whole thing and documented its workings, focusing on such time-honored concepts as “how do I make a dot appear on the screen?” and “what the heck is a sprite array?” It was very useful. Glad you liked the GTD post too…thanks for spending so much time here!

    Dave: All hail the Analog!!! :-)

  21. Nathan S 17 years ago

    I think the point you make about the fear of not knowing something is an excellent one, Dave.

    Between my friends and I, I am often the one to learn something new not just in general but more quickly. The reason is because I do my best to get over the concern of looking like a “newb” at it. The faster I can get over that, the faster I can learn what I need to learn.

  22. Elaine 17 years ago

    “What do you think might be the equivalent of “level 1 spells”, assuming a PHP and MySQL combination, for a spellbook?”

    Off the top of my head, how to connect to a database, how to select a recordset, and how to run through a recordset and display what you want.

    I’d never thought about learning computer stuff this way, but it’s a fascinating concept.  I tend to have code snippets that I refer to all the time from my more successful projects.  And I’ve kept blogs at my old job detailing how to do various things with WordPress and/or Drupal.  And I have a list in my GTDTiddlyWiki of “how to do stuff”.  But not ever putting it together into a personal manual.

    I’ll second Elliot about the graphic design issue; it seems like that’s a subject where having a paper notebook could come in really handy.

    Thanks for sharing!

  23. beth 17 years ago

    funniest thing i’ve read all day? yes.

  24. Gary 17 years ago

    I’ve got to admit, I’ve not deeply read the article, but it did spark an inspiration. We so often analogize computers and the manuals and books associated with them with wizards and spellbooks. I’ve seen this myself, especially with things like the ‘Perl Cookbook’ and other references. There are a few shell and perl spells I keep around for myself as well. However, in looking at Magicians, Illusionists, Wizards, Mages and all their ilk, I myself prefer to think I am more a Techno-Shaman than one of those book-worms. Sure you can learn what needs learning from a book, but for me I take a bit more holistic approach to dealing with computer issues. “What is that program thinking?” is a question I tend to ask quite often, and it tends to work so much better than a methodical approach to things.

    Just my 2 cents, but for me, I’d keep a totem bag and a few scribbled notes in a Moleskine rather than working like a Monk on a proper book.

  25. David 17 years ago

    I used to teach SQL. I went to Borders and Barnes & Noble and devoured every SQL book they had. By far the best book (and the smallest and cheapest) was Teach Yourself SQL in 10 Minutes by Ben Forta, publisher is SAMS. Even boneheaded students got the basics. The trick is to go to the author’s website and get the same databases so that you can practice what you read. The book is well-written and split into 10 minute chunks so you don’t get overwhelmed. (As a side note, my other favorite techie book is Teach Yourself Regular Expressions in 10 Minutes by Ben Forta. What can I say? He’s good.)

  26. Duc Ly 17 years ago

    very interesting book and neat readable handwriting…
    takes me back to the days of trying to copy programs on a TRS machine for Centipede.

  27. nordsieck 17 years ago

    sounds like you should check out sorcerer linux…

    … although for practical use gentoo seems have a lock on the source based linux distros

  28. Bo 17 years ago

    Program 3D games, you say?  I’m up to my eyeballs in XNA these days, and I bet you’ll love it.  Drop me a line about it when I catch my breath.

  29. Mike 17 years ago

    Thanks for this. I recently found myself looking for, as I called it, “a new method”. I was trying to find a system to help organize my different projects that allowed them to be seperate but equal. I did my best to examine all the online solutions I could lay my hands on. In the end I decided that paper was the real solution. I bought one notebook and was trying to use that for everything. One of the major issues I found was that this was not nearly enough seperation.
    As a result of my struggle and your post, I went out and goe some of the small moleskin graph paper (quadrule) books. I’m trying this route now. I have high hopes.
    Thanks again

  30. supamanu 17 years ago

    Dave. I have been going through surprisingly similar thinking lately…does that mean we have a lot in common, or that we’re no different than 99% of the rest of humanity?
    Anywhooo… I did also start a sort-of-spellbook after getting frustrated with my total inadequacy at building php/mysql webapps. Only, I used a dog-ugly cheap notebook, and now after reading your post I got to thinking how much more likely this idea would work if I wrote down my notes on a beautiful notebook. Mmm.

  31. Bill James-Wallace 17 years ago

    Hi David

    Great post and one I will review over the next few days. Just a question on the flirting: who were you referring to when you mentioned throwing up? You or them? ;)