1,425 karma · joined December 2, 2015
Paratrooper to programmer.
http://github.com/jschaf
hn@schafer.dev
To be fair, our use case was probably close to pathological for pg_upgrade. We had lots of TOAST data and dozens to hundreds of indexes per table.
If the data is random, I suspect you're right and the PGM index is no-better than a B-tree index. Most data does have an order and would probably see similar gains.
> Designing scalable systems when you don't need to makes you a bad engineer.
Creating overly scalable solutions is useful for learning, especially early on. I've done this.
> Despite being called "engineers," most decision are pure cargo-cult with no backing analysis, data, or numbers.
This is true in almost every human endeavour. It's not a useful opinion. Most decisions don't matter that much so adding data is a waste of time.
> Code coverage has absolutely nothing to do with code quality
I don't buy there's no correlation between code coverage and code quality. I'd much rather take code with >80% coverage than 0 coverage. My revised take is that the value of code coverage rapidly diminishes past 80% (maybe log scale-ish). I also think code coverage metrics are not especially useful outside of library code.
> 90% – maybe 93% – of project managers, could probably disappear tomorrow to either no effect or a net gain in efficiency.
Google tried getting rid of managers. It didn't work. Establishing lines of communications in large orgs is hard.
[1]: https://www.2ndquadrant.com/en/blog/on-the-impact-of-full-pa...
> The committee began with the creation of an emblem that consisted of a sword, a universal symbol of war, and the helmet of Pallas Athena. Athena, a fully armed mythological goddess, is associated with the arts of war, and her helmet signifies wisdom and learning.
http://usheraldicregistry.com/index.php?n=Registrations.2008...
Most people that email you will care if you ignore them.
I also miss GCL, as quirky as it was. YAML composes poorly.
I thought this was interesting because a common programmer hiring model assumes you can train an exceptional programmer to your specific stack regardless of their existing specialty. I'd argue programming specialties are still broad, maybe frontend, backend, iOS, android, and embedded. Perhaps as the software development matures, we'll see more specialized fragmentation.
[1]: https://nursinglicensemap.com/advanced-practice-nursing/nurs...
Google looks like it's much better at non-title searches:
https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...
https://cse.google.com/cse?cx=37e5b152f44307b8a&q=%22high-ca...
I also don't understand the purpose of the 16 bytes for the trace_id in the spec. That's a huge range of numbers. Anyone know the rationale?
> This second one is instructive: the EU is taking the view that Apple has a monopoly of payment on the iPhone. Market definition is everything. I-am-not-a-lawyer, but I don’t see how Apple can win on Spotify (or Kindle), and I don’t think it should.
And the final sentence:
> Apple finally won the argument with users’ wallets, and that means it’s not niche anymore - Apple has become the navy, and different rules apply.
That is a rather remarkable compression ratio. Do you have a link to technical details? The lightweight compression outlined in the Gorilla TSDB and implemented in Uber's m3db is 11x which I thought was best in class: https://cs.brown.edu/courses/csci2270/papers/gorilla.pdf
[drop caps]: https://en.wikipedia.org/wiki/Initial
Does quest DB use the same physical data layout for the row based access? My understanding was providing an entire row of data from a columnar file is expensive because you have to assemble the row from num_columns different slices of the columnar file.
- single node database, not [yet] distributed
- primary focus is time-series data, specifically in-order time series data (the `designated timestamp` extension)
- physical data layout is an append-only column store
- Implements a small subset of SQL with some affordances for time series (LATEST BY, SAMPLE BY).
- Doesn't support explicit GROUP BY or HAVING clauses. Instead, questdb implicitly assumes GROUP BY or HAVING based on presence of aggregation functions in the select clause.
- Small standard library of functions: only 4 text functions.
Based on these characteristics it seems the quest db is well positioned against Influx. It's probably faster than Timescale DB but significantly less flexible given that Timescale has all of Postgres behind it. Quest DB might eventually compete with clickhouse but it's long ways out given that it's not distributed and implements a much smaller subset of SQL.
I'd love to get any insight into join performance. Quite a few column stores handle large joins poorly (clickhouse, druid).
I recently switched from LastPass to 1Password because of the added latency from Lastpass. Lastpass adds about 70ms to first contentful paint on example.com. 1Password, on the other hand, runs after the painting is done so it doesn't block rendering. I polished up a blog draft I had lying around about switching to 1Password: https://joe.schafer.dev/passing-lastpass/
> I'd be much more interested to see how extensions like Evernote or LastPass increase the time it takes for a real webpage (e.g. "nytimes.com") to finish painting the viewport not including ads.
I reinstalled Lastpass to test on nytimes.com. It takes 58ms to evaluate onloadwff.js (the Lastpass entry point) before any content is rendered.
I don't understand what YAML has to do with abstraction. The example from pyinfra is pretty much the same as the ansible equivalent. Whether the feature set is comparable is a different question (I agree with you, it's probably nowhere close to ansible).
apt.packages(
{'Install iftop'},
'iftop',
sudo=True,
update=True,
)
> If you feel YAML is too complicated for youAnsible YAML is a poor substitute for a real language once you add conditional logic to the mix. Another huge downside is that composition in YAML is much harder than in any programming language. A Python (or dhall, or cue) library that compiled to ansible would be pretty swell.
We killed our influx cluster numerous times with high cardinality metrics. We migrated to Datadog which charges based on cardinality so we actively avoid useful tags that have too much cardinality. I’m investigating Timescale since our data isn’t that big and btrees are unaffected by cardinality.
1.7 seconds is pretty reasonable for a 7 year-old phone on 3G.