Man vs Machine


As the technology revolution continues and machines become increasingly more sophisticated, blue-collar jobs are susceptible to the threat of automation. Coming from a place where many of my family members make a living doing blue-collar work, I find the concept of automation very interesting. I am going to be entering the world of software engineering where I may contribute to the progress of automation, so will I be putting some of my family members out of work? I have always had a family first type of attitude, so I would certainly not be content knowing my occupation served as a threat to my family. After reading more about the consequences of automation, I have been inclined to side with the idea that individuals who are smart enough to replace jobs with machines are also smart enough to create new jobs for the workers they have uprooted.

I believe the creation of new jobs would follow with increased automation because I think human nature lends itself to altruism. I believe the top engineers and businessmen who propel automation forward will also be concerned for the people that will lose their jobs. This intelligent group of people should be able to understand that negative consequences of putting millions of people out of work. Before deploying enhanced automation, I believe this intelligent group of people should at least consider potential solutions for the displaced work force. With respect to the capitalistic market in America, I do not believe there exists an obligation to account for the displaced working class; however, I believe their exists an obvious ethical responsibility to care for fellow human beings. In a sense, I believe the best solution in a potential society where automation eliminates millions of jobs is human nature influencing those in charge to find ways to accomodate the resulting jobless population.

The concept of a society with basic income intrigues me, and I don’t think it suits the nature of human beings. I support the concept that human beings are (usually) driven by ambition to achieve some goal and work provides a path for pursuing those goals. In our society, work is not always just a way to make money – even for people who hate their jobs. Work provides satisfaction and fulfillment when tasks are completed as well as social interactions that are critical for human life. If basic income became a part of society, then I believe there would have to be some other outlet created for the social interactions that take place at work. Ideally, people would be able to creatively pursue their own ambitions and that instinct alone would prevent couch potato apathy. In my opinion, the missing part is a feedback loop. At work, people complete tasks which lead to increased wages, promotions, and the periodic paycheck. In a society where no one is held accountable for completing tasks and the paycheck is received regardless, would people truly be motivated to work?

I am not convinced citizens of a basic income society would be motivated to work. Part of my skepticism results from no incentive to pursue higher education which I believe is often the source of ambition. Without tertiary education, I think people are less likely to be driven to acquire jobs that are often associated with degrees. If blue-collar jobs are being done by machines, then a basic income lifestyle seems like a viable option. However, I may be underestimating the natural desire to work, in which case I could see a Luddite style revolt reoccuring. I can picture modern day Luddites raiding technology offices with power washers destroying all computers in sight, soaking servers and smashing laptops. Pardon my hyperbole, I do believe this is a serious matter that should be considered. I can at least affirm that if my software engineering career were to ever put me in a position where my work would displace humans, then I would place higher priority on the potential threat to working class Americans than the profitability of my work.





I am a supporter of Apple’s decision to refuse to comply with the FBI’s request for a backdoor into iOS. If Apple were to cooperate with the FBI, our government would then wield a tool similar to Harry Potter’s Expelliarmus with the power to disarm Americans by filing some paperwork. While the intended purpose may be to protect national security, the legal precedents being employed by the Department of Justice are outdated. I see a major flaw in the government’s use of a law enacted in 1789, the All Writs Act. In 1789, cybersecurity did not even exist, so how can we justify using a legal precedent from centuries ago to discern appropriate actions regarding a modern issue. If the All Writs Act indeed provides enough power to civil magistrates, then should we start applying other 1789 laws to contemporary cases. I certainly don’t think any government officials would agree with that…

Protecting national security can be a powerful phrase when trying to garner support for a controversial decision. While I see the obvious benefits of accessing a terrorist’s means of communication, I would like to push back on the idea that forcing Apple to provide decryption capabilities to the FBI truly protects national security. Earlier this week, I read a blog by Mark Cuban and he made a good point – there is no assurance that a successful hack into Syed Rizwan Farook’s phone would provide any investigative material. If Farook used sophisticated cryptic communication with his terrorist network, the FBI could take years to crack the code. There is also the possibility that Farook used a 3rd party application with its own encryption methods which is not unusual for a terrorist. On the other hand, if Apple develops a decryption method and the software is obtained by any of the talented hackers around the world – national security is certainly at risk. My question for the government would have to be – is the potential for making all iPhone users in the United States vulnerable to the vast criminally minded hacker community worth the possibility of uncovering evidence regarding the San Bernardino shootings?

I consider myself a conservative citizen, but I am not a person who greatly mistrusts the powers of government. However, in this case I do fear the repercussions of a legal precedent that grants government agencies the ability to access any targeted individual’s communication with a search warrant. I don’t use any 3rd party apps with strong encryption and I don’t have anything to hide, but I am not comfortable with the government having the power to access any conversation I take part in, with the exception being a letter I request the recipient to burn after reading. The problem with this power isn’t singularly related to the government obtaining it, but also derived from Bruce Schneier’s argument:

Either everyone gets access or no one does.

Essentially, if the government can hack our phones, then so can anyone smart enough to mimic or illegally obtain the decryption software. Also, the potential for blackmail, spying, and invasion of privacy is too great to justify this action. If you really want to cause a fuss, you could make this a human rights issue. At what point does the government’s reach extend beyond our unalienable rights… if that point is reached we must strip the qualifier unalienable and replace it with conditionalswanson.

My last grievance towards the requested compliance of Apple relates to the coercive nature of this decision. Apple dominates the high end market by developing an impressive suite of gadgets and software which includes their robust encryption. In a free market system, the government cannot be allowed to force a company to essentially nullify one of the greatest strengths of their product. In Apple’s case, this strength is security. I made the switch to Mac from PC because I was tired of dealing with viruses slowing down my computer (admittedly, I should have stopped using LimeWire). If Apple is forced to weaken their security, how can they retain pursuit of providing the highest quality product in the market? In the words of Ron Swanson, “capitalism is the only way.”



IMO: Interviews

Screen Shot 2016-02-16 at 4.04.10 PM

I can’t speak for everyone else, but I think I have a unique opinion towards interviews. My opinions really began to form when I interview for the global engineering firms at my freshman year at Notre Dame. I pretty much brought nothing to the table, and it was clear to me all of my interviewers know that. There decision to interview me was probably more of a professional courtesy to my connection in the industry who recommended me, but I appreciated it nonetheless. Experience is key to mastering interviews (not that I am a master) and that initial experience helped me moving forward.

The most important part of Matt and I’s interview advice is the notes on preparation. Our comments were very different and I think that is the most important takeaway. There is no interview preparation book that applies to everyone. Some students cracked the coding interview in their high school education, so they are way ahead of the curve and probably need to practice answering behavioral questions. Some students coded a little in high school, but succeeded as social butterflies and developed useful communication skills, so they probably need to practice answering technical questions. Some students have no experience coding at all (besides MATLAB), so they might not be able to crack the coding interview even if they tried. So what’s the answer? If you’re an engineer, use your problem solving skills to develop the best solution for interview preparation. I think that each student’s interview preparation can be viewed as a unique engineering problem. Examine yourself and determine the best guide to help you prepare for an upcoming interview.

My personal guide went roughly like this:

  1. Brush up on basic syntax/structures
  2. Have confidence you can solve weed out questions
  3. Know that technical questions above your head are worth attempting, but you can always be honest about your lack of knowledge of a topic
  4. Brainstorm memories that can apply to general behavioral memories
  5. Go to sleep on time

I think the most important part of my guide is number 3, it is completely okay to admit when you don’t know something. The first time I was flown out to a company’s offices, I did three consecutive interviews. During those interviews, I probably came across four or five questions that related to subjects I never studied. I made the interviewer aware, but still asked for a chance to solve it based on the general knowledge I had of programming. Typically, the interviewer and I ended up working through the problem together until the answer made sense to me. Flying back to ND, I assumed there was no chance they would offer me a job, but that ended up being my first internship.

I wish I would have known to be confident in my own technical skills. Naturally, I would compare myself to my peers in computer science. In retrospect, that was a useless practice because we all came from different backgrounds. Fortunately, companies are pretty good at determining a candidate’s ability to learn, not just what they already know. From my experience, what I already knew was actually less important than my strength of being able to pickup new technologies quickly. I hope that future students at Notre Dame who find themselves in my shoes will have confidence in their current skills and faith in their ability to learn.

Boisjoly’s Whistle

We all know that one mom or dad that likes to show off their impressive whistling capablities at pee-wee sports games. Unfortunately, Roger Boisjoly’s whistle wasn’t that loud, impressive, or noticeable. Had the spectators at his big league event, the Morton Thiokol and NASA pre-launch teleconference, heeded the importance of his whistle, seven lives could have been saved. I write this blog with reverence for the seven astronauts aboard the Challenger space shuttle and their families.

What really caused the Challenger disaster? Well, literally speaking it was a gas leak that occured due to a weak O-ring seal which can be attributed to the low temperatures in Cape Canaveral. How does a project that requires intense risk assessment overlook something that seems so simple? Management chooses to. The Challenger explosion was the result of a choice made by managment within NASA and its contractor, Morton Thiokol, to overlook an issue brought to their attention by engineers. As evidence has shown, NASA was not unaware of the risks they were taking by launching the Challenger on an unusually cold day in Florida. Despite the persistence of engineers, including O-ring expert Roger Boisjoly, managers made the decision to approve a launch that put the lives of seven Americans at risk. I agree with Neil deGrasse Tyson’s explantion of the motivation for such an irrational decision. Tyson believes the Challenger mission was more of a promotional and propaganda and military tool than a platform for science. Sadly, I also believe NASA succumbed to political pressure and societal expectations when making their decision that led to the loss of human life.

I believe Roger Boisjoly was justified in his decision to release information about Challenger to the public. Boisjoly was careful in choosing appropriate channels to release his information and it seems as though he did not embellish the information. I would not describe his actions as “pointing the finger” because he stood up for what he believed in despite managerial pressures, so he has every right to blame those who were responsible for approving the launch. As far as the sensitivity of the information, I don’t think Boisjoly threatened national security or revealed anything confidential information. In fact, I believe the families of the Challenger astronauts deserved to know the truth about the cause of the accident. In that sense, I think Boisjoly’s decision was noble and brave which makes it very unfortunate that he suffered from the ramifications of exposing powerful people.

Morton Thiokol’s reaction to Boisjoly’s whistleblowing frustrates me to the point of wishing the upper management truly responsible for Challenger were prosecuted and received prison sentences. Mistreating an employee who spoke truthfully about an unethical decision made my his superiors is unacceptable. Boisjoly’s “living hell” at work was a result of embarrassed people with power punishing an honest individual. Now that more time has passed, I hope that all of Boisjoly’s fellow employees and neighbors who treated him with contempt are ashamed of their reactions. Their reaction is one of the most devastating parts of this entire incident because it could potentially deter honest employees from revealing dangerous unethical management practices in the future. As a result, brave Americans, such as the seven astronauts aboard Challenger, could become victims of a preventable tragedy.

While Boisjoly’s story does not have a happy ending, I think his commitment to the truth will inspire honest whistleblowers who’s information could be benefical. I hope that the actions of dishonest whistleblowers who seek attention does not tarnish the value of releasing suppressed truths. I wish there existed a term without such a negative connotation to describe Roger Boisjoly, but until then, consider me a defender of the honest whistleblower.


About our Code of Ethics

In my last post, I outlined a code of ethics specifically targeted at Notre Dame students that Matt McKenzie and I developed. We used the ACM Code of Ethics as a model for our own. Matt and I focused our code of ethics on the responsibilities of a Notre Dame computer science and/or engineering student (CSE) after completing the undergraduate program. I believe this is important because we are often guided by our professors and restricted by university policies during our time at Notre Dame. After graduation, we venture out into a professional or graduate role where our skills will further develop and our freedom will increase.

To begin, we established some general morality guidelines that apply to most computer scientists with tweaks to further relate to Notre Dame students. One of my favorite points is “Make every class count” because I often see students take classes for granted. I believe there is always something you can learn from our professors at Notre Dame, no matter how boring or easy the subject may appear. I also genuinely appreciate the rule that one should “take action not to discriminate”. This rule relates to a unique characteristic of the Notre Dame experience, a strong sense of community we all experience during our 4 years.

Next, we covered some of the post graduate responsibilities of a Notre Dame student. Our first point is a crucial part of our code of ethics, Notre Dame professionals should “strive to increase the value of the Notre Dame brand”. At first glance, this may seem superficial and make you wonder if I work for the PR department. However, the purpose of this point is to benefit the future generations of domers. As Notre Dame alumnus working in the computer science industry, we have a profound effect on the ability of the following classes to acquire elite jobs and internships. If we commit ourselves to developing the Notre Dame brand, then we can open doors for future graduates of Notre Dame CSE.

Another unique guideline in our code of ethics stresses that one must “be a teacher”. I strongly connect to this point because I feel like it relates to my vocation. I think all graduates of the University of Notre Dame are capable of sharing the knowledge they have acquired through the process of teaching. When given managerial opportunities, I think it is an obligation for a Notre Dame alumnus to make an effort to develop the individuals working for him or her.

There are weaknesses in our code of ethics. For one, I am a spiritual person and my faith was injected into some of the points I developed. I am not one to impose my faith on others, but I do believe that Notre Dame graduates have an obligation to continue the mission of Our Lady. I believe that Notre Dame students should interview, negotiate, code, architect, and manage with grace. There are students at the University of Notre Dame who do not share in my faith and may object to this opinion, but I would argue that a faith based ethical code reflects the intentions of a Notre Dame education.

Developing a personal code of ethics is both a useful and valuable task. In the process, I was forced to think hard about what it means to be a computer scientist who has obtained the knowledge to create powerful tools with the available technologies. In addition, I developed a greater appreciation for the differences between my responsibilities as a graduate of the University of Notre Dame versus any other school. Love thee Notre Dame.


Code of Ethics


Every computer science and/or engineering student at the University of Notre Dame is expected to follow this Code of Conduct.

Section one is general moral imperatives. Section two is about professional responsibilities as a Notre Dame student or graduate. Section three is about managerial responsibilities as a Notre Dame student or graduate.

As with most codes of conduct, this document is open to interpretation.  This Code of Conduct answers the question of what it means to be a Notre Dame student and how it affects his or her approach to Computer Science.  This Code of Conduct is not dated and covers some emerging technologies.

General Moral Imperatives

  1. Contribute to the Notre Dame (Engineering) community
    • The reason the Notre Dame community is great is because almost everyone who is apart of it, cares and contributes to it.  Whether it is the smallest contribution or biggest, it is also important to remember where one was helped along the way.
  2. Understand and follow Notre Dame’s Mission Statement
    • The Mission Statement is intricate, but a quote that breaks it down: “In all dimensions of the University, Notre Dame pursues its objectives through the formation of an authentic human community graced by the Spirit of Christ.”
  3. Make every class count
    • Classes can be very boring and uninteresting, but one does not know when the class will come back to help them.  Whether in an interview, or  having a conversation in the workplace, the history learned about Ancient Greece, for example, could be very useful.
  4. Be honest and trustworthy
    • As a student of Notre Dame, these are the most important characteristics to have.  If someone was to turn in work that is not their own, they are cheating themselves, cheating the class, and not preparing themselves for the something that they can apply in the real world.   Also, having these characteristics in the real world is extremely important for any job.
    • Being honest and trustworthy is also important to honoring property rights.  Property rights, including copyrights and patents, should not be copied, reproduced, or replicated in any form.  If they are, someone should be honest about where they came from, and acquire permission to use the intellectual property.
  5. Respect the intended use of technology
    • Today, technology is advancing much faster than the law.  This means that although not illegal, an action performed can be morally wrong.  An example is using a personal drone to spy on someone.  Now there are laws that make this illegal, but this action was never morally correct. Someone created the technology of a drone for entertainment, so this intended use should be respected.
  6. Be fair and take action not to discriminate
    • In accordance with the mission statement, you should always be fair in the implementation of your assignments and projects. You should not discriminate against your peers when helping on assignments or assembling project teams.
  7. Give proper credit for intellectual property
    • When working with fellow students on coding assignments or projects, be honest in your evaluation of individual contributions. This includes your own personal contribution as well as the contribution of any other individual involved.
  8. Honor the property of professors
    • Many professors develop their own assignments and lectures for a given course. We are lucky to have such dedicated professors at the University of Notre Dame, and we can respect them by not sharing their hard work with following classes or students/professors at other schools (unless permitted by the professor).
  9. Respect the rules of Du Lac
    • Working on projects late into the night is not a valid excuse for breaking parietals. Move project work into 24 hour spaces on campus if personal interaction is necessary after hours.

Professional Responsibilities as a Notre Dame student or graduate

  1. Strive to increase the value of the Notre Dame brand by producing the best work possible.
  2. Further your education post Notre Dame.
  3. Know and respect the laws governing your chosen workplace and uphold the moral virtues instilled in you by your time at Notre Dame.
  4. Give helpful and meaningful feedback during professional review sessions.
  5. Accurately assess risk and appropriately report your findings when analyzing systems. Ensure the quality of your code by practicing thorough testing.
  6. Be gracious of opportunities given to you and honor all contracts.
  7. Share your knowledge of computer science obtained at Notre Dame with your peers, superiors, and future generations of computer scientists.
  8. Do not take advantage of resources provided to you as a professional without proper authorization.

Managerial Responsibilities as a Notre Dame student or graduate

  1. Develop social responsibilities of your team, in accordance with the Notre Dame mission, and manage commitment of your team members to uphold them.
  2. Manage project teams to produce work the advances the quality of life.
  3. Only authorize proper use of computing resources provided by your company or organization.
  4. Ensure that you develop products which sufficiently meet the needs of your customers.
  5. Develop policies that prevent computing systems from potentially harming the dignity of your users.
  6. Be a teacher. As a manager, you are responsible for educating and developing the members of your team with the hope that you help them advance in their own career.

Compliance with the Code

As a student studying computer science and/or engineering at the University of Notre Dame, one should uphold and promote the principles of this code. In the professional world, a Notre Dame computer science graduate is expected to represent the university and the computer science and engineering department in the best possible way. This is done by performing one’s job with technical, ethical, and professional excellence.

Authors: Zachary LeBlanc and Matt McKenzie


Computer Science: Art and Engineering

What is computer science? This is a highly debated topic right now which has led to an attempt to categorize this degree/profession/field/discipline/thing. A few of the attempted categorizations of computer science are science, art, and engineering. I personally believe computer science is both an art and a form of engineering. I have nothing against calling it a science, but I also have nothing for it. Science makes me think of biology, chemistry, psychology, etc. Of course, computer science can be applied to all of those subjects, but I would not group computer science with them. On to the defense…

Why is computer science an art? Well, I think there are multiple reasons and no clear answer. It’s hard enough to define art, so I am going to do my best to define computer science as an art. First of all, there is plenty of room for creative expression in computer science. You could give 100 programmers the same task and odds are none of their solutions would be the exact same. This is one thing that always stood out to me in art classes growing up. Often, the entire grade at my school would be working on the same art project for months at a time. Once finished, none of our projects would look the exact same. Each picture had a uniqueness defined by the artist, and I believe that phenomenon exists in code as well. Creativity can be suppressed in corporate settings where code structure is clearly defined, but so can the creativity of art – just think of all the periods of censorship that have occurred throughout history.

Like art, computer science also has the ability to produce beautiful results. There are many instances that I have felt and admiration for the beauty of computer sScreen Shot 2016-01-13 at 8.11.19 AMcience, but the one that always stands out to me is CSS Zen Garden. Zen Garden is a demonstration of the capabilities of programmers who design websites using CSS.

Along with creative expression and beauty, art tends to have the ability to bring things to life. Many computer science applications also involve bringing things to life. This capability leads some people to believe the ability to code is somewhat of a super power. We can create robots and machines that can think and learn. Several of the produ
cts we use on a daily basis are plastic/metal objects that are brought to life by software. One example of this is Roomba, a robot that will do your vacuuming for you. Another obvious example of computer science bringing inanimate objects to life is the field of computer graphics, specifically animated movies. Companies like Pixar have disrupted the film industry by leveraging computer science to produce memorable movies and characters. Some of the most recognizable film characters are animated – Woody and Buzz Lightyear from Toy Story, the Minions from Despicable Me, and Elsa from Frozen. These characters were all brought to life by programmers.

Moving on to engineering… can computer scientists call themselves engineers? Yes. Take a moment to read the Merriam-Webster definition of engineer

A person who has scientific training and who designs and builds complicated products, machines, systems, or structures : a person who specializes in a branch of engineering

I don’t see how you could deny a computer scientist the right to associate with the definition of engineer. Although one can learn computer science on the internet, a scientific training to become an expert is still necessary. Even self-taught computer scientists develop their skills by studying material, practicing on their own, and applying what they have learned to solve problems. In order to solve problems, computer scientists first design potential solutions. In fact, a common job title in the industry is Architect. The title is given because there is a systematic process that takes place before teams of computer scientists build complicated products or systems that are beneficial to consumers.

One counter argument to my claim comes from the traditional responsibility of engineers to ensure public safety and make reliable products. Skyscrapers, bridges, power plants, and elevators are built to meet specific standards and failure to meet them could result in endangering the public. As a result, this type of engineering is highly regulated and failures are rare. In computer science, there is little regulation as to what code reaches production. Bugs are often found in software releases that lead to significant failures such as data leaks. Many people use this to discount the engineering qualities of software engineering, but I refute this argument. What if you had highly skilled civil engineers trying to break bridges? I bet they could find ways to cause the construction to fail and harm the public. That’s what computer scientists are facing – other highly skilled computer scientists who spend considerable amounts of time trying to break software. Computer scientists are responsible for maintaining their software, just like engineers are responsible for maintaining skyscrapers, bridges, etc. Thus, I think this counter argument is flawed and my defense further supports the classification of computer scientists as engineers.