From 55bcfca0d2599429dc27574cd5be642ccd7634122080c4e94c8de1b8acb5c411 Mon Sep 17 00:00:00 2001 From: Nicholas Johnson Date: Sat, 21 Jan 2023 00:00:00 +0000 Subject: Convert refs: rejecting-visual-studio --- content/entry/rejecting-visual-studio.md | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) (limited to 'content/entry') diff --git a/content/entry/rejecting-visual-studio.md b/content/entry/rejecting-visual-studio.md index 9630df8..4a150dd 100644 --- a/content/entry/rejecting-visual-studio.md +++ b/content/entry/rejecting-visual-studio.md @@ -2,10 +2,9 @@ title: "Rejecting Visual Studio" date: 2020-04-30T00:00:00 draft: false -makerefs: false --- # Background -This semester I took Intro to Artificial Intelligence at SIUe[1]. Artificial Intelligence is a senior level course. I'll call the professor, "Professor X" to preserve anonymity. +This semester I took Intro to Artificial Intelligence at [SIUe](https://www.siue.edu). Artificial Intelligence is a senior level course. I'll call the professor, "Professor X" to preserve anonymity. # Story ## Assignment One - Cats @@ -13,15 +12,15 @@ Since my time giving in to using Visual Studio in software engineering class and I was not thrilled about this, so I opted to write my program using a different IDE and compile it with the gnu-c++ compiler. I wanted to get ahead of this so there wouldn't be any issue, so I emailed Professor X explaining why Visual Studio is proprietary malware, or at least potential malware. Professor X responded that he did not believe it is malware and I should use it anyway. So I responded over email again explaining my beliefs about free software and why students ought not be required to use Visual Studio. He said he would consult with his colleagues about it and the grader as well. Professor X and the grader got back to me explaining that they couldn't change the assignment just for me as there were over thirty students in the class and allowing students to submit their work differently would be too much hassle. Maybe don't ask students to use proprietary software? -After I had already written my program, I spent over four extra hours learning how to use CMake[2] so hopefully it would open in Visual Studio when the grader went to grade it. This was extra work I did that no one else in class had to do because I refused to use proprietary software. After I submitted it, I got a grade of zero because the grader was unable to run my program in Visual Studio. As a side note, it seems ludicrous to me that we were demanded to submit our C++ programs in the form of Visual Studio project files. That is just not a sane way to submit a project. But anyway, I sent a long email to the professor again explaining that my program did compile and run and that I spent four hours trying to use CMake to get it to work for the grader. He emailed back saying how me using CMake was a huge waste of everyone's time, and if I had such a strong problem with Visual Studio, then maybe I should go talk to the dean about it instead of talking to individual professors about my beliefs. I guess his point was if the dean didn't agree that the university should only use free software then I should just accept proprietary software? +After I had already written my program, I spent over four extra hours learning how to use [CMake](https://cmake.org/) so hopefully it would open in Visual Studio when the grader went to grade it. This was extra work I did that no one else in class had to do because I refused to use proprietary software. After I submitted it, I got a grade of zero because the grader was unable to run my program in Visual Studio. As a side note, it seems ludicrous to me that we were demanded to submit our C++ programs in the form of Visual Studio project files. That is just not a sane way to submit a project. But anyway, I sent a long email to the professor again explaining that my program did compile and run and that I spent four hours trying to use CMake to get it to work for the grader. He emailed back saying how me using CMake was a huge waste of everyone's time, and if I had such a strong problem with Visual Studio, then maybe I should go talk to the dean about it instead of talking to individual professors about my beliefs. I guess his point was if the dean didn't agree that the university should only use free software then I should just accept proprietary software? The professor and grader agreed, just for this one time, to regrade my program to reflect the work I put in instead of my willingness to agree to Microsoft's insane licenses and run proprietary malware just to write a C++ program, and I got a 90% losing 10% only because I submitted a day late. For the next two programs, the professor and grader agreed that I can submit only the source code cpp files because the grader had figured out how to run them in Visual Studio. ## Assignment Two and Three -The second assignment was Huarong Path[3], also called Klotski. It is a sliding puzzle where you try to get a particular piece into a particular spot on the board by sliding all the tiles around until you have the piece in the destination spot. There are many heuristics you can develop for this, but I found that implementation was just as important as heuristics. The third assignment was Fore & Aft where you try to reverse the positions of the differently colored pegs. Imagine a large square broken into four quadrants, but two quadrants that are diagonal to one another are missing, and there is one empty center peg and the quadrants have differently colored pegs. The rules are that you can move any peg into an empty adjacent peg or jump over pegs like in the game checkers. I ended up using A*[4] to solve the puzzle. I was able to submit these two assignments with only the source code files, so I didn't have to use Visual Studio and there was no problem. +The second assignment was Huarong Path, also called [Klotski](https://www.wikipedia.org/wiki/Klotski). It is a sliding puzzle where you try to get a particular piece into a particular spot on the board by sliding all the tiles around until you have the piece in the destination spot. There are many heuristics you can develop for this, but I found that implementation was just as important as heuristics. The third assignment was Fore & Aft where you try to reverse the positions of the differently colored pegs. Imagine a large square broken into four quadrants, but two quadrants that are diagonal to one another are missing, and there is one empty center peg and the quadrants have differently colored pegs. The rules are that you can move any peg into an empty adjacent peg or jump over pegs like in the game checkers. I ended up using [A*](https://www.wikipedia.org/wiki/A*_search_algorithm) to solve the puzzle. I was able to submit these two assignments with only the source code files, so I didn't have to use Visual Studio and there was no problem. ## Assignment Four - N Queens Puzzle -Fast forward to the fourth assignment. It was an N Queens puzzle. For N=8, this is better known as the 8 Queens Puzzle[5]. This was my favorite puzzle to write a solution for. I found a simple hill-climbing[6] algorithm from our textbook that was much faster at finding solutions than was asked of us. We had to find three unique solutions. I just allowed my program to take as input the board size as well as the initial position of the first queen. For some reason it was stipulated that we had to enable one queen in the solution to be "fixed" to a certain square so she was guaranteed to be there. It didn't take me long to have this solution written up and submitted, but my grade unexpectedly returned with a failing grade for the assignment. It was because gnu-c++ allowed specifying C arrays without a size, but the standard C++ compiler didn't, so it didn't compile in Visual Studio. +Fast forward to the fourth assignment. It was an N Queens puzzle. For N=8, this is better known as the [8 Queens Puzzle](https://www.wikipedia.org/wiki/Eight_queens_puzzle). This was my favorite puzzle to write a solution for. I found a simple [hill-climbing algorithm](https://www.wikipedia.org/wiki/Hill_climbing) from our textbook that was much faster at finding solutions than was asked of us. We had to find three unique solutions. I just allowed my program to take as input the board size as well as the initial position of the first queen. For some reason it was stipulated that we had to enable one queen in the solution to be "fixed" to a certain square so she was guaranteed to be there. It didn't take me long to have this solution written up and submitted, but my grade unexpectedly returned with a failing grade for the assignment. It was because gnu-c++ allowed specifying C arrays without a size, but the standard C++ compiler didn't, so it didn't compile in Visual Studio. When I turned on warnings when compiling with gnu-c++, I immediately saw what the grader was talking about and fixed it. The grader allowed me to fix it since it was just an issue with the compiler compatibility and not my code. I got full points back for this assignment. I was told after the first assignment that it would be my responsibility to make sure my code worked in Visual Studio and if it didn't, I would be graded accordingly. But the grader was willing to allow this to slide since it was such a minor issue and strictly to do with compiler compatibility. @@ -32,7 +31,7 @@ If I wanted to live an easy life and disregard my ethics totally then yes I coul He then suggested I use the university computers instead of my own. I explained to him how this doesn't solve the issue because Visual Studio is still proprietary and I would have to use the Windows malware that is installed on campus computers as well. He said that the university has a deal with Microsoft in which Microsoft deactivated their surveillance features for university computers. SIUe does have a deal with Microsoft (which is why they use so much Microsoft software), but I seriously doubt Microsoft deactivates the spying (telemetry) features for their programs at SIUe. Even if they do, Windows and Visual Studio are still proprietary so there's no way to confirm that. -There was also the extremely common confusion about how software companies will make money producing only free software. Beforehand, I had emailed Professor X supporting links from the FSF[7] website explaining about free software. I tried explaining that it's not about price, but freedom. I could have been misreading the situation so don't take this as fact, but it seemed to me that he didn't have any interest in learning about free software or the ethical implications. He seemed more interested in getting me to conform to using Visual Studio so that it would make his and the grader's job easier. The reason I think that is because throughout our entire prolonged exchange, emails and in person, he didn't mention ethics once and expressed his sentiment that the conversation was "pointless". I don't think conversations about ethics are "pointless". I think a conversation about ethics is important before starting any project, not just writing software. +There was also the extremely common confusion about how software companies will make money producing only free software. Beforehand, I had emailed Professor X supporting links from the [FSF](https://www.fsf.org) website explaining about free software. I tried explaining that it's not about price, but freedom. I could have been misreading the situation so don't take this as fact, but it seemed to me that he didn't have any interest in learning about free software or the ethical implications. He seemed more interested in getting me to conform to using Visual Studio so that it would make his and the grader's job easier. The reason I think that is because throughout our entire prolonged exchange, emails and in person, he didn't mention ethics once and expressed his sentiment that the conversation was "pointless". I don't think conversations about ethics are "pointless". I think a conversation about ethics is important before starting any project, not just writing software. # Conclusion I have seen this theme again and again having conversations with professors. Perhaps I just don't explain free software well enough, which is why I provided links and video resources to Professor X. One thing I often see, which is true of anyone changing their mind in general, is that people won't do it on the spot in real time. Reading a post like this you may think that I wasted my time. But people do change their minds and it almost always happens in private, not under the pressure of a real-time conversation. And even if people don't change their minds completely, they can often be nudged in the right direction. So don't lose hope just because someone doesn't immediately see things your way. Many professors at SIUe that I've talked to just aren't accustomed to thinking about software freedom as an important issue. I expressed my frustration to Professor X about how the issues he was bringing up were peripheral to me, and that if he really wanted to convince me to use Visual Studio and Windows he would have to show me why my ethical beliefs are wrong. @@ -46,13 +45,3 @@ Keep having conversations with people about free software, every opportunity you ## Advice 2 Encourage others to reject proprietary software and reject it yourself. Get a few people who agree with you and form a club or pact to reject it. There's not always free software that perfectly replaces proprietary software, in which case you must reject the proprietary software entirely with no substitute. At SIUe and any other universities, professors aren't going to take much notice if you go off on your own trying to create little workarounds for the proprietary software they want you to use. The only action which they have to respond to is when you outright refuse to use the proprietary software and most importantly tell them why you're rejecting it. It's helpful to propose free software at the same time, but most important is telling them you refuse to use proprietary software and stand behind that decision with unflinching stubbornness. The only way to slow the encroachment of proprietary software in schools, universities and workplaces is to refuse to use or develop it, demand alternatives, and spread the word. - - -Link(s): -[1: https://www.siue.edu](https://www.siue.edu) -[2: https://cmake.org/](https://cmake.org/) -[3: https://www.wikipedia.org/wiki/Klotski](https://www.wikipedia.org/wiki/Klotski) -[4: https://www.wikipedia.org/wiki/A*_search_algorithm](https://www.wikipedia.org/wiki/A*_search_algorithm) -[5: https://www.wikipedia.org/wiki/Eight_queens_puzzle](https://www.wikipedia.org/wiki/Eight_queens_puzzle) -[6: https://www.wikipedia.org/wiki/Hill_climbing](https://www.wikipedia.org/wiki/Hill_climbing) -[7: https://www.fsf.org](https://www.fsf.org) -- cgit v1.2.3