Archive for the ‘Uncategorized’ Category
Unfinished, Indeed
Unfinished Thoughts
BART Shutdown of Cellular Repeaters as a Violation of First Amendment Rights
- The primary mandate of BART is the continuity of its transit service, not the provision of cellular service during transit.
- The threat being responded to was credible; there had already been protests that had shut down stations in the system last month.
- Protests in many urban areas require permits to ensure proper police presence to protect both the protesters and the bystanders. This protest had no such permit, and the planned protest in fact constituted an illegal action that likely created significant safety concerns for legitimate users of the BART system.
- The removal of cellular service within the subway was clearly not a curtailment of political speech; the protesters are free to get their message out in a multitude of ways, including right outside the BART station, or in the non-paid areas of the station. The removal of cellular service was intended to inhibit their ability to share intelligence on the location of BART police so they could direct their protests to areas least protected and shutdown service there.
- The fact that a service is provided by a government agency neither means that the service is a right, nor that its removal constitutes a violation of citizens' civil liberties.
- The cell repeaters that were disabled were in fact owned and operated by BART. This was not a case where the government reached out into private infrastructure (like that owned by AT&T, Verizon, Sprint or T-Mobile) and forced them to shut down service. I think they made those providers aware of their action, but based on the stories I've read, there was no strong-arming of the private sector involved.
I'm not sure that's an exhaustive list, but I think it represents some of the big differences I see between this action and, say, revolutions in the Middle-East.
In summary, I'm not at all sure conspiring to elude authorities so you can commit crimes constitutes "protected speech". I would reign in the claims of first amendment breach here.When Patents Attack
1) no software company today relies on exercising patents as a primary source of income, and
2) code is already protected by copyright, so even if the code is made publicly available, the "no derivative works" clause provides substantial protection. Perhaps the most telling fact in all of this is that the people inventing in the software world, the computer scientists and software engineers, almost universally hate software patents. This was pointed out in the story, and has been my experience as a programmer. At a more fundamental level, the entire debacle stems from the misguided belief that there are "super men" than invent things and deserve huge compensation for doing so. That way of thinking is deeply misguided: we all rely heavily on the inventions that precede our work to make progress. That is, the system for granting monopolies on these ideas seems to assume that inventors live in a vacuum as an isolated individual in a lab somewhere, not as part of an active, connected global community of practitioners. In the software world, we find that if a university wants to stay even remotely current, they find themselves presented students with courses filled with nothing but patented concepts. Is this really the intent? If we try to monetize every instance of the use of an idea, we increase the friction involved in the creative process — a process that, in my experience, is already fraught with difficulty. It makes everything cost more, and, as usual, lines the pockets of the lawyers and those in government that must shepherd us through the exercise of determining "damages" when someone uses an idea the government has dictated is owned by someone. All this is ignoring the fact the the legal system is hideously biased in favor of the big players at the direct expense of the smaller companies that have the most incentive to innovate (since they want to innovate to differentiate themselves from the current major players). It's nice to see This American Life addressing the issue, but making the lay citizen understand the long term costs associated with this behavior is folly. Sadly, the lawyers, the government, the patent trolls and the big companies (which have already invested in vast portfolios of defensive patents) don't have a vested interest in seeing the system change, only the poor, often young, innovators do. And so, we find ourselves discouraging the very thing we sought to foster. Folly, indeed.
Building Working Code
Every so often, I run across a manifesto that captures something I know about programming, but couldn't quite express before I read it. That was true when I first read the Ion Window Manager Manifesto, and struck me again tonight when I read the Sepia Philosophy:
A development environment should support three activities: code spelunking, interaction, and customization. Emacs as an environment for developing Emacs Lisp thoroughly supports all of them: It has commands to visit individual functions' code and documentation, commands to evaluate or step through expressions, and an architecture that encourages customization in Emacs Lisp…Modern IDEs also support these three activities, but do so awkwardly. Rather than having functions to visit definitions (find-function) and search for functions (apropos), they clutter the screen with class and file trees. Rather than supporting interactive evaluation of small pieces of code, they perform background semantic checking on whole projects and highlight errors. Rather than allowing minor customizations to grow organically into features, they support limited configuration files and baroque plug-in APIs. Sepia tries to adhere to the apparent Emacs philosophy that rich semantic information should be unobtrusive, and that the best way to build working code is to start by experimenting with small pieces.
The idea that the best way to build working code is to experiment with small pieces has been a philosophy I have followed for years, but I'd never seen it captured so eloquently. I thought it might be worth sharing, especially for folks that have an interest in the REPL way of programming, but learned using a modern IDE that doesn't support the REPL style.
A Few Thoughts on “The Cloud”
That might have been more true in 2008 than it is now, because I now feel that it is well defined, but is nevertheless used incorrectly quite often. One of the reasons Ellison might have reached this conclusion so readily is that the cloud makes readily available what companies like Oracle, Sun and IBM have been selling to high-end customers for years. So, what exactly is cloud computing?
In my way of thinking, a cloud has three main properties:
- Clouds are vast collections of hardware that are networked into tiers at the rack and datacenter level, usually globally. Microsoft, for example, has six global locations for its Azure Cloud datacenters.
- Clouds are composed almost entirely of commodity hardware (i.e. no “big iron” as you’d expect to be sold by Oracle or IBM for some special purpose). Another way to think of this one is that they’re mainly composed of the same type of components that you’d find in a desktop computer.
- Clouds allow for elastic computing. While a single site’s traffic and downtime may be hard to predict (due to, say, the “Slashdot Effect” or some random hardware failure), when taken in aggregate across thousands of sites and servers, traffic and failure become much more predictable. By aggregating many single sites together on a large collection of servers and allowing resources to be allocated to sites on-demand, loss of service due to traffic spikes or hardware failure can be mitigated.
There are many other things clouds do, mind you. You will find people talk about “IaaS”, “PaaS” and “SaaS” in the context of cloud computing, but all these mysterious concepts are just variations on the idea that you can build web sites and services on top of a vast collection of compute resources located in data centers around the world. Another oft-mentioned concept is that of redundancy, which cloud computing offers, of course, but I do not mention it because it is a trait that so many other computing platforms offer.
I came back from a conference a few weeks ago in which a brief was given summarizing cloud computing for executive types, and the take-home conclusion was that “Cloud computing is an evolution, not a revolution”; the argument was that it didn’t materially affect the normal course of business for technology companies. The reason I mention this is that I think there are least two reasons that cloud computing is a revolution.
First, supercomputing has traditionally not been a field where some kid in his basement can compete in any meaningful way with a large corporation. The investment required to buy, operate and maintain supercomputer-quality compute resources has dropped over the decades, allowing more competitors into the field, but cloud computing makes developing and testing serious algorithms possible from the comfort of your armchair on a modest laptop. For roughly $80, you can rent the compute power in the Amazon Cloud to align a human genome in an afternoon, for example. This task would take weeks on everyday hardware. The moral of the story here is that markets that were formerly not very competitive due to the cost of entering them are now subject to a whole new source of competitors using the cloud as their platform for development and deployment. This represents a revolution in the market dynamics.
Second, cloud computing is based on cheap, commodity hardware. This means that it has ushered in the common use of algorithms that scale out, rather than scale up. That is, the software being developed today for the cloud doesn’t rely on the use of massive computers with hundreds of gigabytes of RAM to operate. Rather, it can make use of a variable (but can be quite large) number of more modest computers that can be dynamically added and removed as needed to ensure a good quality of service. These kinds of algorithms can be more challenging to write, and at least require different abstractions than conventional multi-threaded algorithms. These changes represent a revolution in the computer science being used to develop high performance applications.
There’s another set of points related to this about the reliability of the cloud in light of Amazon’s recent EC2 troubles, but that’s for another time.
Thoughts on Google Nexus One
I Love Gadgets
Anyone who knows me can tell you that I’m that “gadget guy”. I have tons of little devices of all sorts lying around, from digital audio players to full fledged portable media players. Some I thought would be wonderful but never quite worked out as well as I hoped (Cowon O2), while others should have been a waste of money, but I ended up using a ton and loving (PSP Go).
As such, it makes sense that I have bought and used a fair number of cell phones. In the past year, I have tracked Android’s development quite closely, having never really been satisfied with the offerings of the elephant-in-the-room iPhone. I bought a “dev phone” Google G1 in December 2008, and in August 2009 decided to switch to TMobile and get a “MyTouch 3G” (HTC Magic), since TMobile seemed to have embraced Android more than other carriers. Despite the having just purchased the MyTouch, I was compelled to buy a Nexus One the day it was released. But, before I get to that, let me digress a moment into the problems Android solves.
The Problem With The iPhone
As I alluded to above, I’m less than pleased with the iPhone. Why, you may wonder, would I be dissatisfied with the phone that has obviously enchanted so many? The reasons are few and simple.
First, it is a closed platform, insofar as Apple has final (opaque) say over what applications can run on it. I don’t tolerate that in my computers, and there’s no reason I should tolerate it in my cell phones. How does this affect me? Well, I use Google Voice, for example, and Apple has consistently worked to block Google Voice from ever making its way to the iPhone. There are lots of examples like this. In the end of 2008, Apple blocked a podcasting application because it “duplicated the functionality of iTunes”, when it was clear to everyone involved that the app added quite a bit functionality absent from iTunes. Most recently it has come to light that Apple will outright reject any app that mentions Android. They are also now forbidding apps that use the iPhone’s location service to serve geographically relevant ads. The point is, Apple has declared that they own not only all the apps that will ever appear on the device, but that they reserve the right to prevent any app from ever reaching the device, even for reasons that were previously unannounced. As a developer, I find this oppressive. It can cost tens of thousands of dollars (or more!) to develop an app and submit it, and only then do you find that, despite your best efforts, Apple rejects it, resulting in a total loss for the developers.
What else does a closed platform prevent? Well, Free Software, of course. Because Apple charges an end-user $100 to allow them to compile code for their phone and install it, it effectively prevents regular users from getting the source to an app, compiling it, and installing it for their own use. This restriction is in addition to the distribution restrictions outlined above.
At this point, if you’re still reading, I’m sure you’re thinking “Yeah, I get it Rick. It’s closed…but that doesn’t really affect me that much. What’s the real problem?”
Well, the second problem is that Apple prioritized battery life over utility. It’s a straight trade-off, and in the end, it’s a judgement call. I just think Apple made the wrong decision. The iPhone doesn’t multitask. That means it literally can’t do two things at once. And once you’ve had a phone that does, you can’t imagine life without it. Which leads me neatly into my review of the Nexus One.
The Virtues of Android
For a device so obviously inspired by the iPhone, Google made so many decisions differently, and it’s kind of surprising the Nexus One appears to be so similar to the iPhone.
Whereas the iPhone OS is closed, Android is open, and used by dozens of companies around the globe.
Android’s market allows apps openly, and even if you can’t distribute your app through the market for some reason, you can still host it on your own site and have users install it directly. Kind of like how computers work.
Android has multitasking. This means you can stream Internet radio in your car while having your phone navigate you to your destination. The phone will pause the music to speak the directions to you, and then resume where it left off. It will notify you of incoming email or instant messages all the while, and update weather and news in the background to make sure that when you do glance at it, everything is up-to-date.
The Nexus One
But so far, all I’ve mentioned are the benefits of Android. Why is the Nexus One special?
Polish. The phone is a pleasure to use. The screen is bright and large, with high resolution (800×480). The chip powering the phone is the fastest phone chip in the world, running at 1 GHz. This means that where previous generations of Android ran sluggishly on their hardware, the Nexus One is as smooth as butter.
The Nexus One makes use of that power. It integrates 3D in subtle and stylish ways (like in the gallery application). It offers “live wallpapers” that add a bit of shine to the user experience that makes you feel like you’re holding a special piece of technology. The speed of everything makes the phone extremely usable; you don’t end up waiting for the phone to do something. This makes the apps much more useful, so much so that I often just check email, Twitter and Facebook on my phone, rather that messing with my laptop.
It also integrates voice recognition in an unprecedented way. Anything from “Directions to In-N-Out” to “Call Dad” are understood clearly, even in noisy situations. If an explicit command is not given, a Google search is executed. But other than just launching activities, voice is integrated into the keyboard. Got a text or instant message? Instead of typing my response, I usually just say it. That saves time, and allows me to respond to short texts quickly as I walk into the store, rather than stopping and taking the time to type them out.
Recommended Apps?
So, in my 13+ months of Android use, what do I use? Seesmic for Twitter access. Facebook to check what’s up with my friends on the go. NewsRob is incredible for reading Google Reader on the go. I use Advanced Task Manager to manage the processes on the phone (remember, it multitasks!). Aldiko is a superb little ebook reader application that offers seamless download of classic books. I use TuneWiki for music, and I’ve even bought music using the AmazonMP3 app and played it immediately. I like QR Codes, so I use ZXing’s Barcode Scanner more frequently that you’d imagine.
In the realm of games, I have to hand it to Vexed Pro, a version of my favorite puzzle game of all time I used to play on the Palm Pilot. I also play CrystalLight Defense, Robo Defense, Radiant and Jewellust, all of which are well worth the couple of bucks I paid for them.
Concluding Thoughts
To be really successful, a gadget has to have great combination of hardware and software. The Nexus One really shines in the hardware department, and brings a new level of polish to the Android operating system. As though the default software experience using Android 2.1 weren’t enough, the raft of Android phones hitting the market (including Verizon’s Motorola Droid) have really jump started the app development for Android, and the quality of the apps overall is really incredible. Combined with the open nature of both the market and the platform, Google has a real winner on their hands. Despite the expected slow sales partially due to its unorthodox sales channels and advertising strategy, if you’re going to get a new phone in 2010, you should give the Nexus One a very close look. Of all the gadgets I’ve ever owned, it is by far my favorite.
Media and the Sense of Shared Experience
There’s something about our experience that defines us. You meet someone new, and if they’ve had the same frustration at the checkout counter at the supermarket, or had the same sense of wonder standing and looking at the wake of a ship stretch to the horizon, a momentary spark forms, and a connection is made. You may know nothing of their values, or their habits, or their dreams, but, in some small but noticeable way, you suddenly share something.
But these connections can now be made in many new ways. Over the phone, over email, even over identi.ca or Twitter or a myriad of other ways to connect over the internet. All of these represent a real shared experience of some sort. But “experience” is a broad concept. For example, the media (the news, the music industry, the movie industry, and the authors and journalists) sell an emotional experience, not just information. Movies (and often music) offer high-powered escapism, a way to journey to a different place and experience emotions that are not part of your normal life. Books are perhaps even more this way, though they vary so much in content that it is hard to generalize (novels certainly are very much like movies, but what about The Seven Habits of Highly Effective People? Hardly escapism…) So, in this realm of mass-published books and broadcast movies and music, suddenly we can get the feeling a shared experience which may not really be shared at all. You might see a movie in a cramped living room on a standard-definition television with 12 friends, and I might have seen it in a high-definition IMAX theater. Not quite shared in the same way we often think of it.
Because of this, even though we may have nothing in common with someone, you might hear them say they saw the same movie as you, or read the same book, or saw the same news article, and suddenly this connection is formed. Your opinions might differ, which can make things awkward, but many times you can find yourself talking with a perfect stranger about their opinions on All The Days Before Tomorrow, thinking that you share something significant because you both saw the film. The funny part is, maybe you do share something significant because of that.
Of course, after this happens some magical number of times, you are no longer perfect strangers, and are instead good friends. Perhaps just because you see the same movies, read the same books, and share your thoughts with one another. Discussion of the faux-shared-experience becomes the genuine shared experience, and the relationship suddenly becomes real. Life is funny that way.
60mph
I bought a hybrid car back in November 2007 after my 1990 Toyota Corolla got totaled in an accident while I was stopped in traffic. I chose the Honda Civic Hybrid, and my experience ever since has been awesome. The most important feature (other than the electric assist and regenerative brakes) is the feature telling me instantaneous MPG and MPG for my trip so far.
Knowing how many miles to the gallon you’re getting heightens your awareness of how your driving style affects fuel consumption. Sure, hybrids get 10-15 MPG more than their conventional counterparts, but my driving style affects my MPG by about as much. Rapid acceleration is a real killer, but so is high speed. I tend to drive with traffic, which is about 70 mph or so in the right lanes. Since gas here went over $4 a gallon though, the last couple of days I slowed down a bit. Yesterday, I drove to work at just under 65 while drafting an 18-wheeler, and got 48 MPG on a 14 mile commute. Today, I drove at between 60-65 the entire way (no truck this time) and got about 47 MPG. Both of these number are much higher than my typical 70-mph fuel use of 40 MPG.
It occurred to me that many people would probably be willing to change their driving style a bit to save money, but that most cars don’t give drivers the tools to easily understand when the driver is really burning the most gas. If drivers don’t know how their actions affect fuel consumption, it is hard for them to know if they should change their behavior, and how much they should change it.
I’m hoping that all cars (not just hybrids) start including the tools to give drivers the information they need to manage fuel consumption. With oil at $135/barrel and only increasing, this is going to matter to more and more people.