Profile cover photo
Profile photo
Justin du coeur
362 followers -
Renaissance Man, which is a nice way of saying "dilettante".
Renaissance Man, which is a nice way of saying "dilettante".

362 followers
About
Justin's posts

Post has shared content

Post has attachment
Howdy, all! Those of you who follow my LiveJournal have already heard lots about this, but I haven't talked about it much here.

For the past four years, I've been bootstrapping a small company called Querki, which went into open beta a couple of days ago. I'd love folks to come play with it, try stuff out, and see what they can do in it.

Querki is the one platform focused on Small Data: the sorts of problems everyday folks have. Inventories, galleries, member lists -- pretty much any case where you want to organize, collaborate on, and share Stuff. It's aimed at individuals and communities, helping you manage information that you'd otherwise be stuck trying to juggle in spreadsheets.

The system is still evolving fast, but it's already the best option for a wide range of problems -- it gives you much of the power of a full-scale application platform, with the look-and-feel of a wiki.

(Ease of use is the name of the game, and it's mainly aimed at end users, but programmers will find it especially neat -- it's a rethink of the software stack, enabling you to do in minutes what would often take days with traditional tools. There's a ton of power under the surface.)

Comments and questions are more than welcome. Come check it out!

Post has shared content
Groan...

Post has attachment
Whee -- Brand.com appears to be practically institutionalizing the Streisand Effect...

Post has attachment
Justin du coeur commented on a post on Blogger.
As an alternative, you might want to consider trying Requester or something like it: https://github.com/jducoeur/Querki/blob/master/querki/app/querki/util/Requester.scala

There are a number of ways to tweak that, but the central notion is that, by mixing in Requester, the response or error gets specified in-line, but executed in the Actor's standard thread, with sender restored.  So you get both clear code and nicely solid handling of multiple requests.  Your example would be something like:

class MonitoringActor extends Actor with Requester {
  ...
  def receive = {
    case CheckHealth => {
      networkActor.request(Ping) {
        case Pong => sender ! Up
        case ex:AskTimeoutException => sender ! Down
      }
    }
  }
}

You'd want to set the default timeout in Requester to 1 second, or expose the timeout in the signature of request(), but it basically just works, and AFAICT is nicely robust.  I've been using it a fair amount in Querki, and so far I'm quite liking this pattern, at least for simple cases.

I expect to be extending the pattern to deal with, eg, composing parallel requests and responding when they all complete, but haven't gotten to needing that yet -- this is actually enough to deal with most ordinary request/response situations...

Post has attachment
Giving away the Camry
Photo
Photo
2 Photos - View album

Post has attachment
Italy pictures
PhotoPhotoPhotoPhotoPhoto
135 Photos - View album

Post has attachment
For my future reference, and anybody else traveling to Italy: nice summary of the major mobile-phone plans there...

Post has attachment
Sad, but totally unsurprising.  Google continues to follow pretty much the same path as any large, publicly-traded tech company, with idealism giving way to either "necessary pragmatism" or "greed", depending on which side of the argument you're on.

I confess, that I am for the hundredth time disappointed in their cluelessness.  There would be real business opportunities for Google in treating network neutrality fairly, and a potentially serious edge against their competitors.  But once again, as Google gets bigger, they get more conventional, in all sorts of bad ways.

The important takeaway for anyone with a shred of idealism who is trying to found a company (eg, me) is that pretty words like "Don't be evil" simply don't scale.  If you want any hope of maintaining your ideals, they have to be built structurally into the company.  I'm honestly not even sure that's possible in a publicly-traded firm...

Post has attachment
Always good to commend the good stuff.  Diigo's become my go-to tool for keeping track of what I find online.  It's telling that it is the only Chrome extension (aside from LastPass) that I use every single day...
Wait while more posts are being loaded