Wednesday, April 25, 2007

What Did You Do Today?

Today was a pretty average day for me, but I'm going to tell you about it. In case you wonder what it is I really do all day, now's your chance to find out. =)

I woke this morning, as I do most mornings, when the sunlight started streaming through the window and woke me up. I usually let the sun wake me up--it's a wonderful way to start a day. However, I do tend to sleep in a lot later during the winter than I do during the summer. During the longest days of the year, I often wake up at six or seven in the morning. During the winter months, I often lounge around until nine or ten.

Today, I woke up at about 8:00. Usually I lay around thinking about what I want to accomplish for the day. I do this for perhaps a half hour or so. If I do it TOO long, all those things I want to get accomplished rarely get accomplishing!

Then I got up and pulled myself onto the computer, usually wrapped in a flannel blanket, to check up on Atlas Quest. I check AQ mail, e-mail, and the message boards and scan the major news headlines to see if anything interesting happened during my sleep. Checking AQ mail, e-mail, and the message boards--which includes fixing minor bugs people report. For instance, Fair Oaks, California, was not listed as being in Sacramento Country which it seems confused some folks. So I moved the town to Sacramento County. (I had it listed in San Joaquin County--which does have a town named Fair Oaks, but nobody's letterboxing there!) Got a few reports about my letterboxes that people have found or want to find in the near future.

I like to think of it as my 'beat'. Policemen have beats, and so do I. I patrol Atlas Quest. =)

This usually takes me a couple of hours. It varies. Usually it takes at least one hour, but I usually call it quits if I haven't finished it all within three hours because I'm getting so darned hungry! =) Today I spent about two hours checking stuff, replying to questions, and such. After finishing up with all those minor details, I eat some breakfast.

Usually cereal, although the brand varies. With cold, non-fat milk. Yum, yum. =)

Then I get back on the computer and work on whatever project it is I'm currently working on. Sometimes I have to be logged in to the Internet for it, and sometimes I don't. The April's Fool joke with all those icons, for instance? I was online virtually non-stop trying to find images I could use for the icons. I typically check the boards and AQ mail more often since I'm online already.

Today, though, I've been working on message board code. It's a lot of coding, crafted with nothing but a few reference books, documentation I've already downloaded to my computer, and my wits. I don't need to be online for this, so today was largely an offline day.

I wrote a list of things I needed to complete for the message board code. I'm rewriting almost all of it from scratch. When it's ready, you'll see a few visible changes. It'll likely seem more like a minor update than a complete rewrite of the message board code, but I'll have to take AQ down for an hour or two to get all the changes on the live site. Don't worry--I try only to do that late at night when most people are asleep in bed. I hoped I might have it done for tonight, but alas, it didn't work out. Maybe tomorrow night? Maybe the next after that? I don't really have a set schedule--it's done when it's done. =)

Why am I rewriting all this code if you're only going to see relatively minor changes? Frankly, the old code is crap. When I created the message boards on Atlas Quest, I didn't really know what I was doing. I was making everything up as I went along. =) I learned from it, hacked it, and cobbled it together, but it wasn't particularly well-crafted code.

Well-written code is *extremely* important. It allows me to add and modify features quickly and easily. It allows me to tweak database queries for better efficiency without having to fear I'll break something else in the process. I was scared to modify the old code in fear I'd break something else unexpectedly. When I'm scared to modify code--that's a good hint I should just rewrite it from scratch. Use my new knowledge and skills to do the job right.

I've been wanting to update the message board code for months now, but something else was always more important. Come to think of it, there are other things I'd rather be working on than the message board code. It could have waited another couple of months, no big deal. So why am I working on the message board code instead? =)

It's all Silent Doug's fault! He suggested a feature that would allow people to read just the first few lines of a message--somewhere between the 'compressed' and 'expanded' versions of the message boards. It's quite a good idea, but--gasp!--it would require substantial modifications to the message board code. If I had done a good job coding it in the first place, I could slip a feature like that into the code base fairly effortlessly. But alas, that was not the case. The message board code was terrible.

So by golly, I decided it's time I finally updated the code base. It's much slicker now, and almost perfect. I slipped in Silent Doug's suggestion yesterday. Today was a "details" day. The little stuff that still needed to be done. The BIG stuff was all working as expected. There's a lot of details, though, and at this point, I need to start writing them down to make sure I don't forget any of them.

Here's my list for today:

  • Make sure admins can still see and undelete posts, if necessary
  • Make sure the icons by people's name still show up correctly (particularly the 'new member' and 'updated profile' icons--I wasn't sure if they would work anymore).
  • Posting new messages works (I could VIEW messages--but I hadn't fixed the code that actually posts them)
  • Stop opening links into new windows
  • Check that 'hidden' board stay hidden from those who aren't supposed to access them
  • Test the boards with an admin account, a moderator account, a premium member account, a "normal" member account, and as someone who's not logged in
  • Update the code for reporting problem posts (the old code works, but I want to revamp it to provide more information for moderators)
As I'm working on the code and I think of new things that need to be added to the list, they go on. And I'll cross off the ones I finish. Checking that everyone profiles show up correctly turned out to work without any modifications, so I crossed that one off very quickly. The others took more effort. The only thing I haven't finished yet is that last item, but even when I do finish it, I plan to do much more testing before I make the feature live. Measure twice, cut once. =)

Of course, I know bugs will slip through. I'm just one man and Atlas Quest members number in the thousands. You'll try doing things I never even thought of, and find bugs during the process.

But that's for another day.... Today, it's just a work day. =)

I worked on several features, before taking a rest a little after 2:00 in the afternoon. I reached a good stopping place. A good stopping place is usually when I can cross off another item from the list but before I've started fixing another one. I usually eat lunch between 2:00 and 3:00--I like a late lunch because dining areas are much less busy then. Much quieter and relaxing. Even if I eat here, I'm still in the habit of eating late lunches. It's just what I do.

I also tend to take long lunches, and today was no exception. =) Amanda left a postal box for me to mail for her--she left late last night to work and I'm her mail-deliverer when she's not in town--so I walked it to the post office and mailed it off. Then I checked my PO box. I usually only check it a couple of times a week when I'm at the post office mailing stuff anyhow. Alas, no checks from premium members today, but there was a copy of Smithsonian magazine that had arrived.

So I walked the magazine down to the Taco Time a few blocks away and ordered lunch. They had a few newspapers available for reading as well, so I picked up the business section for reading, and read about Boeing's earnings report (I own 50 shares of Boeing--gotta keep on top of those investments!) and their progress on the 878 Dreamliner. The tail fins arrived in nearby Everett last night, just in case you're wondering. The first pieces of the first 878 are starting to come together.

Then I read about half the Smithsonian magazine before walking back to the apartment. I'll save the other half for another day. =)

All told, between the post office, walking, lunch, and reading, I wasted about three hours. My exact whereabouts during lunch vary. Sometimes I eat at home, sometimes I eat out. Sometimes I go for a REALLY long walk, and sometimes I read books or magazines. Sometimes I make a trip to the post office to mail stuff and check my PO box, and sometimes I go to the library to pick up books or read other magazines and newspapers. Oddly, regardless of what I do, it always seems to take about three hours in total. =)

I got back to the apartment this afternoon at around 5:00 this evening, and immediately checked up on Atlas Quest. Run my patrol--usually much faster than in the morning since I was only gone for a few hours rather than the whole night while the east coast has a three hour lead on me. I spent about a half hour catching up with e-mails and messages, then disconnected from the Internet and delved back into hard-core programming.

In this case, I worked on getting the ability to post messages working on my development machine and stopped links from opening into new windows. There was a good reason for all those windows opening into new windows when I first implemented it, I might add--mostly related to the fact that you could read all of you favorite message boards at once. Now that you can't read all of your favorite message boards at once, there's no longer any reason for me to open all those links into new windows. Since I'm working on the message board code anyhow, may as well clean up that little problem while I'm at it. =)

By about 8:30 this evening, my head needed a rest. I got a lot done and feel like I've been especially productive, which is a good feeling. =) But concentrating gets tiring after several hours. I needed some lighter material to keep me occupied for a change. I did another run on my AQ beat, read online about Delta being cleared to exit bankruptcy (I like to keep on top of news in the airline industry since Amanda works in it--I'd never buy stocks in it, though!)

Then I decided to tell all of you folks about my day.

That's a typical day for me when Amanda's not around. When she's around, she likes to use the computer too so I try to work around her. I try to work on stuff that doesn't require a computer (reading books about web servers or databases, for instance), brainstorming ideas, and creating to-do lists. Sometimes I take my laptop and work on my Appalachian Trail book. It's too small and hard to write actual code and develop Atlas Quest with the laptop, but it works fine for writing so I'll sometimes take the day off from Atlas Quest and work on my book instead. My lunches might stretch out to four or five hours since Amanda's on the computer and I'm not very productive then. Not that I'm trying to avoid her, of course, but only one of us can work on the computer at a time.

Maybe I'll write about one of my days when Amanda is in town to give you a taste of that. =)

The rest of tonight I'm going to relax by watching television. Lost and Medium is on tonight, both shows which I enjoy. I usually watch about half of Leno before calling it a night (very rarely do I watch any of the guests he has on) and going to sleep. Sometimes I'll check on AQ before going to sleep, and sometimes I don't. *shrug*

So there you have it. A typical day in the life of Ryan Carpenter. =)


Anonymous said...

I loved hearing about your day. One thing I find rather shocking is that you are only online for portions of the day :-0 From your quick responses to members needs I imagined you to be constantly looking over our shoulders :-)


Anonymous said...

Just curious ... what's the AQ SLOC (source lines of code)count at these days?

Ryan said...

I don't really know what the LOC count is on AQ. It's not something I keep track of. It's probably not as large as you might expect, though, since I spent quite a bit of effort trying to make code highly reusable and often spend my time rewriting bad code.

Windows Explorer shows the AQ directory on my development machine is made up of 3,524 files and 355 folders filling up 32 megs. Of course, that also include all those icons, so that's not all code!