After a midnight siesta (?!?), I opened my laptop from bed and landed in lala-land. To start with, MBP screen looked as if the big display downstairs was still connected. After a hard restart, the screen problem was gone but menus and dialogs would stay up only briefly and keyboard shortcuts were being ignored which means I couldn't even shutdown softly. And after a while, a soft beeping noise started from top right corner of the laptop. Definitely odd.
Upon further investigation, I found that disappearing menu and dialog symptom was limited to the Finder and Firefox. So, with TextMate in the foreground, I was able to trackdown the problem to the Apple wireless keyboard, located one floor directly below my bed. Disabling bluetooth solved the problem but removing the keyboard from bluetooth device list solved the problem (and the alarming noise) as well.
When I came downstairs, the problem went away so I restored the wireless keyboard. I am still scratching my head but I am sure laziness and forgetfulness will solve that soon enough.
Author: donpark
I've just closed the W3C tag. From here on, it's just another website. I could care less if their office in Southern France is working hard for the good of the web or if their members met in Bora Bora to define HTML 5. TBL? It's a soggy variation of BLT sandwich.
Manually Resizing Eclipse IDE Window
When I fired up RadRails this morning for a coding-in-bed session, MBP screen was filled with middle portion of RadRails IDE window. Last time I used RadRails, it was on the big screen downstairs so Eclipse (which RadRails is based on) recreated the IDE window using the last saved window size and position, blissfully ignoring the fact that MBP screen is much smaller. Since both the draggable window title area and the window resize box at the lower right was not visible, I couldn't resize the window. Duh. I suspect this problem is common for Eclipse, Eclipse-based IDEs, and likely even RCP applications.
Anyway, here is the workaround:
- cd {workspace}/.metadata/.plugins/org.eclipse.ui.workbench/
- open workbench.xml file
- change height, width, x, and y values on the 4th line to reasonable values
- save and close file.
- launch Eclipse/RadRails
That's it.
James Found
Searchers found James Kim's body today. Not surprised but I was hoping that he somehow managed to survive out there. To think that he slowly froze to death in a snow filled creek without knowing the ultimate fate of his wife and kids back in the car makes me unbearably sad. sigh
Live OneCare File Sharing Problem
Live OneCare Tip: If you switched to Live OneCare recently like I have (it's cheaper, faster, and uses less resources), you might find that OneCare Firewall blocks Windows File/Printer Sharing due to a bug. To unblock file/print sharing service, trying this:
- Open Windows Live OneCare window
- Open "Other Tasks" >> "View or change settings" [hideous obscuring of key functionality IMHO]
- Switch to "Firewall" panel then click on "Advanced settings" button
- You should be at "Firewall Advanced Settings" panel.
- Change the top set of radio buttons to the setting you want (I use "subnet only") then click "Apply".
- If that didn't work, try toggling ("Do not share…", "Apply", "Only share…", Apply).
Above steps allowed me to access Windows shared folders from my MBP again recently.
Using Old/Odd Printers with OS X
I have a relatively old NEC printer (NEC SuperScript 870) hooked up to my desktop machine. It has PCL instead of PostScript so it wasn't a surprise to find that OS X Tiger didn't come with a driver for the printer. But, with a bit of searching, I found that Gutenprint, a massive bundle of print drivers for Mac and *nix, had a driver for my printer.
I installed Gutenprint 5.0 for OSX binary (dmg, source) but when I clicked on the printer model list popup in the OS X Print & Fax preference panel, I didn't see NEC. Reading the brief Gutenprint how to guide, I found that the Option key needs to be pressed while clicking on the printer model list popup to see the full list of drivers. Stupid but I didn't have time to rant so I did as instructed and, sure enough, NEC showed up in the list. Selecting that resulted in a list of NEC printers supported, one of them being SuperScript 870. After printing a few test pages, I can say the Gutenprint driver works excellently for my printer.
Living with Mac UI
There is a lot to like about Mac GUI. There are also noticeable shortcomings. Mac's menubar, for example, sucks with large and/or multiple displays because the distance between application windows and the menubar can be ridiculously far since only one display can have the menubar and it's always at the top.
My big screen is shared by my MBP and my desktop. Since I use the big screen as my main screen, menubar is shown there and the MBP screen is filled with windows of 'always-on' apps like mail and IM clients. This means menubar for apps displayed on the MBP screen is not only at another screen but another input source. Making the matter worse, the big screen insists on stepping through all five input sources in sequence instead of just toggling back and forth between active input sources. Very annoying.
With Mac, you have to click-to-focus. That sucks with big and/or multiple displays because having lots of screen area means having lots of windows open side-by-side. When I click on something in a window, I expect it to do something more than activate. Because I have to click twice to close a window (once to focus, another to click on the red button) and because I find it annoying to have windowless applications loitering around, I use command-Q more often than window close button. That's nutty.
I am going to stop before my blood pressure gets any higher. This rant wasn't very therapeutic. Rather, it's making me want to recommend Mac to others so they can suffer the same.
Mac is like marriage. It's simply great.
Too Early for RELAX-NG?
When it's ugly, it's ugly. Compared to XSD, even DTD looked good. When XML-DEVers first got a whiff of XSD, the prevailing opinion was negative. Some, like James Clark, disliked XSD enough to suggest an alternative: RELAX-NG. Like I wrote before, one of the problems with W3C is that it doesn't have a reverse gear. Instead of scrapping XSD and adopting RELAX-NG, it put all of its weight behind XSD, smearing the filth across the board. In retrospect, I wish I screamed louder but I doubt that would have made any difference.
So it's no surprise that I wholeheartedly support Elliotte Rusty Harold and Tim Bray's call to abandon XSD in favor of RELAX NG. But it'll take at least 2-3 years of everyone working together to turn this ship around because a) XSD is engrained in many key XML standards and b) RELAX NG support in XML tools is still too sparse. In particular, SOAP-based web services will have to hold off on switching to RELAX NG until specs and tools with first-class RELAX NG support arrive. REST-based web services will have an easier time though since they are not as tool-dependent as SOAP-based web services.
It's ironic that we are in this mess because it was too late to use RELAX-NG and now it's too early. At least, new XML-based standards should have strong, if not first-class, support for RELAX NG from now on.
Postscript: I think Schematron is superior to RELAX NG in some areas like for specifying client requirements.
Ruby on Rails on OS X
While I am not fully convinced that Ruby is the best language ever and that Rails rules, I think RoR (Ruby on Rails) is great for prototyping and maturing webapps.
Setting up Ruby and Rails for development on a Mac is not as easy as with Windows but it's mostly just a sequence of the usual *nix get-expand-configure-make-install dance step. My recommendation is to avoid the easy alternatives like Fink, DarwinPorts, and Locomotive. I've heard great things about the first two but I think they have since fallen behind far enough to be inappropriate for leading edge development works. Locomotive is better and flexibility offered by bundling is great but I found their setup awkward and, well, I have little need for bundle silos.
To setup my MBP (running OS X version 10.4.8) for RoR development environment, I followed the instructions in Building Ruby, Rails, LightTPD, and MySQL by Dan Benjamin but using the latest versions of packages and also installing rake and mongrel gems. Afterward, I upgraded Rails to 1.2 RC1 to give its REST support a spin.
Re IDE, both TextMate (~$50) and RadRails (free) are great for RoR development on OS X.
Social UI: Instant Messaging Pitfalls
Who we are affects what we make. Engineers are focused on functionality. With IM, a key ubiquitous feature is knowing when contacts are available. While this feature is useful, it falls short as a social user interface.
Problems:
Awkwardness
When I launch my IM client, Atrium on Mac, I know who is online at that moment. I also know that, unless they disabled the feature, people on my contact list know that I know. While this is fine normally, an awkward situation develops when recent communication with someone on the contact list didn't have proper closure. The sense of closure is relative so the awkwardness could be felt by only one party. Still, it's awkward.
Abruptness
Not all communication is need-driven. One might just want to chat casually with a friend over nothing, to say hello, to maintain the bond. This is hard to do with IM because starting a IM chat session is too abrupt for casual situations. SMS is less abrupt but still noticeable enough to signal to sender when a SMS message is ignored.
Solutions:
Groups as Rooms
In real life, chance encounters provide the opportunity to communicate with friends. Likewise, IM clients could turn each contact list group into a chatroom. But this doesn't work well if the groups are not shared, like rooms are. Better approach is to leave groups as is and add rooms in parallel.
Peeping
In real life, one can briefly peep into cube or office of the person one wants to talk to. If the person is busy, a brief non-verbal gesture is all it takes to set up a chat at some later time. Peeping could be easily added to or on top of IM clients by allowing one party to send peeps, some visual *ignorable* hint, to a contact and the recipient to see a log of recently received peeps. IMHO, peeping is too strong a gesture *if* contact status monitoring is also available. It's just right when one must peep to find out whether a person is online or not.