Wednesday, October 24, 2007

Gutsy (Ubuntu 7.10) Tweaks

Just upgraded to Gutsy from within Feisty, which took about an hour, and things look great, for the most part. But here's a few things just to make sure everything was in tip-top shape:
  • To enable Compiz Fusion, System->Preferences->Appearance->Visual Effects->Extra
  • Gutsy doesn't ship with the Compiz Fusion settings manager, and I wanted my old (Beryl) settings back... run sudo apt-get install compizconfig-settings-manager in a terminal to install it and ccsm in a terminal to launch it
    • Don't forget to create a new profile in Preferences or else you'll be screwing with the default settings
    • Personally, from the defaults I enable Rotate Cube, Paint fire, Water effect, Wobbly windows, Annotate, Splash, Cube Caps, Shift Switcher; I disable Expo; I tweak Desktop Cube (General->Multi Output Mode->One Big Cube) and Animations
  • Fonts on my system were oddly stretched out vertically. Here's a solution from this thread: edit the line in /etc/gdm/gdm.conf that says -command=/usr/bin/X -br -audit 0 to say -command=/usr/bin/X -br -audit 0 -dpi 96
  • The fonts still look a little screwy. I'm just going to bite the bullet and install the MS core fonts ... a HOWTO is here.
  • Download updates automatically in the background: System->Administration->Software Sources->Updates->Download all updates in the background
  • Synchronize your clock to NTP servers sudo apt-get install ntp
  • Autohide pannels: Right click on a panel->Properties->Autohide
    • Set how much of a panel can be seen when it is hidden: link

Tuesday, October 23, 2007

An Indictment of Apple, Part 1

Unless you have been in a cave for the past several years, you've probably noticed the increasing brightness of an odd, white glow that radiates wherever students, geeks or professionals congregate. That strange luminosity is the combined brilliance of the hypnotizing and stylish logos on Apple notebooks that everyone seems to be carrying around these days. It's no secret that Apple's hardware (and accompanying software) has been selling well recently, with its popular laptops, iPods, iPhones, etc. Everyone I know seems to be purchasing one of Apple's shiny toys: my family, my friends, my UNIX zealot colleagues and technoignorant acquaintances alike. The media constantly flatters Apple with positive reviews of its products, editorials praising CEO Steve Jobs' visionary genius and provides an extraordinary amount of marketing hype for its new products. Could this company possibly do any wrong?

The answer to that question is a resounding "Yes." It could, it can, and it does.

Apple's products have become a liability to own. They are often ladden with restrictions, break easily, frequently can not be extended by third-party developers and are, in some cases, just a prime example of bad design. Furthermore, it is perplexing that Apple's products continue to be so popular when superior alternatives exist. In this article, I will focus primarily on how a top-down culture of control inherent in Apple products decreases their value. I will address other issues in subsequent articles.

Some of Apple's problems stem from its desire for the user to have an experience using its product over which it has total control. Another way to phrase that would be that Apple wants you to lock you in to its product line, so that it can compel you to fork over your cash for the next edition of OSX or the newest personal electronic device. It is a culture of top-down control that, on the whole, does not benefit the user. For example, about a month ago new iPods shipped with a technical restriction that prevented them from working with other operating systems (Fortunately, the gtkpod developers broke the lock within days). Basically, Apple is saying to the consumer, "In order to use our products, you need to buy even more of our products. Otherwise, tough." Apple is similarly inconveniencing customers with iPod's ability to pipe video output to a TV: in order to use this feature, you need to either use a device with a built-in Apple authentication chip or purchase an Apple video cable for $49.

The recent tug-of-war between iPhone owners who want their pricey gadget to be as useful as possible and Apple's not-unless-we-approve attitude is an illustrative case in point. In case you haven't been following the news, Apple made a deal with AT&T so that it would be the exclusive carrier of iPhone voice traffic for five years and built technical mechanisms into the phone to ensure this arrangement. Naturally, customers of other carriers wanted to use the phone on the network they were already paying for, which meant they would have to hack the phone to get this functionality. Thus, the iPhone was hacked, again and again. Apple estimates as many as 250,000 people, roughly one sixth of iPhone buyers, have hacked their phone. In response, Apple released a firmware update to the phone which made the unlocked phones inoperable. Apple's consistent attempts to prevent its customers doing what they want with Apple products are an insult to its users' intelligence and detrimental to their ultimate experience with the iPhone. As Jon Lech Johansen puts it, "When Steve Jobs claimed the iPhone was 5 years ahead of every other phone, was he talking about the iPhone’s revolutionary handcuffs? In a world where open technologies are increasingly becoming the norm, Apple’s way of Thinking Different means marching in the opposite direction."

Apple is hostile to not only users' interests, but developers' interests as well. Will Shipley, a developer for the Apple platform, writes an excellent post about third parties' inability to put their applications on Apple's platforms. He explains that Apple's arrogant attitude is damaging its relationship with users and developers alike:
And the iPhone is a closed system, like the iPods before it, so third parties can only develop software for it if they are EXTREMELY close to Apple. This is an incredibly frightening trend. As Apple gets more and more of its revenue from non-Mac devices, they are also getting more and more of their revenue from devices that simply exclude third parties...

But with the iPod Touch, what's Apple's excuse for locking up the platform? Why can't I write programs for this device? Who might it hurt? Why is Steve announcing that he's playing cat-and-mouse with developers who intend to do so? Is Apple so far removed from its customers that even when the latter overwhelming votes for extending a device (by downloading iPhone programs in the hundreds of thousands), Apple's response is, "No, you can't do that. We know what you want, you don't. You want AJAX apps, you just don't know it yet."

That sure reminds me of the old, crappy Apple. The one that almost went bankrupt because of its hubris.
When Apple disallows third parties from writing to its platforms, then everybody suffers. The users suffer because they don't get to use the added functionality of their devices, the developers suffer since there are less opportunities to extend Apple's software and Apple suffers because less people buy their gizmos and consumer relations are soured. Innovation often doesn't happen at the center -- it happens at the edge, and Apple does not have a monopoly on good developers or good ideas.

Apple's poisonous politics don't stop at simply excluding developers from its platforms -- they permeate the very coding tools engineers use to create. I submit to you the bizarre incidents of Apple crippling both the dtrace and gdb versions on OSX. Both programs' source contain uncommented portions of code that disallow low-level examination of certain Apple-built programs, including iTunes. These suspicious lines are not in any other version of these utilities on any other platform. Why Apple did this is anyone's guess -- it seems rather stupid to try and outwit many extremely talented programmers who will inevitably discover these unpleasant surprises (as they did). What is certain is that Apple's handicapping of OSX versions of open-source tools make Macs a less attractive purchase for developers.

Now we turn to iTunes and its accompanying Digital Rights Management (DRM), which is quite the antithesis of Apple's "It just works" slogan that it uses to push its products. iTunes has an elaborate system of "Authorization" that limits the number of computers on which one can play their music. To play a song from another computer, you must get that computer to "authorize" yours. which requires it dialing Apple HQ to ensure that this is all right with Mr. Jobs. If you don't happen to have a network connection at that point, you can't make this connection and thus can't play your friend's music -- tough luck. Of course, only a total of 5 computers can be authorized per source computer, so if your friend has already authorized the limit, he'll have to de-authorize someone else (perhaps even himself, which is allowed -- revoking the right to play songs he paid for via the iTunes store on his own computer... the gall of Apple amazes me!), at which point that person who was just de -authorized will start wondering why she can't play certain songs on her computer. What a mess. I find it repulsive, not to mention inconvenient, that I need to ask a corporation's permission to listen to certain songs in certain ways.

iTunes also has a bad habit of rolling back its already limited functionality with its frequent 'upgrades.' iTunes 4.5 decreased the amount of CDs one can create with a single playlist from 10 to 7 and also detected and blocked similar playlists. iTunes 4.7.1 took away the previous ability to stream music to anyone on a local network. One wonders when the march towards never being allowed to play any music anywhere will stop. And let's not forget the insidious 'features' that Apple included in iTunes from the very beginning: the draconian measure of embedding user data into songs [1] they purchased (presumably as a deterrent against file-sharing) and restricting iTunes-purchased songs to be played the iPod only to the exclusion of all other digital music devices. [2] [3]

I can already hear the Apple faithful clamoring that all of these malfunctions are not the fault of Apple, but the fault of the record companies whose music Apple licenses. Even Steve Jobs wrote a much-cited article which put the blame for DRM at the feet of the RIAA constituents. This "They made me do it" excuse, as John Lech Johansen points out, is quite lame because Apple both refuses to open up FairPlay (its DRM scheme) to other companies and applies DRM to songs whose labels do not require their songs to be DRMed. Not to mention that other online music services have managed to operate without DRM just fine. Amazon can do it, Magnatune can do it, why not Apple? For a very good reason: Apple profits from the lock-in that DRM provides them (see Johansen's article for some telling quotes from Apple employees). Apple is today's main proponent and user of DRM at the same time that it makes overtures declaring its wish to end DRM once and for all. This is pure hypocrisy. If you hate DRM so much, Mr. Jobs, then put your money where your mouth is and take all the DRM (in its many shapes and forms) out of your products. Apparently Apple's CEO prefers cash in his pocket to shooting straight with the public.

Apple loves controlling how people use its products. Unfortunately for Apple, users often don't like being told exactly how they are supposed to use their computer, digital music player, et al. And people extremely dislike having unnecessary restrictions placed on products for which they paid a substantial amount. Limiting and sometimes rolling back the functionality of a company's products (and therefore angering customers and third-party developers) is not a winning strategy in the long term. Apple would do well to abandon it.

[1] I also responded to many posts on the linked Lifehacker discussion board. It's amazing to see how willing people are to let Apple dictate right and wrong to them. I also wrote about this on one of my other blogs.
[2] Makes me all the more embarrassed that I wrote a gushing article about iTunes for a school magazine when it came out as a freshman in college.
[3] I'm not going to even go into more reasons why you shouldn't install iTunes (especially on Windows). See iTunes spying on you and bloat and ugliness and what exactly does ituneshelper.exe do?. I'm sure there's more.
  • Apple has continued its controlling ways with the iPhone App Store: they are actively restricting the applications that people can download, even after they have been released live to the public. An application that allows one to tether a PC to an iPhone connection is an example. BoxOffice is another. I'm sure there will be dozens more.
  • iPhone development is the biggest Apple money-maker I have ever seen. To simply write programs for an iPhone and get them uploaded to the iPhone store, you have to buy three things from Apple: 1) Some kind of Apple Computer (one to two grand) 2) an iPhone (two hundred to six hundred dollars, depending on when you bought it, to say nothing of the AT&T connection fees which account for the majority of cost) and 3) an enterprise or standard development license ($299 and $99, respectively). You can not develop on anything else besides an Mac. You can not develop without a license for the SDK. With all of these restrictions, you've just put around two to three thousand dollars into Apple's pockets.
  • With regards to the iPhone App Store, Apple is no longer banning only apps that they consider unacceptable in some way (see above) but also those that contain duplicate functionality. Not only that, but Apple has been notifying developers of their rejection with a letter that has a non-discolsure agreement on it -- according to Apple's lawyers, one can't even talk about the details of why he was rejected.
  • Here's an interesting reason to kill an iPhone app: it's using up too much bandwidth. But that's just what Apple did to streaming audio app CastCatcher.
  • Apple traffics in deceptive advertising. On the company's online store, supposed 'photos' of products are actually hand-generated drawings that misrepresent certain features of the products. Furthermore, Apple has been forced to pull an ad that grossly exaggerated the browsing speed of the iPhone.
  • Taking user oppression to the next level, Apple is now arguing that jail-breaking your phone is illegal under the DMCA.
  • The last place you would expect DRM to be is in headphones, but alas, Apple has put DRM in its headphones as well (false alarm)
  • Apple has outlawed Project Gutenberg from the iPhone because some of the books contain pornographic material. Could this get any more ridiculous? Yes, they are now censoring a dictionary.
  • Apple is working on technology to detect when a customer violates the warranty. Essentially, your device tells Apple what you have done with it when you bring it in for repair. Apple already has deployed liquid submersion detectors in some of its hardware.
  • Apple, not AT&T, blocked Google Voice on the iPhone
  • The iPhone secretly tracks your location
  • Apple has joined Facebook in shutting down Palestinian-related apps

Friday, October 05, 2007

Making Windows XP less Painful

That is, making Windows XP more like Linux. Occasionally, I need to boot into Windows XP to use some application that won't run with WINE on Linux. Examples include QTFairUse and the drivers and software included with my Nokia E70 phone. Whenever I need to do this, however, I feel like I'm being suffocated by the constricting, feeble Windows environment and feel like doing the same to an unlucky bystander who just happens to bear the brunt of my Windows agitation. Fortunately, I finally sat down and figured out a few things to makeXP a bit more usable... a bit.

A (Somewhat) Usable Shell
The first thing I needed was a command line that wasn't dropped as a baby. Cygwin, which provides a UNIX-like environment on top of Windows, is perfect for this (another alternative is MinGW). The key to setting up Cygwin is configuring what applications you want installed in one of the setup menus. Of course, if you miss something on the initial setup, you can runCygwin's setup.exe again and reconfigure the included applications. Cygwin mounts the Windows C drive at /cygdrive/c. I would recommend browsing the Cygwin Properties menu and tweaking it (especially the fonts) to your preferences. Do this by clicking on the Cygwin icon in the upper left hand corner of the window and selecting Properties.

Cutting and pasting from Cygwin is a pain in the ass. To copy text, click the Cygwin icon and go to Edit->Mark. You now have a "Visual Block" - type selection box. I'm not sure if it's possible to select in a line-wrapping mode, the lack of which is also annoying. Hit Enter to copy the selected text. To paste text into theCygwin shell, click on the icon and hit Edit->Paste.

Install Software
Block Ads on the Web
Ads suck. Block them. Download a sample hosts file here and save it (in Notepad or something: Start->All Programs->Accessories->Notepad) to your file system. Now copy that file to c:\WINDOWS\system32\drivers\etc and name it HOSTS.MVP. If that's too much work for you, this page provides an automated tool to do it.

Add a Button to Show the Desktop
It's really aggravating if, in order to use the point-and-click Windows interface, you need to close all of the currently open windows to access the Desktop where a lot of clicking occurs. To do this, open Notepad and paste the following lines into it:
Save the file as Show Desktop.scf. Right click on the task bar (that blue bar at the bottom of the screen) and select Toolbars->Quick Launch. Now drag the icon of the file you just created into the Quick Launch area. If all goes well, hitting that icon in the Quick Launch area should hide all the windows you have open and focus the desktop (or show them if you have them hidden).

Remove Unwanted Icons from the System Tray
msconfig is your friend. Good resources are here and here.

Remap keys
There is a pretty easy tool that allows you to remap your keys called SharpKeys. I'm a fan of Caps Lock to Escape remapping, myself.

I recommend some BSOD wallpaper just to remind you from time to time that you're using an inferior operating system.