lusis
I made the stupid mistake of allowing coworkers to buy some shares through me but I wasn't fully aware of the tax burden. Basically everything I made myself went in to paying the taxes on everyone else's shit. What little was left I had to give to my family to help with other bullshit.
What I said was that I, personally, am going to be writing more personal tooling in Go. I was pretty clear that our team is NOT switching off Python. It's in the last section entitled "This isn't a switching story"
The Graylog2 web interface is pretty awesome and it has some neat stuff built in. Logstash ships with a fairly spartan web interface though we're going to replace it with a ruby port of Kibana in the future.
Logstash can accept data from GELF senders (via the gelf input plugin I wrote) or send to gelf receivers (like Graylog2).
Graylog2 is awesome, don't get me wrong. I just had to bail on it when it was still on MongoDB because I couldn't justify the cost of instances needed to get a MongoDB instance that could hold more than 4 hours of data.
Graylog2, though, had problems with it's original implementation based on capped containers in MongoDB. It has since moved to ElasticSearch.
There are both gelf inputs and outputs for Logstash so you can send your logs to Logstash as if they were going to Graylog2 and do additional munging and still send them out to Graylog2 from there.
Jordan had never seen (or to my knowledge has yet to see) splunk at all. I don't know about Pete. Myself, I haven't used Splunk since trying a very early release once in the very first days of it.
Point being, Logstash doesn't call itself an "open source splunk". In fact I've considered adding an output to SplunkStorm to Logstash.
Do I think Logstash is better? Yep. Do I know people who swear by Splunk? Yep. Competition is healthy.
Not bad for a cellphone camera.
1 - The mass assignment rails issue was resolved as soon as could be after it was reported 2 - The public key form update vuln was NOT reported and used, NOT to attack github but to make some point to the Rails team.
The second issue was the one github had been talking about in the original blog post. They handled it as soon as it was discovered.
In so far as they responded as quickly as possible, yes they had it in hand.
Having said that, 0mq is probably a better choice these days since it's cross language. Still you can build some fun stuff with nats.
I'm not going to tone down my talks (unless it's inappropriate for the audience) but I normally won't include it in a slide. There's a difference for me verbally and putting it down "on paper".
I want people to pass around my slide decks. A slide deck full of vulgarity is probably not going to get passed around. However I probably cussed like a sailor during the same presentation.
Ruby, for all the problems it can cause, gives you. More than one way to solve a problem. Yes, it sometimes makes it harder to dive into other's code but I happen to enjoy the expressiveness.
Mind you I love some of the things about python too. Namespacing being one of the primary ones. Another is that, short of advances pythonfu (like django does), I can usually pick up someone else's code and dive right in.
Python has amazing access to mathematical and scientific libraries as mentioned. However with ruby, I would punt to the Java ecosystem via JRuby if I needed that.
It's a lot like design patterns. Some patterns don't fit in all languagea but that's usually a case of the language itself giving you another way. Mixins in ruby are a good example.
I picked up pretty early on that antirez wanted to know the "why" first since one of his stated goals was keeping deps to a minimum. What could have been a nice productive discussion about crypto standards was fucked up by ego, asshattery and language barriers.
Oh and github pull requests are TOTALLY the appropriate place to have those kinds of discussions =/
It's an "SERVICE LEVEL AGREEMENT" not a "SERVER LEVEL AGREEMENT".
But if it helps you sleep at night, I simply dislike iOS. I dislike the UI. I dislike the keyboard. I dislike the interface (non-UI stuff).
I enjoy using android much more.
The way to not impact a customer is to make deploys trivial, automated and tolerant to failure because everything fails.
Nothing in your SLA says you have to have servers 1, 2 and 3 available. It says you have to have service X available. You can do that with out taking a downtime hit.
The author makes some amazing points that I'm surprised intelligent people are missing.
Let me give an example. We are currently migrating from storing blobs of data in Voldemort (a key/value store) to storing them in S3. They should have never been in there in the first place but whatever. We're going to do it with "zero" migration time. In fact we're already doing it.
- Set up a job that copies existing data in Voldemort to S3.
- Deploy a minor release of our code that multiplexes the current writes to both Voldemort and S3.
- Continue migrating existing data
- When existing data is finished migrating, deploy a new release that forces all traffic to S3 instead of Voldemort.
- Profit
People need to learn to do things like dark launching and feature flags. Dark launching let's you exercise new code paths with no impact to the user. Feature flags give you the ability to enable to features to some or all of your users. Feature flags are awesome ways to A/B test as well.
People need to stop doing stupid shit like redefining what some property means mid-release and instead define NEW properties and deprecate old ones in subsequent releases.
Same goes for schema changes. If some part of your code base cannot tolerate an additional column that it doesn't need, that's a bug.
You can also adopt some configuration management that allows you to provision duplicates of the components you're deploying so you can swap back and forth between them in the case where you might have a breaking release. That's what we do and it's one of the upsides of using EC2.
All of this requires discipline and dedication but the benefit is so worth it. You have to stay on top of dependencies. You can't let bitrot take hold by going 4 major revisions without upgrading some package. We did and it bit us in the ass.
This is why we adopted the swinging strategy of duplicating our entire stack (takes about 30 minutes depending on Amazon allocation latency) on major upgrades.
http://blog.lusis.org/blog/2011/08/22/the-configuration-mana...
The fact of the matter is that X vs. Y is ENTIRELY subjective. It isn't a sporting event where there's a clear cut way to call a winner.
Some people like Puppet. Some people like Chef. Anyone trying to decide between ANY software - whether two competing client libraries or something as critical as configuration management owes it to themselves and the company to try all the options. The one that's best is the one that encourages you to adopt configuration management.
CFEngine spawned Puppet spawned Chef (rougly speaking)
I never got involved with BCfg2 or lcfg so I don't remember the history behind.
Yes, there's a gap that the current crop of CM tools don't address (and why we see new versions of capistrano clones with a bit of system management sprinkled in) but the three major tools right now - Puppet, Chef and CFengine are all at a state where they address 95% of the use cases for system management and automation.
I think there's a business correlary as well.
Markets aren't designed to support more than one or two players. There's not enough market share in a given space for it. Eventually you'll have first, second and everyone else. The people in first and second may change but there's always a disproportionate market share between number 2 and the rest of the pack.
You might want multiple COMPETITIVE players but you will rarely see it. Eventually the minor market folks will quit because it makes no sense financially to continue in the space.
- 1.8 is MRI
- 1.9 is YARV
- 1.8 plus performance patches is REE
My blog is mostly technical and the only place I'm even linked to the company I work for is LinkedIn.
I don't HIDE that fact that the two "personas" are connected but I try to keep a separation in place. My family and most of my friends don't care about the technical stuff and most of the people in the various OSS communities could give two shits about my kids pooping in the potty.
Shit, I've even got two about.me profiles.