Mia Skinner
Wednesday, May 16, 2012
Thursday, May 3, 2012
Cloud Computing
Cloud computing, a new and exciting way a third party
company offers users the ability to save their personal applications,
documents, computer preferences, and personal information on a server so that
it is all accessible from any computer – anywhere in the world. Gaining
momentum and popularity amongst users, cloud computing is a tool that is meant
to connect people of the 21st century to their technological lives
remotely and efficiently by giving them a hub to save and access their
computer’s content as if it were their personal hard drive.
The history of cloud computing does not span very far back.
The start of this technology grew with the development of the Internet,
servers, and truly flourished with the rise of large Internet server databases
such as Google, Yahoo, Bing, and American Instant Messenger. The growth of user
trust in saving their documents and information in the form of email on such
large servers with the convenience of being able to access it from any given
computer with internet connection gave start to the new era of server dependent
information storage. Today, with the world spinning faster than ever before,
society is in search for solutions that can replace the slow technologies of
the past with newer and faster ones that will be as swift and efficient as the
people of the the 21st century.
In essence, cloud computing is simply a user’s browser
communicating with a main server and asking it for information. Servers are
used in several different respects by almost all computers in order to access
information desired by the user that is not stored on the user’s hard drive.
Web based servers and personal browsers work together in a very consistent
manner through protocols and connections in order to deliver information to the
user. It all begins at the user’s end while surfing the web and they request an
access to a web page. Once the request
has been made, the user’s browser breaks down the request into three parts:
host name, domain name, and top-level domain name. An example would be if a
user is on Carnegie Mellon University’s home page and after seeing the
advertisements for this year’s graduation keynote speaker, Patrick Wilson, decides to read
more into it and clicks the “read more” link, the process to retrieve that
information begins. The link the user is trying to access reads “http://www.cmu.edu/homepage/society/2012/spring/wilson-to-address-grads.shtml”
and the user’s browser begins by breaking this link down into three simpler
parts; the protocol (“http”), the server name (“www.cmu.edu”), and the file
name “homepage/society/2012/spring/wilson-to-address-grads.shtml”. Because
humans remember words and phrases much easier than arrays of numbers, servers
are given masking names that are in word form and parallel the numerical ID
that the computers and servers communicate in (8 number IDs called IP
addresses). This causes an additional step in the process of accessing a link
because the browser then needs to take the server name and accesses a set of
servers called the Domain Name Servers, which serve as the directory for IP address,
and derives the IP address translation for the given server. Once the browser
receives www.cmu.edu ‘s IP address, the browser communicates with the
Carnegie Mellon server and asks for the file “homepage/society/2012/spring/wilson-to-address-grads.shtml”.
The Carnegie Mellon server then sends the HTML text for the requested web page
to the browser. The browser then translates the HTML text and formats it into a
legible and stylized version that appears on the user’s screen. Like this,
cloud computing works through a set of communication connections and protocols
between the browser and the servers where the user’s information is being
stored.
There is no difference between cloud computing and Web
servers for they are both built and meant for storing and accessing
information. Both of these mechanisms allow you to edit pages, revisit them,
and access it from any computer in the world that is connected to the Internet.
The only thing that sets cloud computing apart from normal web servers is the
way in which its used is applied. Cloud computing’s uniqueness is anchored in
the way in which people are provided with a setup that is displayed in a
fashion that is identical to formats that they are used to and allows them to
function and save to this server in a way appears familiar to them. The only
change that exists between cloud computing and normal computer application is
where the files are ending up at the end of the session – in a server located
in a hub sum thousands of miles away.
Hosting as a cloud computing server is not an easy job due
to the complexities and complications that can arise from thin air. As a server
host it is important to account for and take all precautions to protect your
users’ information. With the common failure and crashing of servers, server
hosts must always have their information backed up on more than one secondary
device – much like individuals tend to back up their hard drives on USBs or
other external devices. But these precautions and server set ups are extremely
expensive, and can only be afforded by a hand full of the largest leading
companies of this century that have both user trust and the funds to implement
and support a network for cloud computing. Currently the most eligible
companies for this job include Apple Inc, Google, Yahoo, Microsoft, IBM, Amazon
– and some of them such as Apple and Google have already gotten a head start on
building such a network for public cloud computing.
Apple’s recent development of MobileMe, an application that
syncs up all of your apple products, constantly updating ones products
cohesively, has offered users the ability to access their personal updated
information from any device synced to the user’s own personal network, around
the globe for an annual subscription fee. Now, with the update to iCloud, Apple
has established itself as the first to popularize cloud computing by making it
easily and readily available to the public. Allowing users 5GB of free storage
space and authorize up to 10 devices to access your Apple information, the
technology has been gaining momentum and awareness. Users have become spoiled
by the ease of having all of their personal information, applications,
settings, and documents readily available at a click of a screen – any screen. Google
has also begun investing its abilities in cloud computing with its “Google
Docs” online application offering a service for easily accessible documents all
saved up onto Google’s servers. As a free service, Google’s “Google Docs”
application has proven to appeal greatly to users and has served as a
convenient hub for user collaboration and interaction with their editable
spreadsheets and documents.
Currently, the future is looking bright and clear for web
and technology companies Apple Inc. and Google due to a new partnership – an
effort to build a network for public cloud computing. Proving to be the perfect
pair for the job, Apple with its ever-changing innovative developments of hardware
technology and Google’s enormous server network and database experience, they both
have plenty to bring to the table in setting the stage for public cloud
computing and bringing it to the next level.
In theory, cloud computing sounds like a brilliant plan, but
many worry that when executed, the drawbacks may outweigh the benefits.
The benefits of cloud computing seem endless, and for some
users are worth overlooking the negative aspects. In my opinion, the true
destiny of cloud computing will lie in the way in which it caters to different
computing and storage needs – if it can provide enough worthwhile features to
be useful for the majority of the public, cloud computing will it will provide
convenience and ease for some and will be rendered useless for others.
Benefits of cloud computing include:
·
Cheaper Hardware Prices – larger servers (no cd
drive, no USB drives, no hard drive) everything will be run wireless because
anything plug-in will be uncommon (USBs, external hard drives, etc)
·
Ability to access personal
documents/applications/etc from any device any where
·
Increase connected-mobility
·
Will de-personalize personal computers – any
computer/device can act as your personal comp (including personal settings and
such)
·
Easier for companies to distribute software and
buy applications (wont need to buy a software license for every computer at the
company – just one for their server)
·
Easy for the user to manage – no change on the
forefront of the screen (the only real change happens behind the scenes and is
nothing the user has to worry about)
Concerns for a future with cloud computing
·
Information security
·
Intellectual property identification – if its
all out there then who does it belong to? And what is the extent of the
ownership? If someone manipulates someone else’s intellectual property, whose
is it? the manipulator or the original creator?
·
Eliminate demand for IT jobs (Technical Support)
·
Will draw a lot of electricity and power in
order to cool the large servers that are supporting/storing the cloud
information
With lots of excitement, cloud computing is sure to become a
computing system of the future. The
popularization of cloud computing could change the application of the World
Wide Web forever. Computing will become a matter of the Internet, as the technology
will run solely on Internet connection – much like the World Wide Web. Unique
for its ability to be accessed from any computer and with swiftness and ease,
the world wide web has developed a method and system that will now be applied
to a new application – cloud computing. In context of the World Wide Web, cloud
computing is important because it takes the entire computing experience to the
same level of convenience as the web. The World Wide Web will serve
cloud-computing junkies as an example and a learning device for figuring out
the current kinks, flaws, and concerns with virtual computing. The technology,
having been present and right before our eyes for years, seems to have been
perfected and if made big enough, will be able to run cloud computing for the
rest of the world.
Wednesday, May 2, 2012
Dart
Background
For web developers today, there is a relatively small range of tools for client side coding. Most developers turn to Javascript, which is supported well by all major browsers and has very many libraries written for it such as jQuery. Some developers choose to use Flash or Silverlight, but those are on the decline as it appears that Microsoft is switching over to Javascript with their Windows 8 runtime, Apple still refuses to support Flash, and Adobe just announced that they will stop supporting Flash for Linux machines. HTML5 and CSS3 aim to give developers more power with the client-side functionality that Javascript has, but they are not yet standard ready nor production ready, and they also don't have the sheer power that Javascript does. So at the end of the day, almost all client-side web developers are stuck using Javascript, they have little other choice.
Why Javascript Is Bad
Javascript may be the most commonly used client-side scripting language, but it has a lot of disadvantages that make it very difficult for programmers to use. For starters, Javascript is dynamically typed. This means that given a variable in Javascript called "windowSize", a person does not know if it is an integer, a string of text, or some other object. For small programs, this is a feature, as drafting out a program can be really quick when there's little text to write, and you know exactly what all of your variables are. But when programs start getting big dynamic typing starts to get painful. For example, look at this snippet of code:
var i = 1;
// some code
i = i + ""; // oops!
// some more code
i + 1; // evaluates to the String '11'
i - 1; // evaluates to the Number 0
The person originally had i as the number one. But then he added an empty string of text to the number. At this point, most languages would simply cause an error, but Javascript is fine with it. And after that, weird things start happening. i + 1 evaluates to the string of text '11', but i - 1 evaluates to the number zero.
That's a pretty bad scenario, but most of the time people won't make such silly mistakes in their own code. However, people will make such silly mistakes when they use other people's code. Look at this example:
function substr(str, start, end) {
if (arguments.length !== 3) {
throw new Error();
}
if (typeof str !== "string" ||
typeof start !== "number" ||
typeof end !== "number") {
throw new TypeError();
}
// actual code is commented out
}
This is the kind of code that needs to be written every time someone writes a function in Javascript. The declared function clearly has 3 arguments, but the language doesn't stop people from using it with 2 or 4, so the programmer does a manual check that it has been given 3 arguments. And of course, because Javascript is dynamically typed, the programmer also had to check that the first argument is a string, and the other two arguments are numbers. If the programmer hadn't done this, then someone else might have been using their code and passed in a string instead of a number (like in the first example). And it might even happen, that the function would work, it would just do something very unexpected. This manual checking makes programming in Javascript painful and obnoxious, but if you don't do it, you're allowing your code to fail and work wrong without you noticing. A team of engineers at Google recognized these problems (and many more!) in Javascript, and strongly believed that that they were insolvable within the language. They decided that they had to make their own scripting language, similar to Javascript, but without all the mess and problems. They decided to call this language Dart.
Dart
The Dart language is like Javascript in the fact that it is designed for web scripting. Its syntax is very similar so that people that use Javascript would have an easier time switching to it. However Dart is much more friendly towards programmers. Dart is optionally typed, which means that like Javascript, the type of variables does not have to be declared. However, this does not mean that it works the same way. For example, if someone were to try to add a number to a string in Javascript, it would work but have unpredictable results. In Dart, it would cause an error, because doing a math operation with a number and text doesn't make any sense. The reason why it is called optional typing is because specifying the type is optional, so that if a programmer wants to, he can declare that a variable is a number, or a string of text, or a function. Then the dart editor checks this code for correctness while it is compiling, while Javascript can only be checked for correctness by being run.
document.queryAll('a.person').on.click.add((e) => print('Person clicked'));
One thing that makes Javascript so powerful is the jQuery library. jQuery makes it simple to scan through HTML documents, animate them, and handle events. Dart also has support for all the things that jQuery does, but they are built into the language rather than being part of a separate library. Dart also has support for classes and inheritance, something which Javascript tries to emulate this with something called prototypal inheritance, but it can noticeably decrease the performance of a Javascript program.
Javascript is unsafe by default, it has to be thoroughly tested before people can deploy it. Dart is safer, but it nothing can be perfectly safe in just compile time, so Dart also has two modes, production mode and checked mode. Production mode causes the Dart compiler to produce code that is optimized for speed that is considered ready to be deployed. Checked mode causes the Dart compiler to emit extra debugging code that helps testing of code so it can be deployed faster.
Dart also has support for generic programming. Combined with its support for classes and interfaces, Dart allows programmers to write generic container objects that can get compiled to very efficient code.
interface Cache<T> {
T getByKey(String key);
setByKey(String key, T value);
}
Dart has a lot of features that Javascript doesn't, such as generics and inheritance. But it is also a simpler language than Javascript. One controversial feature of Javascript is the eval() function, which can execute arbitrary Javascript code. This function is very powerful and also very dangerous. For example, a lot of malware hidden inside PDF files is actually embedded Javascript in the PDF that calls eval() on malicious code.
Javascript has many flaws, which is why some folks over at Google decided that a new language was needed to replace it. And that is their aim, to replace Javascript, not to have a competing language. So far, Dart is still in development and the language is still changing, but it is changing for the better. Today, Javascript is pervasive in browsers. In two years, Dart might take its place.
References
Monday, April 30, 2012
Activism 2.0
Activism 2.0
Due to its highly collaborative nature the Internet has
evolved into a medium through which spreading and collaborating on ideas is
easier than ever before. With this has come a new form of social activism:
virtual activism, or activism 2.0. The term activism 2.0 refers to people using
online mediums such as online forums, virtual worlds, and social media
platforms to raise awareness of social issues and invoke social change.
History
Though online activism has existed for years, the term “activism
2.0” was coined by Justin Dillon’s 2008 documentary Call + Response. The term highlights the technological aspect of
online activism.
Activism 2.0 has been enacted through a variety of
platforms including Twitter, blogs, and online petitions. One of the earliest
and most notable examples of activism 2.0 was the September 2007 Second Life
strike against IBM. Over 1000 people partook in a virtual strike against real
life IBM Italy’s deficient employee benefits. One month later the strike
succeeded when IBM Italy signed a new contract with its trade union, scoring
performance bonuses and a health insurance scheme for its workers.
Benefits
Activism 2.0 makes it easier than ever before for groups
to mobilize.
Little to no cost
Activism 2.0 virtually eradicates the costs of awareness
literature and minimizing the time required by the masses to participate. While
activists used to have to print pamphlets and spend time picketing, modern
activists can reproduce flyers as many times as they want with no cost and
attract attention by posting their information once in strategic places online.
Potential for fast exponential growth
Using the Internet as its medium, activism 2.0 also
allows activists to inform large masses of social issues in extremely small
amounts of time. Working without geographical limitations, the number of
participants in an activism 2.0 cause can grow exponentially.
Ability to translate into real-world protest
Modern Internet tools make it easy to take what’s said
online to the real-life streets. Users can purchase t-shirts to support causes,
use information found online to petition their local politicians, use virtual
logos to create screen printing campaigns, etc.
Recent Examples
Change.org
Change.org is a website dedicated solely to activism 2.0.
Through online petitions hosted on the site users have pressured state and
national judicial systems, Bank of America, and Universal Studios among others
to create change that benefits society.
One of Change.org’s most famous successes was the release
of Chinese political prisoner Ai Weiwei. 80 days after major art institutions
such as the Guggenheim, the MoMA, and Tate Modern petitioned the Chinese
government for the artist’s release they found success.
When the family of Trayvon Martin found that local and
state governments would not listen to their pleas for prosecution they took to
Change.org to gain national attention. After receiving over 2.2 million
signatures—the highest number of signatures any change.org petition has ever received—to
their petition Martin’s family finally achieved the national coverage necessary
to force Florida to prosecute George Zimmerman, the killer of their son. The
Trayvon martin case is a great example of ways activism 2.0 can lead to
real-life protest and change.
Tumblr on SOPA
In an effort to raise awareness of the Stop Online Piracy
Act (SOPA) and encourage social action against it, the blogging site Tumblr
implemented obvious disruptions to its service on November 16 of last year. It
blocked out all text on users’ Tumblr homepages (or “dashboards”). Unable to
read Tumblr posts users were forced to visit Tumblr’s informational page on the
Act. There a link to call your state representative made it effortless to
request that the Act not be passed.
Tumblr “censors” its page to demonstrates the potential
effects of SOPA
BBM and the London Riots
Last summer teens across London organized protests and
riots to avenge the death of London resident Mark Duggan via a unique form of
social media. Rather than using open forms such as Twitter and Facebook teens
turned to the BlackBerry Messenger service, which allowed them to send
locations and times in messages untraceable by local authorities.
Social Media and the Arab Spring
During times of heavy political unrest and deep
government censorship in the Middle East last year, social media played an
important role in helping protesters organized and keeping the world informed
of the conditions of the protests. By posting protest locations and times on
Twitter and Facebook some protesters were able to stay up-to-date on the status
of the revolution in their country. In time when Arab governments took to
restricting media access to their soil, protesters were able to upload video footage
of brutal police treatment of protesters. Official news sources were then able
to stream this footage online and on TV, raising awareness of the social
conditions in the Middle East and pressuring Arab governments to allow
democracy to happen.
Criticisms
Activism 2.0 is often referred to as “slactivism,”
hinting that online activism makes it easy for people to participate in social
action but doesn’t necessary make them social activists working for real
change. Krist in Ivie on socialcitizens.org defined activism 2.0 as “fitting
into people's everyday routines and finding ways for people to use technology
and social media to habitually contribute to social change with small,
practical acts - and, often, clicks. The ideal is a place where people
integrate activism and supporting their causes into their regular routines –
using downtime at the airport to send emails for their cause, donating at the
grocery check-out counter, asking friends to charitini for their birthday.” Here
she demonstrates that one of activism’s primary goals is to make activism
easily accessible. In some cases this also makes online activism easily
forgotten.
Conclusion
Though activism’s 2.0’s ability to create real-life
social change varies from case to case, its impact on the World Wide Web is
undeniable. Activism 2.0 is a manifestation of the inherent social nature of
the Internet. When people across the world can interact with just a few taps on
their keyboard, social change is bound to happen. As online tools such as video
chat, online shared documents and the like continue to streamline online collaboration,
activism 2.0 will only expand to allow more people to fight for social change.
References:
http://techcrunch.com/2011/11/16/tumblr-takes-fight-against-sopa-up-a-notch-censors-user-dashboards/
Subscribe to:
Posts (Atom)