Introduction

Welcome to Kyle's web land. This site contains my blog, computer tutorials and programming projects I am working on, and other things I care to write or rant about.

It is written in Emacs using the Muse publishing system. The green on black theme resembles my favorite programming environment, which is a full screen rxvt terminal running screen with the same colors, running under either GNOME or Ratpoison window managers.

About the Author

My name is Kyle Sherman. I have been programming computers since I was 14 (24 years ago as I write this). I started out using Apple II's in my junior high school computer lab — which consisted of two of them. Eventually I was given a Commodore 64 for a Christmas present and I've been addicted to computers ever sense. Over the years I've owned an Amiga 1000 & 3000, a Mac Powerbook 180c, and lots of home built PCs and some laptops. I originally wrote this about on an HP Omnibook 800c (Pentium 166) with 80MB of RAM running Debian/Ratpoison/screen/Emacs. However, I finally updated my laptop to a Dell Inspiron 1420, which I used until the screen died on me. Now I'm happily coding on a Dell XPS 15 (L501X), running Ubuntu/GNOME/screen/Emacs.

I went to San Diego High School then on to college at California Polytechnic University, Pomona where I received a Bachelor's Degree in Computer Science in 1996. Since then I've worked for Hughes, Boeing, BigCharts, MarketWatch, MotivAction, Dow Jones, and currently BuzzFeed. I've done Database development with Oracle and Microsoft SQL Server for the first part of my career and then I transitioned to Java, C/C++, and Ruby on Linux based machines while working with Dow Jones. Now I program for the Android platform at BuzzFeed.

My resume has more details of my recent work history.

History of this Web Site

This site was initially built with static HTML pages [circa 1996] using generic editors and FrontPage. In 2001 I switched to using Zope wich allowed for rapid development in an object oriented evironment and was quite fun to use. Even though I like Zope a lot, I found some tasks to be overly complex to build. Some of my issues were:

On the other hand, Zope did have many good points. It had a great object oriented structure (both internally and with urls). It had built-in security and change history that just works right from the start. Finally, there was a strong developer community supporting and enhancing it. But, these reasons were not enough for me to stay with it. Besides, I'm more of a Perl (and more recently Ruby) guy than a Python guy ;-).

(Note: I am aware that Zope may have changed a lot since I was using it and my above issues may have been resolved by now.)

In 2003 I started to move my site to Mason. Mason is an Apache add-on that gives you the power of Perl inside of HTML. I liked Mason a lot and found that I was much faster building web pages with it than I was with Zope. It didn't have all the same abilities Zope has, but it was reasonably easy to work around the limitations/differences. And (this was huge for me) I could use a regular editor to edit pages.

Shortly before I finished the first version of the rebuild of my site I just lost interest in web site building altogether. I pretty much put it on hold until recently.

But now, some things have changed that are making me reconsider whether or not I want to use Mason. Here are some of them:

Now you are probably asking yourself, what do all of these have to do with whether or not I use Mason to create my site. Well, Mason uses Perl and for anything more than text manipulation scripts Perl is not that ideal. What I mean by this is that once I have a large body of Perl code I find it gets very confusing to keep track of dependencies and to track down bugs.

Now there's Ruby, a language with all of the power of Perl, plus all of the missing object oriented programming functionality. Frankly Ruby is just so easy and intuitive to use everyone should give it a try. At this point I would like to use Ruby instead of Perl for my site, I just need Mason::Ruby. Now I could use Ruby on Rails. I know a lot of people like it and for a hack as you go site I think it's great. I've got other ideas for how I want my database back-end to be setup than how Rails would like to do it, but I could probably modify the Rails to DB IO to suit my needs.

So just when it seems I should go with Ruby... along comes Lisp. Yes that 50 year old language from the dark mainframe days. Why Lisp you ask, well I made the switch to Emacs a few years ago and shortly after that I started to learn and use Emacs Lisp so I could customize it and make my own modes. It was quite confusing at first, but I started to get the hang of it. Then I started to take a look at Common Lisp — which I had not used since my college days (where I just didn't get it). In order to learn Lisp I decided to use it to do Project Euler projects which I had just found. What better way to learn a language. (My current progress is 68/158 or 43%.)

Now I find that I really like Lisp. It truly is an amazing language that everyone should have a look at. It's a very powerful functional language that's all about abstractions and tight scoping. Not to mention the fact that functions are first-class citizens and have the same structure as data. These properties make it useful for many projects and I think very useful for a dynamic web site. So now I find myself liking the idea of building my site using Lisp. And I plan to do just that, however this is going to take me a while. I'm still very new to Lisp and there are not as many support sites out there as I'd like.

After using Common Lisp for a while Clojure came along and I've pretty much switched to using it instead. Having access to all of the libraries available to Java is just too good to ignore. Clojure also has excellent multithreading support. I feel that designing a web site with Clojure, maybe using Compojure, would be an excellent choice.

So until I build my dynamic dream site, I am using an Emacs based tool Muse. Which is what I'm typing in right now. It allows for easy wiki-like page creation, template based publishing, and modules for creating PDFs and RSS pages. The only down side is that it produces static content (unless you add AJAX or some-such). But for a blog (which I've wanted to start for a long time) and for publishing and commenting on various projects and code that I've written it is well suited.

And that's the long story of how this web site came to be.

— Kyle Sherman <kylewsherman@gmail.com> (2007)

1. Just to head off any Emacs vs. Vi wars... I've been using vi/vim for over 10 years now, and I continue to do so. However there are two very big reasons that I prefer Emacs. The first one is that I just hate the two mode concept of vi (input/control mode). I always forget which mode I'm in and it just slows me down. My other reason is I really like being able to use Emacs Lisp to extend the power of Emacs.