Benjamin van der Veen

I live in Portland, Oregon. I work as a user experience designer at Emma.

Take a look at my portfolio, follow me on Twitter @bvanderveen, or email me at .

New Gate Developments

Writing Gate middleware is so damn easy. You just write some test case method names which, in plain English, describe the intent of the test. Then, you fill out the implementation of the tests. Then, you implement the middleware itself. It’s so damn easy. You just write out the implementation. You don’t even have to think. I don’t know why I didn’t do this ages ago.

Actually, I do, but that’s a story for another time.

I’ve written some middleware. I hate the word middleware.

  • HTTP Basic Authentication
  • Method Override
  • Content Length
  • Chunked Response

Those were built with two primitives: Predicate and Transform.

I want to make these others modules:

  • Header dictionary fixer-upper thing, ensures mutability and perhaps normalizes case.
  • Handle X-Sendfile
  • Static file server/directory index
  • Digest auth
  • Multipart form parsing + files
  • Caching/304/ETag
  • Deflate/Gzip
  • Lint (to verify OWIN compliance)

These already exist in Gate/Gate.Helpers and I want to move them to Gate.Middleware:

  • ContentType
  • RewindableBody
  • ShowExceptions
  • Map

Stuff that could exist but which hella exists way far out of the scope of Gate:

  • Session
  • Logging
  • Perhaps some kind of Compiler-as-a-service source reloading sort of thing which would probably be hosting dependent but I’m not sure.

I’m basically ripping these ideas straight off of Rack, but the foundation is compatible with both event-loop thread models like that of Node and Nginx and traditional thread-per-connection models like IIS and Apache.

What other sorts of server stuff would you like to see implemented?


Copyright © 2011 Benjamin van der Veen. atom feed