Developer Accidentally Deletes Three-Month of Work With Visual Studio Code (bingj.com)
New submitter joshtops writes: A developer accidentally three-month of his work. In a post, he described his experience, "I had just downloaded VScode as an alternative and I was just playing with the source control option, seeing how it wanted to stage -- five thousand files -- I clicked discard... AND IT DELETED ALL MY FILES, ALL OF THEM, PERMANENTLY! How the f*uk is this s*it possible, who the hell is the d******* who made the option to permanently delete all the files on a project by accident even possible? Cannot even find them in the Recycle Bin!!!! I didn't even thought that was possible on Windows!!! F*ck this f*cking editor and f*ck whoever implemented this option. I wish you the worst.'
This is why offsite backups, and revision control, is a good idea...
He clicks "discard" and it deletes the files. This seems a reasonable outcome. Did he not have any backups? I'm pretty sure that is the *real* WTF.
The software redefined the semantics of "discard" without informing the user. In Git, discard means "drop pending changes". In VS Code, apparently, discard means "delete and purge all historical references --force". How the hell can the VS Code devs justify introducing such a dangerous and confusing change?
Captcha: horror
If he's very very smart he shut down the machine immediately, mounted the drive read only and recovered the files. The chances are most of them were just unlinked and can be recovered since they havent been overwritten yet
"goodbye and hello, as always" ~Prince Corwin, from Zelazny's Amber series
Now that he's 18 - he has discovered the world isn't fair.
He goes three months and doesn't have a backup? Even in a ZIP file or on a USB drive, or "insert cloud drive service here"
An unfortunate mistake and maybe even a poorly implemented feature.
but I have little sympathy because - well his HD could have crashed or a crypto-worm or... basic data loss could have occurred.
However - how'd we all learn this lesson? Let others stumble before us or put our own finger in the fan !!!
"I pushed that big red button and it FUCKING NUKED NORTH KOREA!
Fuck you, fuck you, fuck you, why would anybody design such a piece of crap!
Fuck you, joint chiefs of staff!
Fuck you, football carrier!
Fuck you, Microsoft, or whoever designed that ugly piece-of-shit fat green-screen laptop!
Fuck you, Dr. Strangelove! How did we ever hire such a wacko? Nice salute, though! You should
have fixed that thing a long time ago! I saw the documentary!"
(Sorry, I'd meant to post this in ALL CAPS, but Slashdot needed to protect everyone from my YELLING...)
A single copy on Dropbox that has no SLA with you... is not sufficient.
... one). (offsite cloud backup).
You can setup a free account for a private repository on Bitbucket (free for small teams of
You should also be doing regular local backups and rotating them at a friends house as well (3 copies minimum).
Is it ok if we call this developer a git?
There may very well be a user interface problem with the product. I don't want to blame the victim.
However, this guy was going to lose his work someday. Maybe it would be a hard drive failure. Maybe a corruption. House fire. Who knows? The point is eventually he was going to have data loss because he doesn't back up. Microsoft may very well be the direct cause here, but this guy was NOT following any kind of best practices.
W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
So just for fun, I tried it.
Did he happen to ignore the popup with the big yellow exclamation mark that says:
"Are you sure you want to discard ALL changes? This is IRREVERSIBLE!"
At the very least the ALL CAPS WITH EXCLAMATION MARK! should have possibly made him think "Hmmm...this seems to be a pretty important question"
But apparently he decided: "Ah, screw it. It's only 3 months of my life".
Given that level of skill, I can't think much of importance was lost.
to add clarity (and my $0.027)
It is *absolutely* the developer's responsibility, but *not* his fault.
The software in question really shouldn't do something this drastic without a second window saying "This will erase files from disk. Are you sure you intend to do this?"
whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
I'd agree with this, especially in the context of the way Microsoft has trained users into normally expecting prompts when actions have very serious, arguably permanent results. User bears some responsibility, but when the design mentality of the UI since the beginning of the company has been to use confirmation prompts then there's an expectation that this will continue.
If I were him I'd immediately boot to some utility that scans the disk for filesystem clusters marked as deleted/available to attempt to undelete them. That is still a thing, right?
Do not look into laser with remaining eye.
The software in question really shouldn't do something this drastic without a second window saying "This will erase files from disk. Are you sure you intend to do this?"
It did actually. He said it came up and warned him "are sure to discard all the changes?" (his words) and he clicked yes. Since he hadn't ever checked anything in, his changes were what he had done in the past 3 months.
No backups, no source control for 3 months, a guy who doesn't know what source control is or does, and just clicks on warning messages without understanding them is his fault. Regular backups would have saved him. Actually using source control would have saved him. Reading the damn prompt and actually being sure before clicking "Are you sure" would have saved him. Another prompt asking are you really really sure isn't going to save him from himself.
Fortunately he can just retrieve his files from his Git repository, right? Or... he just learned a painful lesson of why you always use a code repository.
I have to take this opportunity to tell my favorite oh-shit story.
Some twenty-odd years ago, I was working on an embedded system project which had about 60 person-years of development effort into it (20 developers, three years). We worked on HPUX workstations with our home directories NFS-mounted on a big Network Appliances NFS server. The server was pretty cool tech for the day, making use of RAID for redundancy, with nifty snapshotting features, including automatic snapshotting that created a set of hidden subdirectories in each directory with your files as they were an hour before, two hours before, etc. Getting back any old version was super easy. Plus we all used CVS, and the CVS server also used NFS storage.
So... all of our eggs were in one basket, but it was a highly-reliable and flexible basket and, of course, the sysadmin made nightly backups, rotated the tapes offsite, etc. The backups even included the snapshots, providing quite fine-grained history from any point in time. So not bad.
Well, one day something went wrong, and the NFS server lost everything. I don't know if it was hardware failure, if the sysadmin accidentally did something like "rm -rf /", or what. But it was all gone. All of the developers' home directories, with their working copies, and the central CVS repository. Every Single Line Of Code, all of the design documents other that what happened to be laying around in hardcopy, everything. 60 person-years.
Oh shit.
But, backups, right? No.
Not one.
The sysadmin had never tested his backups, and it turned out that his backup script didn't have permission to read any of the directories where the important data lived. The backup tapes were all useless. He had dozens of methodically-archived off-site copies of the NFS server system binaries. You know, the ones that come on the installation media.
OH SHIT!
Luckily, we had one major customer that was so big, financially, and so influential in the relevant industry, that when they signed their contract to buy our product, they made us commit to keeping a developer on-site, full-time. So we all took turns spending a couple of weeks at a time living in a hotel and working in their facility, on the other side of the continent. And, most importantly, there was a development workstation there. With a local copy of the code that was updated via FTP as needed.
Now, for you young'uns that only know about distributed version control systems, CVS wasn't (isn't) such a beast. In CVS there's one central repository which has all of the versioned history, all of the branches (not that there were many, because working with branches was a pain in the ass), all of the tags, etc. When you check out the code, you get only the current head revision of the one branch, no history at all.
That's what this one remote workstation had. A checkout of HEAD, as it was a couple of weeks before the disaster. We carefully copied that, and FTP'd it back home, and used it to start a new, fresh, CVS repository. All of the commit history was gone, and a couple of weeks of work by 20 or so people, but we had nearly-current code. All of the design docs and other bits and pieces were gone, but we had code.
You may be wondering if, at this point, the sysadmin got canned. He did not. He was called onto the carpet and told that we HAD to have good, tested backups going forward. He agreed that it would be his top priority. A couple of weeks later, he reported back to senior management that we had good backups.
My boss decided to test it. He disabled snapshotting of his home directory, created a file, put some stuff into it, waited a day (so it would get backed up to tape), then deleted it and walked over to ask the sysadmin to recover it for him.
The backups still didn
Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.