It's also wild how the majority of humans still don't want to accept that we are in fact animals.. which I presume is why it comes as some shock when a lower intelligent species exhibits signs of ourselves.
Counter point though- what if it was trained on your specific code base? Wouldn't it be able to then help with those given nuances?
The code base I have I would love to be able to just give some AI free reign and learn the structure since a lot of it is fairly repetitive; I know it would be so easy to say "hey add X just like Y" and it would be able to do it easily.
The rare times where I have no good idea what to do, it is faster to code with an LLM. The rest of the time, when I know just what I want, it takes longer for me to formulate it, query the LLM and discuss and validate its output.
My more experienced/senior colleagues all say roughly the same. It’s great help for our juniors though. They learn a lot and are more capable on their own with the AI assistance.
It’s improving all the time though, so I’m not writing it off at all. I am developing an evaluation suite so I can keep watching the progress in a systematic way..
Open benchmarks are vulnerable to saturation. I think benchmarks should have an embargo periodic, until which only 3% of the question-answer pairs is released, with an explicit warning not to use it 3 months after being released.
I think there are types of problems that AI will be great at solving. If you can pass in a whole codebase then we might have LLMs that can suggest refactoring etc to improve code quality.
Code mods like upgrading from python 2 -> 3 could also become possible.
Anyone that didn't see this coming is so naive- Trump only cares about optics. Look at the message when opening tiktok "Thanks to President Trump"... there is no way he didn't say "look, you HAVE TO PUT MY NAME OUT THERE or you are being banned".
But yet morons will be like "trump saved tiktok!!!"
That's MOBILE games.. it's not video games in general.
Yes, 99% of mobile games are utter crap that don't try to create an actual game, only a way to make money.
My kids have only played a handful of mobile games but they have been deep into computer games for 8-10 years. You absolutely cannot just lump video games in general into that. Not to mention that I want my kids to be kids and have fun, they have also learned an insane amount from playing video games.. whether it be helping with their reading, math, optimization, and also social learning.. learning how to play together and with their friends, having conflicts and resolving them etc.
>We had to ban YouTube, and doing so was possibly the single best boundary we've set as parents
Sounds horrible. My young teens have been on youtube for like 6+ years. They can watch hour long videos no problem. So what if they are trash sometimes? They are into it, paying attention and it's their entertainment. But then they also end up watching and learning so many different things they aren't going to see anywhere else. Or randomly come across chess videos then start watching those etc.
My kids have more screen time than 99% of kids I know, yet they are super well behaved, have many interests, do well in school, etc. I couldn't ask for better kids.
>If we hadn't we'd probably have never spoken to our kids again.
I’m in a similar situation. Haven’t found a need to lock down things like YouTube or even TikTok. My kids aren’t endlessly scrolling. They are playing games with friends or reading or practicing sports / music. My middlest daughter recently took up pottery and previously knitting because of content she watched on TikTok. My youngest is constantly asking to do home chemistry stuff she learned watching such content. We had to cut her off from the home made slime, but not the content that got her interested enough to want to try it herself. My children are more well rounded due to these services. Far from the mindless doom scrollers everyone else claims these apps turn kids into.
>Are you proposing just to add new field to a JSON response, even though they are not needed?
That is exactly what OP is proposing and it makes total sense. More data != bad. Just ignore if you don't need it. For 99.999% of cases the bandwidth of extra data is entirely negligible.
For business cases you just want to get things done. If the server has added more data, which is obviously relevant in some regard, you can see it and might want to use it etc. With GraphQL you are completely stuck without SPECIFICALLY requesting it. That means every client needs to know about the new data and specifically request it. In theory that might sound like it makes sense, but in practice this is virtually never the case.
Give me all the data and I'll use what makes sense.
This sounds like a facetiously-simple answer, but it's entirely earnest. If the data properly belongs as a property of the object, return it in the object's representation. If the "data" is actually an ID of a related object, return that id (or, better yet, the URL at which to find information about that object) as a link.
Domain-Driven Design is much over-hyped, but on this they were right on the money.
("But then you have to make multiple requests to gather information which crosses the boundaries of many objects". Yes. And? Beyond a reasonable point, latency is nowhere near as important as many developers like to think it is, especially when compared with a simple and straightforward API - and if this is one of those rare cases that is on the critical path, you _can_ add a dedicated getFooWithAdditionalBars endpoint to your REST API)
I only have one experience with a client using GraphQL and it was horrendous.
My biggest complain is there seemed to be no way to just to query all fields. I know that is intentional and the point of GraphQL.. but they should support something for the server side to enable this. Maybe they have over the years, I don't know. But my experience was during the implementation phase the client kept adding new fields that I didn't know about and then I had to constantly ask them for the fields because I thought I was missing data. If I could have just queried ALL the fields, then saw what came in, and chop them down to what I need.. great.
The only way GraphQL seems to make any sense is if everything is basically completely defined and you are at a final project stage. After many many years of experience... this is rarely the case.
Cool piece of technology? Sure.. but hardly practical except in scenarios of extreme amounts of data and only when it makes sense for the client to return specific fields.
Although I think still for 95% of even those extreme cases, you just write a REST endpoint that returns the fields that make sense for the query....
I think you’re right about it being suited to well-defined scenarios. But I agree too that a regular endpoint to get specific data is more often than not totally acceptable. I’m not aware of many situations where the flexibility of graphql is as useful or important as the demands it places on a team.
I worked on a team where 3 of us were well into our second decade of software development, yet we still had a consultant come in to help us sanity check our graphql implementations and ongoing strategy.
We were mostly on the right track. The struggles we were having were just… Normal.
At that point I really lost steam. Prior to that I was motivated by the thought that something wasn’t clicking yet. Discovering that I understood graphql just fine but it was typically a bad developer experience with obtuse tooling and queries took the wind out of the sails.
The worst part was mutations.
Writing graphql handlers in Rust was also awful. The more you try to leverage the flexibility of graphql, the more Rust freaks out because you’re doing exactly what you shouldn’t in such a strict environment.
Yet… Doing this in a language with weaker typing and less strictness seems like a potential minefield of bugs.
I see the appeal of graphql and I’ve liked it in small one-off situations where it was useful but had limited scope. Otherwise I genuinely hope I don’t work with it again.
I am for sure no graphql ninja but I believe what you are describing is achievable via the introspection call, which the sibling comment hints at when mentioning the schema but I'm saying that's a runtime call just like any other and thus no "reading" required. I do think that introspection stuff is opt-in because some shops consider it an information leak vector, but for dev/staging I think it's a perfectly fine tradeoff