Confluence is the Best

Over the past couple months I’ve been using Atlassian’s Confluence wiki a lot (and am finally reaching the comfort-zone in putting my personal stuff on there — it’s true that geeks trust software less). As is my predilection, I’ll make some lists.

Confluence has a whole lot of features that are requirements on purely logistical/organizational level:

  • LDAP authentication (uses Open Symphony) – looking forward to better group integration w/ LDAP soon. This is a biggie, there’s almost nothing else out there
  • Multiple database support – we started w/ the embedded HSQL, but there’s full JDBC support (uses Hibernate) but we’re moving to either production Oracle or MySQL. The nice thing is that w/ the database-exposed, it’s very easy to write scripts that fix weaknesses in the Confluence interface (their group adding, for instance, is quite a turgid affair for mass users at the moment)
  • Spaces – Confluence supports multiple spaces which can have separate namespace, permissions, themes/decorators, layouts, input templates, etc, while still sharing and being able to both easily interlink between spaces and to move nodes between them
  • Affordability – obviously a higher sticker price than the open-source alternatives, but run the numbers of an enterprise license against the recurring cost of the ASP solutions, and compare featursets

Jumbled thoughts, comparisons to others:

  • Not-wiki – many of what distinguishes Confluence (and others, say Jot) are the un-wiki parts. The parts where there semi-structured data or relationships, or things like authorization, roles, and access controls. For some reason, almost all community-based wikis are just plain weak in these areas (is it stemming from dogmatism, or is it just not fun to work on? Personally, I think semi-permeability is fascinating both in UI and technical terms)
  • Child Entries – Confluence has all the things that you’d expect a good wiki to have: templates, plugins/macros, RSS, permissions, searching, PDF export, attachments, transcludes, an API, skinning, spaces, comments, etc. But, what really makes Confluence shine, is its ability for having parent-child relationships. I’d love to have even more, but this little thing is a 100% improvement for regular people. Here’s a screencap of an example (note also, columnar layouts, hallelujah)
  • File revisioning – this is another one of those duh things, and you have to wonder why you don’t see this more. Having in-file search is also nice (Lucene good!)
  • Comments – Yes, there are wikis that don’t have this, and I can’t understand why.
  • Node types – Confluence doesn’t take it as far as one might, but it’s still the right direction
  • Reasonable UI – there are things to tweak, but compare it to most of you’ll find on the community side…
  • Macros – especially the panel/info macros are indispensible
  • Data Munge – there’s a warm fuzzy feeling of direct data access, and Confluence’s data model is quite straightforward to work with. Also, the XML exports export everything, including attachments and users/groups

And now, the feature request list. Some of these are trivial improvements, some of these are features that are done, or done better by other wiki software (Trac, Xwiki, Twiki, Jot, SocialText), and some aren’t implemented by anyone at all:

  • Better macro documentation – I use a lot of the macros, but am always forgetting the exact syntax for some of the settings (especially for tags like {children} which I don’t use as often)
  • Easy source view – you sort of want to be able to flip a div to see that somtimes
  • Email handling – Confluence has mediocre email-handling (Jot and Socialtext are better). You ideally would like to have mail go into a central queue and also to allow automatic routing based on a simple text-based API. It’d be a great thing to just cc project emails in that way
  • Tags/Categorization – easy categorization of items would be a really useful (and in keeping with the “tag everything” mentality)
  • Better RSS – Confluence currently puts out a select list of RSS 0.92 information. Ideally, it should do RSS everything
  • Tasks – Atlassian also sells JIRA, an issue/defect tracker, so I don’t ever expect Trac-like functionality, but the current {tasklist} macro could be made much more useful (allow global access, etc), or better yet, tasks could be a node-type…
  • Custom nodes, intranode – Confluence is part-way there w/ the macro system and input templates, but what you really want is what Xwiki, Twiki, and Jot are doing – creating an engine for arbitrary handling of semi-structured data (design forms w/ fields that allow manipulation and recombination)
  • Sections – MediaWiki or PurpleWiki do this better…
  • Fine-grained Access control – having rights management extend to the page (and page-and-children) level would be great
  • Daily summary – Trac has a great daily summary view. What would be interesting would extend the basic (but still useful) blogging functionality to also autogenerate daily summaries (perhaps attached like how Tom does his daily links)
  • Easier editing, appending – I’m not sure what I’m looking for, but it seems like there might be a way to make adding things easier. Maybe not without a rethinking of what consitutes a ‘page’ (views as aggregation of nodes)
  • Dynamic TOC always available – right now I can put something in the layout perhaps, or create templates that automatically have a column for the TOC, but being able to see where you are and navigate around would be huge. HUGE
  • Quick Links – I’ve had this idea that often-times on a wiki, you’re editing certain pages a lot. What if you had a custom quicklinks area that you could just add…
  • Per-person/category views – This would especially be useful for the blogs, but being able to filter (or display side-by-side in lists based on category, author, or a combination there-of would be quite fun)
  • Reparenting interface – I want to be able to go to the dynamic TOC, or some standalone interface and just drag things around (or at least reparent w/o having to go into editing a page)
  • Ordering children – right now it does it alphabetically. I’ve spoken at length about the blikiliner in the past…
  • Annotations – comments on the bottom of the page are really a degenerate form of the more multi-purpose general for of an ‘annotation’ relationship. There are issues to think bout in terms of change management, etc, but give it some thought. It may blow your mind.
  • Better diffing display – Well, there’s History Flow now, but even more simply, the best diffing display I’ve seen was Mark’s use of Aaron’s HTML Diff

For an individual user, the licensing doesn’t make sense, and Xwiki looks like it’s really cool and might be good in that case (or Twiki if you don’t mind getting in the muck and doing major hacking).

Powerbook Upgrade

I’m glad to report that my PowerBook migration w/ OS X’s built in was both uneventful, and by and large successful (hooked up, went outside to kick some hackysack, came back and viola, 36GB transferred). The only things I’ve had to reinstall so far:

  • Cisco VPN software (w/ Kernel extensions, to be expected)
  • Quicksilver (strange, but it worked after that)
  • GnuPG – my SSH and GPG keys looked like they moved over fine though
  • Transfer doesn’t copy the /Library/WebServer/Documents if you use the built in Apache
  • Developer Tools needed to be reinstalled
  • Printers were not carried over

Besides that, things look hunky-dory. My bookmarks are there, my licenses seem to work, all my Keychains need to update but are otherwise a-okay. Good job Apple!

(Updated: I’ll be adding more caveats and non-transferred items as I notice them)

Drupal Conference 2005 Notes

Full audio/video recordings of the conference for the 2005 Drupal Conference (@ FOSDEM, Feb 26, 2005) are now available.

Also, there are some more notes floating around:

(Files are encoded in Ogg Theora. That means you need to watch in VLC on Mac. There are DirectShow filters available for Windows.)

Bloggers Have Rights Too

Bloggers have rights too – a great op-ed by Rep. John Conyers (D-Michigan).

I agree with Thomas Jefferson’s sentiments when he wrote, “The basis of our government being the opinion of people, the very first object should be to keep that right; and were it left to me to decide whether we should have a government without newspapers, or newspapers without a government, I should not hesitate for a moment to prefer the latter.”

In Jefferson’s era, print newspapers revolutionized the way the country read and processed the news. Today we stand on the precipice of a new media revolution with the advent of the Internet. We need to protect bloggers’ First Amendment rights so they can help us protect our own citizens’ rights.

Blogging like it’s 1999

I’ve finally got around to making some genuine progress with the blog. After the new-fangled ‘permalink’ technology, I’ve begun to work on other such 90’s technologies as “archives” (almost complete, 3900+ old entries in the system), and “search“. Who knows what’s next, a calendar? (craaaazy).

On a more serious note, I don’t have to worry about packaging my rtedit anymore since it looks like in-place editing has independently arisen (I never got ranging working w/ text-mogrification to my satisfaction), so doing something useful w/ my tagging system and versioning is probably next on the list.

legacy.randomfoo.net

I finally got around to moving the new site to the primary randomfoo.net domain. Old stuff is still accessible at: legacy.randomfoo.net.

Here’s the very simple code I put in my errorhandler to prevent linkrot:


if($_SERVER['REDIRECT_STATUS'] == '404') {
  require_once "HTTP.php";
  $url = 'http://legacy.randomfoo.net' . $_SERVER['REQUEST_URI'];
  $result = HTTP::head($url);
  if($result['response_code'] == 200) {
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: $url");
    header("Connection: close");
  }
}

Notice any problems? Let me know.

SXSW 2005: Recap

Well crap, no wonder I never put SXSW notes up before. Even just writing short summaries and related thoughts took forever. Plus I probably come off as an ass. Anyway, here they are. I considered trying to gather some more stuff on panels I missed, but honestly, as anyone’s who’s been can attest that you can’t take the panels too seriously. It’s always a tossup, and there’s just too much anwyay. I think I’ve already gone above and beyond the call of duty as far as work is concerned.

The best thing about this SXSW was getting me out of my recent funk (that Portal project was pretty soul-crushing). I had a lot of fun this year (better than last year?) and had a really good mix of hanging w/ old friends and meeting lots of new people (although I’ve been discovering that there were a whole buncha people there that I didn’t get a chance to say hi to. I’ll have to keep a better eye out next year… Also, I’ll try pacing myself better so I’m not as walking dead-like [waking up before 10AM is one of the double-edged things])

I’m going to disattach myself from the screen now.

Auto-image Resizing

I’ve been using a variation of Clagnut-style liquid image-sizing in my blog, which works fine in IE and Firefox, but breaks because of Safari’s crappy image resizing.

Safari further confounds things by not allowing reliable post-hoc style removal via JS (sometimes it works, sometimes it doesn’t), and not appearing to support anything like image.naturalWidth to show the original sizes. So, here’s a fully JS solution (IE has problems with returning the parentNode.clientWidth so I just slap the old width/height styles on in that case):


function fit_blog_img() {
  if(!document.getElementById) return;
  if(!document.getElementsByTagName) return;

  var blog = document.getElementById("blog");
  var imgs = blog.getElementsByTagName("img");

  for(var i=0; i 1) {
      img.style.width = maxw + 'px';
      img.style.height = Math.floor(h/r) + 'px';
    }
  }
}

I’ll be doing some more bloggy hi-jinx in the near future. Looks I should get moving on releasing my rtedit modules…