Reading 10 – King of the Ball

Linux’s success is pretty amazing. The fact that Linus Torvalds wanted to create a kernel and post it online for critique and feedback was the first step in creating the open-source technology scheme that other tech giants did not do. It must have been a very vulnerable experience to post an operating system onto Usenet in 1991 when every other tech giant were developing microkernels. It was more than just against the grain, it was a revolution.

There are over hundreds of different linux distributions in the public domain. Such diverse yet thriving communities is evidence for the power of how hackers in the bazaar can come together and contribute to a cause with their unique voices and input. And if ideas diverge then they are free to take their contribute elsewhere to a different community, a different bazaar. A few points of disparity that may split a community can include packet managers, hardware compatibility, and community support. Whether it is a stable Ubuntu distribution or a very barebone Arch Linux, there is a niche for every person in the bazaar.

It also helps that Linux can be run on a variety of hardware. From tiny USBs to personal computers and large mainframes. Any person or company can utilize the system. This is another key point to the revolution: how accessible it is.

But with all of this change and success, Linus maintains Linux the way he wants it to flourish. He chooses what accepts what features that he thinks improves Linux while staying within focus. He does this all while doing it he way he wants, which is pretty casually. His work life balance is working from home in comfortable garments, which is opposite of the stressful environment of bigger companies and their dress code. Just like how Linux is Linus’ form of expression, he continues to develop it in a free manner.

Although Linux is a very innovative interpretation of how collaborative work can be done, there will always be new groundbreaking ideas coming out. People can be very creative and imaginative and will create something as a form of expression or as a means to an end. Whether their techniques min-max to get their dream or happen to be pure luck, there will always be another innovation that is a mark of a generation.

Reading 08 – The Magic Cauldron

I think that the open source model can become a magic cauldron on very rare occasions. Since royalties are not initially received for open-source technologies then it is hard to make the project into a lucrative business. As more users participate in using the service, or even contributing to the open source project, then the project has the potential to become a magic cauldron. This magic cauldron will only glow from services and other open core practices to keep the service going.

There is no such thing as a free lunch. If an open source were to entice users and contributors to its project then the best means of alluring people is to first be free. If a product is stuck behind a paywall then many people, regardless of whether they are financially unable to or simply deterred by the cost, will not join the cause. By making the project free then more people will become connected to the project.

But the project cannot be free forever. Whether the project needs a server to run on, computation time, or storage space, a high cost will eventually accrue. It is then up to the open source model to figure out how to make money to preserve its continuity. At this point advertisements or other open core practices will come into play. The reason why there is no such thing as a free lunch is because any user that is using the product is being sold to advertisers, such as getting a user’s attention towards a product or gathering data from users to advertisers. Open core practices are a bit more transparent as to user integrity in that it allows only parts of software to be free but then blocking the full product behind a payment or subscription fee. Regardless of whether money is being gained via a third party (advertisements) or through the main vendor (open core), the project will need to eventually be financed some way some how.

However the benefits of a project becoming open source can be too good to pass up. The security of the project will become stronger as more eyes analyze the code and find bugs or other flaws in the system. How strong the security of a project is depends not on how obscure the code is but rather how secret the authentication keys are, which is fully embodied with open source technology. Another benefit of a project being open source is that the development of many features is much faster than close source. Contributors will be able to add features that matter to them onto the project rather than a single team of developers focusing on a few features at a time. Another more subtle benefit of the project being open source is that because it is so more easily accessible to people then it inherently generates free branding for the product. With more branding then more people will know about the product to then transition to garnering royalties or to reach more contributors to support the project.

As such, for open source, it is better to collect rent later than earlier. The project may initially focus mostly on its software, but as the project grows and continuity becomes a priority then services will need to pop up to continue the product. Which is fine since an open source project should be as futureproof as possible, being self sufficient and focusing on being supported by all.

Reading 07 – The Noosphere

One of the cons mentioned before with open source technology is that it is hard to attribute the entire project to a single entity, whether that entity is a person or a company. Again it is hard to distribute monetary gain of the project to anonymous users across the web. To encourage people to contribute to the project then there are three main incentives: impact of the project, a need for improvement, and credit recognition.

If the project has a large effect on many users, then it will draw in programmers that wish to make a more widespread impact. For example Visual Studio Code is an open source text editor with rising popularity. Many programmers are developing more support for the tool for users to make the most out of the software. As a result these users can become more productive in the software they write that can create new things.

And if the project has plenty of room for improvement then open source developers will want to exercise their experience to patch any bugs or to just scratch the itch of an imperfect piece of code existing. As in, if a project is nearly flawless without needing much improvement, then developers will not necessarily stick to the project since there is not much to do for it. Software developers have a natural sentiment to always improve a project or to fix it.

Finally all of the hardwork that people put in is not only selfless in that the success of the project is a reward, but the online recognition of having a name recorded in the credits is very important. There must be proof that a person helped to develop a project, or else other people can take more credit than they should and receive disproportionate fame. In fact it is reassuring to have an online trail that to show how an open source developer can be recognized for his efforts. The projects act as a proof for the developer’s skill.

In spite of these three incentives for open source developers to participate in projects are a few taboos that ultimately discourage them. One taboo is the concept of forking a project. Another taboo is changing a project without proper moderation. And a final taboo is discrediting contributors to a project.

Many programmers can come together to build up an idea accessible to many. However as time goes on, some of the programmers can have different visions from the original project. As a result they may fork the project into their own version of the project to encompass their goals and ideals. Forking projects is kind of taboo in that the programmers should work together to continue building up the original project instead of splitting resources to work on smaller projects. It can be seen as taking away all of the hard work and ideas of the original project for the success of another project. I feel that this taboo is not a true taboo since all ideas in open source projects are supposed to be open anyways. Open source developers are supposed to learn from each other, after all.

When a developer wishes to contribute to a project, then it is appropriate for a moderator to check the contribution to ensure that the code does not break the project and also aligns with the project’s vision. If the contributed code does not match the theme of the project and veers it away from its goal then the project is being impeded instead of improved. Change is welcome but needs to be controlled and evaluated for direction. Moderators of projects are great to ensure the project is turning out the way it should be. I feel that this is a definite taboo since although the project is a bazaar, there still needs to be a set of rules or standards for everyone to follow and function so that they all can fairly contribute to the project.

Finally any discredit of contributors to a project is a big taboo. I feel that this is a taboo without question. Programmers invest time and energy to improve a project. By discrediting their hard work then their reputation online falls and they are not motivated to continue contributing. Reputation is important to get one’s name out so that people can evaluate the person’s skill and justify or not justify the person’s talents. Reputation can be a big part of open source developing but it is not a core incentive.

Reading 06 – The Cathedral and the Bazaar

In Eric S. Raymond’s The Cathedral and the Bazaar, the author compares and contrasts between two software engineering models: a cathedral-builder view and a bazaar-like style. On one hand the cathedral-builder view is more esoteric in that the source code on a project can be accessed by the public intermittently after patch cycles, and the development of the code itself is restricted to an exclusive group. On the other hand the bazaaar-like style is more welcoming in that the source code is always accessible online to the public, and the development of the code is inclusive via an open-source manner. These two models have their own strengths and weaknesses.

The cathedral-builder view has both positives and negatives. One positive is that a software project can easily be traced to a single group or entity for its development. From there the software can be sold for monetary gain or published for reputation that can be evenly or proportionally distributed to the members of the group. Another positive is that the development of the project is highly controlled to adhere to group values and/or visions. In a sense, the production of the software will be made of many smaller pieces that fit an overall theme that a group envisions. A third positive is that the quality of the software written would match the skillset of the group.

One negative of the cathedral-builder view is that it can be slower. The size of the group behind the software project can be a limiter in regards to the number of persons being able to develop code. This limit will affect the amount of software created and also the number of bugs fixed. Another negative of the cathedral-builder view is that the development behind the software can be highly influenced by monetary gain or customer satisfaction rather than the quality of the software or the pillars of the group. The virtue cathedral-building can be compromised.

The bazaar-like style has both positives and negatives. Anyone of any skill level can participate in the development of the software without need of being a part of the original developing group of the project. A novice can quickly learn from more experienced developers and high level developers can learn strong programming practices from other developers. Another positive is that people from various backgrounds can have access to the software. With many diverse viewpoints analyzing the code they any person can implement features that are unique to their viewpoint. The third positive is that the quantity of software written and the number of bugs fixed has a direct relationship with the number of developers able to access and view the code.

One negative of the bazaar-like style is that many of the developers that contribute to the project may not get appropriate recognition if the project took off. The original person(s) behind the project could then do whatever they want with the project. Another negative is that developers with conflicting ideas may clash and then split from the group to work on their own separate ideas. A third negative would be many submitted changes by unqualified developers may overwhelmed the edit queue and slow down the quality edits that are also in the queue to be published.

My personal experience would mostly align with the cathedral-builder view. At past research and internship experiences the institute or company behind the projects had full intellectual property over the software. Only members of the institute or the company could access and develop the software. I do not have too much experience with open-source projects to have a hard preference between the two models.

Regardless of preference, both models require software developers with certain characteristics. ESR mentions that every good software projects starts with an itch. I fully believe in this statement since every software project should be something to satiate a passion or to alleviate a hard task. For example on the Security Operations team, the team would have certain tasks needing to be completed daily by hand which would be simplified as an automated AWS Lambda script instead. Another example is that DOTA 2 was spawned from a Warcraft III mod and the developers felt passionate enough to create a new MOBA game.

Reading 05 – Startups

At times success feels like it has an objective measure: how much financial gain, social influence, and or political power one achieves. A hacker can define his/her success in one of these criteria. A hacker could become an e-commerce giant like Amazon for financial gain. The social influence of Facebook over common people may be a success for a hacker. To tamper with elections of other nation states have been the goals of hackers before. Regardless of what the source of the motivation is for a hacker, the success of a hacker all come from a commonality—the risk to go for it all.

Present American society encourages a free market with fierce competition that improves the quality of goods and services. Consider if YouTube was standardized as the only video streaming service on the internet and if it were backed by the government. Other streaming services such as Netflix, Hulu, and Twitch would not have come to existence to allow each product to learn from each other. For example YouTube implemented live streaming with live chatting as a response to Twitch. YouTube even allows replay on live streams which Twitch has still yet to do. Without a free market, goods and products will become stagnant and grow very slowly. The future of society would not see much drastic change.

So the more competition the better. Competition can only begin with those who take a risk and put everything into their business. Whether it is dropping out of college like Bill Gates to start Microsoft or to take the remaining $5,000 from the company to gamble at Vegas for a return of $27,000 like FedEx founder, Fred Smith, it has been proven that high risk does come with high reward. And to follow in these footsteps then many people have started their own businesses to do what they love and to get what they want.

But should society encourage competition? It is hard to say. Many businesses are started but rarely do they become unicorns and succeed. It can be argued that the fact that the market is free already encourages competition. However the initial costs of starting a company are what truly bars entrepreneurs into taking risks for their companies. As a result I feel that society should find ways to find innovative startups while letting the initial costs of starting a company weed out poor startups.

Would I take a venture and make my own startup or join one? I am very hesitant to do so and would rather have a solid footing at a well-established company before I take such risks. After having a better foothold in life then maybe, just maybe, I’ll make a dream video game I have always wanted to. If I make a video game then I can see myself being passionate and working on the project for a long time. If I do not make a video game then I may retire early to play other people’s works of art.

Theoretically if I were to become super successful, I feel like it is fair to tax high income citizens that do not have a plan for their income. If I had an intention to use my financial assets to sponsor a school district or medical research then it is a way of influencing how my money that were to be taxed is used. I do agree with the sentiment that people can be rewarded in a balanced way that can help improve the quality of life for a majority of people in society.

The next big technological platform would be autonomous processes. Whether it is autonomous vehicles or autonomous farming, society will tend towards ways that removes human labor such that humans are freer to do more creative works or enjoy more leisure. If a company can figure out how to automate its good or service then it’ll have plenty of room for financial growth.

Reading 04 – Programming Languages

The importance of a programming language varies between the world of software development and the world of computer science. For software development, the choice of a language will either make a project really easy or really hard. For example, if a company needed to implement an observer pattern, where an observer object can observe and observable object, then programming it in C would be a very tedious task rather than using an object-oriented programming language such as Java. In Java, there is plenty of supported software development kits, SDKs, that have been created and made efficient for common use cases that C does not inherently have. To do what Java can do in C may become pretty tedious. However if a company did need to get down to a lower level, then C would be a fine choice for system calls or socket programming.

 

As for the world of computer science, the different in programming languages is not as important. With a stronger focus on devising algorithms with faster time complexities, computer science values more on how an algorithm is implemented rather than through what language. Technically, an efficient algorithm can be coded in any language. Comparing an algorithm coded in one language versus another becomes very apparent when one algorithm is developed with a smaller time complexity than the other for large inputs.

 

Although the importance of programming languages varies from software development and computer science, using certain languages can change the way a programmer thinks. When designing applications, certain languages lend towards different programming paradigms. Whether an application uses an imperative, procedural, functional, or object-oriented programming will be strongly influenced by the programming language of choice. And some languages can facilitate various types of programming paradigms. One paradigm is not necessarily stronger than another, again, it is relative to the context that the code is handled in. This thought can be furthered in that no programming language is necessarily stronger than another, but again, have certain strengths and weaknesses over other languages. If there was one single language that is better than the rest then certainly all software developers and computer scientists would solely use that language for effectiveness and may use other languages for fun.

 

From personal experience, I do not really use other languages “for fun”. If I need something done with objects, then I stick to C++ and Java. If I need some scripting done, then I lean towards Python for comfort. The only non-meta language I have had some more experience with is Golang, where I coded a TCP proxy with Golang that handled data from TCP and sent it over a QUIC protocol (a protocol by Google) and then received as TCP data. I think I will definitely use Golang more in the future if a situation arises but at the moment the other languages that I have used are just too versatile and familiar for me. I do not really count the scheme experience I had in my university curriculum since I do not remember much from those lectures…!

Reading 03 – Nerds as Hackers

For the most part, yes Paul Graham’s version of a hacker is compatible with Steven Levy’s description. In the same way that many of the hackers in Levy’s novel are disengaged with school, Graham explains that nerds are also disengaged with school. For both hackers and nerds, it is not that they completely disregarded school. It was not that they did not value social interactions. It was just that they valued the pursuit of knowledge in their respective interests—whether it is a narrowed area of academia or the computer world outside of academia (at that time). So just as it is “an effort to be more popular”, then it took just as much effort for hackers / nerds to be smart in their criteria.

 

On another parallel, Graham points that kids learn “from their parents” on things such as being popular or being smart. Graham also notes how some of the hackers had been influenced by their parents who were mathematicians or early versions of electrical engineers with plenty of spare parts around. Young kids and young adults have only experienced a little bit of the world, so it is natural that their caretakers helped them defined their world to what they value.

 

A third commonality between Graham’s and Levy’s hackers are that they both are “makers”. Graham compares hackers with painters in that they both are makers in the quest “to discover a new technique or make something better”. Levy shows this same passion when hackers would continue upgrading the shared computers or adding onto the code of the space shooting game. They weren’t necessarily interested in academia. Again, many of the hackers in Levy would drop out of school. Hackers were those “who are trying to write interesting software”. Hackers were people “who break into computers” or being a “good programmer”.

 

Throughout the similarities of hackers between Graham and Levy, there was a single point that I am still trying to wrap my mind around. Graham mentions that “hackers are unruly”. In fact, being unruly is “the essence of hacking”. To add, Graham says that being unruly is “also the essence of Americanness” and that “France, Germany, England, and Japan… [consist of] people coloring inside the lines”. I think this is an unfair statement that hints that the best hackers lie in America. I feel rather that it is because of the resources in America that enables the hacker ethic to spread. Other places that slowly begin to gather resources will also have a fueling of the hacker ethic that plagued America. There are so many different people around the world, but in every single person there are still plenty of similarities that extend beyond language and culture. That similarity can be a keen interest on searching for quality of life improvements or perfecting a self-expression.

Reading 02 – Game Hackers

It is impossible for the true Hacker Ethic to survive in a world of commercial and proprietary software. The true Hacker Ethic flourishes under the assumption the knowledge and tools are free. The cohesion of the Hacker Ethic were one’s passion to create and improve the computer world. When ownership of software or code becomes a proprietary business then those pieces of property become the “locked doors” that outraged the early hackers. Furthermore, the greed to gain more money will become the true reason to improve computers that can sometimes be twisted away from quality to quantity. Of course, glimpses of the Hacker Ethic can be found in those driven by financial gain, but say the day that those finally reach a comfortable monetary threshold such that they lose their passion to contribute to the computing world and thus lose their so-called “Hacker Ethic.” Not that it is wrong to be a programmer driven by the dollar. Rather, everyone is unique and have their own values. For some, being a professional programmer that is super goal-oriented is best suited for those who want to reach a checkpoint then take a break. For others, the art of hacking is an endless thirst for perfection that will yield monetary value for more quality.

 
Using a computer can be extremely beneficial without having to program it. For hobbyist, gaming or artistry can be done through the use of a computer without needing to have developed the software for it. Of course, these two hobbies can have high paywalls in that video games may be buy-to-play or driven by subscriptions. For art, there are proprietary software that require official paid licenses for quality performance over the generic free features. So in general, the public does not benefit from a company owning a software since they will be limited in accessing the software. However, the software may never have been possible without the supportive flow of income from consumers. I think the public does greatly benefit from a company owning a piece of software because in a sense that company places an overall truth to that software. For example, many games have private server spin offs that can change character settings or game difficulty. But the official owner can shape the game into their canon or spawn sequels that line up with the vision of the original creators, a personality of owned software only possible through ownership. I feel like the spirit of hackerism cannot grow under the success of the software industry. It could probably grow more in academia rather than in the proprietary sector. It is not to say there are not those earning money who are not true hackers. Rather, it is that the system can easily separate instead of bring together true hackers. It can be argued that a true hacker would do anything possible to improve computing, so actual financial resources can be a means to an end. But just like those at MIT in the early days, computing is an end in and of itself. Not a means. This distinction is what divides the true hackers from other hackers such as game hackers.

Reading 00 – True Hackers

After reading Part One of HACKERS I felt a mix of inspiration and despair. The book paints a true hacker as one so passionate in improving and debugging a computer to the point of complete disregard for everything else. These hackers could go 30 hours without care because a computer is “the most interesting thing in the world” for a hacker (pg 58). I think it is amazing for these “true hackers” to have such zeal for technology at a young age but I do not think I have this same passion and drive. I do not tinker with electronics and I do not innovate on problems as much as my peers. I feel like my strength is to learn how to do something and apply myself to consistently do it well. For me, being a hacker is perfecting my craft.

True hackers are a seeming contradiction of both selfishness and selflessness. With the limited availability of computers in the sixties, a hacker would need to find hours when no one was using it or would have to sign up for a timeshare. I was fascinated when the ITS would allow several users to program at the same time (pg 93). And with the ability to view other people’s hacks then these hackers selflessly improved upon each other’s design all in pursuit to improve the computer.

Yet throughout the read I felt that these hackers were missing something. When the book transitioned to tales of Stanford (pg 118) I could feel the overwhelming bro culture taking place. The hackers at MIT were youth that were not keen to hone their social tact to people of different mindsets and to people of the opposite sex. So when many finally explored life a little bit then it would slowly turn from innocent competitive game tournaments to relaxing saunas to ad requests for women to be stars of a sex orgy. This bro-paradise crossed a line that would never happen in today’s society… almost. A few companies such as Riot Games do face issues where part of their staff naturally lend themselves to bro culture where even a Riot lead would openly grab his genitals in meetings with women present. The “magical combination” of hiring gamers on meritocracy tended towards positive bias for male employees over female employees. The kotaku article on the matter can be found here: https://kotaku.com/inside-the-culture-of-sexism-at-riot-games-1828165483 .

So although I felt a little despair from not having the same passion as the true hackers in the book, I felt at ease that my growth at Notre Dame helped me to become more rounded in social awareness. To me, being a hacker is also about improving something for the world. But the world is filled with various people of different backgrounds and ideas. I want the real world to be impacted by my work, not an exclusive world stemming from the Hacker’s Ethics. I feel that when the true hackers saw NASA sending a ship out to space was the eye opener to how big the world actually is (pg 123).

Reading 14 – Computer Science Education

After reading the articles, do you believe that coding is the new literacy? Should everyone be exposed or required to take a computer science or coding class?

 

No, I do not think that coding is the new literacy. Rather I think that the focus should be on computer literacy instead of coding literacy. I went through the U.S. education system from K-12 without taking a single programming or computer science course and I feel that throughout my time there I did not need to know how to code but rather how to use and maintain a computer. An example that just happened to my friend recently is that his File Explorer was frozen and would not load any items at all. He asked me what he should do and of course I said to Google it. He found a set of instructions but did not know how to follow and execute them. If my friend had better computer literacy then he could have followed the directions as easily as me and would have fixed his computer on his own. So to reiterate, I think that computer literacy should be more of the focus rather than coding literacy, but I do not think computer literacy should be a formal curriculum in school since there are many other areas of education that should be focused on instead. No, not everyone should be exposed or required to learn programming or computer science.

 

 

What are the arguments for and against introducing everyone to computing or programming? What challenges will schools face as this CS4All push moves forward?

 

One argument for teaching computer science to everyone is that there are “nations as large as China and as small as Estonia are taking steps to ensure that computer science education is available to all of their students.” If the U.S. does not follow this trend then we will be behind other nations and lose out on future technological innovation or become dependent on importing skills internationally. Another argument for computer science is that there will become a rising need in “preparing students for the increasingly computerized military and for jobs that can respond to and prevent debilitating cyberattacks.” The more people that can understand computers and its capabilities then the more abled they are in responding to incidents.

 

One argument against teaching computer science for everyone is that early education should continue to focus on the Three R’s: reading, writing, and arithmetic. Recent test results from the New York education district show that barely a third of all students “passed math or reading tests.” How can the current education system introduce computer science when it fails to teach its students the basics of reading and writing? Another argument against computer science is that not everyone has the ability to code, with some evidence citing that a “substantial minority of students fails in every introductory programming course in every UK university.”

 

 

How should computer science fit into a typical K-12 curriculum? Is it an elective or a requirement? Does it replace existing subjects or is it an addition? What exactly should be taught in this CS4All curriculum? Is this computational thinking? programming? logic? computer literacy?

 

If computer science were to theoretically fit into a typical K-12 curriculum then I believe it would be best implemented as an elective. There is just not enough teachers out there proficient enough to teach coding. As an elective it would ease on the demand for coding literate teachers as well as allow students truly interested in coding to explore that path without forcing the uninterested to learn, too. Coding will never replace subjects but rather it is an addition. For example the problem solving aspect of coding can help students engage their mathematics in that a coding challenge may require students to know factorization or geometry to solve. In a CS4All course I think that code flow with if and for loops is very important to allow students to think of problems in different ways. It is not necessarily computational thinking because students can either code a problem to do rigorous math or set up the code to utilize certain heuristics to get the problem solved faster or in fewer lines. It is more computer programming and computer logic for my arguments above. CS4All would not necessarily be a computer literacy course but as students use the computer more then they will naturally become more literate in it… so I guess it is kind of a computer literacy course.

 

Can anyone learn to program? Should everyone learn to program? Explain why or why not to both.

 

I think anyone can learn to program. I do not think anyone can learn computer science. Simple programming to automate a small job may not be the most optimized if it were done by a computer scientist but as long as it gets the job done then it can work for the general user. I think everyone should learn to program to learn basic logic and structure flow. Other than that I would feel some computer science ideas would go beyond the scope of what people need to know for their everyday lives.