HNHacker News
TopNewBestAskShowJobs

tsenart

503 karma · joined August 20, 2009

[ my public key: https://keybase.io/tsenart; my proof: https://keybase.io/tsenart/sigs/OsRqRDqkbw1gHiFABlkt6guvCr0WJszV_j0eXD3hPrQ ]
submissionscomments
tsenart··on Superhuman Attention
Hi. Performance testing in your CI/CD pipeline will catch performance regressions of what your team has covered with benchmarks or load tests. Anything else will fall through the cracks.

Even the most capable performance conscious teams in the world still have limited attention. Perfloop has been contributing significant performance improvements to the open source world too, across repos like ClickHouse, Prometheus, parquet-go, roaring bitmaps and more.

https://github.com/search?q=is%3Apr+is%3Amerged+author%3Aper...

tsenart··on Show HN: FSST – Fast Static Symbol Table Compression Library in Go
This was missing in the Go world.
tsenart··on Haydex: From Zero to 178.6B rows a second in 30 days
Proprietary.
tsenart··on Haydex: From Zero to 178.6B rows a second in 30 days
Author here, indeed a variation of bloom filters: https://x.com/lemire/status/1971279371131646063
tsenart··on Kth: High-Performance Selection Algorithms for Go
This is to implement a database, not use one.
tsenart··on Kth: High-Performance Selection Algorithms for Go
Yes! A typical use case is to efficiently implement ORDER BY LIMIT N in SQL databases in a way that doesn’t require sorting the entire column just to get those first N items.
tsenart··on Kth: High-Performance Selection Algorithms for Go
Author here! Will do eventually.
tsenart··on Adaptive _time compression – A database hacker story
Do share your findings!
tsenart··on Adaptive _time compression – A database hacker story
Author here. Agree 100%! It's often what didn't work that is omitted. But there's so much juice in failed experiments — it's important to share with others.
tsenart··on Nanosecond timestamp collisions are common
Our Go ULID package has millisecond precision + monotonic random bytes for disambiguation while preserving ordering within the same millisecond. https://github.com/oklog/ulid
tsenart··on Scalable PostgreSQL Connection Pooler
This, please! Native support for read-replicas would be awesome. Ideally it would now if a query is read-only or not without application changes.
tsenart··on Show HN: A Go implementation of TensorFlow's streaming quantiles estimator
Could you elaborate on the differences a bit deeper? I’m really interested in understanding.
tsenart··on Show HN: A Go implementation of TensorFlow's streaming quantiles estimator
How does it compare to https://github.com/tdunning/t-digest?
tsenart··on Goodbye Microservices: From 100s of problem children to 1 superstar
#MakeMonolithsGreatAgain

https://twitter.com/tsenart/status/1017061272188280833

tsenart··on DEC64: Decimal Floating Point
http://blog.aventine.se/2014/03/09/a-silly-review-of-dec64.h...
tsenart··on Ask HN: Who is hiring? (July 2017)
OptioPay | Engineering | Berlin, Germany | ONSITE, VISA, FULL-TIME

We're on a mission to create the most beneficial payout ecosystem in the world and fundamentally change the way people receive money!

Now hiring: Backend Engineer, Frontend Engineer, Head of IT Operations, Security Engineer, Site Reliability Engineer, Senior Data Analyst, Senior System Administrator, Senior UX Designer, Web Developer.

Take a look at our open positions in more detail below and don't hesitate to reach out to me directly: ts [at] optiopay.com

https://jobs.optiopay.com/

tsenart··on Ask HN: Who is hiring? (March 2017)
OptioPay | Frontend UI Engineer, Backend Engineer, SRE, Security Engineer | Berlin, Germany | ONSITE, VISA, FULL-TIME

We're on a mission to create the most beneficial payout ecosystem in the world and fundamentally change the way people receive money!

Have a look at our open positions and don't hesitate to reach out to me directly: ts [at] optiopay.com

https://www.optiopay.com/careers

tsenart··on Universally Unique Lexicographically Sortable Identifier in Go
> A user of these IDs my not realize that the reliability of the ordering can be substantially reduced depending on where the IDs are generated.

That can only be addressed with improved documentation and shared understanding of the subtleties and pitfalls of distributed time synchronisation.

> Some applications may be able to tolerate inconsistencies in ordering, others may not.

Indeed. Proper thought must be but into this sort of thing. ULIDs aren't an exception nor a silver bullet.

> How many bits of approximate time does one really need?

Entirely application dependent.

tsenart··on Universally Unique Lexicographically Sortable Identifier in Go
Fellow PHP implementation: https://github.com/Lewiscowles1986/ulid
tsenart··on Universally Unique Lexicographically Sortable Identifier in Go
> What is the use of 48 bites of time? It reduces the overall entropy, for what? If time is important then why not make the id literally time (i.e. UnixNano), if it isn't they why not make all bits rand?

For some designs it's useful to have identifiers have other properties than uniqueness. In this case, this property is relative lexicographical (and binary) order based on time so that you can leverage the order between the things the identifiers identify without looking at the things. The entropy is there to satisfy the uniqueness property (with some acceptable degree of collision, application dependent). The time is there to satisfy the ordering property.

tsenart··on Universally Unique Lexicographically Sortable Identifier in Go
Yes, there's always a negligible chance of collision.
tsenart··on Universally Unique Lexicographically Sortable Identifier in Go
Yes if you use a good source of entropy. In Go, the easiest and most secure is the `crypto/rand.Reader`. But it's also slow. If you don't need the security properties, an instance of `math/rand.Rand` should suffice. Otherwise, you can implement your own. It's just an io.Reader!
tsenart··on Universally Unique Lexicographically Sortable Identifier in Go
Depending on the font used, 'I' and 'L' can be easily confused by humans. 'O' can be read as '0' too. This is meant to prevent that.

As for the 'U', I'm not sure why the original ULID spec left it out. Thanks for raising this. I'll investigate.

tsenart··on Universally Unique Lexicographically Sortable Identifier in Go
ULIDs are meant to be compared with Time UUIDs in particular. See: https://www.famkruithof.net/guid-uuid-timebased.html
tsenart··on Ask HN: Who is hiring? (November 2016)
What technologies are you working with on your infrastructure and backend?
tsenart··on HTTP/2 load testing with Vegeta
Unfortunately, Github was down for a bit. Back up!
tsenart··on HTTP/2 load testing with Vegeta
This may be possible in a not so distant future. For background: - https://github.com/bradfitz/http2/issues/59 - https://github.com/golang/go/issues/14141
tsenart··on HTTP/2 load testing with Vegeta
Author here. This is configurable with a combination of the -connections and -keepalive flags in the attack command.
tsenart··on 1000 nodes and beyond: updates to Kubernetes performance and scalability
For those wondering what is being used for load generation in the demo: https://github.com/tsenart/vegeta
tsenart··on U.S. Spies on Millions of Cars
"Innocent data does not exist, it is only a matter of the right time and the wrong hands to turn it into a weapon." - https://www.trilightzone.org/board/viewtopic.php?t=3190
Page 1 of 3Next →