Welcome To My Temple

If you’re reading this, then things are working on my new host. This site has been moved from DreamHost to Media Temple.

This move has been coming for a long time. As I said before, the quality of service from DreamHost has been slipping for a while now. I received a 3-month Media Temple gift card some time last year and I finally put it to good use.

Now all I have to do is move the rest of my sites over to Media Temple and everything will get back to normal… whatever that means.

Too Successful For Their Own Good?

I’ve been building websites since the mid-90s. I’m not sure exactly when I started but I do know it was before 1995. My first experience was using edit in DOS to create HTML files and then viewing them in Netscape 3 on Windows 3.1.

I still remember having problems the first time I uploaded my files to a real web server. I called support and they told me that my file extensions had to be html instead of htm. So after uploading the files to their Unix (Linux?) server with FTP, I had to rename them so they would have the correct extension. Those were the days.

Things have changed a lot since then. I’ve been through 2-3 other web hosts. At one point I was using Modwest. The service was good, but I wasn’t pleased with their support. One day I tried to bring up my site and instead got their default “Parked Domain” page. It turns out the credit card information they had on file had expired. Instead of sending my an e-mail to explain this, they just turned off my hosting. Nice.

About that same time, I heard lots of people talking about DreamHost. They offered lots more storage and bandwidth than Modwest for a comparable price. They had all of the features I needed. For $19.95 a month I could have unlimited domains with PHP, Perl, MySQL, SSH, etc. It wasn’t long before I moved my domains over to DreamHost.

At first, everything was great. It seemed like everybody was talking about DreamHost, and everybody was happy. As time went on, I started noticing things slowing down. It wasn’t every day, but sometimes things just didn’t respond as fast as they once did. More time passed, and I started noticing that my site occasionally timed out completely.

A few months ago, DreamHost announced that they were now the 16th largest web host in the world. They are currently hosting over 600,000 domains. That probably explains why my little personal web site is so slow sometimes. DreamHost offers shared hosting which means all of my web sites are on the same server as lots of other web sites. There’s no way (that I know of) to tell how many other sites are on the server I’m on, but I’ll bet it’s a lot more today than it was a few years ago.

Even with the slowdowns it hasn’t really been worth it for me to move to another host, until this morning. A little before eight I received an e-mail from DreamHost billing. This is normal, I get one of these every month for $19.95 plus $9.95 for any domain names that need to be renewed that month.

Unfortunately, today’s bill was for $438.90 and it has already been charged to my credit card. Instead of charging me for February, they charged me for the rest of the year. Not only that, they charged me twice for each of the 11 months. Needless to say, they got a prompt reply. I didn’t panic like some people, but I was not happy.

DreamHost has updated their status blog with a post about the billing issues. So far their are 608 comments on that post. I obviously haven’t read them all, but here’s one of my favorites:

LOL! nice going DH

its cheap for a reason!

My thoughts exactly.

It’s funny, I was thinking about moving the automatic billing from a credit card to our debit card just the other day, but I hesitated for some reason. Scrolling though the other comments on that blog post, I see several people complaining about checks bouncing and not having access to cash. I guess there’s a reason I didn’t make that switch. Gut feelings are almost always right.

Fitness Goals

I try to work out at least three days a week. We’ve been going on Tuesday, Wednesday, and Thursday evenings so Matthew can stay at the “Kid’s Club” at RACE.

Something really nice happened Tuesday evening. First, I beat my personal best time for jogging a mile. My best is now 10 minutes and 51 seconds. After I stepped off the treadmill I weighed myself and found I had lost 6 pounds since the week before.

I only changed one thing to make this happen. I stopped eating meat. You might remember I gave up beef about a year and a half ago. At the time I said I would probably never become a vegetarian, but things have changed.

So far this year I haven’t had any chicken or pork. I’ve only had seafood twice, and I’ll probably never eat it again. It seems like what we eat is just what we’re used to eating. I wouldn’t think of eating a steak now.

I honestly feel better than I’ve felt in a long time. I feel healthier and like I have more energy. Ten days is not enough time to see how this will affect me long term, but so far I wouldn’t change a thing.

With this in mind, here are my fitness goals for 2008: I will jog a mile in 10 minutes or less and get my weight down to 200 pounds or less. These are both things that I can easily accomplish if I just keep doing what I’m already doing.

I Can’t Do It All

That title is one of the hardest things I’ve ever typed. I don’t think I’ve ever said it out loud, but it’s true. I can’t do everything. No one can.

It seems like I spend most of my days either worrying about all the things I have to do the next day, or feeling guilty about the things that I didn’t get done the day before. That’s no way to live.

I tend to take on more than I can accomplish. I also sometimes procrastinate which means it’s too late to ask for help when I finally realize that there’s no way I can get something done. Since getting promoted to Technology Director, I’ve had to get really good at delegating tasks. This is not an ability that comes naturally for me. I’ve always been one to just do things myself.

With this in mind, I think another one of my goals for this year should be to make fewer promises and get more done. I think it’s better to tell someone “Sorry, I can’t do that” up front than to agree to something that I’ll never get around to finishing. I’ve actually been working on this for a while now. I stopped working on people’s computers a long time ago unless they were friends or family.

The hardest part is telling myself no. I’m constantly coming up with ideas for new projects I want to try, but I never have the time to finish any of them. From now on, I’ll focus on whatever project seems the most interesting at the time and push everything else back to my Someday / Maybe list.

Hopefully by this time next year I’ll feel a lot less overwhelmed and maybe even have fewer gray hairs (or at least still have some hair to worry about). If anyone knows a good way to squeeze more hours into a day, I’m all ears.

Happy New Year

I’m back at work after a wonderful two-week vacation. That’s got to be the best part about working for a school district. Believe it or not, I rarely even touched a computer during those two weeks.

Now that 2008 is here, what should I do? Seth Godin says the first thing to do this year is Google yourself. Sounds good to me. This blog is now the 8th result for “Anthony Lewis”. The New York Times columnist and author will probably always outrank me. He’s now 80 years old, so I don’t think anyone will confuse the two of us.

ResolutionsGoals

I’m still working on formulating my goals for this year. It’s easy to spout off a few resolutions like “lose weight” and “get rich”, but I want to really focus on what I’m going to do this year. I’ve been reading some great posts on Zen Habits and Get Rich Slowly about setting goals for 2008. I’m trying to keep their lessons in mind as I plan out the next year.

One thing I’m not going to do is make a promise about posting to any of my blogs. I’ve done that several times in the past and it never works. NoBloPoMo was a complete failure for me.

Writing

I’ve been blogging off-and-on since 1999. I used to write all the time. I was generating so much content that I felt the need to split it up into multiple blogs. A funny thing happened after I did that. It seems like by defining what I was going to write about I took all of the freedom and fun out of the process. Within a few months I wasn’t writing anything.

Almost a year passed before I finally created this site to try to get back into writing. I didn’t tell anyone about it. I wanted this site to mainly be just for me. It wasn’t long before I fell into the same trap as before. I decided that the main focus of this site should be on web development.

By attempting to define what I was doing, I effectively shut down my creativity. Not only did I stop writing, I also stopped working on the projects that I was writing about. Not good.

Two weeks off was exactly what I needed to clear my head and prioritize things again. From now on, I’ll write whenever I feel like writing and post it wherever I want. If I happen to write something relevant to one of my other blogs I’ll post it there. Otherwise, it will end up here.

I have a feeling 2008 is going to be a great year.

Activation Hell

People used to ask me “Why do you use Linux on your desktop?” Now they ask me “Why do you like Apple?” Here’s why:

Somewhere, deep in the bowels of Microsoft, there is a person who’s sole responsibility is to make other people miserable. After dealing with Windows XP activation for the last few days, I know this must be true.

In my spare time I’m reloading Windows on some old Dell GX280s that are being placed in a computer lab. This should be a no-brainer. Load the OS, install antivirus, download 85 updates, install Office, and you’re done.

This would be the case if it weren’t for one simple step – online activation. The first two I reloaded worked perfectly. The online activation happened almost instantly. Things went south on the third system. Online activation failed.

activation.png

It’s not like I’m a pirate. These are Dell systems with the original Certificates of Authenticity stickers still attached. Now I get to call Microsoft.

Step one, read 54 numbers to a computer. Step two, answer a few personal questions. Here’s a hint: you’ve installed this copy of XP on one computer, and yes you have upgraded hardware. Step three, type in 54 different numbers as the computer reads them back to you.

Thankfully I’m only doing 5 of these. I feel sorry for whichever one of my employees gets to do the other 45…

Ruby Generators

In my continuing quest to expand my knowledge of all things Computer Science, I stumbled across the Generator topic on Wikipedia. I ended up here after reading an excerpt from Python Cookbook.

The Wikipedia article describes a generator as something that looks like a function but behaves like an iterator. The interesting thing to me is that they can be used to build endless lists.

For example, the Python Cookbook gives several generators that will list all prime numbers (given enough time). The Wikipedia article gives another way of generating prime numbers.

I was surprised that Ruby wasn’t mentioned in the Wikipedia article so I set off on a search for information about Ruby generators. Unfortunately, most of what I found was dealing with code generators for Rails which is something else entirely.

The Ruby Documentation contains a description of the Generator class with a brief example. I was able to use this to convert Wikipedia’s simple prime number generator to Ruby.

require 'generator'

g = Generator.new do |g|
  n = 2
  p = []

  while true
    if p.all? { |f| n % f != 0 }
      g.yield n
      p << n
    end
    n += 1
  end
end

Using this code, each time you call g.next it will return the next prime number starting with 2. For example, this will print the first 25 prime numbers:

for i in 1..25
  puts g.next
end

If you examine the source code in both Python and Ruby you’ll find that they are remarkably similar. The only change is basically replacing Python’s any function with a call to Ruby’s Enumerable#all?.

The more I learn about Python and Ruby, the more similar I realize they are. I have yet to find anything in Python that can’t be done just as easily in Ruby or vice-versa.

Facebook Developer Garage

It’s not too late to sign up for Facebook Developer Garage Dallas. The event is being held at SMU on Tuesday, November 13 from 10:00 a.m. until 4:30 p.m.

Dave Morin, Senior Platform Manager at Facebook will be speaking in the morning. As will Lee Lorenzen. Lunch will include at least four lightning round demos.

Three more speakers will present after lunch, followed by a panel discussion. There will be an after party at Trinity Hall sponsored by Joyent starting at 5:00 p.m.

The Facebook event page currently lists 52 confirmed guests and 33 people who might attend. I will attend, but unfortunately I won’t get there until 1:00 p.m.

Go to the Eventbright Page to register. Also, check out the Facebook Developers Dallas Group for all the details.

This is a great opportunity for developers and entrepreneurs around Dallas. These events usually only happen in California or on the East Coast.

Dallas.rb

I attended my first meeting of the Dallas Ruby Brigade last night. It was a lot of fun. Adam Keys and Geoffrey Dagley did a little ping-pong pair programming. They worked on the Credit Card Problem on Ruby Quiz.

It’s always interesting to see someone else’s code, but to be able to watch them right it was really enlightening. Geoff and Adam took turns writing specs and then adding the code to satisfy the spec.

I’ve done a little test driven development, but never behavior driven development with RSpec. I can see where it would come in handy when dealing with a non-technical client.

Adam demonstrated some serious Ruby-fu when solving the Luhn algorithm part of the quiz. I found a good article on Vitamin that talks about some of the array tricks he was doing.

Unfortunately I got tied up in traffic and didn’t make it to Freebirds before the meeting. I will be there next month.

SICP

As I mentioned yesterday, I’m starting to work my way through the Structure and Interpretation of Computer Programs. Here are a few links that should help you get started if you’d like to follow in my footsteps.

First, you should know that the full text of the book is available online for free. It’s also available for purchase at Amazon.com, but it costs $69.51.

You can watch the the SICP lectures on Google Video. You can also download these videos in high quality and reformatted for the iPod.

Since you’re going to be programming in Scheme, you’ll need an interpreter. I’ve had good luck with DrScheme on both Windows and Macintosh. They also have a Linux version available.

The main thing you’ll need to get through this book is time. Unfortunately, I haven’t found a way to link to that yet. If you come across a link to some spare time, be sure to leave a comment below so I can have some, too.