The Daily Peanut

The official blog of PBwiki

Why I’m Glad We Ship Bits

  • Filed under: General
Monday
Jan 22,2007

shipwreck


There are certainly have challenges involved in sending millions of pages to hundreds of thousands of regular users. Mainland China blocked us, sometimes there are net hiccups, servers crash, etc. But at least we don’t need to deal with having to close up shop because the ship carrying all of our inventory ran aground off of Alaska’s coast.

Monday
Jan 22,2007

totw-banner.jpg

PBwiki has now unveiled the new Point-And-Click editor, and it’s coming along nicely. Although there are still a few formatting snags, I have yet to see a web-based rich-text editor not go through a few growing pains (I’m still mad enough at Wordpress’s editor for eating up my code last time that I wrote this entire post in HTML).

But rich-text has its place, and the new editor has many innovative things going for it, like the ease with which you can insert media and files. But of all these innovations, probably the most powerful is the plugin system, which allows you to extend your wiki in all kinds of fun ways. Read the rest of this entry »

Case study: clipclip.pbwiki.com

Thursday
Jan 18,2007

I interviewed Chih-Chao Lam, who runs clipclip.pbwiki.com, to understand how his team uses the wiki — and how they got it to look so beautiful.

clipclipwiki

clipclip
How do you use clipclip.pbwiki.com?
Initially, we wanted to get user feedback. But mostly, it’s for internal use now to get everyone on the same page, to get product plans, to compile lists of things we want to do. Ad hoc collaboration. The product we’re working on is a few things: Clipclip.com is a web2.0 service, and the primary feature of it allows you to clip things off any page. URL.com is a social metasearch engine that we just launched.
Why’d you choose PBwiki?
Primarily because I met David Weekly at SHDH and heard about it. We tried several others including the Track Wiki, and we liked it best because it was simple to use and things worked. The simplicity of it meshes well with HTML. What has been the biggest surprise for you in using PBwiki?
Good clip of features that you’ve been gently been introducing over the last year. For example, intermingling HTML and Wiki syntax together, and both working seamlessly was a nice surprise. Would you recommend PBwiki to others?
Yeah, and I have! I tell them that it’s really easy to set up if they need something lightweight collaboration, it’s a good tool.

Your wiki is gorgeous. How’d you do that?
We wanted it to be community-focused, and we wanted to mesh it with our own web site (http://clipclip.org), so we wanted to make it look consistent. It took our designer maybe a day’s effort.

How do you think has PBwiki helped you succeed?
Because we’re so distributed and we work in such an ad hoc fashion, it’s a great collaboration tool. It’s a great communication tool. It’s a great way to get everyone on the same page.

Sachiko Kwan

Sachiko Kwan, the wiki designer

To be a featured case study on PBwiki, email ramit@pbwiki.com

-Ramit Sethi, PBwiki co-founder

Monday
Jan 15,2007

totw-banner.jpg

Addition: 9:44pm, January 9, 2007
I address some of the changes to the wikilets below (click here).

Wikilets, or PBwiki pages embedded in other webpages (PBwiki or otherwise), have been around for a while, and although the feature has yet to go past the “alphaâ€? phase, it’s become a pretty ingrained part of PBwiki editing. It’s often useful for including wiki pages in non-wiki sites, or to have content from one page in another without reproducing it manually. Read the rest of this entry »

Friday
Jan 12,2007

totw-banner.jpg

(This is it folks, the inaugural edition of my PBwiki Tip of the Week. Most people know me better as “vietmusic” of the PBwiki Forums, where I offer advice on WikiStyle syntax, CSS, Javascript, and how to pick up hot dates. After today, expect regular updates every Monday!)

Wikis are about collaboration, which doesn’t work so well when your work is scattered and messy. The following tips are designed to fix that problem, tightening up the process from multiple angles. Without further ado…

Read the rest of this entry »

Who’s using PBwiki? (Part 1)

Thursday
Jan 11,2007
Check this out: one of our PBwiki users.
A PBwiki user
We’re always thrilled when we see pictures of actual people who are using PBwiki. It makes our day! So stay tuned for more pictures of real PBwiki users. To be featured here, email pics@pbwiki.com! One lucky person will win a free lifetime Platinum wiki.
-Ramit
Wednesday
Jan 10,2007

Here’s a special 2-page PDF that answers basic questions about PBwiki, specifically for educators. Some questions answered:

  • What’s the difference between a wiki and a blog?
  • Who controls the content?
  • Is it easy to use? What about safety?
  • What are examples of successful educational wikis?

This might be perfect if your IT administrator or principal has been wondering exactly what a wiki is. Ask them to read these quick 2 pages!

Read the PDF here: Q&A about PBwiki
-Ramit

Introducing the PBwiki Library

Wednesday
Jan 10,2007

The PBwiki Library is an ever-growing collection of resources about PBwiki that we’re launching today. If you’ve been looking for a PDF to give to your co-workers outlining exactly how PBwiki works, you’ll find it here. We’ll also include wiki case studies, videos, and more. If there’s something that would make your life easier, please let us know!

-Ramit

PHP OO pitfalls

  • Filed under: Geek
Monday
Jan 8,2007

I should have picked up on this earlier, but PHP does some crazy stuff with objects. Because they’re not objects. Take the following:

  function _init_storage($options) {
    if(!$se = $options['storage_engine']) {
      trigger_error("Error instantiating MetaStash - no storage_engine" );
    } 

    $this->engine = $se;
  }

That looks fine, we’ve got some options defined at our constructor and it’s time to connect to a storage engine and blit out (or in) the permanent version of the data. But what if we want to change the storage engine object we were passed — this happens for PBwiki because there’s a notion of the expected place for some data and then the notion of ‘but right now it’s over here’ — as we transition from one storage infrastructure to another we’re going to have several reasonable places to look and the meta information here can indicate the canonical location for the data. So MetaStash calls a change_docroot() on the storage engine to make sure subsequent calls to it will source the right data. Turns out passing in the object as a parameter and assuming it’s treated like a pointer or handle is incorrect. Ugh. Passing an object happens by value - PHP makes a deep copy of the object, so any changes made during that call apply only to the copy.

The corrected code follows:

  function _init_storage($options) {
    if(!$se =& $options['storage_engine']) {
      trigger_error("Error instantiating MetaStash - no storage_engine" );
    } 

    $this->engine =& $se;
  }

What galls me is there’s not much warning about this in the docs and apparently no way to detect/trap this behavior at runtime. Ideally I want a development-only check which watches for this but so far no dice.

-Nathan (grumpy)

Under the hood

  • Filed under: Geek
Sunday
Jan 7,2007

What makes PBwiki tick?

For stability:
- Debian Sarge Linux - rock solid with very good package management
- grsecurity - paranoid security, the small overhead is worth the peace of mind
- MySQL - just works
- Apache - a known quantity

For speed:
- PHP - it’s fast and dead simple
- memcached - very fast, very stable
- eAccelerator - we have a lot of code to compile, and this extension speeds up time-to-first-byte by 250ms

For coolness:
- FCKeditor - the basis for our new rich text editor
- syslog - we funnel all of the system parametrics from all of our machines plus all apache and all application-level logging into syslog, one file per machine per day, all told it’s about 750Mb of data per day

Our next generation architecture (soon) will add:

- mogilefs - distributed file storage system that uses commodity hardware to automatically spread spare copies of files around a number of servers
- squid - caching reverse proxy
- pound - super-fast traffic director

And now you know.

-Nathan

Meta