Press "Enter" to skip to content

Tag: reminder

On Google Reader and Software as a Service

Eating from the tree of the knowledge of good and evil

Photo of a rendition of the tree by YashiWong
Copyright YashiWong CC 3.0 BY-SA (from Wikimedia Commons)

The year is 2013, and computers are faster and more ubiquitous. All aspects of education - and life - are being revolutionized. With the increases in computing power and bandwidth and decreases in cost and size, computers are becoming increasingly reliant upon servers, software-as-a-service, and "The Cloud" (a buzzword I use with mild disdain). This trend requires that we trust the companies and organizations providing the services to us to A) continue to provide the functionality for as long as we, the consumers, need it and to B) take adequate steps to protect our privacy and the security of our information.

On 1 April 2004, Google launched Gmail, a webmail service that offered the unheard of storage capacity of 1 GB. It was originally an invite-only service, and I was an early adopter (sometime in June 2004). I began to use Gmail almost exclusively, and this marked the beginning of my reliance on software as a service. Having been around computers since my early childhood, I understood the dangers of relying on third parties to provide tools that I use, and I experimented with running my own servers (for mail, web, and IRC). Despite my beliefs about the dangers of software as a service, I became lazy and complacent. My vigilance waned.

Canary in the coalmine

In May 2009, Google announced Wave, a service that was hoped to revolutionize the way people communicated and collaborated online. Briefly, the core idea was that standard email and chat systems rely on old Web 1.0 paradigms and that with the ubiquity of high-speed internet and computing that these paradigms could be challenged. As with Gmail, I was an early adopter of Wave. It turned out, however, that everyone that used Wave was an early adopter (in that there wasn't a deluge of people that began to use it after us).

Original Google Wave logo
Google Wave logo

In August 2010, Google announced that Wave was being discontinued, and by April 2012 the system was officially offline. While I hadn't used Wave in any substantial capacity (mostly using it for brainstorming and collaborating on small projects for school), I saw the potential in Wave and saw its place in my life. I was on a trajectory for slowly but steadily increasing my use and reliance upon Google's incarnation of Wave.

Apache Wave logo
Apache Wave logo

Wave perished but did not die. The core technologies live on in two forms: the rebirth of Google Docs (and later Google Drive) and Apache Wave. The former is another cloud service that resembles parts of Google Wave. The latter is the true successor to Google Wave with the goal of continuing work on the software and protocol with the eventual goal of making it so that there can be private Wave servers that are able to communicate with each other (e.g. I could run my own Wave server on my terms but still derive the benefits of a community of users - similar to how the Diaspora project is approaching social networking).

Spring cleaning

Google is famous for many reasons, among them a spirit of innovation and a willingness to try new ideas (e.g. Wave). Not all of them are as successful as they would like, and to ostensibly keep their focus on core products strong, began discontinuing products and services that were not widely used or had been superseded by other technologies. The first round of spring cleaning was in 2011, and it has occurred several times, the most recent being in March 2013. In this latest round, they announced the demise of Google Reader, a web-based RSS reader.

The discontinuation notice displayed on Google Reader. "Google Reader will not be available after July 1, 2013"
The discontinuation notice displayed on Google Reader.

The writing has been on the wall. In 2011, the community features were removed from Reader coinciding with Google's expansion into other social networking ventures (i.e. Buzz and Plus). I didn't use the social features much, so I didn't much care. ("First they came...") With the total discontinuation of Google Reader (due to a declining user base), a product I use daily, I am starting to see the naivete in my reliance on Google's services. Many have argued for the value of Google Reader, and many have argued that it was past its time. Petitions were started (this petition has over 125,000 signatures at the time of posting - one of them mine), and competitors offered seamless transitions. It seems today that Google will continue with the discontinuation despite the outcry.

This has two key consequences. First, one must always anticipate that software as a service will be discontinued in time, even by colossal companies like Google. When someone else controls the systems, you don't. Period. Secondly, niche groups may suffer more than others. In the end, when Google Reader dies I'll find an alternative. I may use Google's services less in the future, but being an American I have a plethora of options. For many Iranians, Google Reader is the only reasonable option. Google Reader is accessible as with an encrypted connection. The easiest way to block Google Reader for the Iranian censors would be to block the entirety of Google - a move that incited outrage when exactly this happened in September 2012. While Iran is very crafty at censoring the internet, Google Reader remains one option for accessing censored parts of the web for Iranians. (Of course, Iran is preparing a halal domestic internet that will result in blocking all western sites - including Google - so this may be a moot point.)

The state of affairs

I'm glad that Google broke my trust with Google Reader. It shattered the illusion I had about their benevolence and will force me to confront my reliance upon an organization that does not have my best interests in mind. Google exists to make a profit, not for the betterment of Doug-kind. As I type this, I have five different Google websites as pinned tabs in Google Chrome. I use an Android phone. My email is through Google. My phone number is controlled by Google. Google's seamless integration across services is wonderful, and I can't imagine it any other way.

Or, I couldn't until last week. Henceforth, every piece of technology I use will need an exit strategy. I always have had a vague notion of the alternatives for various programs and websites that I use, but vague notions are simply not good enough. An explicit exit strategy is required.

There is, of course, a spectrum of reliance. On one end is software as a service. Gmail, Google Reader, Microsoft Office 365, EA's Always-on DRM used in games such as Diablo III and SimCity 5, and countless other pieces of software and websites are entirely reliant upon both the internet and a company maintaining the servers on the other end of the line to operate. If this is no longer in their best (financial) interest, then the software or service will cease to work. Using software as a service may make sense at times, provided the limitations are understood.

On the other end of the spectrum is software that one develops personally, entirely from scratch (and on hardware that one has built from scratch). This is almost certainly not feasible in a pure form. Developing an entire computer system - hardware and software - from scratch is a pipe dream, and would preclude the rest of one's activities for several lifetimes. (As Carl Sagan said, "If you wish to make an apple pie from scratch, you must first invent the universe.")

I perceive a spectrum of control over one's computing, from most to least control (not exhaustive, with appropriate nuance and gradation):

  1. Inventing the entirety of the hardware and software that one uses
  2. Using strictly open source software and open hardware (Richard Stallman does this)
  3. Using strictly open source software on readily available - but closed - hardware (gNewSense is one Linux distro that is 100% Free Software)
  4. Using software and hardware that is run entirely from computer systems under one's control (i.e. no reliance on any computers - even on the internet - that one does not have absolute authority over)
  5. Using software and and hardware that one can make backups of and install without an internet connection (i.e. now allowing reliance on the internet for some functions, though not mission-critical - using an Android phone as a computer might fall into this category as one doesn't necessarily need to use it as a phone)
  6. Using software that requires an internet connection to a fixed set of servers not under one's control (e.g. activation servers needed for things like Microsoft Windows and Office)
  7. Using software that requires a constant internet connection to use, even software that could otherwise operate without the internet (e.g. single-player video games that require a constant internet connection)
  8. Using some software that is hosted entirely remotely (i.e. true software as a service)
  9. Using entirely software as a service (i.e. computing 100% in The Cloud)
  10. Using entirely software as a service on borrowed, proprietary hardware (e.g. a leased or borrowed computing platform that interfaces entirely with the internet with no local software or storage)

Right now, 1, 2, 9, and 10 are unreasonable for many people and organizations. Most people will be in the 3-8 range, depending on their specific needs (both for capabilities and finances). Right now, with my reliance upon Google's Gmail, Voice, Calendar, etc., I think I fall into the 8 range. I'd like to be able to get down to the 5 range for all possible things (recognizing that I will still rely on the vague concept of 'The Internet' to exist and facilitate things such as email and other network services). Even if I don't operate at level 5 and continue to operate at level 8, I want to have a technology exit strategy that will allow me to rapidly and without much loss of functionality and simplicity transition to level 5. This involves identifying alternative ways of doing whatever computing is necessary and understanding ways of transitioning one's data into them. (e.g. Google Takeout is a service - out of the benevolence of Google - that allows one to export one's data from Google's services and this could be used to transition data, but alternate strategies should also be found.)

Identifying alternatives and their limitations is no small task. I don't expect that I will achieve this overnight, but I hope that I will be able to find offline, open-source alternatives for (nearly) everything I use. If not, I will accept the limitation and plan accordingly. Some things may rely in principle upon running my own servers (e.g. hosting this website and email servers from my own computers). This may be practically unreasonable, but is technically possible. (Of course, I still need to rely on external DNS servers for the domain name to resolve...)

Moving forward

If Microsoft stops developing software, I can continue to use Windows 7 and Microsoft Office on my laptop indefinitely. I'm okay with having physical copies of software that is functional today, even if it is no longer developed and irrelevant in the future. (I could still install Word Perfect on DOS and use it to its full potential. Not practical, but could be useful in some nightmare scenario.) In the near future I'll do my best to identify where I rely on other companies and services and what alternatives exist. When I do, I'll post them. For now though, I just need to internalize the fact that The Cloud will not always be there, and that reliance upon it is a recipe for disaster. This may seem obvious, but it really hits home when services that one uses cease to be. (This is like backing up data. Go backup your data! Don't wait to lose it all!)

1 Comment

On habits and writing

One cannot be a prolific writer without the noun part of that, so I've got to get better about it. Here, there, everywhere. Spending time in a college of education is... interesting. Many of my colleagues are returning to school following periods of work as teachers. They've experienced public schools as students, teachers, and parents. They see the micro effects of macro issues. They see the macro issues, and to some extent, understand them. I do not share their perspective (having been raised in Catholic schools, taken no breaks in my education, and having no children), and I recognize this as a deficiency.

To that end, I'm trying to at least acquaint myself with macro issues facing the whole of the (US) educational system while I simultaneously thoroughly explore the field of statistics education. TED has furnished some good talks about issues facing education, as have documentaries on Netflix. TED talks are usually rather well done, and in the future I'll likely post some that would serve statistics courses well.

Of course, just writing for the sake of writing isn't all it is cracked up to be. I was discussing poor writing with a colleague and Mathgen came up. Mathgen creates mathematics papers that look professional but are actually just... randomly generated nonsense. Some have even been accepted to journals.

Lastly, I'll leave with a few thoughts I'm ruminating on due to the qualitative methods course I am taking (more for me to remember later on, but if you, the reader, want to chime in that, that'd be great):

  • If one rejects a gender-binary in a philosophical (not political) sense, is it possible to still subscribe to a feminist epistemology/theoretical framework (again, in a philosophical not political sense)?
  • Feyerabend seems to place Science on equal footing with Magic and Religion, but puts the onus on science to prove its claims in arguments. That is, a 'scientist' would be required to use science in an argument, but a religious devotee could participate validly in the same argument with 'because I believe' or something similar. Is this an accurate perspective? What role does critical introspection have in all philosophies such as science and religion?

Both of these ideas may have (reasonably) clear-cut answers of which I am not aware. I'm new to qualitative research and epistemologies and frameworks therein. Moreover, I'm still not through with Against Method yet, so there may be obvious answers in there. Just my thoughts for now, though.


On submission and rejection

Rome wasn't built in a day, nor are good manuscripts published in one. I've heard similar comments for some time, but they don't really ease the sinking feeling when an email containing the tactful "unfortunately..." that often precedes the 'we are not publishing your manuscript'. So it goes.

Swallow hard. My CV has been once again updated ('under review' becoming 'in preparation'), and time to get back to work on this project. Bigger and better (guided by the reviews' comments). Meetings, coding, and reading. Things to keep me from getting bored.

On a similar note, I got back in touch with a professor from last semester to talk about collaborating and expanding a project I did for class last semester. This happened within a half hour of getting the aforementioned email.

When it rains it pours. Hopefully this will water the seeds.

Leave a Comment

Fixing truncated strings in SAS

SAS, as powerful as it is, behaves oddly at times. The behavior is usually very well-documented, so it is just something that one has to account for. When SAS is creating a string variable, the maximum length it chooses is the length of the first value it encounters: any string longer than the first value is truncated (the end letters are just ignored). For example, if 'CAfter' and 'EBefore' are values, and 'CAfter' is encountered first, then the maximum value for all strings will be 6 and 'EBefore' will be shortened to 'EBefor'. If 'EBefore' were encountered first, there wouldn't be a problem. This can sometimes prove tricky if the data is read in unsorted once and then sorted later.

To correct this, one should manually specify the length the variable should be when it is created, like so:

data ling.vowel;
 set ling.vowel;
 length Group $ 7;
 Group = Class || When;
 obs = _N_;

In the above, the length of the variable Group is fixed at 7. (Group is created by concatenating the variables Class and When).

Sometimes, the truncation is caused instead when the data are imported. By default, SAS only looks at the first 20 observations in a datasetto determine the maximum length of string variables. This can be changed by adding a guessingrows=32767 statement to PROC import (32767 is the maximum value):

proc import datafile="&mypath/vot-data-0921.csv" out=ling.vot dbms=csv replace;

These are the two solutions I've found for truncated strings, and I was tired of having to find the SAS files that I had used them in.

Leave a Comment