You're not forced to use that comment, you can pass the event however you like, if you satisfy the event.Any interface (by having the method EventName() string).
I prefer that comment because Go doesn't have native sum types, and I believe that by using the framework in combination with the gochecksumtype linter, you get the best developer experience and type safety (you DO have tab autocomplete with the events for recordThat - the type system helps because of the sealed interface).
But again, if you don't want to use the linter, no problem. You can create constructors for the events however you like, just like in your example.
This story is similar to the guys at senja.io: tech founder => marketing/growth person joins => business skyrockets to 1M ARR. It looks to me like a combination of having a product with some revenue and havingthe luck of someone like Jon joining.
I'd be more interested on how to find people like Jon tbh.
"We were gonna ask 1399 euros for this (overpriced already) but we think that some people might want to give us more money if we market it as an experiment"
I agree 100% with everything you've said, and I'm from the EU. EU companies are burning and pocketing as much money as they can for themselves while delivering sub-par software.
I have a small go binary that uses caddy and dns-sd on mac to have any kind of domain names on my local network (uses mdns) with https. Really nice for accessing websites from my phone.
My ideal k8s dev env (I wonder if any of the tools do this):
- local on my machine.
- ingress with https + subdomains integrated with mDNS (so I can access the services easily from my phone when developing mobile apps). mDNS also makes sure that other devs can set it up locally for themselves.
- easily swap what I'm working on, if I have 3 services A, B, C, while I'm working on A locally, I want B and C to run in the cluster and to be able to interact with them, same if I'm working on B, A and C should run in the cluster.