
Devd: a small, self-contained web daemon for developers - cortesi
http://corte.si/posts/devd/intro/index.html
======
necubi
I wrote something similar, called Slinky [0], which also transparently
compiles various compiled web langauges (SASS, HAML, CoffeeScript, TypeScript,
etc.).

The issue with these systems is that they lie in between something like
Python's SimpleHTTPServer and a complete frontend development tool like Grunt
or Gulp. They're great for small projects, but have trouble scaling up.

[0] [https://github.com/mwylde/slinky](https://github.com/mwylde/slinky)

~~~
cortesi
Slinky looks very neat! I do feel it inhabits a very different niche from
devd, though. I have no ambitions for devd to compete with tools like Grunt,
Gulp or Slinky.

Devd has a simple job: it just serves files and triggers livereload when files
change, and is completely agnostic about the build process. That means it
works very well as a complement to Gulp - in fact, this is one of my primary
use cases for devd. My gulp setups are simpler now: I've ditched Connect and
node livereload libraries, and instead gulp JUST renders files to disk. It's
early days, but having two sharp tools each doing what they do best seems to
work well.

I should add that I definitely don't think there's one "right way" to do this
stuff. I love the fact that we're free to explore variations to see what works
and what doesn't. The more things we try the merrier!

~~~
mcrider
Do you have an example gulpfile that uses devd? I've had a lot of trouble
getting connect + nodemon to work well together and would love a better
solution.

~~~
cortesi
Devd doesn't appear in my gulpfiles at all, actually. Gulp literally just
renders to disk. I then start devd separately with the appropriate livereload
flags to handle the service end of things.

For instance, here's a devd command-line from the docs
([https://github.com/cortesi/devd](https://github.com/cortesi/devd)) that
handles proxying local services, with a static directory overlaid. Gulp would
be rendering assets into that static directory, the change would be noticed by
devd, and liverload would be triggered.

    
    
      devd -l \
      -w ./src/ \
      /=http://localhost:8888 \
      /api/=http://localhost:8889 \
      /static/=./assets

------
8ig8
See also mitmproxy by the same developer. I find mitmproxy a joy to use.

[https://github.com/mitmproxy/mitmproxy](https://github.com/mitmproxy/mitmproxy)

------
Touche
I don't understand why developers like these small web server tools that you
have to remember to start on every project you work with. Setting up Apache or
Nginx is harder but you have to do it 1 time ever and then you're done. Just
server your entire dev folder and be done with it, never have to worry about
static file serving again.

~~~
falcolas
I have never known Apache or Nginx to offer live reloading of changed assets.
Sure, it only removes 4-5 keystrokes from your workflow, but if I were
developing assets live, I could certainly see the value in my changes
appearing live in a second window.

The simple (multi-endpoint) reverse proxying is certainly a nice-to-have when
developing as well.

------
lucaspiller
> Want to know what it's like to use your fancy 5mb HTML5 app from a mobile
> phone in Botswana? Look up the bandwidth and latency here [0]

In my experience I would take this listing as a grain of salt. Maybe that's
what you get on a decent business connection, but a home or mobile connection
is likely going to have a much higher latency. It also doesn't take into
account where your servers are - latency from Europe to West US on a good
connection is 200ms+.

[0] [http://www.cisco.com/c/en/us/solutions/collateral/service-
pr...](http://www.cisco.com/c/en/us/solutions/collateral/service-
provider/global-cloud-index-gci/CloudIndex_Supplement.html)

------
distrill
This is exactly what I've been looking for recently. Live reload is very nice,
I'm excited to give this a shot.

------
simonw
I love that it has bandwidth/latency simulation built in as a core feature.
Super useful.

------
Juha
Just what I need, even has the folder-index view that I need. Python
SimpleHTTPServer has been getting stuck sometimes for me lately when used
through Chrome. Maybe the way it loads resources in parallel changed or
something.

------
nikolay
What's wrong with Caddy [0]?

[0] [https://caddyserver.com/](https://caddyserver.com/)

~~~
mateuszf
No support for livereload.

~~~
nikolay
[https://github.com/mholt/caddy/issues/new](https://github.com/mholt/caddy/issues/new)

------
PythonicAlpha
This seems to be exactly what I needed for some of my projects. A simple
application that can be used on my dev-system to be used as reverse-proxy for
different servers.

Of course, I could use nginx, but fiddling with configuration files on dev-
systems is not so cool. Also even nginx is not lightweight enough to me.

This looks really very neat! I will try it soon.

Thank you!

------
deevus
This is cool! I've added it to scoop[0]

[0]: [http://scoop.sh](http://scoop.sh)

------
benatkin
This is great! Love the name. With its reverse proxy it's instantly usable on
my current project. The CLI option syntax is nifty.

~~~
vezzy-fnord
Name is identical to FreeBSD's device node manager.

------
andmarios
Kudos! I believe it will replace python's http server in my workflow.

------
cubancigar11
[http://www.imdb.com/title/tt1327035/](http://www.imdb.com/title/tt1327035/) ?

------
jaredhalpert
Thanks - I hate development. Tools like this make my life mildly less painful.

------
whalesalad
python -m SimpleHTTPServer

~~~
digitalblade
Devd is a single statically compiled binary with no external dependencies, and
is released for OSX, Linux and Windows. Don't want to install Node or Python
in that light-weight Docker instance you're hacking in? Just copy over the
devd binary and be done with it.

