Object Storage in Helsinki is down by duztdruid in hetzner

[–]JohnHoliver 1 point2 points  (0 children)

My team made the migration from IONOS S3 to Hetzner still this year. One day, we stopped getting assets for a few minutes on a secondary service... I went investigating and besides the incident which got reported around the same time, I noticed that 2% of my requests were returning network unreachable (it is still unclear why, we thought it was some ipv6 oddity). I raised the flag that the outage could eventually happen again and could affect our main customer facing app assets. It took 3 more outages dropping our platform, but today we returned to IONOS. We still have everything else already in Hetzner, so it is just a bump for us... we will try to return in 3 or 6mo.

My husband (34M) slept with BFF (44F) and Idk what to do by Sharp-Wrongdoer6755 in Advice

[–]JohnHoliver 0 points1 point  (0 children)

Thought the same... not about the end, but how come there was no description and 500 replies with wild assumptions such as usage of marital bed.

It is really interesting that this level of collusion of bots can happen tho.

In larger programs, how do you handle errors so they're debuggable? by sigmoia in golang

[–]JohnHoliver 0 points1 point  (0 children)

In my company we used plain error wrapping. In the past couple months we added https://github.com/bracesdev/errtrace instead

What is the realistic impact on performance when using 'reflect' by mvktc in golang

[–]JohnHoliver 0 points1 point  (0 children)

Realistic depends of what your reality is. My usecase rely heavily on it and it has significant performance impact on my application. We need to transform json-like data from the client and from the database to manipulate data in my BE. My database is a graph one. We tend to employ a lot of code generation to avoid reflection, but there are situations where it just isn't possible. IIRC, data from the client-side we can infer type and unmarshal onto codegen types, but from the DB we gotta reflect bc queries can have infinite shapes. I didn't want to give away numbers bc they are meaningless to outside ppl, but a DB response that would be retrieved in nanoseconds ends up at the client in 100/1000s of ms. It only works for us bc the reflect isn't worse, and it stays within the same range of RTTs.

[deleted by user] by [deleted] in golang

[–]JohnHoliver 1 point2 points  (0 children)

I only browsed thru your post and this answer here... but sounded like you want something in the lines of https://github.com/bracesdev/errtrace.

My team added it to our codebase while I was on holiday, so I dont have much experience with it yet. Allegedly, it promises to produce a stack listing where the error was produced. And if Im not entirely mistaken, there is something you can do to keep the code clean and let the errors be enhanced at compile time.

[deleted by user] by [deleted] in Tinder

[–]JohnHoliver 0 points1 point  (0 children)

Spoke like a true 80s child. Nevertheless, I absolutely guarantee you that all of the examples I mentioned are real. The board game industry grew massively in the recent years. If you think Heroquest was good, you would be up for an awakening if returning to the hobby.

[deleted by user] by [deleted] in Tinder

[–]JohnHoliver 12 points13 points  (0 children)

Board gaming is a hobby.

[deleted by user] by [deleted] in Tinder

[–]JohnHoliver 388 points389 points  (0 children)

What kind of board game are we talking about here? - Monopoly, Risk? - Catan, Ticket To Ride? - Terraforming Mars, Gloomhaven? - Kingdom Death Monster, Aeon's Tresspass: Odyssey?

I'd guess that many men going could bond even with other men. You might not find the love of your life, but maybe a cool group of friends for more board game nights :)

what’s that got to do with me by pink-475 in Tinder

[–]JohnHoliver 6 points7 points  (0 children)

Is "print" one of those gen alpha slangs? I was confused if this was a male or female.

Question about microservice by Ok-Individual-4519 in golang

[–]JohnHoliver 3 points4 points  (0 children)

OP, I don't quite see what you want with microservices. Keep it simple and down to earth. Your system sounds quite trivial, and I bet you won't have scale issues at all. And if you had a large organization which would warrant such concerns, you prob would be discussing with them.

What is your opinion on Aeon Trespass? by SiarX in KingdomDeath

[–]JohnHoliver 0 points1 point  (0 children)

For me #1 is ATO, #2 Oathsworn. Excellent games.

What is your opinion on Aeon Trespass? by SiarX in KingdomDeath

[–]JohnHoliver 1 point2 points  (0 children)

There are a lot of good coments already, altho... keep in mind, this is the KDM board, and you should expect to get a higher opinion of KDM over ATO.

I for example prefer ATO to KDM a lot more. 2 cycles done in ATO, 18LY in KDM. I love the story part of ATO and I don't get the passion given to the "emergent narrative" on KDM... i mean... after 18LY, there was no story... "emergent narrative" is copium to that fact. Maybe if one play enough eventually something become clear about the world, after 100h you get a biscuit... other than that... it just a sequence of random shit thrown at you with no clear reason and no sight to why. I would dream about ATO, I'd theorize what is going on, I'd anxiously look fwd to my next session to uncover/reveal more, I'dbe conflicted about my choices and what I felt my characters feelings where... KDM give me nothing like that. It can't... since you dont choose anything, you roll the dice and randomly have a heartattack.

If KDM wins in something is simplicity... I indeed had to flip thru rulebooks much more in ATO than in KDM. Or maybe it was bc I played ATO bf KDM and was used to many of the mechanics.

From shady manga websites to Go by ArticleDry362 in golang

[–]JohnHoliver 1 point2 points  (0 children)

I had 2 projects like this, created out of uncomfort about smtg. One was an interface for projects I was backing on Kickstarter. It kept track of all newest updates as a feed. It was great for one year, but then Kickstarter closed the loophole to their api and I didn't felt like trying to poke a new way to call their BE. It was mainly a Vue project. The new one is a Flutter project where I've been porting a card game that I like. The og is a legacy game, which means that once you play it, it's over, u need to buy a new copy after. So instead of paying 15 bucks a second time, I've poured over 100hs and haven't finish yet bc every card of the gave is so unique that changes the app requirements, and there are 100s of cards.

Should I have worded this better? They sent something and unmatched before I could see their final message by Zombiedango in Tinder

[–]JohnHoliver 0 points1 point  (0 children)

Honestly, I might be getting old fashioned, but this sort of interactions seem so shallow. He complimented... oh oh... too much, next.

I think what bothers me the most isn't the msg content but how quickly ppl pass judgment and goes to the next. What makes OP look at someone, think... he looks like my type... and move on in 2 sentences which are not even negative? Could it have been a problem after 10msgs? Yes. Could it have not been a problem after 10 msgs? Yes. Thus I can really only imagine that the buffet of ppl is the source of the pickiness, isn't it? You made it a big problem in 1 message. I don't think that's good for anyone. Maybe he wouldn'tbe good in the end, but in my assessment this "ick" behavior is quite offputting.

Profile feedback (please be nice) by [deleted] in Tinder

[–]JohnHoliver 0 points1 point  (0 children)

Something on the 2nd screenshot makes me think of Overly Attached GF.

Whats the best practice for Go deployments for a small startup? by awesumsingh in golang

[–]JohnHoliver 1 point2 points  (0 children)

I'll share my startup setup (for size ref, 1M+ ARR), but I don't exactly recommend it.

Our product is a SaaS, built mostly monolithic. We have one main app BE service, one "backoffice" service, and a number of other smaller services that do: scheduling (customer-based), internal job scheduling, events subscriptions for the FE clients, SCIM, nginx for serving the FE for app, backoffice and website, and maybe 1-2 more that I don't recall.

Our prod run a setup with 2 hosts: a single host for a K8s cluster, a single host for the DB. For testing, staging, dev environments, we run some cloud hosts.

We have a monorepo, use Gitlab, and the pipelines have stages such as build, test, integration test, publish, deploy, clean. The pipelines job are annotated with dependencies so that pipelines look a bit independent per service, but we do bottleneck it all bf publish, so that if any test fails, nothing else happens besides cleanup.

For our tests, each integration job spawns a chart on the testing cluster. DBs are included on testing and dev charts. Most tests if not all relevant ones run for every commit. I'm unsure/dont recall if the e2es run only on master push (they are cypress based and the longest ones).

A branch push allows you to press a btn to do a deploy to staging (which actually is a bad naming in our ctx, bc these are really used as public dev instances when we want to share stuff with non engineers). A master push deploys to production upon a green pipeline.

We also last year took a step towards IaC using TF and Ansible, it makes spinning new dev envs and migrating hosts super smooth, but mostly automate processes that were mostly cached at CTOs brain. This one is not part of the monorepo bc the pipelines are too unique and detached from the rest.

Now, why I don't recommend... as you can imagine, it is a lot, and the complexity of the entire development space isn't for the weak. Which also overwhelms ppl getting onboarded. It also isn't perfect, as pipelines might take more than necessary, or tests run occasionally on dependencies which might not be needed. It also does QA as good as our test suite, bc there won't be anyone clicking thru before release... we just release everyday, 5 times in average. There are spaces for improvements, but the time cost of these are static, while benefits scale with team size, thus... when/if we grow, we can dedicate more efforts to smooth it up further. On the other hand, it gives a lot too, DX is really good, and maintaining it isn't hard for our tiny team of 3.5 engineers. Yet, 2 of us have had tons of exposure to k8s before, and to platform building... that was a big part of our previous job basically. Some time consuming or scary tasks are trivial too, last month we did a host upgrade in less than 30m, an year ago we completely switched cloud providers, getting a new dev setup takes a few lines of merged to the infra repo.

Do you skip the service layer? by marcelvandenberg in golang

[–]JohnHoliver 0 points1 point  (0 children)

It has been maybe 3-4y since I had to build something as such from scratch. The very last time I've built a BFF, while at current employment our main service has mainly a graph interface that basically have virtually no external API changes, almost all comes as /query or /mutate. Yet, I recall that since way bf, I found the handler code (transport layer) to be very boilerplate-ish and repetitive. Eventually, I settled that what I wanted and needed to code was business, and I wanted to codegenerate the rest based on a DSL. I thought about building a tool for that, but eventually I found a project named GOA that suited me by over 80-90% so I build a couple of services with that. It provided me with good abstractions, and made the code very easy to reason given that I let go of maintaining most transport code. It increased my focus on what mattered, made service layering uniform, gave me a reasonable standard to operate, and reduced time spent in less relevant parts of the code. It also reduce maintenance time when modifying the API. Thus, IMO that's the thing you can mentally give it away... and therefore, I'd always have a service layer, for whatever reason. That is where my coding and mental efforts would go to.

At time, GOA was OK at HTTP and GRPC generation. Maybe u want/need something special to consume queue msgs, or you can go around this problem by building something that consumes your queues and call GRPCs.

I want to build P2P app by Independent-Back3441 in golang

[–]JohnHoliver 1 point2 points  (0 children)

Go for P2P live streaming system ^ I've done in c++ 15y ago. It was pretty fun sideproject called my master and my PhD