← Înapoi la Urmăritori

Cel mai recent articol

Ultima verificare

Urmăritori 0 urmăritori
Articole: 30
  1. Swissing a table

    We have an annual hackathon at Ravelin in the lead up to Christmas each year.

  2. I stan clearing maps, no cap

    Recently at work I ran into an interesting performance problem.

  3. I seem to be writing about one blog post a year at the moment.

  4. What is a Go function variable?

    Me: What’s the audience for this post?

  5. Breaking Printf

    Acute impostor syndrome.

  6. Faster time parsing

    Here at Ravelin we have a lot of data with a lot of timestamps.

  7. Context

    When I write text I work hard to avoid being too terse.

  8. It ain't necessarily slow

    Don’t use reflection.

  9. []byte versus io.Reader

    Everyone loves io.Reader.

  10. Nil versus empty slices

    Go can have nil slices and empty slices, and they’re different.

  11. Search for a new JSON: jsoniter

    Both of my regular readers may be wondering what happened after my last blog about potentially forking encoding/json.

  12. Examining Evil

    It feels trite to write about the famous quote about premature optimisation being the root of all evil (I double-checked the definition of “trite” before I wrote that sentence!).

  13. Rebel Go: Forking encoding/json

    So in my mind the conversation went a little like this.

  14. In my last post I whinged endlessly about encoding/json and in particular about the poor performance of anything with a custom marshaler.

  15. This is a story about encoding/json in the Go standard library.

  16. Bad Go: guessing

    This is the 5th in a series of posts about Bad Go - a clickbaity title for posts about Go code that I’ve found frustrating because it could just be that little bit better.

  17. Bad Go: not sizing slices

    This is the 4th in a series of posts about Bad Go - a clickbaity title for posts about Go code that I’ve found frustrating because it could just be that little bit better.

  18. Bad Go: frivolous Sprintf

    This is the 3rd in a series of posts about Bad Go - a clickbaity title for posts about Go that I’ve found frustrating because it could just be that little bit better.

  19. Bad Go: pointer returns

    As an old C programmer I struggle with this one: it feels completely normal for functions to return pointers to structs.

  20. Bad Go: slices of pointers

    This is the first of what may be a series of blog posts on uses of Go that I’ve found frustrating.

  21. At Ravelin we’ve migrated to Kubernetes (on GKE).

  22. Go interfaces, but at what cost?

    There’s a cost associated with using interfaces.

  23. JSON and embedding

    Did everyone else already know this?

  24. The why of Go strings

    Regular readers of my blog will all be aware that in Go a string is in fact a struct with a pointer to an area of memory containing the byte content of the string and an integer Len that tells you how many bytes make up the string.

  25. The latest issue is a problem with the bulk feature extraction process we use at Ravelin (yes, we’re hiring!

  26. bytes.Buffer revisited

    Two years ago I wrote a post about building up strings with bytes.Buffer.

  27. Go in a scratch VM

    Many of us know that you can run Go binaries in “scratch” containers.

  28. At Ravelin we build Go binaries, package them into scratch Docker containers and upload them to Google Cloud Registry so we can use them in a GKE cluster.

  29. What’s all that memory for?

    If you actually want to use the memory on your computer with Go — really use it, with gigabytes of it allocated — then you may pay a big penalty for the Go garbage collector (GC).

  30. GC is bad and you should feel bad

    Some time ago I wrote about how I went to great lengths moving allocations off the Go heap into memory allocated directly from the OS in order to reduce the overhead of GC.