7,040 karma · joined January 31, 2009
I'm an avid home cook and father of two.
I work on infrastructure, security, and developer experience at Descript. Before that, I led a team of SREs running security infrastructure at Google. Before that, I was an early engineer at Figma, working on infrastructure and security. Prior to Figma, I ran infrastructure at Flipboard. You might say I like working on...infrastructure.
https://twitter.com/mattyblair
personal email: me@matthewblair.net
[ my public key: https://keybase.io/mattyb; my proof: https://keybase.io/mattyb/sigs/ZMi38yH51aOj7KC4sQHOh4Y4yX7T-PvayVgqbjvg3x0 ]
https://github.com/golang/proposal/blob/master/design/12914-...
https://www.youtube.com/watch?v=kNke_4WOWAU
https://speakerdeck.com/pycon2015/kate-heddleston-how-our-en...
A few thoughts:
* This only works with Git. It doesn't look it'd be much work to make it work for all 4.
* This only pins deps you've declared; that set may or may not contain transitive deps. If it's not complete, the transitive deps will be frozen, forever, until you blow them out of your GOPATH.
* Issue #3 looks fun.
http://blog.exceliance.fr/2012/11/07/websockets-load-balanci...
dotCloud's Hipache also looks like it was basically written to solve this problem:
I whip out the Kindle when I want to blow a Saturday breezing through the latest John Sandford cotton candy or awesome-seeming fan fiction, and I read most technical books and my Instapaper backlog on my iPad. So maybe my desired set of Kindle features is smaller than the average Kindle user, or maybe this discussion is proof that I have no idea what the average Kindle user wants.
- I've owned my (4th-gen, non-touch) Kindle for ~9 months, and it has held up just fine. Maybe if/when I break it, I'll wish for more robustness.
- I've never lent books; maybe I should!
- I haven't been without power for long enough to substantially discharge my Kindle's battery yet. I went to Belize for 9 days with it and had power the whole time, although I did more diving than reading ;-)
- Nope, I've never longed for random access. I've flipped through paperbacks before, but that's a feature I can easily live without.
- Nope, I definitely don't miss color. When I want to lay back and feel like I'm reading a little paperback from my neighborhood bookstore, I reach for the Kindle. When I read a textbook and inspect diagrams or want to look at pretty pictures in Flipboard, I grab the iPad.
I'm just weird with tablets though, so this data point may be worthless. I've considered buying a Nexus 7 (or its rumored successor) just to lay in bed and read code, and the official GitHub app for Android is the best tablet code-reading experience I've found.
And naught is the equivalent of a process supervisor.
No, it's not. Can Naught do this?
http://mmonit.com/monit/documentation/monit.html#service_tes...
That's legit process supervision. Your process may still be running, but be wedged somehow. Monit can perform remediation based on signals other than process status. Naught can't (and shouldn't) do this.
The server that you describe requires 4 moving parts:
True, but our servers are running all of this anyway; you should use the best tool for the job. Instead of rewriting a fraction of logrotate, you should read `man 8 logrotate` and move on to writing code that will help your business. When you deploy an app written using another runtime, are you going to rewrite 10% of logrotate in that language too?
As far as std{err,out} redirection, does Node.js have no Unicorn equivalent?
Daemonization (and respawning) should be handled by a process supervisor, like supervisord/Upstart/Monit or whatever. They can do more than just 'this process died, restart it.'
Also, most of this logging code didn't need to be written:
https://github.com/indabamusic/naught/blob/master/src/log.co
Just use logrotate.
collectd is very good at collecting system-level metrics and sending them somewhere. Batsd is a system for receiving those metrics and storing them.
(Note that collectd has a graphite plugin, but not one for (B|St)atsD. You'd need to write a proxy.)
What benefit lies in trying to mimic RRDTool's file format?
http://codeascraft.etsy.com/2011/02/15/measure-anything-meas...
http://nodejs.org/docs/v0.6.18/api/modules.html#modules_the_...
Please look at the FPM wiki, you'll see that it offers many more options for integration than checkinstall (which I used to use, and hated):
https://github.com/jordansissel/fpm/wiki
And why would you want to create source packages? One of the benefits to generating binary packages is that you compile once and roll it out to hundreds of servers. I'd rather not have to compile, say, Erlang on every target server.
Huh? Here's the `config.ru` that you need:
$: << File.dirname(__FILE__)
require 'app' #assuming app.rb
run Sinatra::Application
Note that I have no stake in the verbosity claims, as it's not something I particularly care about. But I wouldn't consider this a significant modification.You can write a monitoring system that queries Graphite, and send notifications from there. Graphite can give you the raw data that backs the graphs:
http://graphite.readthedocs.org/en/latest/url-api.html#rawda...
http://bazaar.launchpad.net/~graphite-dev/graphite/main/chan...
The documentation could use a lot of work, but do note that it now lives here:
LevelDB is a key-value storage library. MySQL is a relational database server. They are about as different as data stores can get.