Local Events Sites

As a follow-on to my research into Evite alternatives, I also decided to look into sites that allow you to find or promote public events in your area:

  • Upcoming.org (a Yahoo company): Fairly basic public and friend-network social events calendar, providing to opportunity to meet new people interested in the same events. Seems to have a decent number of events, reasonably attractive layout, and RSS/iCal/Yahoo integration. However, the navigation leaves a lot to be desired. Most importantly, you can’t browse by category or venue (though you can narrow a search by category). The network building features seem weak too. For instance, clicking the Contacts link at the top of the page takes you to a page that shows your current friends (which for new users is just a lot of blank space), and allows you to search for existing users one at a time, but nowhere on the page can you invite new users (there’s a link on the home page for that). Also, there doesn’t seem to be any search/invite from address book feature.

  • Eventful: Public events site claiming to have “the world’s largest collection of events”. Browse by topic or venue, with roll-up of event counts in each. Share events through email, digg, del.icio.us, reddit, and Live Clipboard, and add to Eventful, Yahoo, Google, Outlook, Rabble, or iCal calendars.

    In addition to a large number of upcoming events, you can also request events from performers and get alerts on future performances. I’d be curious to know how successful this is. The status of demands goes through Started Demand, Reached Critical Mass, Performer Contacted, Performer Agreed, to Event Scheduled. However, looking through the current top demands, all are in Started Demand, even with 2000+ people. If there has been past success here, they don’t seem to be bragging about it.

    You can also create your own public or private events, including recurring events. The set of event options seems quite rich: description with limited HTML, up to 3 categories, tags, cost, picture, shareable URL, calendar and group. For public events, there’s also an option to allow submitting the event to other event-related websites. I really like the way you can click arrows to grow or shrink the multi-line text boxes. The only thing missing (which Upcoming.org features) is the ability to control guest invites and total event size.

  • Zvents: Public-only event search and sharing, along with friend group calendar sharing. Browse by category hierarchy or venue, though unfortunately event counts don’t roll up to the top-level categories. The look is professional, navigation is easy, and the event pages are quite rich. Nice integration with Google Maps to get a map view of the events in a category, and with Plaxo to access your address book in Outlook, Hotmail, Yahoo, GMail, AOL, or CSV.

  • Meetup: Find special interest groups near you. The site seems well-executed and features quite a few groups (currently 594 within 25 miles of Seattle). I really like the discussion board of new features.

    The downside is the monetization model: the organizer pays $12-19/mo, depending on the billing term of 1-6 months, to start and maintain the group. Personally, I think this is a terrible idea. I wouldn’t want to front $19, $38, or possibly $57 to discover that I can’t find enough interest in my group after a few months. (They offer a 30-day money back guarantee, but that doesn’t feel like enough time to gauge interest.) Even if I found, say, a dozen people, I wouldn’t want to have to collect $2-3 in dues each month to pay for the Meetup group. It seems like there must be better monetization options, or at least a tiered approach based on size of group or amount of activity. I’d love to start a Seattle Hot ‘n Spicy food lovers meet-up, but at these prices, I’ll be looking to alternative services.

Evite Alternatives

[Updated 12/06/09: Indicated dead sites]

I’m getting quite tired of Evite. The ads suck, the layout sucks, the lack of features sucks, etc. It hasn’t changed in at least the last 8 years, except to get slower and include bigger ads. Therefore I started looking for alternatives and here’s what I found:

  • MyPunchbowl: Interesting feature where you can start out with Save the Date or Full Invitation. Cool use of AJAX to integrate with Flickr for invitation image and Google for maps. Features party store locator (i.e. revenue source) and after-party message board and photos/videos. The invitation page isn’t as themable as some, but overall, the service does appear to be a better Evite.
  • Skobee [GONE]: Very nice-looking, professional, icon-driven interface. Supports fuzzy scheduling and the ability for guests to suggest times and places. Really cool email integration: create, update, and RSVP to plans just by cc’ing plans@skobee.com on your emails (check out the Screencast tour). Automatically gets location address, telephone, and map from Google. Except for RSS/ICal feeds, doesn’t have the integration features of some of the other sites. Supports public events, but doesn’t really seem to feature many.
  • Socializr: A very feature-rich clone of Evite. If you once loved Evite, but now just wish it didn’t suck, you’ll probably love Socializr. Integrates well (almost invasively) with other profile sites (MySpace, Flickr, Yelp, …), imports email addresses from all the big free services (as well as Outlook/Plaxo, OS X, and CSV), and let’s you customize your invitations and URLs. I like the way the invitation email includes both the event details and the theme image.
  • Planypus: Shows public events and manages your social calendar in addition to letting you invite friends to both public and private events. Good presentation and use of AJAX. Offers ability to add multiple places and times and have people vote on them. Features blog/web widgets and export to Outlook, Facebook, and Google Calendar. Nice Screencast tour and FAQ. The test invitations I sent arrived at my gmail account immediately, but haven’t made it to my Hotmail account after 24 hours. However, I blame Hotmail, and the Planypus guys are actively working on resolving the issue… They seem to be very motivated to produce a great service.
  • Renkoo [GONE]: Very cute (girly, even), polished, and AJAX-y. Features notifications by IM or text message, contact import from the usual places, calendar export to Outlook/iCalender, Yahoo, and Google, while-you-type location lookup, and flexible time and location.

    (I did run into one usability issue though: By default it sent my invitation to me, which caused it to generate a new password for my account. It’s very confusing when the first page you see after Send Invitation is the login screen and your password doesn’t work… Also, I’m not too fond of the way invitees have to log in with their email address and generated password; there should just be a link in the email dammit.)

  • Goovite: Very simple, no frills, no ads, no business-plan invitations with accepted / tentative / declined / unanswered tallying and option to leave a public or private comment.
  • DarkGuest [GONE]: Also simple, no frills, no ads, no business-plan invitations with image URL, accepted / declined / unanswered tallying, public note, and private response. View the sample invitation. Unfortunately, the operator plans to shut it down soon. For this reason, I’d recommend Goovite instead; it’s almost identical, though there’s no image URL.
  • WhizSpark: Seems primarily focused on commercial event marketing and organizing. Not really what I’m looking for…
  • shindigg: Appears to be a straightforward Evite replacement with much better photo features. However, it’s in limited beta right now, so you can’t use it without requesting to join the beta program. The only public event on it right now is/was Bonza Bash.

All in all, Socializr looks like the best general Evite replacement as far as features go, though the interface isn’t as polished as some. If you want simple and cute, Renkoo is pretty nice (and will match your pink Moto Razr). If you also want calendar sharing and public events, Planypus seems to better in that regard. But if you prefer to use email for your planning, Skobee seems pretty cool.

The Date of Easter

I’ve finally discovered that I don’t have to feel bad about not knowing how to figure out the date of Easter. It turns out the rules are really a bit complicated, but quite facinating if you’re into history or astronomy:

  • Easter falls on the first Sunday following the first ecclesiastical full moon that occurs on or after the day of the vernal equinox;
  • this particular ecclesiastical full moon is the 14th day of a tabular lunation (new moon); and
  • the vernal equinox is fixed as March 21.

The net result is that Easter can never occur before March 22 or after April 25. Oh, and this year, it’s right in the middle on April 8.

Fire Sauce

Anyone who knows me is probably aware that Taco Bell Fire Sauce is my favorite fast food condiment packet. I thought I was pretty fanatical about the stuff until I searched the web…

First I discovered The Condiment Packet Museum, which in addition to almost any other condiment packet you could think of, features photos of the Taco Bell sauce packets with each of their different cheeky sayings. I’m guessing they only show the original series, as I think I noticed some new ones yesterday:

  • Help! I can’t tell where I am. It’s dark and I can hear footsteps.
  • The feeling is mutual.
  • I’m glad you rescued me, Mild was getting on my nerves.

Then I discovered someone’s comparison of Taco Bell Hot Sauce vs. Fire Sauce. I must admit, even I hadn’t thought about it this much. I am anxious to test out the suggested 2:1 mixture of Fire to Hot, though.

Finally, I really need to try making my own from this recipe.

Washington and His Dicks

I have had several recent animated discoveries of such awesomeness that I must share:

C++ Functors

People have asked me several times what I think of “functors” in C++, so I decided to form an opinion (and write it down somewhere that myself and others can refer to). I’ve also always meant to include more technical content in this blog…

My reference material on the subject was an article Chuck provided, Callbacks in C++ Using Template Functors. I felt that while it’s true that all of the functor alternatives shown in the article are obviously undesirable according to the criteria listed (and perhaps other more basic criteria, such as code readability), it doesn’t really seem to show an example of the interface-oriented (i.e. pure virtual class) model, which I believe is the purest way to solve the problem. (By pure, I mean satisfying criteria such as being object-oriented, type-safe, and non-coupled, yet not relying on void* casts and template wizardry.) Here is the example that I feel was omitted:

class Notifiable
{
public:
    virtual void notify() = 0;
}

class Button
{
public:
    void click() { if (m_pnOnClick) m_pnOnClick->notify(); }
    void onClick(Notifiable* pn) { m_pnOnClick = pn; }
private:
    Notifiable* m_pnOnClick;
}

class CDPlayer
{
public:
    void play();
    void stop();
}

class CDPlayNotifiable : public Notifiable
{
public:
    CDPlayNotifiable(CDPlayer* cdp) : m_cdp(cdp) { }
    virtual void notify() { m_cdp->play(); }
private:
    CDPlayer* m_cdp;
}

class CDStopNotifiable : public Notifiable
{
public:
    CDStopNotifiable(CDPlayer* cdp) : m_cdp(cdp) { }
    virtual void notify() { m_cdp->stop(); }
private:
    CDPlayer* m_cdp;
}

void main()
{
    CDPlayer cdp;
    CDPlayNotifiable pn(&cdp);
    CDStopNotifiable sn(&cdp);
    Button playButton;
    playButton.onClick(&pn);
    Button stopButton;
    stopButton.onClick(&sn);
    // ...
}

I believe this satisfies all but one of the “Criteria for a Good Callback Mechanism” mentioned in the article: object-oriented, type-safe, non-coupling, non-type-intrusive, and flexible. The remaining criterion, being “generic”, is of questionable validity. Obviously it’s desirable not to require the user to write repetitive support code, but I think there’s some value to explicitly defining interfaces and being able to write custom binding code. Consider, for instance, how most UI frameworks include an argument on their events that identifies the sending object. If the functor of the Button class in the article included this argument, you could no longer directly bind it directly to CDPlayer::play().

However, the code above sucks in C++ for two reasons: 1) There’s no shorthand way to provide implementations of Notifiable. (Anonymous classes in Java are great for this.) 2) Managing the lifetime of the Notifiable objects is difficult. (Again, with GC in Java, this is not an issue.) In my example, I used pointers, which necessitates ensuring that the Notifiable objects exist at least as long as the Buttons referencing them. In the functor article, this is accomplished by the functors being held by value. This makes sense for functors, which are known to be small and non-polymorphic and to implement a default constructor and operator=(). Objects implementing Notifiable may or may not be small, but more importantly, they are polymorphic and therefore cannot be held by value.

Given these difficulties, functors do seem to be a reasonable mechanism for handling callbacks in C++. I’m curious whether the memcpy() on the pointer-to-member-function in FunctorBase is kosher with regard to the C++ standard, but even if it’s not, it’s the sort of thing that always tends to work anyway.

BTW, in Java, the above code directly translates to this, which seems pretty much ideal to me:

interface Notifiable
{
    void notify();
}

class Button
{
    public void click() { if (m_onClick != null) m_onClick.notify(); }
    public void onClick(Notifiable n) { m_onClick = n; }

    private Notifiable m_onClick;
}

class CDPlayer
{
    public void play();
    public void stop();
}

void main()
{
    final CDPlayer cdp = new CDPlayer();
    Button playButton = new Button();
    playButton.onClick(new Notifiable() { public void notify() { cdp.play(); } });
    Button stopButton = new Button();
    stopButton.onClick(new Notifiable() { public void notify() { cdp.stop(); } });
    // ...
}

The Fishman Affidavit

In reading about trusted computing and censorship, I came across The Fishman Affidavit, which exposes a lot of documents concerning the upper levels of Scientology. Naturally, the Church of Scientology wants the information suppressed, but after almost 10 years of litigation, was ultimately unsuccessful. Fascinating and disturbing, it even includes Hubbard implying that Jesus was a homosexual and pedophile (in a passage that the Church itself first claimed a forgery, then asserted copyright ownership of): “the historic Jesus was not nearly the sainted figure [sic] has been made out to be. In addition to being a lover of young boys and men, he was given to uncontrollable bursts of temper and hatred”. Alrighty then…

A New Pope

Described on YouTube as “coverage of a sci-fi ceremony in a galaxy far, far away”, A New Pope is the Pope’s funeral from last year with a Star Wars-style soundtrack.

Also from the author’s blog, the “Bin Laden press release” is quite funny, especially if you’re a fan of Ali G.

Save NPR and PBS (again)

Everyone expected House Republicans to give up efforts to kill NPR and PBS after a massive public outcry stopped them last year. But they’ve just voted to eliminate funding for NPR and PBS—unbelievably, starting with programs like “Sesame Street.”

Public broadcasting would lose nearly a quarter of its federal funding this year. Even worse, all funding would be eliminated in two years–threatening one of the last remaining sources of watchdog journalism.

Sign the petition telling Congress to save NPR and PBS again this year:

http://civic.moveon.org/publicbroadcasting/

Read the Boston Globe story on the threat to NPR and PBS:

GOP takes aim at PBS funding

Urbancougar

I met up with the guys for some beers last week, and I learned of a fascinating phenomenon and the web site that chronicles it, the Urbancougar. No young man should go out drinking without consulting this site, paying special attention to the classifications.