Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Devd: a small, self-contained web daemon for developers (corte.si)
229 points by cortesi on Oct 23, 2015 | hide | past | favorite | 34 comments


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


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!


This reply, and your perspectives on sharp tools, really make me smile. I'm definitely going to go use your tool, now. :)


It looks nice. I did a similar thing with a project of mine: https://github.com/alessioalex/reloadify

It serves files and does livereload as well. Can be used programatically or as a CLI: `reloadify -f static -p 8080`.


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.


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) 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


While livereload is a very cool feature, I doubt that it brings a lot to the table in terms of functionality and user-friendliness. After all, web-users are accustomed to reloading a page when they want fresh results. What scenario do you have in mind where the use of livereload warrants the complications in the protocol?


I think you're confusing the who the "user" is in this case. It's not Joe Bloggs out on the internet who wants to see fresh content on your site; it's you, the web developer, working on your local machine, building a web site or application.

The live-reload functionality is there as a development workflow tool, to automatically reload the page to see the results of the latest code change, rather than manually switching to the browser and hitting ⌘R/F5.


> They're great for small projects, but have trouble scaling up.

I'm pretty sure it's intended for quickly spinning up small projects, not fully-fleshed front end systems with package management, build tools etc.

I use node-static myself for quickly bootstrapping experimental front end projects

With devd, I like how you can quickly map a proxy and get live reloading out of the box.

Tidy.


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

https://github.com/mitmproxy/mitmproxy


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.


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.


> 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...


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


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

[0]: http://scoop.sh


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


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.


What's wrong with Caddy [0]?

[0] https://caddyserver.com/


"It started as a weekend stress-relief hack "

"This isn't terribly surprising, since I wrote it to scratch my own idiosyncratic itch"

This is hacker news remember.


How can I forget, right? Hackers unite.


Yes we should.

Technically OP should have prefixed with "Show HN:" which is what it is perhaps.

Not all "Show HN:" posts exhibit brilliance or originality or solve a problem or as in this case solve a problem for the OP for which there is already an outstanding solution (I guess originality), but the existing solution doesn't fit their use-case.

And you know as hackers (I still am at 48 yrs old) if there's an itch needing to be scratched why not show off a bit of code, it's one of the best things about HN, we learn so much from each other this way, either through (constructive) criticism or just looking at a nice bunch of code.

So, yes, hackers unite.


Searching Caddy's Github repo, 0 hits on 'livereload'. I usually do the python or ruby one-liner when I need a quick webserver, but if devd does dead simple LiveReload I might start using it just for that.


No support for livereload.



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!


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


Name is identical to FreeBSD's device node manager.


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



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


python -m SimpleHTTPServer


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.


live reload?


ruby -run -ehttpd <directory> -p8000

Can customize the directory.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: