Sunday, May 4, 2008

Looking Back

At the beginning of the semester, I was pretty excited about working with my community partner. I was looking forward to a new experience that was supposed to be fulfilling and enriching. When I chose the Boys and Girls club, I was apprehensive about working with children, because I have no experience with them -- but that was also precisely why I wanted to work there. I thought that it would be interesting to work in a situation that was completely new to me.

The truth is, I'm pretty disappointed by the whole experience. Getting started at the Boys and Girls club was a long and arduous process. Our contact was not actually from the branch of the club that we were going to work with, and so it seemed that she wasn't particularly anxious to get us started. This is very different from the reaction we got from the actual club staff, who were very happy for the extra help. However, even they were disorganized and not ready for us. They didn't know what tasks they needed help with, and they didn't even put us in touch with their tech guy (who is in charge of all the locations, so he isn't at the Tenderloin branch often) until a couple of weeks ago. So even when we tried to take charge, we found that some of our efforts setting up the computers were or are going to be overridden.

We didn't spend much time with the kids which, as it turns out, was fine with me. Perhaps I would have gotten more comfortable with them if I had worked with them more, but instead this experience only confirmed what I already knew: I don't like kids that much. As far as the computer stuff went, I didn't really learn anything there either. In fact, all I can really say I learned is to make sure that if I'm doing a job or volunteering for people, I should insist on getting in touch with the right people early on. That, I suppose, could be a valuable lesson.

Monday, April 28, 2008

Week 13 Writing Assignment

The analysis of the first scenario in Section 9.3.5 revolves mostly around the fact that the case in question is a safety-critical application. That is, the product has the potential to both save lives and to harm people. In this case, testing is particularly important from both an ethical and a financial perspective because if something goes wrong, people can die as a result, and the company would be both morally responsible and legally liable for this.

The second scenario is not safety-critical, and Baase focuses on explaining why the programmer should feel that they have the power to protest skipping testing rather than explaining why the programmer should protest in the first place. After all, releasing early for the show could give the product a lot of extra publicity, and this time there are no lives at stake.

However, even if the product can't physically hurt anyone, it might still harm people. What if the product were an accounting program and it malfunctioned, causing people to lose money? What if it were a photo-sharing application with a security leak, so that someone could access other people's private photos and embarrass or even blackmail them? Any application could have potential problems such as these.

Another argument that still holds in scenario 2 is that releasing a shoddy product can hurt the company's reputation, sometimes more than extra publicity can help it. I think that releasing well-designed, well-tested software is ultimately the best advertising.

That said, I think that the book does present this issue as black and white when there can be more subtleties to the situations. Sure, it is never a good idea to skip testing altogether -- but even with extensive testing software is almost never entirely bug free, and it is definitely more important to be absolutely thorough in some applications than it is in others.

Sunday, April 6, 2008

Digital Information

For this assignment I chose sites that deal with three different types of media: music, TV shows, and games.

Last.fm: this is my favorite streaming music site. Last.fm serves as both a database for music, updated constantly as users scrobble the tracks they listen to, and as source for custom Internet radio stations. To make money, Last.fm uses advertising and offers an optional subscription for extra site features. The music on Last.fm is streaming, and can only be played on Last.fm's player. Users can play custom radio stations that play certain genres (or "artists like so-and-so") but they can not choose specific tracks to play, nor can they download the songs.

Hulu: a streaming video site for TV shows and movies. Hulu is the legal counterpart to other streaming video sites that allow users to upload and share TV shows and movies. It is owned by NBC Universal and News Corp, and only they decide what content to upload (i.e., users can not upload videos). The content is high quality and on-demand (meaning that users can choose whatever they want to watch, whenever they want) but it can only be played within the site. The site is funded by advertisements that are embedded in the content -- just like normal TV commercial breaks.

Orisinal: this is an example of a particular artist sharing his work online for free. Orisinal is a flash game site with all original artwork and music by Ferry Halim. The games can be played online, and there are no ads and no subscription model. The site is clearly not intended to make money, though the author does sell merchandise in an online store (currently down for maintenance).

Monday, March 17, 2008

The Cathedral and the Bazaar

Over the past couple of years as a Computer Science major, I've become pretty fascinated by open source both as a social phenomenon and as an approach to programming. Stallman's talk last semester especially got me thinking about these things. Though I felt I needed to be careful to take what he said with a grain of salt, the idea that we could be working together to create software for each other rather than coding only for our own personal profit really appealed to me.

This essay seemed to encourage this same optimistic approach without the dogmatic attitude. Raymond claims that the open source approach is not the best because it is morally superior, but because it is practically more efficient. He refers to open source as "bazaar" style programming, where a large and diverse community contributes to a project voluntarily. He sets this approach in contrast to "cathedral-building" style, where a small group of dedicated programmers try to build a focused masterpiece from the ground up.

It's hard for me to say whether Raymond's characterizations are correct, mostly because of my lack of experience in either field. Even though by now I've worked on various projects, I don't think I've done anything quite on the scale that he's talking about, and I've mostly worked alone. What I can say is that I think he's generalizing a bit too much. It's understandable the he would want to have only two categories of programming to talk about in his essay, but I'm not sure that I would agree that all closed-source projects follow such a strict and inflexible process that is implied by "cathedral-building."

Raymond seems to believe that his "bazaar" approach is always the best way to go. While it definitely seems that some projects are naturally suited for this style of contribution, I don't think this applies to every project. For open source to work, and application must have a large enough user base for people to spot bugs, and enough dedicated and skillful users who will actually want to contribute. This works well for a mail client (who doesn't use email?) but may not be as efficient for a more specialized product.

For example, say you're writing software for architects like AutoCAD. The user base is very limited, and while those users may be working with the software very closely (and thus able to spot bugs) you may have the problem that Raymond mentions where they are not able to articulate those bugs very well. Also, when you have a large and diverse user base you are much more likely to have programmers in that mix, but if you're writing to a specialized group like architects, it is much less likely that your users will be architects and ALSO know how to code.

Another issue that arises with specialized software is that the programmers writing it must dedicate a lot of time to understanding the problem they are trying to solve. For example, if you are writing a program that is supposed to simulate biological phenomena, you better have a good understanding of the underlying biological systems, and most people don't. An open source approach might introduce problems with the conceptual design of the program, or it might just not generate much interest outside of the specialized field.

So, as it turns out, I think that the more specialized the problem, the more likely it is that the "cathedral" approach might actually work better as long as you avoid some of its problems by keeping groups small and communication lines open, while projects that are intended for the masses are better written by the masses using the "bazaar" style of programming.

Sunday, February 24, 2008

What is LAMP?

LAMP is an acronym that refers to an infrastructure for developing web applications in a free or open-source software environment. The acronym technically stands for:

Linux
Apache
MySQL
PHP

which is a common combination of such tools and together represent each component needed to develop a web application; the OS, web server, database, and programming language. Note that there are other free alternatives for each of these tools. In particular, the programming language used is often Perl, Python, or Ruby instead of PHP.

What is exciting about this approach is that it is a low-cost way for organizations to get their web sites up and running. While expensive software may help create flashy sites, practically anyone can create a site using the LAMP infrastructure, and the tools work well together and are sufficiently powerful for the requirements of most web applications. Also, it's a great way to support the open-source community and avoid giving into the corporations that sell proprietary tools.

Privacy as a Positive or Negative Right

The right to privacy can be perceived as a positive right when we think about it as the right to control our information. We can consider rights (or privileges, since it is nontrivial to determine what should be considered a right) such as the ability to decide which companies have our contact information, the ability to choose which personal information to publicize, and the ability to hold private conversations over the internet as falling under the realm of digital privacy.

However, a more common -- and more accurate, in my opinion -- way to define privacy is as a negative right. Merriam-Webster's Online Dictionary calls it "freedom from unauthorized intrusion." It is "freedom from" rather than "freedom to" that implies a negative right. In contrast with the examples above, we can think of privacy as the ability to give our contact information to one company without allowing that company to sell it to others, the ability to put information on the internet without it becoming publicly available, or the ability to have a conversation online without a third party accessing it.

In short, we want to be able to do anything we want on the internet without the fear that someone is watching. We want to have the same sense of security online as we do in our own houses, where no one can lawfully (or without proper authority) intrude without our knowledge and permission.

Exercise 3.4 from Learning Through Serving

The exercise asks why I think the police chief reacted to the mural the way that he did. The book was very vague on this point (probably to encourage our own thoughts in this exercise) but its tone was bitter. Personally I don't think the police chief was completely out of line. Religious imagery is always problematic in a public setting, especially in such a project that intends to represent an entire community; a community that does not necessarily agree, as a whole, with the artists' religious views. Even if the chief did not exactly have this concern in mind, it was probably a matter of policy for him not to endorse any religion at all. Doing so would be an abuse of his power as a government official (and don't even get me started on how much higher officials in this country do it anyway).

That said, there was probably not a single figure that could be agreed upon as a hero by the entire Latino community. We tend to single out religion because it is a sore spot for many people, but the fact of the matter is, we can never express the feelings of an entire community at once. This is where the nature of the "I" and the "we" comes in. The artists were chosen to express their ideas, keeping in mind that they are representing the community, but in the end the ideas come from the individuals. They can try to combine them and work together to find compromises, but to completely alter their vision and water down their ideas would be unfair to themselves and also an untrue representation of the community to which they belong.

I think that a better way to handle the situation that arose would have been to communicate with all parties involved at an earlier stage. If the students and artists had spoken to the police chief when they had first come up with the design, they would not have been so attached to it yet and could have discussed changing it or tried to persuade the police chief with no hard feelings.

Sunday, February 10, 2008

Google Street View

As Americans, we are very concerned with and feel entitled to our privacy. We don't like the idea of people being able to look up our information or see pictures of us without us knowing. This is why Google Street View has become so controversial. People find the idea of people seeing pictures of them on this site to be very creepy or at least uncomfortable. I can understand that. But...

I think that this whole situation is over-hyped. After all, we don't complain when people watch us on security cameras in every store we go to, do we? "But only security personnel see those," you might say. That's not always true. Some companies do market research by filming customers in stores. "Okay, but still, that's only a limited number of people, not the whole Internet." Sure, until they make a documentary about consumer behavior (like one I saw recently) and put that footage on television.

Plus, we put pictures of ourselves and our friends on the Internet every day! Like we were talking about in class last week, we even link our real names with these pictures.

Not only are we putting this information on the 'net, but we're getting surprisingly comfortable doing so. A few days ago my friend was complaining (on her blog) that a guy she had a crush on had a very common and thus un-Google-able name and had no Facebook account so she couldn't check him out. My reaction was "hmm, isn't it interesting that our first response to a crush these days is to try to spy on the person? Go go internet generation!" Yup, it's a common and accepted practice affectionately referred to as "webstalking" and it's probably happened to you!

So back to Google, who, to be fair, has pretty much single-handedly made this behavior possible. But can we really blame the company? They simply provide the technology and we are the ones who decide how to use it.

That's not to say that they should take no responsibility in the matter. They should not be negligent in privacy considerations, and I don't think they have been. Google's response to privacy concerns has been to allow people to report inappropriate images on the site. Google then edits the image to blur out any features that infringe on privacy, such as faces or license plates. I think that the only way they could do better than that (without taking down the whole Street View feature) is by going through all the images and blurring things out themselves, and Google has recently announced that they are planning to do this for the feature's release in the UK and possibly in the US as well.

So, while I am all for privacy in our personal lives and exchanges, I don't think Google has crossed a line here. Taking pictures of public places where anyone can see you is no worse than some of the infringements of privacy that our government performs in the name of security. Besides, these kinds of issues are a result of the technology that is now available to us, and we need to learn to deal with them as a society instead of pointing fingers. Like I said in class, the Internet is here to stay and we can't go backwards. We have to work together to figure out how to be comfortable with it while still utilizing it to its best potential.

Service in School

The question for this week asked me what I think about colleges teaching about engaged citizenship, which to me sounded a lot like the question, "do you think colleges should require service-learning classes like this one?" I'd like to first talk about service requirements in school in general, since such requirements seem to have become popular in the last decade or two.

Compared to the other students in this class, I have very little experience with community service. The American students especially seem to have completed many hours of service, sometimes on their own but, I think, especially through school. There are a few reasons that I haven't, the primary reason being that I moved around and had special challenges in school, but also because I was annoyed at the way the schools approached community service.

In some cases it was just posed as a school requirement: "you must do this many hours of community service in order to pass this year." To me, this felt like a very empty reason to do it. In my high school, service was not required but "encouraged," and most people just talked about it as something that looks good on college applications and will give you the edge to get in. But at the time, I was too worried about doing well in my actual classes to focus on extras in my resume. There was some talk about "giving back to the community," but seeing as I never really felt like I belonged in the communities that I lived in, this argument didn't really do it for me. Finally, people threw around buzzwords like "communication skills" and "leadership" but never really explained how I would acquire these things by working at the local soup kitchen.

In short, I didn't feel like any of these things applied to me. I sometimes felt selfish for feeling this way, but I also felt like I couldn't help it, and I didn't have the time or energy to deal with these feelings because my life was pretty complicated at the time.

Fast-forward to USF, to this class. I'm a senior and still haven't done any community service, but I feel that now, in this environment, I'm ready to. I feel like this class approaches service in a very different way than I've encountered in the past. Service-learning, a mutually beneficial situation where I hone my skills by helping others, seems much more appealing and satisfying. Also, I've never had an opportunity where someone has helped me find a service job that is best for me. In the past, I've felt overwhelmed when the school said: "go volunteer." I didn't know where to start. I like that USF is providing me with both a service opportunity that matches my skill set and a time-frame to do it in, so I don't have to find extra time in my hectic schedule to do it.

Yes, I think that we should try to learn to be active and engaged citizens. And yes, I think that college is a perfectly appropriate place to learn this, since most people don't get it at home and high schools seem to be approaching it the wrong way. Obviously, academic knowledge is not the only form of knowledge and I think that USF is right to encourage other forms of learning. I just hope that the experience really is as fulfilling as I am expecting it to be, and I'm looking forward to starting.

Sunday, February 3, 2008

What I want to be when I grow up.

For someone who is about to graduate in a few months, you would think I'd have a more concrete answer to this question. If you had asked me a few years ago, I probably would have said I want to go into video game design. But the novelty of that idea has grown thin, and while I'm not ruling it out completely, it's not really at the top of my list anymore.

I haven't had too much experience yet, out there in the "real world" that everybody likes to talk so much about. I've only had a couple of programming jobs, and neither of them were very satisfying for me. At both, I lacked a strong interest in the product itself (though I tried my best) and at both, the atmosphere was decidedly antisocial. Like I said, I don't have a lot of experience yet, but I know it has to get better than this!

Lots of people say "I don't want to be just another programmer. I don't want to just sit in a cubicle all day at a large corporation." Or maybe they do, I don't know. The truth is, I really don't feel like I'm a mediocre programmer or a mediocre thinker, and I think I deserve more than a mediocre job. That said, I can't say I have any bright ideas or even burning passions that make me go "this is what I want to contribute to the field." At this point in my career, the most important things to me are to work with smart, interesting people and to be challenged in my job. If I have those things, I think that will be enough to inspire me and I will find my own important thing to contribute.

Encryption

Symmetric-key vs. assymentric-key encryption (a.k.a. private-key and public-key encryption, respectively) have in common that in order to decode an encrypted message, one needs a certain "key." This key is a large number, often hundreds of bits long. In private-key encryption, the same key is used to encode and decode the message. Thus, it must be distributed to all parties involved in the communication beforehand and then kept secret. In many situations, distributing the key securely is a problem. This algorithm works best if the parties have some secure way to distribute a key once, and wish to communicate many times using the same key. If the secret key is somehow found out, then everyone must switch to a new key.

Public key encryption uses two keys: one to encrypt and one to decrypt. Each party has a public key (which they advertise) and their own private key (which must be kept secret). These keys are generated together, and the algorithm relies on using them both together. The math (which I don't completely understand) involves relative primeness of numbers and modular arithmetic. If someone wishes to communicate with me, they use my public key to encode a message, which I can then decode using my private key. Also, I can "digitally sign" things with my private key to prove my identity to people who know my public key. This algorithm is good for one-time communications but slower than symmetric-key encryption, and is very difficult to crack because finding out the keys involves factoring large numbers, which is (currently) a hard problem.

Thursday, January 24, 2008

Hello World!

Welcome to my blog for the Computers in Society class. I'm sure no one will ever want to read this but Prof. Brooks and my fellow classmates, but just in case you happened to stumble across it, hello to you too.

As I understand it, I'll have all sorts of reflection and discussion assignments to do here. I'll talk about social issues, politics, and my experiences in my community service. How exciting :)