2,816 karma · joined April 16, 2014
Docker... doesn't do nearly any of those things?
I think you can probably formalize JSON API schemas in a useful way, but JSON API ain't it.
Wow, yes! Yes!
IDLs represent substantial complexity, and complexity always needs to be justified. Plain, "optimistically-schema'd" ;) REST, or even just JSON-over-HTTP, should be your default choice.
It's OK that some things involve subjective judgment.
This is such a lazy argument, because it's trivially defeated. Yes. Exactly this. In the same way that e.g. jailing one group (the guilty) is okay, but doing the same for another group (the innocent) is not okay.
Yep!
> IMO it makes things even worse since these groups will congregate in secret much further away from the public eye where they can perpetuate unbalanced and unhealthy ideas.
The whole point of deplatforming is to prevent those stupid ideas from having a general audience. Sunlight is not always the best disinfectant.
Reduce to the point of practical irrelevance? Yep.
Deplatforming works.
No, but they are the inevitable interface.
What? I never have to do this...
> I can't easily navigate to the definition of a function . . . I usually don't have tooling that can jump to definition
What? You command-click on it... ?
> jump-to-definition becomes impossible as soon as interfaces are involved, because structural typing makes it impossible to know what is an intentional implementation of that interface
What? You obviously can't jump-to-definition of an interface, but in what way is this a limitation?
In practice, this happens so infrequently it can be ignored as a risk. (When it does happen, users generally don't expect the software to continue to work.)
> dynamic linking has at least one extra advantage...
You don't seem to be acknowledging the downside risk to dynamic linking which motivates the discussion in the first place. An update to a dynamically linked dependency which breaks my delivered artifact is an extremely common event in practice.
Pinning dependencies absolutely and unquestionably works better, and for longer, than dynamic linking, for this use case.
Hopefully a library! As hopefully the AWS command-line interface is maintained and distributed separately from any SDK that powers it...
Yep. Though the same pathologies exist even with this framing. By that I mean it's easy to misdiagnose what the "knowledge" actually is. Even totally identical types and behaviors can be distinct in the knowledge sense if they exist in different contexts.
https://news.ycombinator.com/item?id=25236552 Micro – a self hosted cloud platform for API driven services development (2 months ago)
https://news.ycombinator.com/item?id=25044604 Micro 3.0 is a platform for cloud native development (3 months ago)
https://news.ycombinator.com/item?id=24999682 Micro 3.0 Released (3 months ago)
https://news.ycombinator.com/item?id=24999036 Show HN: Micro 3.0 (M3O) – a platform for cloud native development (3 months ago)
https://news.ycombinator.com/item?id=23081544 Announcing: M3O – A Micro services development platform (9 months ago)
https://news.ycombinator.com/item?id=23067233 Micro Server (9 months ago)
https://news.ycombinator.com/item?id=23070042 Show HN: Micro Server – run and manage microservices locally and in the cloud (9 months ago)
https://news.ycombinator.com/item?id=22200647 Show HN: Micro v2.0.0 (12 months ago)
https://news.ycombinator.com/item?id=21562859 What is Micro? It's just the future of microservices development (1 year ago)
https://news.ycombinator.com/item?id=21491378 Show HN: Go Micro – A Go microservices development framework (1 year ago)
https://news.ycombinator.com/item?id=19545615 Micro – the microservice toolkit 1.0.0 release and beyond (2 years ago)
https://news.ycombinator.com/item?id=12178690 Micro – A microservice ecosystem (4 years ago)
https://news.ycombinator.com/item?id=11930775 Show HN: Micro – a microservice toolkit at Go Meetup London [video+slides] (5 years ago)
https://news.ycombinator.com/item?id=11710611 Building Resilient and Fault Tolerant Applications with Micro (5 years ago)
https://news.ycombinator.com/item?id=11706540 Building Resilient and Fault Tolerant Applications with Micro (5 years ago)
https://news.ycombinator.com/item?id=11564021 The Micro Bot – ChatOps for Microservices (5 years ago)
https://news.ycombinator.com/item?id=11518847 Micro architecture and design patterns for microservices (5 years ago)
https://news.ycombinator.com/item?id=11471004 Micro on NATS – microservices with messaging (5 years ago)
https://news.ycombinator.com/item?id=11327679 Show HN: Micro – a microservice toolkit (5 years ago)
If you want best-effort asynchronous job processing semantics, then it's totally appropriate to use something like what's described in the article -- ideally with a lot less code :)
If you want request-response, then, yeah, this isn't appropriate, and I agree that you should do whatever work in the request goroutine, blocking as necessary.
https://pkg.go.dev/github.com/mattermost/mattermost-server/a...
This is atrocious stuff.
It is, and good packages don't have them.
There is much better code to read. I second the recommendation of HashiCorp's stuff. Stay away from Docker and especially Kubernetes.
> Essentially, what I am claiming is the Golang is a bad language for metaprogramming
That's definitely true, and an explicit choice. Thank goodness!
You define and use an interface to model the DB, and use that as the mock point. Basic stuff.