576 karma · joined August 7, 2016
That I can't tell if that's the case or not is equally alarming.
Writing to Google Analytics, Amplitude, Mixpanel (all of which have free tiers) or equivalent all should handle your case well.
Especially for mobile applications (most Arm customers), you pay extra energy for all that pipeline flexibility that isn't being used. A dedicated chip will save a bunch of power.
> Of course there's ANOTHER company to help me generate the scripts to popular 3rd parties :P
> I guess what I want is some powerful individual-use product that has some easy analytics automation on spreadsheets / APIs.
The point is that everything speaks SQL, so vendor lock-in becomes much harder and there's no data source that "is not currently in our plans to support" — if you can get the data into the warehouse, it's supported. Definitely a higher barrier to entry for an individual, but I wouldn't do business BI without it.
We've done some insane things, joining across data from 4+ different systems (CRM, email open tracking, analytics, primary app database, email to a blessed account) in ways that would be impossible for an "off the shelf" solution.
In terms of getting data into that warehouse, you can write ETL (extract, transform, load) scripts yourself. There are also a number of ETL-as-a-service providers like Stitch or Fivetran that cover common things you might want to sync into your data warehouse and query like salesforce, google analytics, quickbooks, etc: https://www.stitchdata.com/integrations/sources/
I can see the use of such logging clearly, but I work at a young startup and implementing that ourselves sounds like infrastructure overkill. Maybe I'm overestimating the work?
Thanks for any thoughts!
Not arguing that they're aren't huge problems with the health of the ocean, but I have seen the water clear up that much a few times a year.
At the risk of being inflammatory, I would say that you've been looking at poorly designed systems.
A running joke about Google engineers is that all they do is shuffle data from one ProtoBuf to another. It's largely true. The upshot of that is that every single service/system has common, typed definitions of the data structures they use and require. Data never drifts out of sync.
To be sure, a lot of the problems I dealt with there were around data structure migration on large systems — but there was never any uncertainty about the structure of the data itself.
I like JSON APIs, but I think JSON especially contributes to people getting hand-wavy and casual about the structure of data across systems in stupid ways (see NoSQL vs SQL).
I agree with your assessment that we need to design for evolution.
I disagree with your assessment that dynamic languages provide that. Dynamic languages certainly do hit a sweet spot for fast iteration on small projects. As soon as your project gets large or long running, the assurances that static types provide get really nice. Witness how much effort has gone into building type systems for dynamic languages: Typescript (MS) is exploding and had vigorous competition from Flow (Facebook). Python has mypy plus a bunch of corporate backing: MonkeyType (Instagram) and PyAnnotate (Dropbox).
I feel much more comfortable aggressively refactoring in static languages.
On every discussion of the Aeropress, I've seen the ask for a non-plastic version pop up. Every time I've then seen essentially your reply above. I'd just prefer a metal or glass version.
I'm on a team of fiveish serving a whole company of fiftyish. Sometimes we resolve issues quickly, but often it pains me how long resolutions take. I'd love to do better but it's not clear how, short of staffing an engineer towards those reactive things specifically.
I think GP's point is that a $60M fine (against $520M in earnings) is not a an effective deterrent against such antisocial behavior.
https://www.brainpickings.org/2014/05/02/creativity-inc-ed-c...
Essentially, we're going to fail. It happens. Might as well get it out of the way.
Secondly, failure averse cultures don't actually prevent failures, and they have a tendency to squash innovation.
Do you have an example? I love having more viz tools in my toolbox!
Are there hosted installs of Elasticsearch/Logstash/Kibana? Is ELK even what I want?
Every time I start looking at centralized logging stuff it seems like a rabbit hole of problems we're too small to be worrying about, stuff that's not shipping features on my app.
Their podcast, Manager Tools, is also excellent.
Also the audiobook is excellently read, if you're into that sort of thing.
The Halo Effect in particular is a clinical deconstruction of the fallacies the business book genera. It tears Good to Great and company apart.
> Hash tables become full, and bad things happen
The bad thing is not a crazy long probe or even rehashing to enlarge the table—it's that some random individual insert is stuck eating the entire cost of rebuilding the table. For many applications, I'm happy with a slightly higher cost per operation in return for predictable performance.
> Hash functions are slow
Great, another unmentioned footgun - hash functions are hard. For example, the hash function he provides doesn't use a prime number of buckets. Oops, non-uniform input data in combination with unlucky bucket counts can generate high numbers of collisions.
Writing a comparison function to put your data in a tree is pretty stupidproof!
The specific process? Further buying into our current priest-kings puts pressure on them to make their magic work. Magical thinking eventually fails, inevitably. Then the historical process of succession of priests kicks in because "we need the eggs" (to use the article's phrasing), and the more we need the eggs, the more nasty the alt-priests we'll turn to in search of eggs.
Either you can:
• Submit the PRs one at a time... which is awful. Why not work on them in parallel?
• Submit your series of PRs all at once, then you have to set the PR base of each one to the following one to make the github diff view actually reasonable for reviews. THEN, when you have a code change based on feedback on the first PR, you have to merge it into all the later dependent PRs. THEN, you have to have to jiggle the PR bases very carefully when you're landing the PRs, otherwise it will merge them all into each other, and you end up with one ginormous commit landing—defeating the point of the small commits. AND unless you're using a squash based workflow, you'll end up with that giant merge mess in the middle of your commit history.
http://adversari.es/blog/2013/06/19/cant-we-all-just-get-alo...