2008-02-28

Whale Watching in Point Reyes

Point Reyes National Seashore is a national park about 1.5 hours north of the bay area peninsula. Its is a massive park, definitely my favorite that is this close. It is billed as the westermost point of continental land anywhere nearby and hence has certain wildlife that can't really be found elsewhere as readily, mainly birds.

This time of year (in general) is the Gray Whale migration. There are several places where one can see the whales from the CA shore (ie: without getting in a boat), but one of the best is probably the Point Reyes lighthouse. Cristin and I stumbled up to Point Reyes one weekend 2 years ago not knowing about the whales and got lucky: the lighthouse had already had dozens of sightings and were seeing another whale every 10-15 minutes. We probable watched whales go by for about an hour if not more. Not close enough to take photos, but definitely close enough to see them. Probably not worth the drive for itself, but Point Reyes is beautiful in it's own right.

I was up there about a month ago looking for whales, but the whales were a little late (or I was early, not sure). I snapped the above photo from the visitor center so I could remember when the peak season was. If anyone is interested in heading up there in about a month at the real peak season, let me know - I'll probably be up there some coming weekend.

2008-02-10

Building a site from scratch

I've been working on a website for my sister lately instead of writing blog posts. This was the source of inspiration for my last post Why Language Wars. I thought I'd blog a little bit with an update.

My sister is an aspiring artist in Tulsa, OK having graduated from Art School last year in Kansas City, MO where she was also running her own gallery. She no longer has the gallery but recently did a new show with new work in Tulsa at the TAC Gallery. She also recently changed her name from Sarah to Grace. All of these changes mean that her website needed some significant changes as well.

When I originally put together GraceGrothaus.com, It was SarahGrothaus.com. There were some interesting constraints:

  • Grace is not an expert in HTML, although she is also far from computer illiterate.

  • I am an expert, but I don't have alot of free time on demand nor knowledge of her business.



To satisfy these constraints, I decided that everything that I could make editable by Grace I would:

There is a "news" section on the site which gives readers information about upcoming shows, what Grace is working on, etc. While nowhere does the website say "blog", I used Movable Type for this news section and then customized the templates to get away from the idea that the site is a blog. In fact, the front page only has short snippets from the 3 most recent blog posts, not at all like this blog. The front page is primarily used to showcase the style of the current artwork.

More constraints:

  • We need non-blog pages: contact page, about the artist, the front page even.



Since we were using movable type, I went ahead and just used the templating system for all of the "static" pages like the "contact" page or the "artist" page. This way Grace can edit the static pages directly - while she isn't an HTML expert, it isn't too tough for her to change colors, text, and links within an already designed page.

More constraints:

  • Needed a photo gallery that allowed for the audience to see full-size versions of the art

  • A significant chunk of her audience is still using low-speed internet connections

  • The photo gallery needed to be a customizable template, to look professional, a link to flickr or picasaweb would unfortunately not suffice.

  • Grace is not an expert in web technologies - it needed to be reasonably non-technical for her to make changes



Any artist website worth it's salt has to have a gallery of art. I originally set this up using Gallery. I hacked around with Movable Type a bit so that the Gallery templates could be controlled directly through Movable Type just like the static pages - again making everything as customizable for Grace as reasonably possible. Gallery itself has a separate login for uploading photos, but beggers can't be choosers. I played with SmugMug as a solution here for awhile, but while it was more customizable, Grace didn't find it much easier to use and it was expensive (Gallery=free).


  • Lots of websites. Over a few years, we had registered SarahGrothaus.com (Grace's old name), GrothausPearl.com (Her physical gallery's website) and GraceGrothaus.com



This constraint was nicely solved by the fact that I lease a physical server in a datacenter which I use for projects like these - I can host as many domains as I want, the limit is hardware (cpu, bandwidth) not distinct urls/domains/etc. I just set all of these domains to 301 to GraceGrothaus.com.

The only other thing needing doing was Analytics. Grace already uses gmail, so she has a Google login - it was a no brainer to drop in Google Analytics.

It is interesting how much you can do for nearly free (sweat equity) if you have a box somewhere that you can host stuff on. Go check out the site at GraceGrothaus.com and let me know what you think.

2008-02-01

Why Language Wars

I figured it out. I'm sure you all know this already as usual.

I know my way around the web browser, HTTP, networking, etc as well as a good mechanic knows his way around engines and things that are in cars (clearly, I know nothing about cars). At work I can whip up a web server front end that does some amazing things in a couple of hours. I'd grab a Google infrastructure C++ low-level performance server to do the networking and process management grunt work, slap a python layer on top of it for fast UI prototyping, hook in a sane but rich templating layer, iterate a few times on the interactive code, and wahla - whatever real "function" I wanted to get done will take shape very very fast. I feel comfortable here in this mode, I'm used to it, I move really fast.

It didn't always use to be this way. Before Google I would do the same thing, but instead I'd create a new apache conf file on a linux server I was already running, HUP the server, run a few mysql CREATE TABLE commands, drop some php in a directory somewhere, and off I was running on the real code.

I just tried to do this again with my old linux server and it was hard. In fact, so hard that I pretty much gave up. I couldn't wget files I wanted because the server firewall was locked down hard (by me), so I scp'ed them in the other direction. I then couldn't run some third-party code because my php version is too old, but I'm not confident enough to risk messing up apache and all of the other hundred or so running sites by trying to upgrade that tonight. I see myself cursing the LAMPhp stack as stupid and clearly inferior to my Google Server / Python / Django Template stack that I hack around with these days. But if you step back even just a little, it's clear that the stack shouldn't even be any more than a peripheral concern. The app is what matters: In my case, there are virtually no performance concerns, the complexity of what I want to do is very small so the language can't matter. What matters is knowing what is familiar. This may not be true if I embarked on a serious project, but for what I want to do, it doesn't matter. Still, I can't shake this feeling that my more familiar stack is inherently far superior than my less familiar stack. I don't understand why I feel this way, but I can understand that this feeling is the why for most language wars. I wonder if most people use different languages and technologies enough to really realize this.

There are probably some inherently bad languages for any given project, but probably most common languages out there are good enough to not make much difference. Hear that Paul Graham and your Arc/Lisp or Steve Yegge and your NBL? Languages don't really matter, the fact that your project runs on language X is not a competitive advantage. Let me repeat that with some oomph: The fact that your project runs on language X is not a competitive advantage. The fact that my project runs on someone who just wants to get the application (aka: the job) done might actually be a competitive advantage.