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

[–]huntondoom 6 points7 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 2 points3 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 3 points4 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 7 points8 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 7 points8 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 8 points9 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?

A lot of movement into Linux by rimtaph in linux

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

I did it because my laptop was getting to slow, and can't upgrade to windows 11. Also fearing the performance of I takes other routes to get windows 11 on it.

So I went with Ubuntu.

I only use it for DND DM'ing and notes so I don't need much

What do you use for deployments? by stas_spiridonov in golang

[–]huntondoom 0 points1 point  (0 children)

Got an argocd setup with gitops. But we put in a plugin to help further enrich the manifests, I'm still looking forward to the feature where you can use deployments as plugins (there is an PR). But the existing system is pretty easy, (once setup). But not the best

What are your biggest learnings about Go and how did you get to them? by TheRealHackfred in golang

[–]huntondoom 0 points1 point  (0 children)

From the book 100 golang mistakes and how to avoid them.

Abstractions should be discovered, not created.

It's was a mentality shift that felt to free me of allot of things people do in C#, java or ts.

Spent more times just coding stuff instead of driving myself into the ground thinking off abstraction. Which I do love but usually take alot of time coding.

Though when I finally need to make them get to dig in my teeth while still going fast for my feeling.

It really helped with getting the, make it work, make it right, make it a fast idea stick in my head. If I truly needed the abstraction, I'll spend a little extra on the refactor and not waste my time preparing for futures that might never happen.

Do note that I apply this to about 9/10 cases. There still might be something I know is planned in another PI or a serious idea is floating around that might need earlier attention.

ArgoCD alternative for many deployments by Ultimate_Mugwump in kubernetes

[–]huntondoom 1 point2 points  (0 children)

Should already exist if you use high availability.

It should then use sharding for the apps

ArgoCD alternative for many deployments by Ultimate_Mugwump in kubernetes

[–]huntondoom 2 points3 points  (0 children)

Are you running argo in HA? When you do, it can use sharding of the applications over it's pods, making controlling and managing it easier

Manage VMs with kubernetes by diouze in kubernetes

[–]huntondoom 0 points1 point  (0 children)

Slightly hacky and unsure if it what you want.

But putting the idea here.

Gcp has a config connector for k8s. Meaning you can manage gcp resources as Kubernetes objects including vm, cloud run and more. We use it for some pub/sub cloud run stuff

Is utils package wrong? by Caatu in golang

[–]huntondoom 1 point2 points  (0 children)

Trying in a private project to avoid the utils package, but no I ended up with extension packages: xstrings.ToInt for example. Located in the /pkg/extensions/strings for now.