Unthinking Fullscreen Mode

Apple’s fullscreen windows are driving me nuts! We were co-existing until I “lost” a very important terminal session. Turns out I didn’t lose it, but it was in fullscreen mode. This omitted the window from cycling via Command+~, as well as being absent from the app-specific Expose (though it was present in Mission Control – something I seldom use.)

I hope they change this behavior soon. Here are some observed pain points:

  • The two second animation when switching from your desktop to Fullscreen applications via Control+left|right arrow is not only unnecessary, but frustrating. This could be much faster, and without the easing decelerating at the end of the animation. Same holds true for Command+Tab (though the animation is mercifully quicker)
  • The hotkey for taking an application into Fullscreen mode should be dictated by the window manager, not left up to the developers. Why not F11? Currently its Control+Command+F in Google Chrome, Command+Enter in iTerm, etc.
  • Why are these windows omitted from the task switcher? These programs are still running, so they should be reachable by the switcher. Is there another switcher hotkey to toggle between windows of the same application? Command+~ doesn’t work if the other window is in fullscreen mode.
  • Command+Tabbing between applications is problematic if you have multiple windows open of the same application when one is in fullscreen mode. From my fullscreen window, I switch to another application, then switching back defaults to the non-fullscreen window instance on the desktop instead of toggling back to where I was.
  • Why are they moved into their own workspace? Just remove the window chrome and leave it where it is. I was working in a fullscreen window, and I needed to use the calculator program. This created absolute insanity switching between applications due to the unnecessary animation each time. I ended up having to take the application out of fullscreen mode just to use the calculator in an efficient manner.
  • Why is there no transparency available to fullscreen applications? I like a transparency to my black backgrounded terminal. No such luck if you also use fullscreen mode.

So here is my suggestion: Get rid of the butt ugly arrows for fullscreen in the window chrome, and make that useless green button in the upper left hand (you know the one that sometimes makes windows resize _smaller_) and make that the fullscreen button. If it isn’t broken, don’t fix it.

In the interm, I’ve almost abandoned Apple’s fullscreen mode in favor of Cinch for positioning fullscreen windows. It works like the Windows 7 window manager (and Ubuntu) and allows applications to fullscreen by dragging the chrome to the top of the window.

Open-source, Personal, Software, Thoughts

The Great ICS Upgrade Scandle: Everyone Just Calm Down

I have been hearing an increasing amount of chatter lately about the infamous Ice Cream Sandwich (ICS) delays for Android. I want to discuss the actual impact, and propose some resolutions to this problem.

The article that inspired me to write this is Jason Perlow’s post “I’m sick to death of Android“. Hopefully that title is a hyperbole, but it does address the primary issue that I have with people complaining about ICS delays – I don’t see it as show stopping. Name me the new features that are in ICS? How is this OS upgrade going to change your day-to-day phone experience? Sure it would be nice, and there are probably plenty of small touches, but this isn’t revolutionary.

Jason is the (proud?) owner of a Motorola Xoom tablet, and the Samsung Galaxy Nexus. The former was recently acquired by Google, and the latter of which is a Google Experience handset, meant to be a developer reference device. He argues that not receiving timely updates has caused him to “throw in the towel”.

I can sympathize with him about not getting updates on his Galaxy Nexus device, as its primary marketing angle appears to be “first” when it comes to updates. If I had dropped the money on that phone, I would be upset if major updates weren’t being released. However, Galaxy Nexus already has ICS, and he is addressing other updates from “bugfix iterations”. Not too exciting. I feel less bad for him about his Motorola tablet. Unless Jason is clairvoyant, he didn’t buy the Motorola tablet because of its strong candidacy for timely updates from Google after they acquired Motorola.

The Problem

ICS was released by Google in October 2011, which has been six months ago, but still accounts for only 1.6% of distribution of Android versions. I can’t defend that. It is a red flag for major distribution problems. Apple’s iOS adoption rate reached 61% in only 15 days and people are tempted to draw a comparison. Google’s Android, and Apple’s iOS are both mobile phone platforms, however they are operating on completely different distribution models. Android was never meant to be a closed ecosystem like iOS. You can’t install iOS on non-Apple hardware. You can with Android.

I think a more apt comparison is between Google and Microsoft’s distribution models. Microsoft makes the Windows operating system, and hardware manufacturers install it on their devices. Its not exactly the same since Microsoft charges for upgrades, and you bypass the hardware vendor to install the upgrade on your device. The mobile carrier middle-man is also non-existent in the Microsoft model.

When Google releases an Android OS upgrade, and handset manufacturers push it to their own devices when they are ready. Further, the mobile carrier may withhold a device OTA update until it deems it is ready (or even necessary). Handset manufactures have clearly prioritized selling new devices over supporting current devices. I’m sure they have ran the numbers, and have made this decision because it yields the most profit. They are a business after all. Apple pushes these updates because they get a cut of every App Store sale, and a failure to upgrade a device is a potential loss of revenue.

Why would a mobile carrier dedicate resources into deploying an OTA update for devices that are “working just fine?”. It comes down to money again, and their decision is clear. Apple probably provides monetary, or exclusivity incentives to the mobile carrier to push their updates. There are many Android phones, but only one iPhone, so carriers probably acquiesce to Apple’s demands.


So how can we make this work, without abandoning the entire Android concept over just this one issue?

Incentivise upgrades for carriers/handset vendors. What if OS updates were not free, like in the Microsoft model? A nominal free for upgrading may offset the costs of handset manufacturer, and carrier costs for supporting such an upgrade. Businesses like money, and Ice Cream Sandwich is worth something to me, especially given that most of us are locked into a two year contract anyway. I would rather put some money towards an upgrade now, then wait until my contract runs out to upgrade to a device that has the update.

Educate ourselves. There is no correlation between handset manufacturer’s sales and past performance on OS upgrades. This doesn’t seem to be an issue with the majority of consumers with Android devices. Without it affecting sales, there is little reason to divert resources into maintaining already sold devices.

Open the device boot-loaders. Maybe OS upgrades aren’t the responsibility of handset manufactures or mobile carriers at all, like in the Microsoft model. If people who wanted the OS upgrade had a way to load the update themselves, then this would act as a pressure release value for the current scenario. The idea of a locked boot-loader seems to be archaic anyways, and is rooted in fear. Let the consumer own their own device and do with it as they please.

Make a kickass OS upgrade, and drive consumer demand. Ice Cream Sandwich just seems so lackluster to me. (Maybe I stopped believing it was so cool to keep from going crazy). Short of a few new features, there isn’t anything game changing about this release. Android has plenty of problems that are within the realm of the OS to address. Give me greatly improved battery life, blazing fast performance, zero boot time, fantastic reception, FM radio, overclocking abilities; something – anything to get me excited about an upgrade. I don’t see ICS as changing the day-to-day use of my phone in any meaningful way, and thus I’m not rallying hard for it on my device. I can’t imagine I am alone in patiently waiting for this meek update.

Forget UI customizations; the differentiator should be upgrade latency. People have prophesied about the race-to-the-bottom happening for Android devices the same way it did for PCs. Manufacturers are differentiating themselves in meaningless ways, such as skinning the stock Android UI, or building useless shit that consumers don’t care about. These customizations prolong upgrade turnaround times, when in fact manufacturers should be doing the opposite. As’s Thom Holwerda states: ” they’re wasting considerable resources on useless and ugly crap that does nothing to benefit consumers. Android may have needed customisation a number of versions ago – but not today. ICS is ready as-is. TouchWiz and Samsung’s other customisations add nothing.”. Instead of scaping the bottom of the bucket for ideas on how to differentiate, lets have one manufacturer try this. Hopefully stronger sales would substantiate the idea that consumers care about OS upgrades.

Acknowledge that the lifespan of a phone is only two years. The predominate cell phone sale model in the US is one of subsidized hardware. You pay inflated monthly prices to offset the cost of a low up front purchase cost on your device. Most people upgrade devices at the end of their contract period, since the inflated subsidized price never drops anyway. It is in your best interest to have the latest and greatest because the current model is so abusive to consumers. This being said, the average lifespan of a phone is around two years. How many major OS releases will occur in that timespan? Probably just one. Maybe this short lifespan doesn’t justify the need to have these devices be upgraded at all. Remember that computer you may have bought because it had extra slots to upgrade the memory? Did you actually fill those slots, or just buy a newer faster computer a few years later instead?

Final Thought

So Jason, enjoy your 2.3 experience, because it is probably near identical to the 4.0 experience you are dying to get. I wouldn’t throw in the towel yet on Android because ICS is taking a while to come out. It will get here, and as soon as Google is hurt by lack of adoption they will take action. I hope that my solutions provide some food for thought on how to fix the current problem. Instead of compulsively pressing the “Software Update” option, I’m going to enjoy my experience, and stop letting the media dictate how I should feel. Though “fragmented” we Android users may be, an app targeting the 2.1 platform can be run on 97% of the current devices. That is what developers will be targeting, and I’m sure I’m not missing much from the other 3% of apps that I can’t run before I receive my update.

Computers, Personal, Thoughts

The State of the Patent System

Next, by Michael Crichton carries a profound message about the state of the patent system. The end of the book offers an “Author’s Note” that outlines what Dr. Crichton proposed to mitigate the issues he outlines in his novel. Namely, he argues to stop patenting genes:

“Genes are facts of nature. Like gravity, sunlight, and leaves on trees, genes exist in the natural world. Facts of nature can’t be owned. You can own a test for a gene, or a drug that affects a gene, but not the gene itself. You can own a treatment for a disease, but not the disease itself. Gene patents break that fundamental rule.”

We could argue that genes are a fundamental element to life. It is the most basic information structure that instructs cells how to replicate. Without genes, no higher organization of cellular activity can exist because the “blueprints” are missing. I find this to have parallels with patents being held on basic computing operations. If we view the gene as a lower level mechanism that is used in the higher operations of a cell’s reproduction, then it is similar to basic lower level hardware and software operations that are used in a higher level computing devices.

Take for example patent #5,455,599: Object-Oriented Graphic System. Apple was issued this patent in 1995 and is very technical to the point that Engadget doesn’t even feel comfortable explaining it, but it covers a graphical system that is manipulated in an object oriented fashion. This is a basic mechanism of graphical interfaces. Patents #5,519,867 and #6,275,983: Object Oriented Multitasking System and Object-Oriented Operating System cover accessing OS services in a multi-threaded way. Basically, these patents would be impossible not to infringe on if you are building a computer today. These patents were issued to Apple, and were used in court against HTC for patent infringement on the Android OS. This is just the tip of the iceberg. Apple is not alone in using heavy handed litigation involving unavoidable actions in computing that are patented. Microsoft recently struck a deal with phone maker LG to pay royalties on the Android platform because of patents Microsoft claims they have against Google. Its simply “protection money”, and a way to abuse the legal system to slow down competition. Microsoft is now making royalties from 70% of Android devices being sold in the US. What if the patent on using a mouse to interface with a computer was still being used? What about displaying text on a screen for the user to read?

I would hate to think that my medical research is being inhibited in the same manner as the technology industry. Consider Crichton’s observation on the progress of the SARS vaccine:

“In its heyday, research on SARS (Severe Acute Respiratory Syndrome) was inhibited because scientists were unsure who owned the genome – three simultaneous patent claims had been filed. As a result, research on SARS wasn’t as vigorous as it might have been. That should scare every sensible person. Here was a contagious disease with a 10 percent death rate that had spread to two dozen countries around the world. Yet scientific research to combat the disease was inhibited-because of patent fears.”

Imagine if cures for cancer, or the common cold were being held up in the same such legal nonsense. I think the absurdity of patenting genes is best illustrated by Crichton in the following scenario:

“The patent consists of pure information already existing in nature. Because there has been no invention, no one can innovate any other use of the patent without violating the patent itself, so further innovation is closed. Its like allowing someone to patent noses. You couldn’t make Kleenex, nasal sprays, masks, makeup or perfume because they all rely on some aspect of noses. You could put suntan on your body, but not on your nose, because any modification of your nose would violate the patent on noses. Chefs could be sued for making fragrant dishes unless they paid the nose royalty. And so on…It takes little imagination to see the monopolistic patenting inhibits creation and productivity.”

This novel was revealing in its description of the same broken patent system in medicine that is facing the technology sector. Crichton aimed to illustrate the need for reform in this system, and I think he accomplished that mission by starting a dialog. What are your thoughts on patenting software and hardware operations? How far should these patents extend? How common an operation can be patent-able?

Apple, Computers, Hardware, Linux, Open-source, Personal, Ruby, Software, Windows

Living in an Apple World

Welcome readers to what is a first here on my blog – a review about Apple’s OS X. As some of you may know, part of my new job is working on a Mac for 8 hours a day, 5 days a week. Someone asked me about my experiences, and I feel up to sharing my findings. I want to be fair in my assessments, so if it sounds like I am starting to get a little slanted, keep me in check with a comment!

First things first – the initial impression. I have a 27″ iMac and I was initially impressed by the appearance of the machine. The iMac screens and case are one piece, so I have plenty of room to kick around beneath my desk with minimal cord entanglement (not that it matters because I sit cross-legged all day). The compact style keyboard has an aluminum casing, which matches the iMac. The mouse is the Mighty Mouse. Both are wired, which I appreciate – especially on the mouse. I hated the compact keyboard since it feels shrunken, and the addition of the “Fn” key in the bottom row meant every time I tried to press “Control” I missed. After swapping this out for a full-sized keyboard I was much happier, and even unlearned some bad habits. The Mighty mouse absolutely sucks. The tiny wheel stops responding all the time from the slightest spec of dirt, and you have to turn it over and rub it back and forth on your jeans, or the mouse pad. Its one saving feature is the ability to vertically, and horizontally scroll which is occasionally helpful. I am a right click fan, and though invisible, the region on the mouse that registers as a right click versus a left is about 10 times smaller. It feels like the edge of the mouse.

The keyboard on a Mac is different in important ways from its PC counterparts. The “Windows” key is replaced with the Command key, which is utilized far more than the Windows key ever was. In fact, most of the operations of the machine are done using Command (copy, paste, new tab, close window, etc) effectively making it closer to the “Control” key in Windows. However, the Control key remains, which actually introduces a whole new key combination to more effectively use shortcuts. The Command key is located next to the space bar, which is much more convenient than the extreme left placement of the Control key. I do copy, paste, etc operations using my thumb, and not my pinky finger – much less strain.

The computer screen can be tilted, which is nice since the whole world seems to be moving towards the annoying high gloss screens. I can tilt it down, and out of the florescent overhead lights. I really feel that gloss is a showroom gimmick just like turning the brightness up to max on the TVs in the store. If I wanted to look at myself, I would sit in front of a mirror. Fortunately, I have a second non-gloss monitor, and I do most of my coding on this screen. Also, it would be nice if the monitor had a height adjustment, as second monitor isn’t quite the height of the iMac screen.

Enough about appearance – lets talk hardware. This is a dual core Intel-based processor, with 2 GB of memory (later upgraded to 4GB). The video card is decent I suppose (however the interface can get quite “laggy” at times). I don’t have any idea what the machine costs, but this is definitely unimpressive hardware. 2GB of RAM is the minimum I would work with, and it being slow laptop RAM doesn’t help at all. At least there isn’t a laptop hard in it too.

As for the Operating System, it seems pretty stripped down. This isn’t necessarily a bad thing – I can quickly find what I am looking for, without going on a damn field trip through obscure dialog windows. The flip-side to this is it doesn’t feel very “customizable”. You use the stock features, or you don’t use a Mac. Perhaps there are a bunch of third party utilities that I don’t know about? Sometimes I am disappointed by the lack of customization options (there are just a handful of settings for the dock). To be honest, I am not sure what I would customize, but I like to poke around, and I often leave the System Preferences disappointed having not found “setting xyz“.

I really enjoy the file system indexing, and they have the best implementation for full-text search I have seen. It doesn’t bog down the computer, and the results are instantly updated. Magic. It effectively is the starting point for all my open actions. I don’t know why it isn’t available for the first 10 minutes after a boot, but I don’t shut down that much so its ok.

I was surprised by the lack of a default system-wide notification system – something that Growl has aimed to fill. I was also disappointed by the lack of package management on the Mac – again third party solutions exist. The system updates are just as annoying as in Windows which was a disappointment. Once the “restart” prompt stole my typing focus and proceeded to shut down the system. A few times the machine has “beach balled” (the Mac “hourglass” icon), and hard locked. Most of time its fairly responsive and stable which I can appreciate.

Other points of interest are the window management. I use Expose almost as regularly as I do the task switcher (Command + Tab), though admittely sometimes I get lost in the special effects and forget what I was doing. There are a bunch of other window groupings, but I don’t really find them that useful. One particularly frustrating observation is that once you minimize a window, you can’t Command + Tab back to it. Isn’t that the point of the task switcher? It even shows up in the task switcher, but when it is selected, absolutely nothing happens.

As for the software available on the Mac it is more comprehensive than Linux, and less comprehensive than Windows. Some of my co-workers commented that in OS X, there is usually one utility to do something, whether you like it or not. I use Google Chrome, JetBrain’s RubyMine, Ruby, Terminal, Lotus Notes, Adium, and Propane almost exclusively. Because of this, I can’t really assess the state of the Mac software ecosystem, but I will say that all these programs run damn well on the Mac. The only software crash I have is Flash. Flash on Linux and Windows is stable, however on the Mac probably one in ten uses causes the browser tab to lockup. I am not sure whether this is a Chrome issue or not, but something is seriously wrong with the state of Flash on my Mac. Now I understand why so many Mac users hate Flash – as a Windows user, I never experienced the constant crashing.

In summary, due to the nature of my work, I use the Mac at work in essentially the same manner I would use Linux. The terminal is where I spend my time, and I am more or less indifferent about the operating system around it, as long as I can install the system libraries I need for Ruby extensions, and it stays responsive. My next computer purchase will be a netbook and I will install Ubuntu on it, as I can’t justify spending the designer prices of Apple products to use a terminal and a web browser.  Toe to toe with Windows, and many Linux distributions, OS X excels in many areas. Its a fantastic operating system, but I am not sure that it is worth its cost. If I could throw it on my PC at home it would be worth $100. Buying a special machine just to run it is just silly.