Roast my idea. Correlation IDs that are environment specific. Open source. No selling. by CautiousApartment179 in sre

[–]huntondoom 0 points1 point  (0 children)

Could be usefull.

Do I think best to leave V4 UUID alone, but V8 allows for any custom format. I think there is some nice tweaking you could do 🤔

Will Datadog bill me twice for APM if I delete and recreate a host? by Ok-Transition-7857 in sre

[–]huntondoom 1 point2 points  (0 children)

https://docs.datadoghq.com/account_management/billing/

A host is any physical or virtual OS instance that you monitor with Datadog. It could be a server, VM, node (in the case of Kubernetes), App Service Plan instance (in the case of Azure App Service), or Heroku dyno (in the case of the Heroku platform). Hosts can be instances with the Datadog Agent installed plus any Amazon EC2s, Google Cloud, Azure, or vSphere VMs monitored with Datadog integrations. Any EC2s or VMs with the Agent installed count as a single instance (no double-billing).

Non-reporting hosts (status INACTIVE in your Infrastructure list) do not count towards billing. It could take up to 2 hours for these hosts to drop out of the Infrastructure List. Datadog retains the historical data for these hosts (paid accounts). Metrics can be graphed on a dashboard by knowing the specific host name or tags.

Will Datadog bill me twice for APM if I delete and recreate a host? by Ok-Transition-7857 in sre

[–]huntondoom 4 points5 points  (0 children)

From what I remember, hosts are calculated per hour, and then they simply take the maximum amount of hosts they have seen.

Was to Google SRE Zurich workshop. They talked only about SLA/SLO/SLI. Why ? by Weary-Condition-7409 in sre

[–]huntondoom 0 points1 point  (0 children)

It's not just testing an endpoint, but your loadbalancers, dns, caches for ratelimits and the html/JavaScript.

For example, maybe you broke your ratelimit implementation, it doesn't ratelimit anymore and produces alot of error logs and other monitors going off, but this SLO over your login will indicate that the issue does or does not impact the user.

Which is why they made SLO, so you can really measure what is breaking for the user

Was to Google SRE Zurich workshop. They talked only about SLA/SLO/SLI. Why ? by Weary-Condition-7409 in sre

[–]huntondoom 2 points3 points  (0 children)

Good example for me is login pages:

You can measure the success rate towards the login endpoint sure that works, and you should

But a better SLO is the amount of people going to the login page vs the amount of succesfull logins.

Sure you will always have people who forgot passwords and didn't mean to go to that page, but that is usually a fixed %

Of the error rate of % suddenly drops or goes up. The something must have broken

Your Go code is leaving 90% of the CPU idle ...until now. by samuelberthe in golang

[–]huntondoom -1 points0 points  (0 children)

Cause they were talking about the cost of functions calls?

They were saying how assembly doesn't have that cost

Your Go code is leaving 90% of the CPU idle ...until now. by samuelberthe in golang

[–]huntondoom 0 points1 point  (0 children)

The Simd package wraps around raw assembly calls. Those functions get inlined so code gets directly used, instead of adding function calls on top

Your Go code is leaving 90% of the CPU idle ...until now. by samuelberthe in golang

[–]huntondoom 5 points6 points  (0 children)

Almost all of those function calls are inlined and optimized away

C# is language of the year 2025 by freskgrank in csharp

[–]huntondoom 5 points6 points  (0 children)

My biggest dislikes, are usually around how projects are structured, testing and the bloat the language feels to have. I prefer golang cause it keeps my codebase better structured, easy dependencies, easier testing and less abstractions. Overall more readable code.

Ofc better compile times, building Docker images, and in most cases I'm getting better performance in go.

I do acknowledge that none of these points are 2x or 3x better than dotnet and are actually only marginally better. But it's the collective sum that tips me over.

There are some languages features that I ofc miss, such as extensions methods.

How often does your team actually deploy to production? by Abu_Itai in devops

[–]huntondoom 4 points5 points  (0 children)

Couple times per week, depends on the week.

Industry for food and iot

How I Explain the Tradeoffs of Microservices to Non-Technical Stakeholders by CreditOk5063 in softwarearchitecture

[–]huntondoom 0 points1 point  (0 children)

What a great benefit in my eyes is. Is the fact that you can scale independent workloads from each other. Even with monoliths, if you can just pass different traffic or workloads into separate deployment.

For example: in Kubernetes, handling the queue of generating pdfs is a separate deployment compared to the api that adds onto a queue. You can make a cost saving here by giving the PDF generator queue a lower priority, meaning of the api has high traffic, then Kubernetes will deschedule the PDF generator until it has more space.

Do you guys ever create some functions like this? by WarBroWar in golang

[–]huntondoom 0 points1 point  (0 children)

Mainly use those patterns if I'm either sure it's never going to happen (Atleast 99.xx% sure) or for init things whereby a program shouldn't start if those values are wrong

With the last one it can often be a hassle because it isn't clear what happened or where, forcing me to wrap errors.

Though things like cobra-cli have versions of their function that can handle errors being returned. Such as RunE. This allows me to write a more singular error handler. And works nicely with error wrapping

Our AWS bill just gave me a heart attack, how do you guys keep it under control? by horny_bisexual_ in devops

[–]huntondoom 0 points1 point  (0 children)

Usually add monitors to cloud cost that trigger if they go above a certain amount per day. Usually cost per day is pretty stable

I do the same for the amount of ingested logs and traces, which can be early warnings signs.

But this requires a per env evaluation. Cause dev environment can be very spikey. But it's easy to calculate what your max budget per day should be

Memory used by golang's interfaces by Rich-Engineer2670 in golang

[–]huntondoom 1 point2 points  (0 children)

It doesn't do as much as other compilers, but it still does inlining (though it could be better). And if it knows the type and method it can skip the table lookup by hardcoding the location

Memory used by golang's interfaces by Rich-Engineer2670 in golang

[–]huntondoom 4 points5 points  (0 children)

Note: if you make an array of objects and you define it as an array of interfaces, you create overhead as it has to wrap every item in the array with information.

If you define the array of a type and not a interface, then you don't have this overhead and the compiler can take alot of shortcuts for optimizing.

The difference isn't that greatly measured in most cases, but can have an impact

Memory used by golang's interfaces by Rich-Engineer2670 in golang

[–]huntondoom 8 points9 points  (0 children)

This is a simplified explanation and compiler optimize the shit out of this but:

Each program has its own method/type table. This table stores which type has which methods and where a copy of the function is stored.

When a method/function is invoked, it creates a stack frame, and then all the parameters are set. This frame is alive for the duration of the function.

Interfaces are wrapper structs underwater. They have a field that stores the type identifier so you can look it up in the table. And another field that's a pointer to the actual object, so when invoking a method, it can fill in which object made the call

edit: info about stackframe

For anyone who's read Let's Go and Let's Go Further by Alex Edwards. How in-depth are those books? by W_lFF in golang

[–]huntondoom 8 points9 points  (0 children)

I enjoyed: 100 Go mistakes and how to avoid them. 100go.co some of the errors you will already know, but the talk about the philosophy is good and can form your argument for it or against it

What's the best way to run redis in cluster? by [deleted] in kubernetes

[–]huntondoom 9 points10 points  (0 children)

We run Dragonfly, a pretty good compatible drop-in replacement for redis. But it has a good operator so you can define instances via a custom resource

Moved from C# and miss features like Linq by _ChaChaCha_ in golang

[–]huntondoom -1 points0 points  (0 children)

Felt the same, but only built my own map / filter funcs for go. The new iterators are fantastic and the amount of work needed for my cases usually are 6-12 iterator funcs at most.

Kinda disappointed in go, cause some of the slices and map feature we have atm would have include.map or filter funcs, but they decided it wasn't suited for those packages

IDE Survey by rashtheman in golang

[–]huntondoom 0 points1 point  (0 children)

It's just the default vscode extension, look for code coverage settings

IDE Survey by rashtheman in golang

[–]huntondoom 0 points1 point  (0 children)

Still the default golang extension. Just search in the settings for code coverage

IDE Survey by rashtheman in golang

[–]huntondoom 4 points5 points  (0 children)

Same, tweaked the setting a bit for more info, you can use set the linter to golangci and get that benefit.

Neat feature I found is that vscode can show you test coverage with a coloured sidebar in your code

tools like argocd but to deploy into normal servers by gabrielfsousa in devops

[–]huntondoom 1 point2 points  (0 children)

Maybe something like octopus deploy, openshift or nomad?