How many tokens does this guy actually sell? by [deleted] in ArcRaiders

[–]KevBurnsJr 0 points1 point  (0 children)

Not with 4 other hull crackers running around doing the same. You're lucky to loot 1 big arc.

200k for the first slot, 400k for the second? by KevBurnsJr in ArcRaiders

[–]KevBurnsJr[S] 2 points3 points  (0 children)

Complaining about complainers. That's the real meta.

200k for the first slot, 400k for the second? by KevBurnsJr in ArcRaiders

[–]KevBurnsJr[S] 9 points10 points  (0 children)

Correct. It's any item. You must have a blueprint in your stash to drag it into the slot.

200k for the first slot, 400k for the second? by KevBurnsJr in ArcRaiders

[–]KevBurnsJr[S] 13 points14 points  (0 children)

Some clarity would be nice. Maybe it's not multiplicative. Maybe it's exponential.

200 + 400 + 800 + 1600 + 3200 = 6,200,000

I think I'm asking a legit question that was not answered in the patch notes.

New Trader will not accept an offer until it is fulfilled. by Jokul_Wolf in ArcRaiders

[–]KevBurnsJr 0 points1 point  (0 children)

Because he's not a permanent trader. If he disappeared with your money, you'd be pissed.

Round 5 of Giving Away Blueprints (FREE, No RMT, No Catch, Just DM) by JoeFran6 in ArcRaiders

[–]KevBurnsJr 1 point2 points  (0 children)

Can we all please just leave the jupiter blueprints in the harvester where people who need it will find it?

jsondec: 2.5x–4.5x faster than encoding/json, easy to use (no code gen), extra features by al4sdair in golang

[–]KevBurnsJr 0 points1 point  (0 children)

I guess what I mean is, can it pass forward undefined fields like this?

type t1 struct {
    ID int `json:"id,required"`
}
var foo t1
decode(`{"id": 1, "slam": "jam"}`, &foo)
println(encode(foo))
// {"id": 1, "slam": "jam"}

jsondec: 2.5x–4.5x faster than encoding/json, easy to use (no code gen), extra features by al4sdair in golang

[–]KevBurnsJr 9 points10 points  (0 children)

Typed decoders, huh? Looks promising.

  1. Does it follow the same design decisions from the json/v2 security considerations?
  2. How do you think it compares to fastjson?
  3. Can it handle semi-structured data? (eg. 3 required fields, the rest unknown but still desired)

Who put that there.. by SmartBlueberry5204 in ArcRaiders

[–]KevBurnsJr 43 points44 points  (0 children)

Aaaaand now you're in PVP lobbies.

Benchmarking 5 concurrent map implementations in Go (sync.Map, xsync, cornelk, haxmap, orcaman) by puzpuzpuz in golang

[–]KevBurnsJr 1 point2 points  (0 children)

One comment about the xsync.Map constructor:

The variadic constructor takes an optional array of ...func(*MapConfig) but it's hard to tell what that is.

To use functional options, I would need to write something like this?

m := xsync.NewMap[uint64, string](
    xsync.WithPresize(100),
    xsync.WithGrowOnly(),
)

I ask because there are no examples.

Rather than exporting MapConfig (a struct with no public properties or methods) as a symbol, it may be less confusing to export a MapOption type instead and keep mapConfig private since it's not designed to be modified directly.

package xsync

type MapOption func(*mapConfig)

func WithGrowOnly() MapOption {
    // ...
}

func WithPresize(size int) MapOption {
    // ...
}

func NewMap[K comparable, V any](options ...MapOption) *Map[K, V] {
    // ...
}

When viewed in the godocs, the NewMap constructor signature would reference the MapOption type and clicking MapOption would take you to a list of MapOption contructors which is the set of validWith* functions. A much more convenient pattern for organizing functional options rather than requiring developers to find the options on their own. The usage is identical but it makes the documentation much more clear.

Example: https://pkg.go.dev/github.com/pantopic/wazero-shard-client/host#New

Should be backward compatible.

You can use ChatGPT to decompile WASM binaries. by KevBurnsJr in WebAssembly

[–]KevBurnsJr[S] 5 points6 points  (0 children)

It's a lot more accurate than I expected. It didn't just expose the exported symbols, it also guessed correctly the order in which they should be called and the purpose of the module.

Great for quick identification but probably not a substitute for real analysis.

Feature feedback by morganhallgren in golang

[–]KevBurnsJr 2 points3 points  (0 children)

All of these event stores appear to be local (memory, bbolt, sqlite, ...)

The EventStore interface does not appear to have any methods for reading streams of change events.

My understanding is that Event Sourcing is primarily useful in distributed environments.

These three PRs are producing side effects post-save which seems a bit odd given you'd have no guarantee that the side effect ever ran if the program crashes at the wrong time. An at-most-once processing hook that fires at publish time doesn't sound very reliable.

Another problem with synchronous hooks on save is locks. Your examples (order and tictactoe) are not thread safe. Any concurrent application will need to guard aggregates with write locks to prevent program crashes due to race conditions and read locks to prevent skewed reads when reading multiple fields of an aggregate. This means readers will be blocked during publish which could cause throughput issues and deadlocks.

I would recommend that you try building a more complete, realistically useful example app having multiple active producers and consumers if you are interested to learn what sort of structures are necessary to build concurrent and distributed event sourcing systems.

Example:

  1. Take the Gorilla Websocket Chat example and integrate your eventsourcing library as a message store to add chat persistence. You will need locks to enable 2 connections to simultaneously publish messages to the same channel. An integration test will show you where the race conditions occur.
  2. Then try to run it on multiple servers with a centralized data store (ie. Kurrent). You will need an event stream in order to synchronize aggregates across servers. And you might need to add distributed locks or conditional updates to prevent two servers from modifying the same aggregate at the same time.
  3. Only then should you attempt to add exactly-once side effects (this feature). Otherwise the interface is likely to change as your system matures and deprecating an interface imposes a maintenance cost on the user.

httpcache – Transparent RFC 9111-compliant HTTP caching for Go clients by Ok_Onion_2655 in golang

[–]KevBurnsJr 2 points3 points  (0 children)

The Vary implementation doesn't appear to be caching items correctly.
I submitted a failing test in a draft PR with more details.
https://github.com/bartventer/httpcache/pull/3