HN user

tidwall

883 karma
Posts66
Comments117
View on HN
github.com 1y ago

Show HN: Pogocache – Fast caching software

tidwall
93pts29
github.com 1y ago

Show HN: Bgen – B-tree generator for C

tidwall
5pts1
github.com 2y ago

Show HN: Neco – Coroutine Library for C

tidwall
145pts36
devblogs.microsoft.com 2y ago

A closer look at the stack guard page (2022)

tidwall
1pts0
github.com 2y ago

Show HN: TG – Fast geometry library for C

tidwall
201pts32
github.com 2y ago

Complaints about the new GitHub feed

tidwall
9pts1
github.com 3y ago

Show HN: XV - Expression Evaluator for C

tidwall
2pts0
github.com 3y ago

Non-AI Licenses

tidwall
2pts1
github.com 3y ago

Show HN: A fast little JSON parser for C

tidwall
2pts0
github.com 5y ago

Show HN: Gjson for Rust

tidwall
1pts0
github.com 6y ago

Tile38 – Realtime geofencing and geospatial index, v1.18

tidwall
2pts0
github.com 6y ago

Tile38 – Realtime geofencing and geospatial index, v1.17

tidwall
1pts0
github.com 7y ago

Show HN: Tile38 – Realtime geofencing and geospatial index

tidwall
130pts24
github.com 7y ago

Tile38 – Geospatial database and real-time geofencing server, v1.15.0

tidwall
4pts1
medium.com 7y ago

Mapping 11M Geonames Points with Tile38

tidwall
4pts0
geonames.tile38.com 7y ago

Show HN: Mapping 11M points with Tile38 – Mapbox/Geonames

tidwall
51pts11
medium.com 7y ago

Faster geospatial querying with indexed ray-casting

tidwall
1pts0
github.com 7y ago

Show HN: Send a notification when the International Space Station is over head

tidwall
1pts1
github.com 7y ago

Tile38 – Realtime geofencing and geospatial index, v1.13.0

tidwall
12pts2
github.com 8y ago

Tile38 – Realtime geofencing and geospatial index, v1.11.0

tidwall
126pts17
github.com 8y ago

Tile38 – Realtime geofencing and geospatial index, v1.10.0

tidwall
2pts0
github.com 8y ago

Tile38 – Realtime geofencing and geospatial index, v1.9.1

tidwall
2pts0
tidwall.com 9y ago

Show HN: Wireframe drawing library for JavaScript

tidwall
3pts3
github.com 9y ago

Show HN: 3D Wireframe Drawing Library for HTML Canvas

tidwall
3pts0
github.com 9y ago

Pinhole – 3D Wireframe Drawing Library for Go

tidwall
2pts0
github.com 9y ago

Tile38 – Realtime geofencing and geospatial index, v1.8.0

tidwall
4pts1
github.com 9y ago

Redbench – Benchmarking for custom Redis commands and modules

tidwall
4pts0
github.com 9y ago

Show HN: Pretty – Efficient JSON Beautifier and Compactor for Go

tidwall
1pts0
github.com 9y ago

Show HN: FastID – Fast UUID and BSON ObjectID Creator in Go

tidwall
9pts3
github.com 9y ago

Kvnode – minimalistic disk-based redis clone with raft support and key iteration

tidwall
1pts0

Or this.

    func fetchUser(id int) (user User, err error) {
        resp, err := http.Get(fmt.Sprintf("https://api.example.com/users/%d", id))
        if err != nil {
            return user, err
        }
        defer resp.Body.Close()
        return user, json.NewDecoder(resp.Body).Decode(&user)
    }

Thanks! The Pogocache sharded hashmap design is optimized for extremely low contention and good memory locality. It super rare for any two threads to ever wait on the same key. That's the biggest part and it's all in the src/pogocache.c file. But the network layer is finely tuned too.

Mostly I perfed and profiled ad nauseam, monitoring cpu cycles along the way. I found that keeping a focus on latency and cycles was primo, and the rest fell into place.

Yes, it is highly hand optimized. There's a description of some of the methods I used near the bottom of there README. I mainly focused on minimizing contention, with the sharded hashmap and such. But the networking layer is carefully crafted.

Not intending to make pogocache into a sql database. I prefer keeping it a cache. More so exploring ways to work with existing databases such as sqlite, duckdb, postgres. Kinda like providing proxy-ish operations that transparently cache sql reads.

Cache Benchmarks 1 year ago

Memcache binary protocol was deprecated years ago. It’s no longer recommended to be used.

Cache Benchmarks 1 year ago

Thanks for the feedback. The plateauing is due to a taskset misconfiguration. I fixed it and reran the benches. They look much better now.

Cache Benchmarks 1 year ago

Thanks for the feedback. I updated the graphs to use linear scale by default. Log scale is still available, which is useful for latency viewing. Also only included the summarized graphs on the README. All graphs are moved into a separate file.

Context is not required in Go and I personally encourage you to avoid it. There is no shame in blazing a different path.

Hi HN. I’m the author of this hash. It’s just something I whipped up last night. It’s really not much different than the other hashes out there. I wanted to see if I could make a simple quality hash that easy to cut & paste, under 80 chars lines, and self contained.

Otherwise just an experiment.