Programs for Programming

Everyone remembers having to learn cursive in grade school; it was a faster, fancier way to write than print. Keyboarding was never required in 1990’s public education, but I was fortunate enough to pick it up as an optional elective in middle school. Despite this, I can’t help but note how much more often I use the latter over the former in my everyday life. Is it just because I am a computer scientist? Or is it a sign of the changing times? I don’t claim to know what’s best for today’s grade school curriculum, but I’m sure most people would agree that these priorities should be changed if they haven’t been already.

What about programming then? Historically, keyboarding and programming were both skillsets that only the technologically inclined had to know. But today, toddlers swipe away at their smartphones while their grandparents continue to hunt-and-peck away at old keyboards. Today in the twenty-first century you don’t have to be inclined to participate in technology – technology comes to you! As a result of this, there is a modern day program to introduce more people to, well, programming. CS4All, or Computer Science for All, is a new education movement that seeks to “provide equity, empowerment, and opportunities that maximize the innate potential of every student”. Previously, low income families rarely had the opportunity to expose their children to computing careers, and CS4All aims to spark that interest in as many students as early as they can.

But where exactly should computer science fit into a typical K-12 curriculum? In my own experience fundamentals of computing was available as early as grade school and keyboarding was an elective in middle school. Actual programming did not come until high school (in my case, Java), and even then that might have only been because I specifically attended a technology academy. And while I agree with the overall goals of CS4All, it’s important to recognize that not everyone has the drive or want to end up in the computer science field. This makes it a bit similar to math in that, although everyone is required to study it to a certain degree, the extent to which most people actually use it on a daily basis is limited to a very basic level. If you think about the practicality of it, among everyone who begins studying math in grade school those who go on to earn a mathematician’s degree are few and far between.

Some would argue that having to learn programming in order to use computers would be the same as having to learn automobile mechanics in order to drive a car. I’m inclined to agree. As any computer scientist can tell you, abstraction is a very important aspect of programming. Abstraction is the concept of providing users with a simple interface that does not reveal any of its underlying complexities. In today’s society many people of all professions use computers without a full understanding of what goes on under the hood. CS4All’s aim is to remove a layer of abstraction regarding computer science by giving more people the means to not just use technology, but code and create it through programming. The problem is, making this type of education mandatory would create an unnecessary expense in the form of students spending time studying programming with no intention of entering the field in the first place!

This doesn’t mean to say that I don’t believe in exposing children to programming at an earlier age. In fact, I’m all for it! I just believe that what we should guarantee is the opportunity for students and their families to opt into such a computer program without having to pay any unreasonable, additional expenses, not making it mandatory for everyone. This way, schools only have to pay as much as the community demands and the option is always open for children to dip a toe into the pool of computer science and see if they like it.

Trollolol

Trolling. It’s a modern term most baby boomers wouldn’t even recognize, but nonetheless is very close to the heart of every generation afterward. Yes, close to the heart and clogging the aorta. Trolling is a verb that became popular after the rise of the Internet and refers to someone who acts to deliberately offend others and start arguments. While this general definition has found some informal usage outside of computers and in the real world, its origins and use has spread much deeper and farther for decades within Internet culture. People who actively participate in trolling are negatively labeled “trolls”, and are often looked down upon by the rest of the Internet community as being immature and selfish. Trolls are assumed to find some twisted form of entertainment in their harassing and upsetting of others, leading to the spread of the popular Internet phrase: “don’t feed the troll”. Essentially, this practice boils down to ignoring trolls completely to deny them any satisfaction from their own work. While some attribute the destructive behavior of trolls to some sort of real-life escapism, others doubt the validity of this victim card. It may be that the Internet simply acts as a convenient outlet for a troll’s already sadistic tendencies, not just as a form of escape.

If one thinks about it, trolling is just a kind of harassment through a digital medium. By that logic, companies have just as much (or as little, depending on your personal opinion) responsibility to prevent and respond to online trolling as workplace harassment. Think about it: physical stalking and harassment is not an ignorable offense and cannot be publicly tolerated by any self-respecting company. Online stalking and harassment, however, is treated very differently. Facebook and other online social services provide means to communicate between users, but they are extremely limited in their power to filter the actual content of messages. Infringing upon people’s First Amendment right to free speech isn’t taken lightly, even on the Internet, and because the term “trolling” was originally coined in a casual setting, people often undermine its causes and effects. Nowadays trolling has even gained the reputation of ultimately harmless online harassment. While this is fine by itself, it’s important to make clear that not every form of online harassment can be waved off as trolling. More serious forms (see: online bullying) are very real with very real consequences.

In my personal opinion, anonymity on the Internet is a good thing. While there will always be groups of people that will abuse anonymity to take advantage of others, I have faith that the majority of the world is comprised of good-willed people (if it weren’t, society would fall apart as we know it). Anonymity allows this larger group of good-willed people to express themselves without fear of being judged, and in my opinion the creative repository this gives man/womankind far outweighs the potential damage of anonymity abusers. While “real name” policies have always been toyed and experimented with to prevent this, the reality is there is still no practical way to enforce such strict rules. There is even less of a way to make sure abusers can’t still find a way to be anonymous in the first place. Until law catches up with technology (and it may never will), maintaining “real name” policies seems almost impossible at the moment.

Personally, I agree that the best way to deal with trolls is to ignore them. Any sort of interaction with trolls, whether to correct them or reason with them, will most likely end in a one-sided argument and frustrated feelings. The best advice I can give to others is to develop a thick skin through their experiences online, and to help people understand that trolls only have as much power as those around them are willing to give.

Deep Dive

Artificial intelligence is intelligent, human-like behavior exhibited by machines and software. While it used to be the subject of many popular twentieth century science fiction movies, now it seems like only a few decades from becoming an actual reality. Along with the word ‘intelligence’, AI was developed to not only mimic the human brain but also its natural structure. Artificial neural networks (ANNs) were inspired by their biological namesake, and are one of the many similarities AI and human intelligence share. ANNs play a vital role in machine learning and cognitive sciences through deep learning, which gives machines the “ability to learn without being explicitly programmed”. But while this may seem akin to human intelligence, there is a specific difference that makes it distinct: decision-making by AI today is bound by a single directive. Humans function much differently and are always constantly comparing and re-prioritizing goals in their everyday lives. This is not to mention the fact that we often create goals on our own. It’s obvious that there is still much work that needs to be done to bridge the gap between AI and human intelligence.

That’s not to say current advancement in AI is not stunning. AlphaGo, Deep Blue, and Watson are all well-known examples of artificial intelligence technology. Although each was originally designed for a specific, singular purpose (playing Go, Chess, and the game show Jeopardy! respectively) they demonstrated great mastery by handily defeating human professionals in their respective fields. While this may seem like passing entertainment to some, I’m sure fellow engineers have no problem imagining their use in other, more generalized commercial applications. In fact, derivatives of Watson are already currently ‘employed’ by the Memorial Sloan Kettering Cancer Center in New York as decision aides for lung cancer patients. In addition to that, AlphaGo’s triumph over 9-dan Go professional Lee Sedol just last March convinced the South Korean government to invest $863 million in AI research over the next 5 years! That should silence any AI viability naysayers.

But when can we definitively say that AI has reached the complexity of human intelligence? Alan Turing established a test in 1950 to measure a machine’s capacity to ‘behave intelligently like a human being’. The standard version involves a human evaluator’s ability to distinguish between another human and AI based solely on their responses. “How closely can the AI pass for being the human?” is the final question posed by this Turing test. Today, this test comes at odds with John Searle’s Chinese Room argument, which states that regardless of how intelligently a machine behaves, its program cannot give it a human “mind”, “understanding”, or “consciousness”. To visualize his point, he describes a locked room with a non-Chinese speaking person inside. If that room is filled with “to-Chinese translation books”, the non-Chinese speaker would be able to carry a fluent written conversation in Chinese with any Chinese-speaking person outside. In essence, any Chinese-speaking outsiders could be fooled into thinking the room resident knew Chinese when in they were simply following written translation instructions. In actuality, there was never any understanding of the Chinese characters at all!

I am of the belief that, with the machines we use today, artificial intelligence cannot hope to achieve a perfect human “mind”. While the end result of machine behavior and actions may mimic ours, I sincerely doubt that the reasoning behind them would be anything but the end result of massive computation. It’s difficult to imagine machines today acting out of more complex human emotions like regret, appreciation, compassion, or love. In that sense, I guess I would agree with Searle’s Chinese Room argument regarding today’s computers. But that’s not to say I don’t think a perfect AI can never exist. I just believe that our interpretation of modern computing would have to change drastically in order to make it happen.

An Impartial Internet

Net neutrality is a much debated topic when discussing the future of the Internet. But what exactly is net neutrality? The controversy outdates its namesake, but the term was first coined by Colombia Law School professor Tim Wu and refers to the principle of an unbiased Internet. In simple terms, the principle states that Internet service providers (ISPs) such as Comcast, AT&T, Verizon, and Time Warner Cable should treat all data on the Internet equally; this means they cannot discriminate or charge differently based on user, content, site, platform, or even application. In essence, ISPs are expected to “provide the pipes, but should have no say in what passes through them.” This is currently the way the Internet works, but several ISPs are pushing for what is called a “closed Internet” in which they can regulate traffic and potentially filter content. Advocates point out that this gives providers too much power outside of their jurisdiction while ISPs counterclaim that data discrimination actually guarantees quality of service.

There are many freedoms to an open Internet that most people enjoy without realizing: lack of restrictions means anyone can access (almost) any part of the Internet with the guarantee that no one is given special treatment over anyone else. This means that anyone e-mailing, file sharing, instant messaging (IM), or video conferencing from the comfort of their own home receives the same treatment as a large organization paying more for the same service. ISPs are attempting to change this status quo by legislating “Internet fast lanes” in which they can offer content providers faster service that distinguishes them from individuals. Neutrality supporters counter with the argument that leaving transfer rates to the discretion of the ISPs will only create an environment that heavily favors corporate alliances and destroys free market capitalism. Who is right? Who is in the wrong? It is easy to slap a company agenda onto the motivations of the ISPs, but it may be important to consider the nature of the Internet itself in order to draw more concrete conclusions.

Modern day Internet behaves similarly to road traffic, so much so that the word traffic today is just as likely to refer to web traffic as it is street traffic. The accuracy of the analogy is very well deserved. Many people use roads for many different purposes but everyone experiences the same service without prejudice, regardless of whether they are a taxi conducting business or a family on a relaxing cross country trip (with the exception of some emergency services). Continuing this metaphor, implementing the “fast lane” proposal by ISPs is the functional equivalent of the government granting paving companies the power to designate express lanes as well as collect fees for their usage. After all, paving companies lay down the foundations for the road systems just as much as service providers lay the foundations to access the Internet. But something already seems out of place; we pay taxes to the government for the construction of roads, not their usage. But that’s not all. Lack of road neutrality, a “closed road”, would also allow paving companies the power to deny access to places they do not want people to visit. This not only infringes on the rights of drivers, but it also makes it difficult for business to communicate directly to consumers by inserting a middle man that, arguably, doesn’t need to exist. In addition, designation of fast lanes for businesses means fewer resources to serve those who travel in the slower lanes, whose users number far greater. Although ISPs claim that discrimination of data ensures quality of service, the larger issue here seems to be that Internet providing does not seem to be a service type that warrants continued management past its provision; this becomes apparent when the service is translated into a real life system like road traffic. The freedom to use and drive on roads seems to be a right expected just as much as an impartial Internet.

Project 03: Whistleblowing, Security, Privacy

Submission: Project 3

People have a right to manual encryption in the same way that they have a right to wear a Kevlar vest out the door each morning ; they may do it as many times as they want, though many people would probably come to question the tradeoff they are making between security versus time.

The right to privacy is never explicitly stated in the Constitution, but it is alluded to in the fourth amendment through “the right to be secure in [our own] persons, houses, papers and effects.” In the twenty-first century, encryption is the most secure way for us to achieve digital privacy, and that makes it a fundamental right. Claiming that our right to encryption does more harm than good by locking out the government is similar to claiming that our right against unreasonable search and seizure does more harm than good by locking out law enforcement. The only notable difference between the two is that one is physical while the other is digital. While physical warrants are certainly acceptable in many cases to apprehend a suspect, it is only socially acceptable once the need to infringe upon the right is proven beyond a doubt. To make a proper transition from physical to digital, circumventing encryption by ordering a workaround would have to be proven beyond a doubt by a similar kind of ‘digital’ warrant. Even then, the process of developing a workaround would have to be kept secret within a contained environment, in order to prevent any knowledge or code from leaking to the outside world.

Many people do not consciously think about the workings of encryption in their day to day lives, though they probably use it without fail on a regular basis. This is very similar to how nearly everyone drives, yet only a small percentage of those that do are actually aware of the intricacies of how a car works. Is it because of indifference? Efficiency? Or maybe it’s out of ignorance? Regardless of the reason, abstraction of complexity is an important part of life in the twenty-first century. As a computer scientist, encryption is very important to me because I am aware of how it works and what it does for us. Is it important enough for me to take a political stance based on the issue? Certainly. Would I force my agenda onto the less technologically inclined? Probably not. I would openly give my knowledge or opinion of the issue to them, but I am of the mind that everyone should form their own educated opinion before contributing themselves wholly to an issue. I would feel much better about the future of security if those with more to say on the issue had the opportunity to speak with a louder voice.

I don’t really see the issue as personal privacy versus national security. No one would argue that either one of those is a bad thing. Instead, I view it as an opportunity to set guidelines as to how the two of them will interact in a way they’ve never interacted before. In that sense, I’m placing my effort and faith in a future where we can guarantee both privacy and security at once.

21st Century Pirates

The Digital Millennium Copyright Act (DMCA) is a controversial piece of U.S. legislation passed in 1998. It was intended to update copyright law to accommodate the Internet, and criminalizes any technologies, devices, or services meant to circumvent copyright measures (with the exception of security-related tasks and encryption research).

DCMA Title II, the Online Copyright Infringement Liability Limitation Act (OCILLA), specifically defines a safe-harbor for Internet Service Providers (ISPs): as long as ISPs meet several provisions outlined in the DCMA, they will not be accountable for the actions of their clients. In other words, ISPs will not be held responsible if one of their subscribers commits copyright infringement (though that client’s service must be canceled). In exchange, copyright holders have the right to subpoena an ISP for the identification of an alleged copyright infringer.

In the twenty-first century the misuse of copyrighted material is an almost daily occurrence. Take the most common case for example: the illegal downloading of music has proliferated so much that it is a wonder how the record industry even manages to stay afloat (probably through advertisements and live performances). From a physical standpoint, it may not seem like that much of a problem for users to download or share copyrighted material. After all, twenty years ago no one complained if someone lent a friend a DVD for a weekend, right? This twentieth century mindset may be the reasoning as to why many people engage in the explicitly illegal behavior; the consequences of copyright violation are just not apparent from the click of a single mouse button. “I’ve already paid for the product anyway, right?” This line of thinking makes digital copyright laws seem needlessly strict. But is this physical analogy really all that accurate? One important distinction to note is that breaking copyright laws usually means having the copyrighted product permanently. In this sense, it is less like lending a friend a DVD for a weekend and more like burning the DVD and giving it to them to keep!

Things get a little grayer when considering other subtle factors. If a product exists in several different formats, should it be considered several different products? Or should users that have a single version of a product also have the right to access it in various forms? What if users are only “sampling” the material? The answer to these questions don’t make a perfect transition from physical to digital, and it may be dangerous to try and address all of them at once with a blanket law that attempts to cover all possible cases. Ideally, I believe that the law should make clear that digital properties are their own form of media instead of trying to modify the laws for physical copyright. To follow up, they should create an organized system for interpreting each creator’s copyright terms. Of course always considering each case individually would cost a lot of time and resources, so this may not be the most practical approach. General guidelines should govern a majority of the procedure, but I still believe there should be room to interpret a single case free from the guidelines if the need arises.

Even today, new technologies are adding more angles into the piracy problem. Streaming services like Netflix and Spotify, which did not exist ten years ago, have addressed some problems with piracy. Cloud computing has given users a sense of digital property and a place of permanence on the Internet, but the problem of getting rid of piracy completely is less of a technology issue than it is a social one.

Patent Pending

Patents are granted by the United States Patent and Trademark Office and give temporary, exclusive property rights relating to an invention. There are three different types of patents one can file for: plant, utility, and design. Plant patents, as they suggest, protect hybrid or new vegetation and last 20 years. Utility patents are for new and unique ideas while design patents are for redesigns of already existing ones. They last 20 and 14 years, respectively, and their infringement can be enforced through civil lawsuits. In exchange for this service, the government asks for a definition of the invention and full disclosure of its contents from the inventor. Once the patent expires the information is released into the public domain for anyone to legally copy, reuse, or market. As of the year 2000, the cost of obtaining a patent in the United States ranges anywhere from $10,000 to $30,000.

At a conceptual level, patents are meant to simultaneously protect ownership of an idea and spread knowledge of its existence. As outlined in the original U.S. Constitution: for “the progress of science and the useful arts” Congress has the power to “grant [inventors] exclusive right to their respective writings and discoveries”. Ideally, this was meant to fuel innovation by way of assurance. Why bother inventing something new if anyone could just take your idea and sell it as their own? It seems like the only sensible thing to do. The 20 year time limit also performed double duty by stopping monopolies from forming as well as preventing potentially good ideas from dying out. What, then, could be the problem?

Funnily enough, in the real world ideas don’t work out as soundly as they do on paper. Laws must always allow themselves to make room for the times, and patent laws are no exception. Not every inventor wants to deal with the red tape of the business world, and many patent owners often find themselves selling the right to their creations to others. Theoretically, this should work out fine: even if someone doesn’t have the skills or patience to deal with business they can at least hand off their idea to someone else and make a pretty penny at the same time. But the reality is different. Instead this created an environment in which new ideas could only thrive in the hands of big business – big business ready to sue anyone who even thinks twice about infringing on their hundreds of well-bought patents.

As with many things in life, I refuse to see the problems with patents as a one-or-the-other and no in-between type scenario. I don’t think anyone can argue against the original good intention behind patents as stated in the Constitution, but I also don’t think anyone can argue that the current system is perfect either. The intentional misuse of patents by “patent trolls” is proof that there is still room for improvement. I think it’s time for a change. Three types of patents may have been all-encompassing in the twentieth century, but it seems nigh impossible to try and classify new ideas in 2016 into just those three categories. Intellectual property today should not only be recognized as physical things, and software and the like should have their own type of patent with rules catered specifically to that audience. Eventually the new patent system should have the long-term goals of 1) being able to accommodate new types of patents, 2) discouraging patent misuse (perhaps by way of increased penalties). and 3) allowing orderly revision of the system itself.

Cloud Coverage

To many non-computer savvy people, the cloud is a complete mystery. What exactly is the cloud? What is it used for? Many people know the cloud is important, but not exactly what it is or what it does. To put it in technical terms, a cloud is a virtual resource pool that has an interface that (if it is well designed) hides any underlying complexities. In other words, it’s an Internet-based network that provides shared processing resources to its users. Utilizing a cloud means storing, managing, and processing data on it without caring exactly where the data itself is physically stored among the cloud’s many machines.

For developers, cloud computing provides a convenient way to store data without having to worry about any in-house costs, organization, or dedicating employees to its upkeep and management. For them, it’s in their best interests to let outside services such as Amazon EC2 (Elastic Compute Cloud) and Google App Engine take care of the specific details so that company resources can focus on other production factors. Programmers specifically only have to worry about interacting with the cloud system through its API in order to make full use of the data they send, store, process, and retrieve from it.

For consumers, the cloud means long term durability in the storage of their data. Many cloud systems keep replicas of files within their systems in case of individual machine or large scale power failures, so users can rest assured that (at the very least) the persistence of their stored files is reliably guaranteed. For this reason, cloud computing is often used for massive data generating services like Facebook, YouTube, and Twitter where every consumer is a producer of content. And thanks to the cloud, this data can be accessed quickly by multiple devices on demand.

But technology has always evolved one step ahead of security and regulation. Just look at the Internet; even though it has been in use for nearly 30 years, the waters of Internet control are still being tested by controversial concepts like SOPA (Stop Online Piracy Act) and net neutrality. Cloud computing is no different. Security and privacy risks are the prices consumers pay for using cloud computing services. Content stored on the cloud is very vulnerable to attacks and leaks, as was demonstrated by the high profile iCloud leak in 2014 where almost 500 private pictures of various celebrities were exposed to the public. This tradeoff decision between convenience and privacy is often a choice that most users of social media systems don’t consciously make.

I am currently taking CSE 40822/60822: Cloud Computing under Dr. Thain. Through coursework I have had experiences coding for Condor, a distributed computing system, at Notre Dame as well as a Work Queue master/worker framework. Right now I am currently working with Hadoop and Map-Reduce algorithms while learning Pig Latin and HBase. The processing power granted by using a cloud system speeds up performance tremendously on a scale that can only be appreciated by experiencing it with large jobs. For example, if rendering a one minute video on a single machine at 10 frames per second using POV-Ray takes 7 hours and 20 minutes, utilizing the Condor cloud could potentially break this total time down to only 32 minutes.

I have mentioned several times on this blog that I hope to one day begin my own startup company. Building an infrastructure that is capable of scaling pretty much requires knowledge of cloud computing concepts and their implementation, so I can see myself making much practical use of this knowledge in the future. Maybe cloudy skies in the forecast aren’t such a bad thing after all.