Wejoinin Blog

The latest scoop from your friends at Wejoinin

Privacy Thoughts in the Wake of Facebook Beacon

There’s been a lot of noise in the blogosphere lately with concern over the Facebook Beacon. Most folks are worried about Facebook becoming the new Big Brother, recklessly lording over your personal and private data and broadcasting it to your social network.

Today I logged on to see what all the hubbub was all about, and at the top of my profile page there was a small notice notifying me that the terms of use have been updated.

An aside: who actually reads terms of service agreements?

So I clicked on over to browse the TOS and realized, wow, this thing is pretty comprehensive. Can somebody get me a translator? Where’s the part where we talk about data that comes in via the Beacon?

I actually couldn’t find anything. But something has changed. Can anybody help? Perhaps Facebook should have given us a summary of what’s new about the Terms of Service. It seems like the right thing to do, yeah?

Oh yeah, which brings me back to us: We’ve got a rather plain Terms of Service. We’re not about lording over your information, we’re more about telling you in straight talk what our aims and objectives are and how we do our best to help you along. And if we change it, we’ll do the right thing and tell you in plain, simple talk.

Cuz you know, we like you like that.


Rumblings on the Horizon

We’re slowly spinning up for a big release sometime in the winter, so do stick around as Wejoinin gets some new shoes!

How are we preparing to launch?

  • We’re moving servers soon—stay updated as we switch over to the good folks at Slicehost. We absolutely need to move out of our Dreamhost playpen and stretch our legs on a VPS. Nothing against Dreamhost, but we really do look forward to stretching our legs and having full control over our environment. Not to mention the fact we now have the processor cycles and memory resources to run a Mongrel cluster) so we’ll get all zippy, real soon!

  • We’re going to be tweaking our interface soon and adding some features that have been requested in the past.

  • We’re going to be more strict about cross-browser testing. We’ve ignored this in the past, so you may rejoice, ye IE6 users!

Ode to jQuery

I guess Andrew goaded me into posting. I always think of him as the friendly face of Wejoinin, whereas I am the (code) ninja who merely leaves destruction (and lines of code) in his wake.

The move to jQuery was largely started when I one day looked at the Wejoinin signup sheet page and went “holy cow? 150kilobytes of javascript?! what are we doing here?!” I mean, Prototype has a few chins now (and quite an expansive belly), and ditto for Scriptaculous and whatever else that we were using, but 150KB?! There was then a protracted session of slow consideration of different Javascript libraries considering their APIs, their filesize, their compatibi- haha, no I just chose one out of a hat. I chose jQuery.

(Sidenote: I totally went to a talk by John Resig (author of jQuery), and it was totally rad.)

Andrew is looking at me and pointing at his watch. I think I’ve been rambling? Oh where was I?

Right, moving to jQuery turned our 150KB monstrosity of Javascript to a much more sane 40KB or so. The HTML we sent thinned down a bit due to the wonders of unobtrusive Javascript (I got to throw out alot of “remember to call this function whenever you send a header” cruft in the code).

PS: Other things I like about jQuery (other than the 20KB filesize, have I mentioned that yet?) include a rather sane API (I particularly like the whole $(‘#foo’).val() as a getter, $(‘#foo’).val(‘bar’) as a setter business), in depth documentation with examples (Scriptaculous is somewhat notorious for a “whoo I make things ANIMATE” approach to documentation)

PPS: We here at Wejoinin are environmentally conscious, we conserve those bytes because one day they’ll all go extinct, and we’ll be forced to shout packets at each from hilltop to hilltop instead of sending email. (And reordering packets in your head? Ouch.)

Incremental Updates

A couple of interesting features rolling in:

  • I’ve thrown in print stylesheets for those of you who wanted to quickly print out your sheet without the interface cruft and extraneous navigational elements. Next time you’re at a sheet, just hit “print” and you’ll see your sheet come out all nice and fresh and clean!

  • Hsiu-fan’s porting our Javascript code to JQuery. Why? Perhaps he’ll explain in an upcoming post…

Some things you guys have requested:

  • Easier manipulation/selection of signup cells when you’re in the process of creating a sheet.

  • Where are those pre-built signup sheets we’ve promised?!

And some things we’ve got to get started on:

  • A better account interface.

  • A better interface to get you started on those pretty-URLs.

And some other news:

  • Hsiu-fan’s built us a hosted Rhapsody scrobbler in Python and CakePHP. If you’re a Rhapsody listener who wants to hook up your Rhapsody track history to Audioscrobbler/Last.fm, he can do that for you.

Lessons Learned

Man, we totally screwed this one up.  This week’s RSS mishap led some users’ sheets to lose several signups.

One of the dumb things that we forgot to do was ensure a backup system was in place. Since we hang out at Dreamhost, periodical MySQL backups aren’t provided. And since we’re a small two-dude operation (and we only have time to work on this on the weekends), we tend to focus on development and completely overlook small, important things. Like periodically backing up our databases.

So when my friend Joe asked me to back up his sheet (they’re using it over at UCSD Intervarsity), I momentarily panicked. Where’s our database backups? Oh wait, we don’t do that. Doh! Why didn’t we write the simple shell script earlier?

Thankfully, we inspected our Rails production log and manually extracted the pertinent signups and re-inserted them back into the application. Man, it was no small feat. Then I spent five minutes writing the shell script and cronjob I should have done months ago.

I learned my lesson. Prepare for the worst, because Murphy’s Law is alive and well on the ‘Net. Have contingency plans in place. Don’t. be. stupid (argh!).

Did your sheet lose a signup? Now would be a great time to check and let me know. I’d be more than happy to restore them for you.

A little wiser,


RSS Feeds Gone Haywire!

Filed under “Dumb things to do to a production Web site”:

We apologize! We broke the site for you IE and Safari users for a couple days this week (you may have noticed that visiting a sheet caused your browser to detect and read a RSS feed)). We had rolled out a few new features involving RSS feeds for sheet administrators but because we’re a little too Firefox-happy, we neglected to check how it reacted with IE and Safari.

Totally our fault! Let us know if it did anything terrible and we’ll do our best to make it up to you.

(PS: If you’re an administrator you’ll see a little RSS feed icon in your browser upon visiting your own sheet. You’ll be able to start subscribing to these to monitor signups as they come in!)

Your friends, -Andrew and Hsiu-Fan

PPS: read on for the gory details!


In case you haven’t noticed, there’s a link titled “Moo” in the footer. Long long ago, Andrew put it in while he was designing the layout. We left it in (by accident), and I really liked it.

I think sites are more fun when the people who make them have fun. I hate it when companies worry so much about public relations that it sucks all the personality and honesty out of their products. When people look at Wejoinin, it’d be great if people would be able to say “yah, it looks like they had fun making it”.

Because if there’s anything I like more than being awesome, it’s having fun. And “porkbuns initiative”? We’re about that too.

porkbuns? tastier than steak!

Don’t Make Us Beg!

We want to hear you! What irks you most about Wejoinin that absolutely has to change? What is a cool feature you’d like to see?

Picking Up the Pace

Andrew here to remind you gently that Hsiu-Fan and I have not, contrary to popular belief, been hiding under rocks and twiddling our thumbs.

Well, in some sense, we have, because things here at school have been picking up.

But we’ve noticed that more of you guys have been using the site, and feature requests and bug reports (find em and let us know!) have been filing in.

And we’ve been neglecting this site for far too long. We just turn to each other with graven expressions on our faces and once again begin to kick butt.  It’s morphin’ time! No more dead controllers! Views aplenty! Goodbye text links and bad formatting!

Well, we haven’t done it yet.

But it’s coming. Seriously.

(Questions? Suggestions? Email Andrew!)

On Speaking Legalese

Who knows how to write a Terms of Service / Privacy Policy?

We’re not lawyers, and we really hope we’ll never have to meet one in a professional capacity.

Our Terms of Service basically goes (as of now):

We want to do the right thing with your data. This means we’ll keep it as safe as possible and take all the measures we can to make sure it is backed up and available. We’ll never sell your personal information either, because we like you.

But in the event things go wrong, you will promise not to hold us accountable.

Now to translate this into legalese…