The online home for Greg Leedberg, since 1995.

Wednesday, January 25, 2006

Dreamhost - A Hidden Jewel of Webhosts

Back in June, I briefly mentioned that I switched webhosts from Yahoo! to Dreamhost. At the time, I talked about how much I liked Dreamhost (actually, I went into more detail about why I hated Yahoo!), but I had only had the service for a few days, so what did I know?

Well, now I've been a Dreamhost customer for over 6 months and I have to say, my opinion of them has only improved. So much so that I felt it warranted a blog post! It's rare these days that you find a company that really gives you a great service, and at a good price. But Dreamhost accomplishes this.

There's lots to like about Dreamhost when it comes to features. They give you a good amount of disk space (I have 20GB currently), and your disk space grows by 160MB a week. And this is only for $8 a month. You have a virtually unlimited number of email addresses (3000), which can use POP, IMAP, or SquirrelMail. You can host announcement and discussion lists. They support PHP, Perl, MySQL, CGI, Ruby on Rails, SSI. They even give you full shell access to your server, and a CVS repository for developer-types! You can even stream movies, and get really, really good statistics on your website. In all, it's a great value when just looking at features and price.

But what's impressed me the most, and what really, really separates them from Yahoo, is the level of transparency they maintain with their customers. Whenever there is a big problem with the service, you can opt to receive an email. Generally, these emails will do a very good job of keeping you informed as to what's happening. This was most appreciated when recently the Brea, CA, area had a big blackout which took all of the Dreamhost websites down for several hours.

They also mail out a monthly newsletter, which does a great job of letting us customers know about new features. With Yahoo, I don't believe there were ever any new features added, and if they were, I never knew about it. It seems that every month, there are new features they've added, or they're giving us more disk space. It's worth mentioning now that when I first signed up for my account, I was only paying $8 a month for 2.4GB of space, but it just seems that they keep upping that amount, which is how I've ended up with 20GB. As for adding features, they have a section on the website where you can request new features, or vote for ones that have already been requested. This lets them know what their customers really want, and they actually seem to listen a lot of the time.

Additionally, if you want more detail, they even have a blog, where employees will frequently post interesting stories, which a lot of the time are about the "behind the scenes" of a webhost. Always really well written -- funny and informative at the same time.

With Dreamhost, I don't feel like I'm dealing with some far-off company just trying to make money off of me. It really seems like they care about being good to customers, and being a good webhost. I'm quite astonished to say that after 6 months, I have had not a single bad thing to say about them, and I give them the highest recommendation I possibly could.

This sounds like an advertisement. But I really mean it. Having web sites has been a big part of my life ever since I was in 7th grade, and so dealing with webhosts has also been a big part of my life. It's really great to have found such an amazing one. Actually, it's great to just have found such an amazing company, period!

Friday, January 20, 2006

The Future of Billy and Daisy

Hopefully, you're familiar with my two artificial intelligence / natural language processing-based "chatbot" efforts, Billy and Daisy. If not -- they're basically programs you can download and talk to, and they will be able to learn from talking to you, enabling them to converse better over time.

I've been blessed that these two programs have actually been met with quite a bit of popularity. Billy alone has been downloaded hundreds of thousands of times (and continues to be downloaded about 100 times a day), and these programs have been featured in several websites and so forth -- they were even featured on a segment on the TV channel Tech TV, and I was interviewed for the newspaper the Sydney Morning Herald.

The last new release of either of these programs was Billy 4.1, which was released in January of 2004. I feel sometimes like a perception has grown lately that I am no longer working on these programs. While it is true that I have had much less free time since I was at grad school and have started working professionally, I actually am indeed still working on these systems.

In particular, I've been working on an AI system I call "Nani". To understand the motivation behind Nani, you have you understand how Billy and Daisy work. Within both of those systems, there is basically a few AI subsystems which process your input, and then say, "My response should contain these keywords". That list of keywords is then passed to a natural language generation system, which produces an actual response. This list of keywords currently is produced in a rather primitive manner. Indeed, in Daisy this list is actually just produced by picking out keywords from the human's input sentence.

My focus with Nani is entirely on the mechanism for producing this list. I don't want to get in too much detail, but I've been working with interesting AI technologies such as neural networks in order to produce a good list. And the key is, these neural networks will learn over time to produce better lists of keywords, based on observing how you, the human, respond to things. It's pretty interesting.

Now, I've made a major decision recently that Nani would form the basis of either the next version of Daisy, or the next version of Billy. However, I am completely at a loss as to which brand should be continued in this effort.

Maybe it help to provide some background on how I ended up with two chatbots.

Programming Billy had always been a dream of mine. The idea of a program that could talk to you, and learn, fascinated me. I wrote a very simple program in 6th grade called "Best Friend Billy", which would just randomly respond with one of about 4 sentences. I realized that my goal was beyond me at the time, but I continued to dream of achieving a real AI someday.

I started work in earnest in high school. In the beginning, there was only Billy. Billy 2 was a simple bot which could parse input sentences, and then would mostly follow a script, and would respond with a pre-programmed sentence. These sentences could contain "blanks", in which Billy could fill in words from your input sentence. So, there was some variety, but there was little actual AI.

After working on Billy 2, I decided I wanted to pursue true AI. By which I mean, I wanted a system which could start effectively no knowledge, and then learn by observation. My true interest was in machine learning of natural language generation -- basically, the ability for a program to pick up on patterns in language it observes, and then learn to reproduce intelligent-sounding sentences. I knew this was pretty experimental, so I produced a new bot -- Daisy -- in which to explore this. Daisy had absolutely no pre-programmed language of any kind, and no scripting. Because of this Daisy could learn any natural language, not just English.

I worked on Daisy for a while and refined her in versions 1.1 and 1.2 (1.2 was never publicly released). At which point, I decided the technology was good enough, and rolled Daisy into a new generation of Billy, as a subsystem. Billy 3 was a new bot that combined Daisy's language learning abilities with some new and improved scripting. I think Billy 3 was probably the most popular version of Billy of all time.

After Billy 3, I worked on new language learning algorithms, which were started completely from scratch. I called this "Daisy 2", but there was never actually a standalone Daisy 2.0 program produced. I worked with this technology towards the goal of Billy 4. Billy 4 was designed very differently from my previous programs. I came up with a bunch of AI ideas that I thought were interesting, and worked on them, largely separately. "Daisy 2" was one. There was another, "Feldman", for computing mathematical expressions contained in natural language. And several others as well. In the end, I took these disparate systems, and produced a top-level set of algorithms which attempts to make them all work together. And thus was Billy 4.

Now, 2 years have passed since the last release of Billy. Also, 4 years have passed since design work commenced on Billy 4 (I worked on Billy 4 for 2 years). My current interests in AI don't include scripting at all. I'm more interested in the sort of thing I'm doing with Nani, and the sort of thing I did with Daisy. I continually monitor the web for feedback on my software, and find that increasingly more people seem to favor conversations with Daisy over conversations with Billy, which re-affirms to me that the no-scripting approach is best in the long run.

What I'd like to do is take the keyword-picking algorithms in Nani, combine them with the language-learning algorithms from the original Daisy, and produce a new bot, sans scripting. But should it be a "Daisy" or a "Billy"? There's arguments for both.

In some ways it should be a Daisy, because it's more "philosophically" in line with the goals of Daisy, i.e., it's experimental and contains no scripting. Also, there's a lot of people out there who seem to want to see a new version of Daisy.

However, there's also the argument to be under the Billy brand. For one, "Billy" is the name of the program I really wanted to keep working on throughout my life. Daisy was just intended to be a temporary exploration into some topics. I'd rather take new good ideas and continue on with the Billy name. Also, the Billy software and name are much more widespread. Even though Daisy has a very devoted following, Billy gets downloaded probably 10x more Daisy does. So, Billy is a higher-visibility vehicle for me to get my work out there. Lastly, I hadn't intended on continuing with Daisy as a standalone program, which is why
the last couple releases weren't publicly available. At the time, I considered 1.1 to be the final version of Daisy -- all future versions would be a part of a Billy release.

So, that's where I am. I really would love any feedback or ideas in the forum. For those who are Billy and Daisy fans, you know (I hope!) that this is a big deal. I don't know when exactly "Nani" will be done, but hopefully soon.

But first I need to know what to call it!

Saturday, January 14, 2006

New York City Adventure

Last weekend, my girlfriend and I took a trip to New York City for a couple days. She had been a couple times previously, but this was my first time to the city. Our main motivation for going was to see the Metropolitan Opera's Lucia di Lammermoor at Lincoln Center. This may seem random for me as a software engineer, but my girlfriend is a vocal performance major -- and remember that I was pretty serious about music in the past as well, so it was of interest to me. But for me, the real draw was just to go to New York. It always seemed like a pretty interesting and important place to go that wasn't too far, so I was excited. We drove to New Haven, Connecticut and took the Metro North train into Grand Central Terminal, and our mini-vacation began.

Within minutes of getting there, on the way walking towards our hotel, we saw two taxis hit each other, which was a nice introduction to the city. But the real beginning to our night was going off to see the opera. It was a great experience. We both got all dressed up (I wore my suit that I haven't worn since job interviews!) and took a taxi to Lincoln Center. I've been to a few opera performances over the years -- mostly college ones with my girlfriend -- so I was impressed with the high production values of this. Performances were all good, although I'm certainly not an authority on such things. Lincoln Center itself was really beautiful inside with big chandeliers and whatnot. Overall, it was really nice "classy" evening. It's nice to do things like that.

Our second and third days in NYC were largely for site seeing, and largely for my benefit since I hadn't been there before. We saw the usual NYC places: Central Park (including John Lennon's Strawberry Fields), Empire State Building (including going to the observation deck), Wall Street and the New York Stock Exchange, World Trade Center site (which was more moving than I expected it to be, after seeing images of it so pervasively over the last 4 years), Rockefeller Plaza, Statue of Liberty, and Times Square. One big highlight for me was we went to the outdoor part of NBC's Today Show set and stood in the crowd. We never got on TV, but we did see Katie Couric through a window in the indoor studio, and we saw the (non-Al Roker) weather man who came outside.

We also tried to make the most of the restaurants available in NYC. The first night there we went to Virgil's BBQ in Times Square, a great American-style BBQ place. I had a chili-cheesburger, and even though the crowd was pretty big, service was amazingly quick. The second day we went to Planet Hollywood for lunch and Jewel of India for dinner. Jewel of India was a really great and really classy Indian restaurant. If I'm ever back in NYC, I would definitely want to go back there. For our last meal, we had lunch at the Playwright Tavern in Times Square, which was also a really good American-style restaurant.

Overall, I had a really great time and would love to go back again. But, this was my first time to NYC, and I had lots of observations, both good and bad. One thing that struck me is that there such a large dichotomy between the haves and have-nots in NYC. Of course, in any town or city in America you're going to find that there are people who have more than other people do, but in NYC it just seemed to be the extreme of this situation. You have billionaires and millionaires riding in limos around the city, at the same time that you have a homeless person sleeping in a gutter. It's amazing to think that people with such different lots in life are living just minutes from each other.

NYC also seemed really self-contained. If you live there, you probably don't have to leave very often since everything you need to exist is close by. So much so, that the city seems to have its own idiosynchrasies in the way that life goes on there. Like, most people don't drive a car, those that do honk more than in any other place I've been, everyone seems to be in an extreme hurry to get "somewhere", and there aren't any "big" stores -- even the Best Buy I saw was just a corner store. I'm not saying these differences are better or worse, but they certainly are different. In fact, sometimes it seems that New York itself is out of touch with how the rest of the country operates, even though New York is frequently referenced as being the "trendsetter" for the rest of the nation. The qualities of New York are especially noticeable after visiting the west coast as I did recently. In the Los Angeles area, cars are the perferred method of transportation, and everything just seems really laid back. Two really different ways of life, almost like two different countries within one.

However, like I said, I had a great time and would love to visit again sometime. There were several things we just didn't have the time to do: visit an art musuem, see a Broadway show, or see a TV show (such as Letterman). It's great that NYC is so close. I also just had a great time being on vacation with my girlfriend. We've been together almost five years, but this is only the second time we've really been away on a vacation together -- the first being when she visited me out in California. It was a really special time and nice memories.