I finally turned off GitHub Copilot yesterday. Iβve been using it for about a year on the βfree for open-source maintainersβ tier. I was skeptical but didnβt want to dismiss it without a fair trial.
It has cost me more time than it has saved. It lets me type faster, which has been useful when writing tests where Iβm testing a variety of permutations of an API to check error handling for all of the conditions.
I can recall three places where it has introduced bugs that took me more time to to debug than the total time saving:
The first was something that initially impressed me. I pasted the prose description of how to communicate with an Ethernet MAC into a comment and then wrote some method prototypes. It autocompleted the bodies. All very plausible looking. Only it managed to flip a bit in the MDIO read and write register commands. MDIO is basically a multiplexing system. You have two device registers exposed, one sets the command (read or write a specific internal register) and the other is the value. It got the read and write the wrong way around, so when I thought I was writing a value, I was actually reading. When I thought I was reading, I was actually seeing the value in the last register I thought I had written. It took two of us over a day to debug this. The fix was simple, but the bug was in the middle of correct-looking code. If Iβd manually transcribed the command from the data sheet, I would not have got this wrong because Iβd have triple checked it.
Another case it had inverted the condition in an if statement inside an error-handling path. The error handling was a rare case and was asymmetric. Hitting the if case when you wanted the else case was okay but the converse was not. Lots of debugging. I learned from this to read the generated code more carefully, but that increased cognitive load and eliminated most of the benefit. Typing code is not the bottleneck and if I have to think about what I want and then read carefully to check it really is what I want, I am slower.
Most recently, I was writing a simple binary search and insertion-deletion operations for a sorted array. I assumed that this was something that had hundreds of examples in the training data and so would be fine. It had all sorts of corner-case bugs. I eventually gave up fixing them and rewrote the code from scratch.
Last week I did some work on a remote machine where I hadnβt set up Copilot and I felt much more productive. Autocomplete was either correct or not present, so I was spending more time thinking about what to write. I donβt entirely trust this kind of subjective judgement, but it was a data point. Around the same time I wrote some code without clangd set up and that really hurt. It turns out I really rely on AST-aware completion to explore APIs. I had to look up more things in the documentation. Copilot was never good for this because it would just bullshit APIs, so something showing up in autocomplete didnβt mean it was real. This would be improved by using a feedback system to require autocomplete outputs to type check, but then they would take much longer to create (probably at least a 10x increase in LLM compute time) and wouldnβt complete fragments, so I donβt see a good path to being able to do this without tight coupling to the LSP server and possibly not even then.
Yesterday I was writing bits of the CHERIoT Programmersβ Guide and it kept autocompleting text in a different writing style, some of which was obviously plagiarised (when Iβm describing precisely how to implement a specific, and not very common, lock type with a futex and the autocomplete is a paragraph of text with a lot of detail, Iβm confident you donβt have more than one or two examples of that in the training set). It was distracting and annoying. I wrote much faster after turning it off.
So, after giving it a fair try, I have concluded that it is both a net decrease in productivity and probably an increase in legal liability.
Discussions I am not interested in having:
The one place Copilot was vaguely useful was hinting at missing abstractions (if it can autocomplete big chunks then my APIs required too much boilerplate and needed better abstractions). The place I thought it might be useful was spotting inconsistent API names and parameter orders but it was actually very bad at this (presumably because of the way it tokenises identifiers?). With a load of examples with consistent names, it would suggest things that didn't match the convention. After using three APIs that all passed the same parameters in the same order, it would suggest flipping the order for the fourth.
The European Commission is going through Appleβs OSes feature by feature, with the help of interested parties and industry collaboration, and deciding where the API lines should be drawn. Itβs absolutely fascinating.
And remember, Apple brought all of this on itself through its years of misconduct and inability to follow the law.
Don't miss the 30 pages of proposed specs in the PDFs here (summarized in screenshots here; no alt-text, follow through to original link): https://digital-markets-act.ec.europa.eu/dma100203-consultation-proposed-measures-interoperability-between-apples-ios-operating-system-and_en
@PsyChuan hello yes this is renamon
Genes, phenotypes and gender
"XX == Female, XY == Male" is one of those over-simplifications from grade school science that continues be waved around my bigots as though it's the last word in gender identity because they have no idea that what they were taught in grade school is an over-simplification.
AMAB can have XX(1), AMAF can have XY(2). It's rare, but it happens. Then you have people who are intersex at birth, XXY and other variations.
Humans are complicated and there aren't any universal rules.
1. https://en.wikipedia.org/wiki/XX_male_syndrome
2. https://en.wikipedia.org/wiki/XY_gonadal_dysgenesis
re: Weight, bad brain
@garrwolfdog Oh wow that price is actually really good, and there's enough of a range that I shouldn't get bored quickly. Thanks! ππππ
re: Weight, bad brain
@garrwolfdog Oh I wasn't aware of those; will take a look, thanks! ππ
@PsyChuan Gosh!!! π
I have got a Tali mask already; just need to make it fit/easier to wear, and also the rest.
@PsyChuan I really want to do a Tali cosplay π
Weight, bad brain
Lunch is the main problem area, as there's too many places to eat that don't work well with dieting.
It's just really hard for me to find filling lunches to eat that aren't boring or get repetitive, and are easy to make/don't take a lot of time to prepare.
Upcoming stream!
Thursday, 9pm-10pm (London, UK, time)!
Back with Guilty Gear!
It's been a hell of a week! lets hang out, blow off some steam, & try to make some progress in the online matches :D
www.twitch.tv/garrwolfdog
#Furry #VTuber #Stream #FurryVTuber #furrystreamer #streaming #streamer
During these colder months, it'd be nice to get a hug from a plush friend like Sunset!
Trans Renamon/Wolf girl (MtF), glue Supervillain, and The Dark Knight, Therian/Otherkin, Grey-Ace.
HRT since 1st July 2024 - Doses: 112
IT Engineer, Radio Amateur, Linux Witch.
π»2E0KJU
#nobot