Another notebook doodle, this time from my history class:
Untitled
Two points to consider:
- My compilers class— indeed almost every CS class I have taken— grades projects on one of CS department's Unix servers. Let's call this server "Rome". The class administrators posted a reference implementation of the current project on Rome, and our project's output must match its output exactly. The graders run testcases using a shell command similar to:
java TheProject testcase > testresult; diff testresult actualresultIf that command doesn't return anything, we pass the testcase. Otherwise, it's a big, fat zero. - All the projects this year are written in Java, which can execute shell commands.
Do you see where I'm going with this?
I think it would be devilishly subversive to write a program that pipes the grader's testcases to the reference implementation, captures the output, and returns it to the grader. Do you think they would notice?
I find this especially entertaining considering Lee and I spent around 30 man-hours on the latest project.
Untitled
Above the far head of my bed, I have a shelf built from a triangular piece of wood and a C clamp. On it, I keep my alarm clock and a series of books I am perpetually in the process of reading.

Currently at the top of the stack is Eric S. Raymond's The Art of Unix Programming. I don't consider myself a hard core Unix programmer, but the book is filled with useful information on the unspoken Unix philosophy and how it applies to any kind of programming. It answered many of the questions I have asked myself when developing on Purdue's Solaris boxes or my home Linux install. One of the book's main themes involves "domain-specific minilanguages", which is especially interesting considering I am taking a compilers course this semester. ESR is surprisingly dogma-neutral, but he does contradict himself in places. Throughout the book he praises the "do one thing and do it well" philosophy, but turns around and lauds Emacs' all-in-one design. However, that doesn't detract from the loads of practical advice he gives in many areas: interface design, modularity, language comparisons, and versioning systems, to name a few. It is one of the few books in which I have marked especially useful pages with sticky tabs.
Below TAOUP is the only school book I choose to keep on The Shelf. It is called Engineering in the Ancient World, and I had to buy it for my History of Science and Technology course. It is incredibly interesting to read about the tools and technology Greeks and Romans used to build structures, make war, and tame the land. They were smarter than one might think. It is one of the few books I would read even had it not been assigned.
A book called The Golden Ratio : The Story of PHI, the World's Most Astonishing Number is third from the top. I have always found the Golden Ratio fascinating. In fact, one of the first websites I came across when I started surfing the internet years ago was this exhaustive site explaining the Fibonacci numbers and the Golden Section. That site inspired me to plot out a Fibonacci spiral in VML. This was the early Flash, pre-SVG era, mind you. At one point I had the spiral on the website, but I have since removed it and lost the source.
Next is the 21st Annual Year's Best Science Fiction anthology. Since the summer after high school, I have read four or five other books in the series. I like short stories, and I really like science fiction, so the Year's Best books are perfect. Unlike previous editions, I bought the hardcover version this year, and I bought it used. That is definitely the way to go; cheaper (because it was used), slightly smaller, and the binding won't break. I have had pages fall out of two of the paperback editions.
Second from the bottom is Gödel, Escher, Bach: An Eternal Golden Braid. I have been working on this book for a long time, and it has unfortunately fallen down in the stack. I haven't forgotten it, though, and I still bang out a chapter or two from time to time.
Finally, Quicksilver rounds out the stack. Erica gave it to me for Christmas last year, and I regret that like GEB, it has fallen lower and lower since then. However, Neal Stephenson is one of my favorite authors, so I definitely plan to resume reading eventually. It is interesting to note that one of the book's main themes is the evolution of science in Newton's time, the same as the last quarter of my history course. That might be a good time to pick it up again.
So, what are you reading?
Untitled
Unlike most majors, Computer Science seems to discourage teamwork. Can't talk about code, can't share test cases, can't do anything with another person. This is strange for two reasons. First, every other science is based on peer review and, as I believe Einstein said, "standing on the shoulders of giants." Second, professional software development consists of nothing but team projects. Even so, programmers, myself included, enjoy developing alone, preferably late at night and in the dark. So it came as a surprise when the professor of my compilers class announced that we will work with a partner on four of the six projects this semester. I teamed up with Lee, and we spent the afternoon today banging out a parser for the first team project.
Notebook Doodle #1
I would like to start a new feature on this weblog: from time to time, I will post pictures of the doodles I have drawn in the margins of my class notes. The pictures won't be finished by any definition of the word; polished, colored drawings already have their place. The pictures posted here will be raw, unedited (save some color correction), and lifted directly from the pages of my notebooks. I don't pretend they are unequalled masterpieces, but if nothing else, they will provide a glimpse into how I spend time in classes my parents spent tens of thousands of dollars for me to attend.
To begin, here's a pensive-looking guy from today's math notes:
Baron von Fignewton readied himself in the grand hall mirror as Jameson, the butler, attended to the guests conversing mutedly in the next room. Donning his top hat, Fignewton strode to the heavy oaken door and steeled himself for a second meeting with Lady Melody. He grimaced involuntarily as he remembered the morning's events. "I cannot believe the donkey fell from such a great height," he thought to himself, "I pray Jameson got that mess cleaned up."
I should mention that I was inspired to post my doodles by two weblogs that found their way onto my morning websurf. Mike Wieringo is an artist for Marvel who posts his "warmup sketches" in weblog form. Danny Gregory is a writer and artist who creates amazingly beautiful pen-and-watercolor drawings. Two incredibly talented guys.
Untitled
I don't often get to say, "Wow! What a great Tuesday!" but I can certainly say that about yesterday. Stomp came to Elliott, and Laura came to Purdue to see it. That's a winning evening right there.
The plan was to grab dinner at the newly-renovated Pappy's before the show. After showing Laura the dorm— she had never been in one because she commutes to her school— we walked across campus to the Union. Since it was Laura's first time at Purdue, I played tour guide, pointing out various buildings while she talked about the similarities to her campus. We arrived at the Union in no time and proceeded downstairs to Pappy's 1950s-themed diner. We ordered and waited an awfully long time for our food. 15 minutes before the show was scheduled to start, we realized how late it was and decided to head over to Elliott, dinner or no dinner. I asked the cashier for our money back, but she "didn't have the authority," and the food was coming off the grill right then anyway. Laura and I ended up eating our meal while speedwalking across campus. It wasn't as bad as it might seem. We had a good laugh about it.
The show was amazing. Unbelievable. I wish I had more adjectives to describe the dancers, choreography, and music (O the music!!!). One might think that drumming on everyday objects would get old after a few scenes (songs?), but I was constantly amazed and surprised at what they did. Brooms to basketballs, sand to sinks, plastic drums to plastic bags. Awesome. The show had more humor than I expected, too. The main comic relief was a Chris Farley-ish character with a thing for very, very large brooms and mops, but it seemed every player got a chance to do something that set the audience rolling.
After the show, Laura and I walked around the engineering mall then over to the 24-hour ice cream shop for an after-show treat. (Laura, if you're reading this, I can't believe I forgot to show you the Beering Fountain while we were out there.) We spent the rest of the evening hanging out in the dorm and watching Spirited Away.
And that's why I can say: what a great Tuesday!
Untitled
I was sure I had at least one pair of nice pants in the dorm. I went home just last weekend to pick up my winter clothes, and it would have made far too much sense for me to bring back my dress pants, too. I didn't, so with a week full of job fairs coming up, I had to burn through a tank of gas and a few hours of my day to make the trip home again.
Untitled
Instead of building a links sideblog, I decided I would make it easy on myself and periodically posts lists of links directly on this main weblog. This has the added benefit of allowing my readers (both of you) to comment on the links. To begin, I offer the following:
- A map of Springfield – You've probably seen this before, but it is so awesome that it deserves repeating.
- Ten CSS Tricks You May Not Know – I came across some of these tricks through sheer blind experimentation. Others I didn't know at all.
- How to Write Firefox Extensions – I have been using Mozilla/Firefox as my main browser for ages and I have always wanted to dip into writing extentions.
- An Illustrated Guide to Cryptographic Hashes – A very interesting article and a useful link to send to people when explaining why storing plaintext passwords is a Bad Idea.
- A Technique for Drawing Directed Graphs – A dense but very thorough research paper for the next time you need to visualize a directed graph or other type of data structure.
- The Last Question by Isaac Asimov – Or, if you don't feel like reading the whole thing, here's an abridged version.
- Classic Computer Science Papers
Finally, it's not an external link, but I wanted to mention I posted another picture of the Puppy we got for my grandmother.
Untitled
As promised, I give you a stats page.
I'm pretty proud of those graphs. I just query the database and pass the data points into a generic function that takes care of creating the image. The function is incredibly flexible. It will automatically position the y axis to make room for the tick mark labels and scale the graph to a specified size, among other things. Unfortunately, I had to turn off the axis labels because Purdue's servers don't support PHP's imagerotate() function. I find that very strange because all the rest of the GD library functions work fine.
Some interesting things to note:
- I've written over half a million characters. That's insane.
- Despite a relatively sparse summer, I have still managed to keep the average length between posts to under two days. I think this is mostly because of the rapid-fire posting early in the life of this weblog.
- Sunday is my most prolific day of the week. Who knew?
- While the number of entries per month has decreased, the length of the posts has increased. This has made the total length per month remain relatively constant.
- The graph of entries by time of day has a distinct kink at lunch, dinner, and bedtime. I tend to think some of those posts between 2 and 7 AM must have been translation or clock mistakes. I don't remember ever posting that late/early.
I'm trying to think of additional statistics to display or graph. Leave your ideas in the comments.
Untitled
I was going to make this an update to the previous post, but I think it deserves an entry all its own.
My math book finally arrived, and I think I have an explanation as to why it took so long to get here. I noticed a label on the bottom right corner of the front cover that had been colored over with blue marker. My curiousity piqued, I rubbed the marker first with a moistened finger, then a wet paper towel, and finally a bathroom cleaning wipe. The marker came off, revealing:
On one hand, I love how the internet has opened up a world market for stuff like this. It's free-market capitalism at its finest. On the other hand, have I prevented some south Asian student from getting a book? I doubt it, but who knows?
It's interesting to note the differences between my book and my classmates'. The content is indentical, but my book is paperback with cheaper, matte pages and no color. I like this. Publishers try to increase the percieved value of the book by increasing the production costs. Hard bindings, color printing, glossy pages; all so they can charge a premium to students who can afford it. This makes obvious business sense but very little logical sense. More often than not, books last only a few years before being replaced by newer versions (which is a whole problem unto itself). Also, there are few benefits to more expensive typesetting. The material is the same and should be independent of the presentation.
Cheaper books are nice, but publishers would do well to get rid of the book completely and license electronic copies to Universities. DRM-free PDFs (or text files!) accessible from any computer on campus; that'd be ideal. Too bad it'll never happen.
Untitled
Everyone knows college bookstores and publishers blatantly rip off students, so this semester, I bought all my books online. Overall, it worked out well. I got 10 books for about $200, most for about 75% less than the local stores. However, as usual when I attempt some innocuous time- or moneysaving scheme, the small parts that don't go quite right turn into grand epics that eat up much of the benefit I might have otherwise had.
Take my compilers book, for example. It took the second project and a confusing IM conversation with Lee to make me realize I had the wrong edition. Mine outlined how to build and compile a different language than the one the class was using. A big difference, to be sure. Pressed for time, I had to buy the brand new book at the bookstore for nine times what I paid for the first.
This was a small annoyance compared to the trouble I had last Tuesday when I needed to do my first math assignment. The math book is the only one I have been assigned actual work out of and, ironically, one of only two I have yet to receive (the other is a history book I won't need until the end of the semester). The assignment was due Wednesday morning, so I had hoped to copy the pages from the library's book sometime during the day on Tuesday. Of course, it was no surprise that the book was checked out. "That's okay," I thought to myself, "Ashish [a classmate and Marc's roommate] said I could borrow his book if I couldn't find it at the library." The problem was, his apartment didn't have an internet connection at the time and neither he nor Marc knew their own phone number. The Purdue directory was some help; it at least had an apartment address.
Armed with the apartment number and the hope that Marc or Ashish was home, I set off after dinner on the mile and a half trip to the apartment. I pedaled my bike through campus, down a hill, across a major thoroughfare, around a mini mall, and to what I thought was the correct apartment block. It wasn't. The address I had was in the 700s, but the mailboxes only went up to about 650 and the building had only five floors. I never did find out where they live. By that time I was beginning to fear that would miss the assignment. Not a good way to start off the semester. I went back around the mini mall, across the highway, up the hill, into campus, and up three flights of stairs to check the library again. Fortunately, the book was available and I left with copies of the problems (and several future assignments' problems) safely in my backpack. After a day of classes and wild goose chasing, I was almost too tired to do the work.
Untitled
Now that the new build is live, I'd like to list a few of the features I plan to add in the near to not-so-near future:
- A List O' Links to the side of this main box. Anyone who has talked to me on AIM knows I surf an incredible amount and have a link for absolutely everything. A links sideblog— did I just write sideblog? I suddenly feel unclean— would be a good place to divulge myself of the many websites filling my "Come back to later" bookmarks folder.
- Entry titles and categories. These two features promote a more essay-based weblog rather than the journal-ish one I have kept up to this point. I have been trying to move in that direction for a while but decided to stay with the old day by day format for this build.
- A stats page. Not visitor stats, mind you; stats about this weblog. One of the many benefits of having a database backend is that I can display useless yet interesting facts about how many posts I've made, their average length, how much the length has changed over time (with graphs!), the age of this weblog to the second, the average length of time between posts, etc.
- Searching. I can't count how many times I have needed to search for a particular post among the three-plus years I have kept this weblog. It's a pain that I would very much like to make go away.
- Better picture uploading. Right now I have to upload pictures and write the description blurb all by hand. I'd like to be able to write an entry, upload some pictures and a description through my normal form and have the code take care of the rest.
- Somewhat useful, gee-whiz stuff like RSS feeds, entry interaction mapping (the subject of a future entry), link trackbacks, blah, blah, blah.
With school starting to pick up, who knows when I will find the time to work on any of these things. The kind of time I had this past week will surely become very rare. For now, though, I'm extraordinarily happy with what I have.

