|
if you use metaprogramming in any sense other than generic types please explain yourself
|
# ? Oct 16, 2017 22:54 |
|
|
# ? May 22, 2024 15:49 |
|
Shinku ABOOKEN posted:if you use metaprogramming in any sense other than generic types please explain yourself i live to build beautiful apis
|
# ? Oct 16, 2017 23:16 |
|
your definition of beautiful must be very different from mine
|
# ? Oct 16, 2017 23:53 |
|
I'm okay with logging APIs that use macros and metaprogramming to inject call-site information as context data for log messages for me.
|
# ? Oct 17, 2017 01:26 |
|
JewKiller 3000 posted:your definition of beautiful must be very different from mine no kidding, mr jewkiller
|
# ? Oct 17, 2017 01:30 |
|
metaprogramming is a really cool idea that's almost always terrible in practice but it's a thought exercise and so we must let James do it
|
# ? Oct 17, 2017 01:33 |
|
everyone gets real hung up on this very relative qualifier before "services" just try not to build lovely services, and if you're incapable of that read some domain driven design books and get a job at thought works or something
|
# ? Oct 17, 2017 01:35 |
|
|
# ? Oct 17, 2017 01:36 |
|
FamDav posted:also event-driven synchronization and post-hoc reconciliation are the 1920s devil and you should probably go somewhere else first for your fix this is True and Good but you gotta admit AWS gives end users every opportunity (and probably a lot of tutorials) to build systems like this w/o contraindication. what is amazon's chubby?
|
# ? Oct 17, 2017 01:43 |
|
AWWNAW posted:this is True and Good but you gotta admit AWS gives end users every opportunity (and probably a lot of tutorials) to build systems like this w/o contraindication. what is amazon's chubby? amazon's chubby-equivalent is amazon's chubby equivalent. when there's a paper published or a service launched I'll hit you up and i think at a certain point you have to meet customers where they are and they want to be. i disagree with quite a bit of how some of our customers use our service, but at the same time they're successful and growing on our platform. who am i to judge? i also don't think event streams themselves are bad, and streams-as-a-service like kafka and kinesis are quite nice and work really well for certain applications. but using them as a common SPOF dumping ground for state is just not a good idea
|
# ? Oct 17, 2017 02:51 |
|
i love big beautiful apis
|
# ? Oct 17, 2017 03:26 |
|
Shinku ABOOKEN posted:if you use metaprogramming in any sense other than generic types please explain yourself I think I wanted to write less code "don’t repeat yourself", "fewer lines means fewer bugs", etc. taken too far? the mistaken belief that efficiently making GBS threads out code is of primary importance because I can only type so fast? I can’t tell what’s more disappointing: that the only reasons I can guess at are bad, or that I don’t remember having a concrete reason for doing it in the first place maybe my tastes changed
|
# ? Oct 17, 2017 04:08 |
|
the more convoluted your ~event stream~ is, the more it costs to do poo poo in the cloud it makes perfect sense
|
# ? Oct 17, 2017 04:47 |
|
a train of thought i had at work: * i notice that a lot of api's in our company have a ton of optional fields * we have a six-month deprecation notice on api breakage * instead of wanting to modify their api in a breaking way, people seem to just randomly add new fields then * this sucks others have noticed that as well and are proposing we move to kafka and store service's events there. in itself this is fine, but they seem to think this will solve versioning problems as well. but wouldn't it just be: * a team starts sending OrderCreated messages to a kafka topic (or stream or whatever it's called, idk) * they want to change their message * they either need to create a message-v2 stream, somehow backfill it, and instruct everyone to switch over * or, they'll just add an optional field to their existing message seems like they'd choose the latter. it sucks, but it also makes sense that that would be a team's choice, since it's lowest friction for them. now if it were up to me i'd just make sure you don't need to keep old api's around and part of breaking your own api is that you have to go into other services and fix the integration, which could be fairly straightforward to do. but let's assume this is an organization where that's not possible...how do you handle a scenario like this?
|
# ? Oct 17, 2017 09:33 |
|
there was a very good post about message versioning by mononcqc iirc but i can't find it
|
# ? Oct 17, 2017 09:50 |
|
Sagacity posted:* or, they'll just add an optional field to their existing message we use avro + kafka at work and this is absolutely what everyone does
|
# ? Oct 17, 2017 12:33 |
|
But at some point you reach a tipping point where most of your properties are optional?
|
# ? Oct 17, 2017 13:06 |
|
Sagacity posted:But at some point you reach a tipping point where most of your properties are optional? type systems getting you down? just have 100 possible optional fields, only a few of which are populated at any point in time and just make it clear in the documentation which methods populate or require which ones. all of the downsides of strong static typing and none of the upsides!
|
# ? Oct 17, 2017 13:36 |
|
MononcQc posted:my totally flippant opinion of Go and Node.js is that they're the two communities that are the largest proponents of microservices because both language are lacking in terms of facilities to allow the abstractions and code organization required to make a large code base maintainable. The weaknesses in the languages must be palliated by architectural patterns which enforce concepts (i.e. demarcations of programming in the large vs. programming in the small) that are hard to express with the base language itself. alternatively, monoliths are popular with languages that have high setup costs/deployment costs
|
# ? Oct 17, 2017 13:55 |
|
gonadic io posted:documentation
|
# ? Oct 17, 2017 14:09 |
|
seriously though, tooling around api's in general is pretty poor. like, there used to be swagger and raml and perhaps some others. raml got shot and now we just have swagger which is renamed to openapi. code quality of everything related to swagger is...well -- swagger-codegen is touted as the way to go for generating clients that consume a rest api. it's literally just a Map<String, String> that goes into some kind of mustache (or w/e) template. this is not maintainable at all. their openapi parser has a compatibility mode for 'old style v2 swagger' but it doesn't actually parse it correctly. and all of this doesn't actually take into account any kind of async api's, so don't expect to provide any documentation about message queues or topics your service may publish sigh then there's lots of people in google groups talking about api documentation and tooling, but they're all off in la-la land talking about HATEOAS vs HAL and other hypermedia nonsense nobody cares about
|
# ? Oct 17, 2017 14:23 |
|
quote:code quality of everything related to swagger is...well -- swagger-codegen is touted as the way to go for generating clients that consume a rest api. it's literally just a Map<String, String> that goes into some kind of mustache (or w/e) template. if you're on .net you'll have much better luck with NSwag (c#), or SwaggerProvider (f#)
|
# ? Oct 17, 2017 20:29 |
|
thanks, we're doing Java, so I ended up building something using the swagger-parser library and javapoet to generate source code. not too hard to do and it's working fairly well so far.
|
# ? Oct 17, 2017 20:36 |
|
Shinku ABOOKEN posted:if you use metaprogramming in any sense other than generic types please explain yourself metaprogramming in Common Lisp has nothing to do with generic types but it’s both idiomatic and fine, macros are cool and a good way to make it easy to write and read well structured code it’s just about the only place I’ve seen metaprogramming used non-horribly though (along with Enterprise Objects Framework, Core Data, and KVC/KVO/bindings, of course)
|
# ? Oct 18, 2017 00:00 |
|
eschaton posted:macros are cool and a good way to make it easy to write and read well structured code [citation needed]
|
# ? Oct 18, 2017 01:13 |
|
eschaton posted:metaprogramming in Common Lisp has nothing to do with generic types but it’s both idiomatic and fine, macros are cool and a good way to make it easy to write and read well structured code yeah lisp macros feel like the right "solution" for metaprogramming... but all the good ones have already been written so we must reinvent them in other languages
|
# ? Oct 18, 2017 01:28 |
|
frankly learning how to use lisp languages has eliminated my patience for learning any other syntax
|
# ? Oct 25, 2017 19:47 |
|
rt4 posted:frankly learning how to use lisp languages has eliminated my patience for learning any other syntax same, except k
|
# ? Oct 26, 2017 05:39 |
|
rt4 posted:frankly learning how to use lisp languages has eliminated my patience for learning any other syntax same, except javascript
|
# ? Oct 26, 2017 05:50 |
|
Shinku ABOOKEN posted:if you use metaprogramming in any sense other than generic types please explain yourself i used implicits in scala to create a notequals op for types so that i can make sure that a lambda someone is passing in to a service handler i made isn't just the identity function that returns the service then again they can just return a tuple with the service handle, so i guess i need to implement something else Condiv fucked around with this message at 08:43 on Oct 26, 2017 |
# ? Oct 26, 2017 08:40 |
|
Condiv posted:i used implicits in scala to create a notequals op for types
|
# ? Oct 26, 2017 19:34 |
|
rt4 posted:frankly learning how to use lisp languages has eliminated my patience for learning any other syntax same, except malbolge
|
# ? Oct 26, 2017 19:36 |
|
Akifumi Takata posted:Dear all, Akifumi Takata posted:Dear all, Akifumi Takata posted:Dear Richard Charles, Akifumi Takata posted:Dear Alex Zavatone, Akifumi Takata posted:
|
# ? Oct 27, 2017 04:14 |
|
holy gently caress. his bug reporting email is report@pedophilia.jp
|
# ? Oct 27, 2017 04:21 |
|
https://github.com/Nursery-Framework/Nursery/blob/master/Nursery/NUGradeKidnapper.h christ how do you get this unlucky. this is like tobias funke levels of bad naming
|
# ? Oct 27, 2017 04:28 |
|
like, the project name i can maybe get, it's compositional, most -philia/-phile words are positive, maybe you saw it and never thought to check the kidnapper thing is just, how, is this all some bizarre troll, did you really write an entire object database from scratch just to do this. like the analogies all actually work, grades and sandlots and kidnapping and
|
# ? Oct 27, 2017 04:51 |
|
rjmccall posted:like, the project name i can maybe get, it's compositional, most -philia/-phile words are positive, maybe you saw it and never thought to check the next time he emails one of you just respond with "moe" and see what reaction that elicits
|
# ? Oct 27, 2017 07:07 |
|
|
# ? Oct 27, 2017 07:28 |
|
rjmccall posted:like, the project name i can maybe get, it's compositional, most -philia/-phile words are positive, maybe you saw it and never thought to check what about peepholes? why was this file created by PTA? why are there stalking functions?
|
# ? Oct 27, 2017 07:42 |
|
|
# ? May 22, 2024 15:49 |
|
this owns so much
|
# ? Oct 27, 2017 07:49 |