Tags: co-op

Co-op API + Group Announcement

Oh yes, just in time for the holidays: Co-op API.  Now you can extend and build on top of your favorite team collaboration program.  Let us know if you have any questions, and we’d love to see what you do with the API.

Also: Group Announcement in the side column, so group admins can write messages for the entire team to see.  Note: only administrators of the group can edit the group announcement (you can choose who the admins are via Settings > Manage Group).

Thank you for using Co-op, and we hope you find the latest updates useful!

Tags: co-op

Co-op Thanksgiving Upgrade

We’re moving the Co-op database to somewhere better, more powerful, and probably warmer.  So our favorite collaboration tool, Co-op, will be taking a 1-hour break sometime around 12:30am Eastern Time.  For everyone who’s not in the United States and not living on the better coast, check what time that is for you.

Tags: co-op
I demo’d Co-op last night at the monthly NY Tech Meetup.  Aside from being able to tell people about our latest baby, it’s always great to meet all the people in NY who are also working on various interesting projects.  Here are a few noteworthy NYC startups we shared the stage with last night that you should get to know:
FreshmanFund - an easy way to start saving for your kid’s college fund (and allows gifting of college funds so you don’t need to give that new parent another baby blanket they already have).
Glue - an interesting way to discover what your network of friends like and consume in music, books, movies, etc. without the confines of any one social network.
Cookstr - not just another recipe site, this one will feature recipes from some of the best know cook book authors and chefs in the industry.
Wee Web - a private way for parents to document and share updates about their kids (founded by former Meetup.com co-founders).
MixedInk - a document collaboration tool that seems great for groups.
Without a doubt, New York City has become home to more and more design and technology companies through the years, and despite all that is going on right now in the macroeconomics picture, a visit to a full-capacity NY Tech Meetup offers a glimpse into the city’s interest and passion for design, web, and technology.

I demo’d Co-op last night at the monthly NY Tech Meetup.  Aside from being able to tell people about our latest baby, it’s always great to meet all the people in NY who are also working on various interesting projects.  Here are a few noteworthy NYC startups we shared the stage with last night that you should get to know:

FreshmanFund - an easy way to start saving for your kid’s college fund (and allows gifting of college funds so you don’t need to give that new parent another baby blanket they already have).

Glue - an interesting way to discover what your network of friends like and consume in music, books, movies, etc. without the confines of any one social network.

Cookstr - not just another recipe site, this one will feature recipes from some of the best know cook book authors and chefs in the industry.

Wee Web - a private way for parents to document and share updates about their kids (founded by former Meetup.com co-founders).

MixedInk - a document collaboration tool that seems great for groups.

Without a doubt, New York City has become home to more and more design and technology companies through the years, and despite all that is going on right now in the macroeconomics picture, a visit to a full-capacity NY Tech Meetup offers a glimpse into the city’s interest and passion for design, web, and technology.

Tags: co-op
Tags: co-op
Caching is not enough: spite of having Co-op to serve nearly all requests by gluing together memchached content after going live things were just slow compared to what you would expect from quad Xeon servers. 

Whenever a cache item became stale we have to go out via an API and refresh the missing pieces from the cluster running Harvest. Going trough logs it revealed that processing the API output was significantly more expensive than just generating the XML on Harvest side. 88+ seconds for just parsing an XML file that took a few milliseconds to produce … just not reasonable.

It turns out that the XML parser used by the Hash.from_xml method  or ActiveResource in general has a horrible performance. The larger the input worse ActiveResource behaves. Enter Libxml to the rescue, there are countless benchmarks claiming 10x speed improvement. If anything I think they are an understatement as Libxml mostly has a linear performance that cannot be stated about XmlSimple shipped by default with rails.

The graph above shows how CPU usage looked before with libxml and after. As you see speed is just one factor. With libxml I can actually increase the ruby processes to handle much larger traffic, whereas a with XmlSimple can tie up an entire cpu core. Libxml is more scalable.

If your XML processing needs limit to consuming REST resources via  ActiveResource the fix is simple dead simple. Just install the fine FasterFromXml plugin  by Brian Durand.

Caching is not enough: spite of having Co-op to serve nearly all requests by gluing together memchached content after going live things were just slow compared to what you would expect from quad Xeon servers.

Whenever a cache item became stale we have to go out via an API and refresh the missing pieces from the cluster running Harvest. Going trough logs it revealed that processing the API output was significantly more expensive than just generating the XML on Harvest side. 88+ seconds for just parsing an XML file that took a few milliseconds to produce … just not reasonable.

It turns out that the XML parser used by the Hash.from_xml method or ActiveResource in general has a horrible performance. The larger the input worse ActiveResource behaves. Enter Libxml to the rescue, there are countless benchmarks claiming 10x speed improvement. If anything I think they are an understatement as Libxml mostly has a linear performance that cannot be stated about XmlSimple shipped by default with rails.

The graph above shows how CPU usage looked before with libxml and after. As you see speed is just one factor. With libxml I can actually increase the ruby processes to handle much larger traffic, whereas a with XmlSimple can tie up an entire cpu core. Libxml is more scalable.

If your XML processing needs limit to consuming REST resources via ActiveResource the fix is simple dead simple. Just install the fine FasterFromXml plugin by Brian Durand.

Tags: co-op

Some Co-op Stats

So, we’re gonna open up the inner workings of Co-op: share some numbers, talk about how we’re developing the product, post some sketches from the office, etc.  And if you have any questions about Co-op or how we work in general, feel free to ask.

Now, some stats.  Since Co-op launched on last Monday (Oct 20), our marketing site (not including the traffic from the actual usage of Co-op, which we just started tracking…) has gotten a total of 17,381 visits.  Some observations on where the traffic has come from:

  • 10% of it came from LifeHacker (our #1 referrer), and that led to Co-op being on delicious popular (our #3 referrer).
  • Twitter accounted for 2.40% of the traffic, which is significant, and surprising.  When we launched Harvest some three years ago, there was no Twitter (how did we survive then!?).
  • Some people found us via Google: 6 visits came from people looking for Yammer (you should read this article comparing them with Co-op).

In Co-op, so far we have 4500 users, 2418 groups, and 12415 notes.

And how long did it take for us to build Co-op?  About 390 hours (according to Harvest) and since we launched, we’ve spent about 74 hours improving it (we’ll talk about some of the new features here, soon).

Tags: co-op

Degrading polling

Co-op went live to the general public last Monday.  While Co-op successfully completed a beta period, this was no test for getting Lifehacked and delicious-populared.  In the late afternoon here in the US the service slowed to a crawl.

When the main workstream of a Co-op group is open, the browser polls every minute to check for new messages.  This is fine in the short term, but as more and more people signed up to try Co-op, more and more browsers were polling on the minute.

As of yesterday evening, Co-op now degrades that polling over time.  The longer a Co-op session sits idle without making any updates, the further apart browser polls occur.  We now keep track of when you last interacted with Co-op.  Every time one of these AJAX poll requests comes through we compare the current time to your last update time.  After 10 minutes of inactivity, polling changes to every 2 minutes.  After 1 hour of inactivity, polling changes to every 5 minutes.  After 2 hours of inactivity, polling changes to every 15 minutes.

We still have many performance improvements up our sleeves.  Our unique integration with Harvest time tracking also gives us unique problems to solve.  We are happy to continue solving these unique problems because we feel strongly that time tracking integration is a vital attribute to making a tool like Co-op truly useful.

Tags: co-op

What is Co-op?

Mason Brown of IQ Interactive summed it up nicely:

Co-op is a free web app that allows co-workers to stay connected. It’s like Twitter meets Basecamp. It shows what you are working on, what is our daily agenda, and what we worked on yesterday. In addition to the status updates, and daily agendas, Co-op also offers time tracking. Co-op is a great idea for the workplace so that anyone can view everyone’s status without disrupting anyone or having to leave your desk.

Case Study #1:
Ravi needs a designer for an hour to complete a small task, but he checks the resourcing spreadsheet and everyone looks booked. Instead of running over to the creative suite and asking around to see who’s currently working on what, Ravi could login to Co-op and glance at the designer’s status messages. In Co-op he can see that Kat is already focused on a project with an end-of-day delivery, while Casey is working on an internal project and appears to have more availability.