Evite to Google Calendar Greasemonkey Script

I've been using Google Calendar for a while now. It's not perfect, since I can't sync it with my home and work Outlook calendars. That would be perfect (have GCal do a bi-directional sync with Outlook), but in the interim, the fact that I can have my calendar send me SMS alerts and have it automagically pick up calendar items from GMail are enough to make it worthwhile for me.

The only annoying thing has been the fact that Evite (which is still really widely used) doesn't have a "add this event to your Google Calendar" link in their interface, and I'm guessing, probably never will, as GCal has some Evite-like functionality, and Evite probably views that potential loss of ad revenue as too big of a risk. I won't debate the validity of that argument, but simply say that I was getting frustrated at having to hand copy events from Evite to GCal.

I'd remember that I'd always want to write my own Greasemonkey script. For those unfamiliar with Greasemonkey, it's a Firefox extension that allows you to insert content/functionality into an existing website. For instance, until Gmail added a delete button (a ridiculous UI oversight), there were numerous Greasemonkey scripts that let you add your own delete button. Pretty cool stuff. There's thousands of scripts out there, most of which are just designed to increase the usability/functionality of some of the most popular web sites.

So I started hacking. It took me a while to get my brain back up-to-speed on Javascript, and then it took me even more time to work through all the hoops I needed to in order to get the info out of the Evite interface and into one that Google Calendar would like. After a few hours of hacking, my crude code was working. I had a nice link in the left-hand "tools box" on Evite, right under the "Add to Outlook" link that says "Add to Google Calendar." When you click it, you get a Google Calendar Add Event page, with the data pretty filled.

So, I thought I'd share the script, for those who have wanted to do the same thing. It's available right here:

Evite to Google Calendar Greasemonkey Script

If you take a look at the code, you'll notice is really, really, really hacky. I wasn't quite smart enough to come up with an elegant way of translating the human friendly Evite time to less human friendly Google Calendar URL time. I tried some of the built-in Javascript UTC time conversion functions, but they weren't having any of it. So I hacked my way around it.

I've already noticed one bug -- if you don't have a defined start and end time, it won't create the link at all. I'm not sure how I'll handle that (probably check to see if there's a "to", and if so, define the end time), but for now, it'll cover the majority of invites with a start and end time.

I think.

I'll gladly take any suggestions, improvements, bugfixes people want to send my way. Like I said, this is one of the hackiest hacks that ever hacked a hack, and it's very likely that much of what I did was stupider like a fox.

If you find it useful, please let me know. I'll at least use it until Evite decides to add it themselves.

Son of a Beach or ColdFusion Sucks

I'm taking a couple days off from work and heading up to the beach for the day with some folks. Should be a nice break from the ColdFusion-rich days I've been spending at work. We're working on a project to take ColdFusion users from being spread out across our Windows servers and move them to their own Windows servers, where poorly written code can't take down other, non-ColdFusion pages.

I'm not a big fan of ColdFusion. I can understand why people would use it if they're not particularly skilled developers, but once you know enough to use ColdFusion well, it seems like you'd want to use ASP, Perl, Python, Ruby, PHP ... something .... anything else. ColdFusion runs through Java, so it tends to be slow when you're running it through IIS. Making things worse, we've discovered that ColdFusion's default JDBC-ODBC bridge is pretty much crap. When you get 12 concurrent database queries, the ColdFusion ODBC service dies. But not gracefully, it gets stuck in a state where it can't be stopped or started. The box has to be rebooted.

Why does this suck royally? First, because ColdFusion users (at least those using our service) tend to write really crappy code without closing their queries and sometimes running queries within queries, and they can hit that 12 concurrent database queries pretty quickly. But the bigger gotcha, the bigger kick in the junk, is that ColdFusion is installed as a wildcard script map in IIS. That is every single page request, ColdFusion or not, goes through ColdFusion for ColdFusion to decide whether or not it wants to handle it. So when ColdFusion dies, NO PAGES GET SERVED FROM THAT BOX AT ALL. It's really quite annoying.

Yes, there are some things we could do to mitigate it. The logical one would be to remove the wildcard script map, but that actually breaks ColdFusion (some wonderful work you've done their, Macromedia/Adobe).

So, we've actually decided to segment ColdFusion users and use a native JDBC driver rather than the ColdFusion JDBC-ODBC bridge. I've spent the last few weeks of my life on this, moving customer sites, testing, writing Perl code to automate the process. It's been fun taking existing ColdFusion DSNs and recreating them in the new format. It's been more fun finding out the various little things that the new JDBC Microsoft Access driver doesn't support that the traditional ODBC driver does. (Hey, for some ridiculous reason you've got an Access replicated table? Fantastic, the JDBC driver won't read it. Hey, you're using RND in your query? Fantastic, the JDBC driver doesn't support it. Hey, you're using a raw 'Yes' in your query to match a checkbox column. Fantastic, change your query to != 0 to pick up the positive values.)

It's been a long few weeks, but it's gone pretty smoothly, all things considered. But I hate ColdFusion, and I hate Access.

Thus, I'm off to the beach. Where there will be no ColdFusion. And no Access. Just my iPod, newly loaded up with all of the episodes of the Band in Boston podcast, as pointed out by Bostonist. I'll be back soon feeling refreshed and ready to deal with more ColdFusion fun.

Ch-ch-ch-changes

So I said I was going to eventually change my theme. I was fixing up some of the other sites I help run (Dewey's House, Blair Wasdin Project, Chair Chuckers), and I got motivated and decided to start messing with my site.

I was browing the WordPress Community Theme Viewer and came across this one by Lasse Havelund and I was smitten. Not the perfect color scheme, and I need to make a new header image (gotta find out if The Gimp can read PSD files ... I think it can!), but damn, it's nice looking. I've been making some small tweaks here and there (changing where the comment text goes, some sidebar rearranging and changing, and the nifty digg! post icon). The big thing will be a new header image.

Of course, I just mucked around with Gimp for a while and it sucks dealing with PSD files (well, with layers), so I'm probably going to have to find someone who's got Photoshop and actually make some real edits. Or maybe I'll just go with my craptastic Photoshopping skills.

Thankfully, I know some folks who are good at this sort of thing. Because I suck at the Photoshopping.

A free beer for whomever can come up with a better header image.

Studio 60 on the Sunset Strip

I've watched the Studio 60 on the Sunset Strip pilot twice now. It's really, really, really, really awesome. If you liked Sports Night or The West Wing, I have no doubt you'll like this show. The pilot is unmistakeably Aaron Sorkin, and after 4 seasons of TWW, it's pretty much impossible not to dig Bradley Whitford and Timothy Busfield reading his dialogue. And given how great Matthew Perry was in his short run on the show, he's pretty much perfect as well.

I'm going to do a pilot blow out in the next couple of days (thanks BitTorrent!), once I watch two more that I have on my hard drive.

The early results:

  • Studio 60: ++
  • Aquaman: --
  • Heroes: +
  • Kidnapped: meh

Big Breakfast

I just ate a McDonalds Big Breakfast.

I'm sure I'll regret it later. Like, on-the-crapper-as-my-insides-slowly-ooze-out regret it.

But, for now, it was a really good choice. Sooo tasty.

I Can Walk Like a Penguin!

Ah, YouTube. Is there anything from my childhood that you can't find?

Nope. YouTube, you are the greatest ... I really hanker for a hunk of cheese.

"Hello, Appetite Control? Need more protein. Playing tennis today, you knoooow!"

OK Go -- Masters of the Music Video

I've written about OK Go before. They play some power pop. I'm a fan of the power pop. They put out an album last year that was pretty good, and the song "Do What You Want" was one of my favorite songs of last summer. Oh, the memories ...

OK Go got some notoriety when they put out a video for the song "A Million Ways." It's a video that harkens back to the old days (and certainly has a nod towards the work of Spike Jonze) when videos were more about drawing attention than whatever it is that videos are these days. Good videos have always been about being out of the ordinary (think "Da Funk" by Daft Punk, "Everlong" by Foo Fighters, "What's Up, Fatlip?" by Fatlip, "Weapon of Choice" by Fatboy Slim).

The video for "A Million Ways" fits the bill:

OK Go's new single is for their song "Here It Goes Again", and I think the new video has upped the ante:

Skating across treadmills! Synchronized treadmill dancing! Lip syncing! Fantastic.

Late to the game on Lily Allen

I'm sometimes a little late to the game when the new band blows up on MySpace or the mp3 blogs (though I've found that elbo.ws helps me keep up a bit better). I also keep an eye on Ben Loves Music, which overlaps my musical tastes pretty well (and since he's a DJ, it means that I can find a place where I'll know the words to all of the songs).

Anyway, point being, Lily Allen's been all over the place and I just hadn't bothered to check her out. Mostly out of sheer laziness.

I'm reading my RSS feeds (at some point I'll throw up an OPML file of the feeds I read), and there's a post about the latest setlist ... I start reading because it starts with Weezer's "No One Else", which is a great tune and one I'd never expect to hear played. Five tracks later I'm floored -- Lily Allen covering the Kaiser Chiefs' "Oh My God" ... this I have to hear.

So a few Google searches later and a trip to a couple of blogs to find the song, I've got it downloaded. And it just flat out rules the school. Enough to make me go check out a bunch more of her stuff. What I've heard is good. Very Brit-pop mixed with hip-hop mixed with a metric ton of sugar. I'll probably add it to the list of things to try and pick up (like Ambulance LTD's new EP) in the next week or so.

(Or maybe I'll finally just get myself the disposable credit card number so I can start using allofmp3.com.)

The Pain of Shared Web Hosting

The company that hosts my site, DreamHost, has been experiencing some serious problems recently. Hardware dying, power outages, and just general instability has caused this site to blip up and down a few times, and has caused more outages for The House That Dewey Built. DreamHost does a nifty thing and has a little bit of transparency into the process through their status blog, where they attempt to keep folks up to date with what's happening on the hosting side. It's a really great idea, assuming you have the stomach to expose yourself to the world.

Having worked in the shared web hosting industry for about 10 months now (not at DreamHost), I can relate to the troubles they're having. No matter what you do, hardware dies in unforseeable ways, and when that happens, occasionally backup hardware goes down too. Or one problem masks another, and you peel back the layers until you get down to the main issue.

In a dedicated hosting environment, this usually means you take down a server or two and have a couple of expensive customers mad at you. It's usually a manageable situation.

In a shared hosting environment, each problem means potentially thousands of customers have an issue, and it means they come looking to you for answers.

This DreamHost Blog post is a pretty good example of what can happen when you expose yourself to your customers. You get the good:

The thing that Dallas didn’t say, is how smooth DreamHost is taking it, I had my doubts about the company before I signed up, but this week has proven that I made no mistake, and that the admins know what they are doing.

Good job DreamHost, lets hope next week brings better luck.

And you get the bad:

My clients are frying about the recent reliability issues. I am loath to move them (over 100), but clearly DH needs to spend more of its profit margin on hardware!

Can we all say, together, “R E D U N D A N C Y” ! !

And, if your landlord can’t seem to get its power systems stable maybe they need to be sued for non-performance.

We’re using DH for business, not for play. It’s got to be more reliable

Maybe Dreamhost will be nice enough to cover all of the ad sales I’m losing off my website. Now it’s JUST my ad server database that’s down… they’re really sticking it to me…

Again, I love transparency, and I think this is just some of what you have to deal with when things go wrong. I wish the company I worked for was more transparent sometimes (and, the reason I'm not being transparent about where I work is because, as a corporation, I don't think they're ready to be transparent just yet, which is unfortunate).
And, again, you'd think that I'd be right there griping with the rest of the masses, given that this has affected *my* site.

But I'm not.

Because I've seen the other side. I've *been* on the other side. I've been the guy trying to explain to a customer why their site was down, or why it's still down, or why it may not be back up right away. The customer never sees the planning side--they just assume when something goes wrong that it was preventable and someone's fault. Sometimes it is.

Sometimes, however, it's the customer's fault. Let me explain ...
DreamHost is a shared web hosting provider, and a low cost one at that. They spread a bunch of sites out across servers, to better utilize the resources of the server, and they make money off of the folks who barely use their sites. The 5% of users who completely pillage the servers are money losers, but they're the price you pay for bringing in all of the less active users. It's all about economics and economies of scale.

Here's where customers are to blame. They expect that the slice of the server they're renting for $7 a month is *theirs* and they should be able to do whatever they want to it. If they want to run a CGI script that uses 100% of the processor, why not? If they want to move all of their binary data into their MySQL database so that they can pretend that they're not really using any web space, who are you to argue that they're killing the database server? They're the customer, they've paid for their chunk of the server.

Well, yes they have. But it doesn't give them the right to kill things for the rest of the folks on that box. Unfortunately, most shared web hosting customers don't think about things in those terms, in terms of a community. They just think about the site they own.

This is what leads to problems. The 5% of customers complain that they want to use cron, and 5% of a big number (total customers) is a big number, so you give them cron. Then they bog down the server, so you spread them out to other servers, which they then bog down. Replace cron with anything (unlimited databases, unlimited bandwidth, multiple websites on the same account, etc.). All propositions that lose the host money, but are done with hopes of attracting a large enough clientele to make it a winner.

But all of the additions occasionally come with the cost of downtime, or instability, or whatever. It certainly sucks, and it's not excusable, but it's shared web hosting.

So I say to the fellow complaining about his ad revenue: why the HELL are you on shared hosting if it's so important to you? Spend the money and get a dedicated host.

If your site is so important that it can't afford downtime, you should be paying for a dedicated host. It's that simple. The 5% of customers who cause server problems are almost inevitably the same ones who should be on dedicated hosting. Remove them from the mix and things would be far more manageable.

The flipside is that you can't drive them away. You can't afford to. They're the advocates. They're the folks who pimp the hosting (and get their affiliiate kickback) and bring in the other 95% who make the money. It's a double-edged sword, and one that's made all that much tougher when a company like DreamHost takes an admirable stance and tries to be transparent. It's the same thing that Jason Calacanis has been discussing with his offer to pay DIGGers to post stories on the new Netscape DIGG-alike--your most active users tend to be partially responsible for the success of your product (even if they often cost the most).
Shared web hosting is a fun, exciting, and often stressful biz. Doing it naked can sometimes bring the pain, and I can relate to what the folks at DreamHost are experiencing.

Now please make sure my site stays up.

Recent CD Reviews

I've picked up a few CDs since the last time I posted a review ...

Snow Patrol -- Eyes Open
I completely dug Snow Patrol's last album (Final Straw), and this one starts out like my fave song from that disc ("Spitting Games"). "Hands Open" is pretty darn great. Then it devolves into an attempt to make a bunch of songs that sound like "Run" and it just gets a bit boring. Not bad, just boring.

Nada Surf -- Let Go
Liz recommended I check this one out when I mentioned that I really liked The Weight is a Gift. This is really good too. Not as thoroughly good as TWIAG, but definitely good. The only thing keeping it from being fantastic is two missteps ("Fruit Fly", "La Pour Ca"). The rest --- solllidddd.

Guster -- Ganging Up on the Sun
Probably my least favorite Guster album. Not because of the lack of hand percussion, but simply because it's got so little energy. It's a good poppy album, but it just lacks any sharp edges. "The New Underground" might be the best little indie rock song they've ever done though.

Mr. Lif -- Mo' Mega
Adding some hip-hop to the mix. I love Mr. Lif. He's always got ridiculously complex lyrics, beats that support the rhymes, and a the closest thing to the mind of Chuck D. Except on this album. "Fries" would have fit in on any album he's ever done. "Murz Is My Manager" has the tightest beats and is probably the most fun song Lif's ever done. "Washitup!" is the worst song he's ever done. Lif went away from politics on this album, and while it's good, it's just not as good (that seems to be a theme ...).

Mittens -- Fools on a Holiday
Mittens is a local band that sounds a bit like if The Shins holed up and listened to Elvis Costello and Jonathan Richman, and then turned up the folk dial a bit too much. They're light and easy and great live, but not quite as good on disc (or iPod). I actually dig this one a bit more than their self-titled debut. It's just a bit grander.

As Fast As -- Open Letter to the Damned
I picked this up because I heard "Florida Sunshine" and think it's the fucking rock song of the summer. It's probably the best power poppish stuff I've heard in a while. It's not a fantastic album, but it was cheap at Newbury Comics, so I grabbed it and it was worth the dough. There's maybe one back track on the whole disc.

There you have it. A bunch of mildly disappointing discs, with one real winner. I'm not really sure what CDs are coming out soon, but I'm thinking about picking up some older stuff from an online source cheapish, so the next set of reviews might be of some older Sufjan Stevens or The Smiths or something equally silly.