Wednesday, April 27, 2011

It's been a while...

I've been busy for the past few weeks scratching out a living in a barren land, and so haven't posted here, which is infuriating to me because I have a treasure-trove of newly discovered bugs. OSX, specifically Leopard, incorporated 'Spaces' into the core OS offering, and messed it up, just a little - reminiscent of Microsoft grabbing up enterprising utilities & de-clawing them until an upgrade was the only viable alternative... Oracle went on a binge, not unlike Microsoft some years earlier, to buy up favorites of the opensource community: Java, OpenOffice, and VirtualBox, and promptly broke two of the three badly. If you want a viable alternative to OpenOffice now that the Lord of the Sith has taken over the original offering, try LibreOffice. Del.icio.us was down for an entire day today in the wake of it's sale from Yahoo, witless defender of opensource. Facebook continues to be the crown jewel of the interface hall of shame with their wiggy text-box edit controls. Picasa has a couple of new ones, and both Firefox and Thunderbird have new releases that create pain in terms of long mouse-sweeps and inappropriately disabled controls along with a much slicker look and a level of crashiness previously unknown.

It's not as if new bugs aren't being delivered by the bushel - it's just that life got in the way. How annoying. All the same, it's time to hit the code again...

Monday, March 28, 2011

Spontaneous Problems with VirtualBox on OSX

    In December I upgraded VirtualBox on my Mac to 3.2.12. Everything went great, and I proceeded to use it with very few glitches until later February, when I saw there was a version 4.0.4, and figured it was time to upgrade again. The upgrade went ok, but as soon as I installed the new Guest Add-ons for my Windows & Linux virtual machines, things started going south. Every time I tried to launch these machines, VirtualBox would produce lengthy error messages about unavailable USB support due to missing Guest Add-ons. I got in the habit of simply clicking through a bunch of modal errors on startup, and reinstalling Guest Add-ons every time I started a session. Trying to save the running machine state & reload resulted in a fatal error, so there was no short-cut. Well, a week ago, for reasons unknown, VirtualBox stopped working completely, giving me this gut-wrenching message as the virtual machine was initializing, and then closing the virtual machine - neither my Windows nor Fedora virtual machines would run anymore. This was a big deal, because I can't read my ReiserFS backup disk without the Fedora VirtualBox, and I can't initialize my 3G modem with the OSX software, (Movistar 3G Modem control program is deserving of its own post) but I can in the Windows VirtualBox.
    Searching, I found a smattering of posts on the error-message. Most of them from other operating systems, but all describing exactly the same problem, and most concluding that the problem was that /usr needed to be owned by root for VirtualBox to work properly. To be fair, some people claimed having made this change and then being able to use VisrtualBox again. Swapping owners and permission-masks in the core OS because VirtualBox spontaneously stopped working seems like a perfectly irrational guns-ablaze panic response, like what one might get from a corporate tech preceded by a disclaimer about responsibility. Instead, I packaged my virtual machines into appliances, saved them off, uninstalled Virtual Box, and re-installed it, figuring that the installation script would set whatever it needed correctly as it did once before, and things would be OK again, but much to my surprise, the exact same error was generated every time I tried to start a virtual machine. I went back to look for more postings on the problem, and mostly ran into the same ones. What I noticed this time was that the ones that mentioned a version at all were all running version 4.x.x. On a lark, I went fishing in my packages directory and found 3.2.12, so I uninstalled 4.0.4 again, and this time rolled back, installing 3.2.12, and now everything works perfectly!
    It seems like some external change, like updates to the core OS, might have changed something that 4.0.4 relies on, and I am sure a lot of folks using some of the newer features in VirtualBox really have no use for this solution, but if, like me, you use it mostly to test cross-compatibility, to use devices that have OS-specific drivers, or to access disks in different formats, it works. The lesson remembered is that whenever upgrading anything, it is a good idea to have a rollback plan and the necessary tools, like my older VirtualBox package, in hand. Of course, may OS's have tools to make this easier. OSX has Time Machine, and Windows has Restore Points, so if you have them, use them.

Saturday, January 29, 2011

Sloppy Stuff for Millions to See

Having worked at Yahoo, discretion prevents me from sharing any real insight here, but I do think that the repeated release of shared-services code that hangs, works tragically slowly, and is basically pushed through in big sloppy rushes to release the next big "me-too" product ultimately hurts Yahoo more than being 10 weeks late to market instead of 20 helps it. Here is a classic and all too frequent example:

Note that if you forget your password, they will graciously "email a link to reset your password to: $this->getPageData('altemail')." - Um... I'll make sure to watch that account closely, then.

Thursday, January 27, 2011

ReiserFS on OS/X, a tough nut cracked

For people who do programming work in sealing-wax and string, building the great machinery that handles real work, like Facebook's incredibly adept original implementation of the "Like" button, which has generated traffic possibly greater than any previous initial release of a feature anywhere, and has run almost without fail right out of the gate, everything is done in some derivative of Unix - Linux being the dominant force in the marketplace today.
    For those among us addicted to the beauty of Linux that way, as a set of wonderful small tools that make up a larger machine that can face up to most any challenge thrown at it in a myriad different ways, Macs tend to be irresistible, because they have a sweet, coddling visual grammar that allows the user to simply use it as a tool and drop down to a shell to do intricate invisible work whenever it's called for. So programmers live in Linux and interact on Macs in large numbers.
    The trouble is that when you have a disk that uses a purely Linux file-system, like the most excellent ReiserFS, the Mac is decidedly unfriendly. I have some ReiserFS disks from a recently-defunct server that I would really like to be able to read on my Mac, so I went foraging for solutions some months ago and came up completely empty-handed. There were a few projects out there trying t get Macs to read ext. Sometimes they work, and sometimes not. Here is a solution I just figured out that I think applies to reading most any filesystem on most any operating system, and it's clearly cheating.
    Specifically, to read ReiserFS filesystems on a Mac, here's all you need to do.
   
    1. Install VirtualBox on your Mac.
   
    2. Download & install a Linux distro that supports ReiserFS. I chose Fedora because that is what I run on my servers, warts & all.
    There are 2 pivotal steps, specifically for Fedora on VirtualBox:
   
    3. When installing Fedora, you must modify the installer prompt. The install screen gives clear directions on how to do this, but once you have the installer line in front of you to modify, you will see a line that begins with either "linux" or "vmlinuz" or the like. At the end of this line, to include ReiserFS support in your installation, add the word "reiserfs".
        To do this in the Fedora installation, as soon as you see the first screen prompting for the kind of installation you want to do:
         
        you select the first line, select "Install or upgrade an existing system", press the Tab key to modify the installer line, and add "reiserfs" to the end of it. Here is the line in question:
       
        Add "reiserfs" like so:
         
        Then, proceed with the installation normally.
       
    Once you complete the installation, you need to make one key modification to the configuration of your Linux virtual machine:
   
    4. Scroll down in the main panel of the configuration (the right hand, large window pane), and select USB.
   
   
        Once the Peripheral configuration dialog opens with the USB tab selected, you will see an empty window pane with four USB icons with various symbols overlaid. Select the first one, with the blue circle. You will see a tool-tip dialog that says "Adds a new USB filter with all fields initially set to empty strings. Note that such a filter will match any attached USB device." Click on this one, and a new filter will be added.
           
    Once this filter is active, you can start your virtual machine. Here is the disconcerting part. Because this filter allows all USB devices through, any USB device attached to your Mac will become the property of the virtual machine - i.e. the Fedora instance you are running in VirtualBox. Your USB mouse & keyboard will stop working on the Mac, etc.
    However, and by the same token, if you now plug in a ReiserFS disk, it will get mounted by Fedora, and be completely legible and writable.
    Since you can now install VirtualBox guest add-ons, you will also be able to have shared filespace on your Mac native drives, and as well be able to move, copy, or rsync files between them.
   
    That's it. After several months of trying to figure out how to retrieve data from my ReiserFS disks on the Mac, it turns out that just by installing a virtual Fedora machine inside it, it is possible to read and write, restore and back-up anything I want between the Mac and my ReiserFS disks. Happy days.

Wednesday, January 19, 2011

OK... It's a cheap shot....

It's a cheap shot, but finding editorial errors on the BBC is just a dirty pleasure. I'm sure that if I were in that post, there would be a calculated amount of slippage, and that's probably the case with this. Just the same, it's a bit of a screw-up.




I mean, really: "The two men been kidnapped"?

Monday, January 17, 2011

Convenient Numbers for Some

As the web becomes deeply social, popularity becomes self-reflexive. The more hits a video has on YouTube, the better its chances of being noticed. Curious how a video showing the deep disapproval that a visit to Chile by some of the capitalist architects of Chile's darkest chapter is seen by many and yet the view-count gets mysteriously stuck at some low number... Particularly curious, when even the number of votes the video gets is nearly double the claimed number of views...
Trust-erosion.

Friday, January 14, 2011

More on the Facebook interface debacle...

Having lived most of my life in San Francisco, I am no stranger to people applying the idioms and grammatical rules of one language when expressing themselves in another. Chinese for example,  accustomed to a tremendous level of abstraction in root words, where time, place, character, and application all tend to be modifiers, translate some things in ways that take the literal westerner aback. Microsoft "Windows" (registered trademark blah blah blah please don't sue me) is called 'visual windows', because the root word for window refers to the concept of an opening in a barrier, so a window you can see through needs that modifier. By the same token, noodles named in Chinese and translated on packages become "alimentary paste" in English. Sounds a little repellent, really. Translate to the Italian "pasta", and now it sounds delicious again. Ethnic segregation is a natural development in San Francisco because it is hard for people who are not native English-speakers to understand the English spoken by creative adapters of the language from other cultures.

The Facebook interface is rich and ever-changing. In the rush to keep pace with the needs of adaptation, many of the grammatical constructions, visually speaking, of the graphical user interface made popular by MIT's X, Apple, and Microsoft, get cast aside, and the literalism and tentative understanding of older people, for whom 'speaking GUI' came later in life, is subverted constantly. Mostly, I think, this is the reason why older people tend to be more disoriented and subsequently disgruntled with the constant succession of ways to visually declare an action in Facebook's interfaces.

Here is an example. Facebook, like it or not, is a cultural nexus. People who grew up in MySpace and 4Chan, Memepool and the WELL, have an easy time figuring out what the developers were trying to get at when the return key suddenly morphed into a simple carriage return within the edit-control. The multi-line edit-control was well-defined in Apple, IBM, and Microsoft design guidelines by about 1990. It was not easy to grasp at first, because it tackled a lot of ambiguity, in the management of white-space in particular, through convention. Since a tab was used when any non-editable control had focus to indicate a desire to move to the next control in the z-order of the current window, tab only took you out of a multi-line edit into the next control in the z-order, rather than adding a set of spaces with a well-defined endpoint, as in any full-blown text-editor.

This is annoying as hell when you're not thinking of the type of control your focus is in, but instead concentrating on content. Nonetheless, it is useful, much as silly-seeming linguistic conventions in English such as saying "may I" instead of "can I" to express desire for permission instead of doubt about basic ability. The reason persnickety mothers 30 years ago insisted on that point is because of conviction in the formalism of a good grammatical style ultimately empowering the objects of their love to express more, to be more communicative.

Walking through an edit-session in Facebook Questions is an object lesson in the trouble with a pidgin developed to satisfy the desires of a frustrated mob when faced with a challenge on how to make specific navigation pathways available to a large mass in a small amount of time. I wrote an answer recently to a question about motorcycle storage. My original answer looked like this after I clicked the "Publish Answer" button:




I was not happy, because when I was in the edit-control, I  had taken pains to organize the answer visually, and my finished product had looked like this moments before:

 

It is obvious that poor white-space-handling has butchered the visual organization of my answer, rendering the post a little tangled, so I click "Edit" and go in to use the numbered list option instead of adding the numbers myself, hoping to fix the formatting so I will simply have two points with a bulleted list within each. The control then decides that every item in the inner lists is an element of the outer list, adding numbers I do not want, so I press return and make a blank line. Conventionally, according to all three aforementioned interface design guides, this should stop the automatic number generation, but not here. The blank "2" & "3" are testament.



So I go ahead and select the list of 2 with sub-lists, and deselect the automatic numbering tool. Then I highlight just the first sub-list, and click on the bullet tool. My result is disappointing:



OK.. Now, three different list-elements with carriage-returns in-between are rolled up into a single bullet. Even a machine could have noticed that this is probably not the desired effect. Just take a moment to visualize the frustration of a septuagenarian cowboy who has dominated the interface to get this far. I decide to de-select the bullet tool, since it failed pretty spectacularly, but once again, the result of my action ran contrary to the way bullet-list tools have worked for 20 years:


Ten seconds later, I have solved the problem by cutting the sub-list out of the post, writing it in TextMate with carriage returns, pasting it back in and only then selecting the radio-button tool. I am laso wishing I had never decided to try to answer this question, and annoyed that I am having to go through cargo-cult rituals to make a bullet-list. At least, I am ready to tackle it in the second sub-list:

 

All ended reasonably well. The post finally came out, if a little bit butchered. Of course, there's the lasting effect, that I am less interested now in answering Facebook questions than before. The happy accident arising from that is that I decided to try Quora. I have been immediately impressed with the seriousness and quality of answers across the board there.

The difference is strangely parallel to the difference in quality of interfaces. Facebook does some very fancy interface work in places, and has some real disasters like this going on simultaneously and seemingly all the time, while Quora is starting out at an amazingly sophisticated level, yet obviously with fewer features than Facebook. At the same time, Quora seems very tight and bug-free, especially for a beta, but the proportion of the number of function points in the respective platforms is so high that I could not say for sure. Add to that the fact that Quora looks very RoR, and it may all be down to development methodologies and the necessary compromises and optimizations Facebook must have to make to keep up with over 10% of the internet's traffic!

No matter the reason, it is hard to ignore these navigational improvisations and the poor user experiences that result. It's hard for me to tell if these problems are localized for a certain group of users, or these are full-on releases across the entire user community, but there's no question that the user experience suffers from what looks like de-centralized and very perishable interface design that will be duplicated rapidly in other sites and ultimately contribute to segregation of the Facebook user-base.