meyerweb.com

Skip to: site navigation/presentation
Skip to: Thoughts From Eric

Archive: 'Mac' Category

Airport Extreme and Netgear MR814v2, Take 2

Last July, I posted about how I got my Netgear MR814v2 to talk to my Airport Extreme laptop. The fix involved setting “Universal Plug ‘n’ Play” preferences.

Since then, I’ve gotten occasional e-mail messages from people thanking me for publishing the solution, and that neither Netgear nor Apple seem to know anything about this problem. I got one just today, and thought it was probably time for a follow-up post.

The fix I described isn’t a panacea, I’ve found; I still occasionally find the laptop knocked back to its self-assigned IP address. This behavior seems to revolve around hard sleep/wake events, and iChat might be implicated too. My father has a Netgear 802.11g wireless router and it’s totally smooth for him using an 802.11b PowerBook, but whenever I visit with my Airport Extreme PowerBook the router starts kicking us both off on an infrequent basis.

I’ve found one of two things will fix my router when it ceases talking to the laptop. One is to unplug and replug the router; the thing comes back up in about a second and it always sees the laptop again. The other is to log into the router from a wired computer, go to the UPnP page, and hit “Apply”. I don’t have to change any setting, just hit “Apply”. That fixes the problem too. I do the latter when I’m in my office with my wired G4, and the former when I’m downstairs closer to the router.

Either way, I’m thinking about replacing my 802.11b router with an 802.11g router so I can take advantage of the Extreme access, and I’m thinking the replacement won’t be a Netgear product. Anyone have recommendations for a good Airport Extreme compatible wireless/wired combo router (I need to plug in two CAT5-bound computers) besides an Airport Base Station?

Broken Bluetooth

So I just noticed that my PowerBook no longer realizes that it has a Bluetooth module installed. I get a little “broken B” icon in the menu bar, and when I open the menu it says in greyed-out text “Bluetooth: Not Available”. I fired up the Bluetooth setup assistant and it said it couldn’t find any Bluetooth hardware either. The only two noteworthy things that have happened recently are I installed the latest Apple security update, and I let the laptop drain itself of power in order to reset the power level calibration. I haven’t ever run a Bluetooth firmware update, so that doesn’t seem like it’s the problem (unless of course the problem is that the security update requires a firmware update, but nobody said anything about that).

Oh, and no, I don’t have a Bluetooth device with which I can test the Mac’s module. It still bothers me that the computer seems to have lost some of its hardware. I’d sort of like to have it found again. Has anyone else seen this problem, and if you fixed it, how did you fix it?

Update: thanks to Daniel Bergey, whose friends just recently moved to my home state, I’ve solved the problem and the Bluetooth icon is back to normal. See the comments for details and a link to a description of the procedure I followed.

FireWire Transfer

A few people have written me over the past week to point out that I could have saved myself a lot of time when I transferred files over to my new Mac laptop. Standards and accessibility warrior DeWayne Purdy was one of the first, and wrote:

…there’s a better way than ethernet to transfer files between two Macs, using Target Disk Mode. Connect the two Macs together with a firewire cable, with one Mac on and the second one off. Then turn the second Mac on and hold down on the T key. A firewire symbol will come up on the screen of the second Mac, and the HD name will show up on the first Mac, just like it’s an external hard drive. The files can then be transferred at firewire speeds, much faster than via ethernet. (These are condensed instructions, I’d look up the full instructions before doing it… there’s a few little, but important, details, like making sure you drag the icon of the second Mac to the trash before disconnecting or shutting it down).

So I looked up the full instructions, and here they are. They’re not much longer than DeWayne’s summary, actually.

iLike iLife 4

Long-time readers may recall my ranting about iLife 4 being a for-money upgrade, which in the end was as much about my lack of understanding as it was about Apple’s (perceived) silence on the subject. As it turns out, I never got around to buying iLife 4, so I was happy to have it bundled with my new PowerBook. That’s right, folks, I spent over $2,000 on a laptop, but I saved $49 in the process! Ph34r my l33t sh0pp1ng sk1llz!

So I imported my entire iPhoto library into iPhoto 4, which only took about 45 minutes. In the process, I discovered that I actually have 4,080 photos so far. There was some weirdness, in that iPhoto 4 claimed to have discovered 234 “lost” images. Under half were duplicates, and the rest were completely blank files with the same names as photos I already had. So I threw them all away, and landed at 4,080 pictures. Once I figured out the keyword interface, which is by no means intuitive (or even very usable), I set about adding metadata to some of my images. The first order of business, of course, was to tag all pictures of Carolyn and organize them into a smart album. Guess how many pictures I’ve take of her so far? We’ll have the answer in a moment, but first, here’s a recent one of her sitting up on her own, which she started doing a couple of weeks ago. A picture of Carolyn sitting up and reaching upward, an enormous smile upon her face.

Everything I’ve heard about the improved speed in iPhoto 4 proves to be correct, and possibly understated. This thing screams. It still generates bloated directories, though, given the number of XML files and image copies it’s capable of producing. This is largely so that it can support a “Revert to Original” feature, so any time you take out red-eye or lighten up an image, you end up with both the original and the modified image on your hard drive. The same happens if you do no more than rotate an image.

That’s where iPhoto Diet comes in so very handy. It’s a small application that can get rid of all unnecessary duplicates in your iPhoto library, and it can also delete the originals of all rotated images. It can also wipe out all the originals, replacing them with the modified versions. I ran it on my library before I migrated to the new machine and reclaimed over half a gig of drive space. And that was only getting rid of unnecessary and rotated duplicates, not all originals. I did a lot of red-eye reductions, and those are still around. I also have yet to run the “strip thumbnails” option, which could easily reclaim a few dozen megabytes.

I haven’t really played with the rest of the iLife suite since I don’t have a video camera or a garage band. I may eventually burn some images to a DVD for relatives to play on their TVs. If I can figure out how to use Garage Band, I might try creating some background tracks for use in radio production work. It’s nice to know the options are there.

And the answer to today’s trivia question is: as of this writing, the smart album titled “The Compleat Carolyn” contains 1,832 pictures. At this rate, we’ll have about three thousand pictures of her by her first birthday.

Upgrade Path

As one might have been able to infer from my recent post on Airport Extreme, I got a new PowerBook; it arrived Thursday afternoon along with an iSight. My TiBook is a little less than a year old, but I found someone interested in buying it for a decent price, so I figured, what the heck, why not reward myself a bit for all the work I’ve been doing and get a nice high-powered machine?

So I did. Since I still have an 802.11b access point (the aforementioned MR814v2) I plugged both laptops into the router and got to work transferring files. Even at 10Mb/second, it took a while to move everything over from one to the other; the iPhoto library alone took an hour to cop. Having close to four thousand images, many of them with red-eye reduction, will do that. Nevertheless, I was up and running within most of a day, and a couple hours of that were figuring out the whole wireless access problem. And six hours of sleeping.

I like the key response on this keyboard. It’s a little snappier than the TiBook. But the coolest thing about the new machine so far? The way that, in a low-light environment, the display will dim down a bit and the keyboard automatically backlights. It’s just so sexy.

(Don’t forget, there’s still a little bit of time left to support the Blog-A-Thon!)

Airport Extreme and Netgear MR814v2

So let’s say you’re trying to wirelessly connect an Airport Extreme system to a Netgear MR814v2 access point, but you find that it can’t or won’t do so. You’ll be able to see the SSID from the access point, and even to manually configure your networking so the Mac thinks you’re connected to the Internet, but when you try to go somewhere (like a Web site) it won’t work. If you try to pick up networking settings via DHCP, you’ll get a self-assigned address instead. Furthermore, the MR814v2 will only occasionally notice the system as an attached device, and even when it does the situation doesn’t get any better.

So how do you get them working together?

  1. First, make sure you’re reasonably up to date on firmware, having at least version 5.01. I’m on 5.03, electing not to upgrade to 5.30.
  2. Log into your MR814v2 using the administrator username and password.
  3. In the left-hand menu, scroll to the bottom until you find the “UPnP” item. Select it.
  4. Enable UPnP (Universal Plug and Play) for the router. Apply the change.

After a few seconds, everything should work fine. It did for me, anyway; I was able to hit the Internet within seconds, and when I switched over to DHCP it immediately received a lease. I’m using the system to post this entry, in fact.

I found the answer buried in a Mac OS X Hints thread. I’m posting this largely so Google can find and add it to the collective cyberconscious.

Extended Dash

It’s been interesting to see the back-and-forth over Dashboard the past few days. Dave’s posts have been greatly illuminating, and I belatedly discovered Tim Bray’s initial reaction and further thoughts on the topic. Dave has now done a test implementation of adding a default namespace for Dashboard widgets, using the namespace URI http://www.apple.com/2004/xhtml-extended/. That doesn’t (yet?) point to an actual document, but that’s okay; URIs don’t have to refer to a specific resource. They just have to be unique. This is in contrast to URLs, which in theory have to point to something that actually exists. Although clearly reality has a long way to go before it catches up with that theory.

As Dave points out, his approach not only makes it possible for HTML to be extended without breaking with existing standards, it also provides a handy “pay attention to the Dashboard stuff” trigger and it opens a clear path toward supporting XML-based widgets in the future. This is all kinds of cool, and I can’t see any real drawbacks. If you do, let Dave know, or comment on this post; I’ll collect them (since Dave doesn’t presently have commenting on his site) for his review.

Despite it being Dave’s second choice, the “create a new DOCTYPE” idea is something I want to discuss in a little more detail, if only to illustrate how it can work. Here’s a markup example of an amazingly stupid and useless widget using a hypothetical DashboardML DTD.

<!DOCTYPE html SYSTEM
  "http://www.apple.com/dtd/2004/dashboardml-10.dtd">
<html>
<head>
<title>myWidget</title>
<style type="text/css">
body {background: aquamarine;}
</style>
<script type="text/javascript">
function startup() {
  alert('Happy!  Joy!');
}
</script>
</head>
<body onload="startup();">
<canvas blah="foo" yadda="baz">
<h1>Widget!</h1>
<div class="main">
<p>So cool.</p>
<p>So fine.</p>
</div>
<img src="yar.gif" composite="punchout" alt="Yar!">
<p id="footer">copyleft nobody</p>
</body>
</html>

By referring to a DTD defining a language that looks just like HTML except for the canvas element and composite attribute, along with any other additions, the markup stays free of explicit namespacing and works the way authors already expect. It really is that simple. IBM already does something like this, having created an “IBM XHTML 1.1 Transitional” DTD that’s used throughout their Web presence. The comments at the top of the DTD file explain how it’s different than regular old XHTML, but the executive summary is that it permits some old table-and-spacer-era markup hacks in an XHTML environment. If you run an IBM-XHTML compliant document through a validator that loads and uses IBM’s DTD to check over the document’s markup, then the document will validate. The same thing could be done for Dashboard—or for any other project, really. That’s the beauty of it. We aren’t constrained to HTML any more, nor even to XHTML. We’re only constrained by what clients will support… as always.

(It was pointed out to me via e-mail that XHTML is perfect for this, because it’s already modularized so all you have to do is tack on another module. That would be quite true, except for Dave’s statement that the Dashboard widgets won’t be using XHTML.)

The other potential problem with my suggestion, according to Dave, is that the DOCTYPE is used to pick a rendering mode in current browsers. Dave says he doesn’t want to restrict widget authors to one mode or the other. Now, I’d personally have no problem forcing all widgets to be rendered in standards mode, but that’s probably just my inner purist talking. If it were important to allow quirks mode, then create a transitional DashboardML DOCTYPE that triggers it; use the default (above) for triggering standards mode. This would be consistent with current DOCTYPE switching schemes.

Regardless, at this point, I think we’re pretty well assured that things are headed in the right direction. That’s very much thanks to Dave’s openness and genuine interest in doing the right thing, not to mention his swift response times. Where things go from here, we’ll see, both at Surfin’ Safari and (I expect) by way of submissions to and work by the WHAT WG—which itself will be the subject of a post in the near future.

DashboardML

Now we know more about Dashboard, and according to Dave, the widgets are indeed HTML, not XML. Fortunately, hastily-applied bandages kept my ruptured vein from killing me. As for my TiBook, some quick squeegee work saved the display, but now the keys are kind of sticky. How’s that for an image?

As most people who know me are aware, I’m very much a real-world kind of guy. That side of me is in favor of what’s being done to make Safari and the Dashboard more useful. The additions to HTML and the DOM are indeed minimal—so far. I’m sure the first few proprietary extensions to IE/Win were minimal, too. After all, it’s just a tag called MARQUEE. What’s one more element?

I also recognize that HTML is far too limited for anything except simple document structuring. It doesn’t have interesting controls like sliders, and it certainly doesn’t provide any joy for people who want irregular shapes. SVG does provide such things, but Dave’s point about it being a huge task to implement is understandable. If only Quartz had been based on SVG instead of another technology… but there’s no sense crying about spilled milk under the bridge now, I suppose.

Of course, the theorist in me is quivering in outrage. The browser-wars veteran isn’t too thrilled either. For years, we heard Microsoft and Netscape say things like “standards are secondary to customer demands” and “standards aren’t as useful as the cool new proprietary features we’re adding”. These things need not be inimical to standards support. They should not require a breaking of standards.

As I observed previously, making Dashboard widgets be XML would solve the problem, or at least could fairly easily. Dave says that won’t happen:

…it was suggested that the widgets be written in XML rather than HTML and that all of the new tags and attributes be namespaced. However, this would have dramatically increased the complexity of crafting Dashboard widgets. People know how to write HTML, but most of those same people have never written an XML file, and namespaces are a point of confusion.

I agree about namespaces being confusing; the only reason I have any comfort level with them is because we had to define multiple namespaces for the XML format we used on DevEdge, and I made enough mistakes using them that I eventually came to understand them. Sort of. To an author who’s only ever seen HTML or even XHTML, they would likely be very annoying. I’d like to point out, though, that I suggested not namespacing everything, but creating a whole new DashboardML that used a whole bunch of elements that looked and acted the same as XHTML, with whatever additions were needed. Thus the beginning of the document (after the DOCTYPE) might look something like this:

<html xmlns="http://www.apple.com/2004/dashboardml">
<head>
<title>This is an example</title>
</head>

So instead of pointing to the XHTML namespace URI, you point to the DashboardML namespace URI. The end result is that you can have a document that looks exactly like XHTML, except for the additions (composite and so on). It seems like it would be fairly simple to do, but again, I can’t say that with any authority.

So let’s assume that, for whatever reason, the above approach isn’t possible within the Tiger timeframe. There is another way, one I mentioned briefly in my last post. That would be to create a new DTD for DashboardML, one that’s a direct copy of the HTML 4.01 DTD with the needed additions. It could look like this:

<!DOCTYPE html SYSTEM "http://www.apple.com/dtd/2004/dashboardml-10.dtd">

That would point to a DTD that defines DashboardML. DashboardML would be exactly like HTML 4.01 (or whatever version they wanted) in every respect except for the additions of the canvas element and the composite attribute. The advantage is that they can add more things if needed, and not pollute the HTML space. Since Apple’s working with the WHAT WG to get these things accepted, then perhaps the WHAT WG should host the DTD. Then it might look something like:

<!DOCTYPE html SYSTEM "http://www.whatwg.org/dtd/2004/whatml-10.dtd">

The URI could be anything, so long as it pointed to an actual DTD. I don’t even care where it lives, so long as it lives somewhere. I should also point out that this would need to be done even if the widgets were XML, as opposed to an HTML-like language. Either way, they keep Dashboard extensions out of the HTML space.

Why should we even bother? One word: validation. By providing a DTD that defines the markup language being used to create the widgets, validation becomes a snap. That’s important, because with validation, widget authors can keep their markup clean. It will help them with their development efforts.

Here’s another reason to bother: reducing confusion. “But Eric, a new DOCTYPE will increase confusion!” you might be thinking. Maybe at first, although overall I doubt it will. The confusion-reducing aspect is that when widgets get published on the Web—and they will be published on the Web—there will be an obvious indication that the markup is not traditional HTML, but something really close to it. Browsers can then do what they’ve always done: handle what they understand, and ignore what they don’t.

It’s been argued that Dashboard widgets are intended for a closed environment, and not to sit out on the Web. True, but that won’t change anything. Within a week of their appearing in the WWDC build of Tiger, Dashboard widgets appeared on the public Web (they’ve since been pulled offline). This won’t exactly tail off as more widgets are built. If anything, we’ll see more and more widgets getting out into the wild—for example, when people find a widget they like and adapt it for use on their public sites. The calendar is the most obvious example that comes to mind. In order to keep things straight, widgets need to have their own DOCTYPE. If nothing else, it will provide a convenient explanation when someone throws a widget onto their site and it breaks in other browsers. (”Yeah, see, that uses DashboardML and only Safari supports it…”)

Over at the WaSP, Anders Pearson wrote:

Overall, though, it’s not that big a deal. Safari does an excellent (not perfect) job of supporting the various HTML, XHTML, and CSS specs as they’re written and ultimately, that’s what’s most important. If developers don’t want to use the extensions, they don’t have to.

As long as these extensions happen within a new document type, then I agree. Allowing them to operate within any document bearing a W3C DOCTYPE would be a big, big mistake.

September 2008
SMTWTFS
August  
 123456
78910111213
14151617181920
21222324252627
282930  

Archives

Feeds

Extras