meyerweb.com

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

Archive: April 2007

XBox Live via a Mac Laptop

After discovering that I couldn’t use my Airport Express as a wireless bridge (because my Netgear router doesn’t support WDS), I hauled my DSL modem and the router into the recreation room to see if I could get onto XBox Live at all.  As it turned out, the answer was “yes”, so the MR814v2 is at least partly Live compatible.  Cool!  Unfortunately, I needed to return the modem and router to the second floor, and that still left me without a convenient way to get the 360 onto the internet.  Uncool.

And then it hit me: Internet Sharing in OS X!  I could use my PowerBook as a bridge by sharing its Airport connection over an Ethernet cable.  Yes!

Only it wasn’t quite that simple.  The 360 steadfastly refused to obtain an IP address.  So far as I could tell, it wasn’t picking up a DHCP lease from the Mac (the error codes the XBox returns are utterly cryptic numbers, unsurprisingly).  I thought that was going to be the end of it until I noticed the “Edit Settings” button at the bottom of the XBox’s network testing screen.  Lo and behold: a place to manually configure my XBox’s network settings.

So I dug into the Mac’s NetInfo Manager utility (it’s in the “Utilities” folder inside the “Applications” folder) to get all the necessary subnet information, which I found under config->dhcp->subnets->192.168.2.  Here’s what it showed me:

Subnet information for the shared internet connection.  The properties and values are: max_lease, 3600; net_mask, 255.255.255.0; net_address, 192.168.2.0; dhcp_domain_name_server, 192.168.2.1; client_type, dhcp; net_range, (192.168.2.2, 192.168.2.254; _creator, com.apple.nat; name, 192.168.2; dhcp_router, 192.168.2.1

So with that information in hand, I manually set the XBox 360’s networking information as follows.

Property Value
IP address 192.168.2.254
Subnet mask 255.255.255.0
Gateway 192.168.2.1
Primary DNS Server 192.168.2.1
Secondary DNS Server 0.0.0.0

Once I’d done all that, the networking test passed.  I was online and on Live.

I haven’t tested this setup in multiplayer yet, but I was able to set up an account, get my gamertag, and download a number of demos without any trouble (except for it taking a long while to grab several GB of data, but that’s life at ~300KB/s).  The one potential problem I’ve seen is that the NAT test shows a result of “Moderate”, which the help files claim could result in connection problems or loss of voice chat.  (Addendum: I’ve tested voice chat and it’s a bit fuzzy, but it works.  Of course, maybe it’s fuzzy for everyone.  I dunno!)

On the subject of specific values, I picked the address 192.168.2.254 for no particular reason; obviously, anything in the allowed range would have been fine.  I might I go back and change it at some point.  Or not.  My point is that it’s not like it had to end in 254 or anything.  Similarly, the 0.0.0.0 for the secondary DNS server was just me not changing the default.  I suppose I could have set it to match the primary, but I don’t see what difference that would really make.

The morning after figuring all this out, I came across How To: Using your Mac as a NAT router—which, if I’d known about it, might have saved me a good deal of time.  The author ran into many of the same issues I did, and came to most of the same answers.  The interesting thing is that he set up his 360 to use the “base” router, not the Mac, which didn’t work for me.  I had to use the 192.168.2.* subnet; I couldn’t get out to the ‘root’ 192.168.1.*.  (I use that instead of 192.168.0.*.  Why?  Why not?)

So if you’re looking to put an XBox 360 online but don’t want to shell out for a wifi adapter or run a bunch of cable, your OS X laptop can easily serve as a wireless bridge.  I imagine any laptop running a modern OS is capable of the same thing.

Of course, I don’t regard this as a permanent solution.  If I decide I like Live gaming enough to do it frequently, I’ll probably spring for a dedicated wireless adapter for the XBox, or else relocate the modem and Netgear router to the rec room permanently and buy a wireless adapter for my desktop machine.  If I decide Live gaming is okay but not something I do very often, then I’ll just keep using the laptop as a bridge and save a little money.

I Took the 2007 Web Design Survey

Get over there, read the short introduction, and make with the answering!  It shouldn’t take more than ten minutes or so, and your participation is essential.

I TOOK IT! and so should you | The Web Design Survey

Also, please spread the link far and wide—it works best if as many people as possible take it, not just ALA readers.  Posting word in any relevant groups, forums, lists, etc. would be awesome.  Put the word on the street!  Please.  Thanks!

Inherit Expression for IE?

The reset styles are currently held up on a point of non-support in IE/Win.  However, there’s a decent chance we can work around it.  I’m hoping you (or someone you know) can help.

One of the things I indicated was problematic, but that I would keep, was the use of inherit for a few properties.  This value isn’t supported by IE/Win, and while I’m okay with including it anyway, it could cause confusion for others trying to use my reset styles.

Priit Pirita suggested the use of IE expressions to simulate inheritance.  For example:

 font-style: expression(
   this.parentNode.currentStyle ? 
   this.parentNode.currentStyle.fontStyle : 
   ‘normal’);

That would assign the weight of the parent element for any element whose parent had a currentStyle, and fall back to normal in any case where that wasn’t true.

Cool enough, assuming you’re okay with using expressions, but there are a couple of wrinkles I haven’t quite worked out.  The first is this:

 font-family: expression(
   this.parentNode.currentStyle ? 
   this.parentNode.currentStyle.fontFamily :
   ‘[...???...]’);

What should be filled in for the [...???...]?  The font family that IE/Win uses by default when first installed?  A null value?  Something else?  I dunno.  Hopefully someone here does.

The second problem is that some people have reported errors generated by expressions; see this comment by thacker for an example.  Can anyone explain why those errors happen and how to avoid them?

The end goal here is not only to come up with inherit equivalents for font-weight, font-style, and font-family, but also to come up with a generic method of simulating inherit for any property.  Doing so would be an enormous boon to developers, so here’s hoping we can pull together and solve this puzzle.  Thanks!

Reset Reasoning

The reset styles are undergoing yet another overhaul, but in the meantime, I thought I’d answer a question several people have asked: why?!?  Why do this at all?

The basic reason is that all browsers have presentation defaults, but no browsers have the same defaults.  (Okay, no two browser families—most Gecko-based browsers do have the same defaults.)  For example, some browsers indent unordered and ordered lists with left margins, whereas others use left padding.  In past years, we tackled these inconsistencies on a case-by-case basis; for example, making sure to always set both left padding and left margin on lists.

But there are all kinds of inconsistencies, some more subtle than others.  Headings have slightly different top and bottom margins, indentation distances are different, and so on.  Even something as basic as the default line height varies from one browser to another—which can have profound effects on element heights, vertical alignments, and overall feel.

This is not something we consider very often.  We think of our CSS as modifying the default look of a document—but with a “reset” style sheet, we can make that default look more consistent across browsers, and thus spend less time fighting with browser defaults.  Rather than say “the size of that heading is just right”, forgetting that not all browsers size headings the same way, I have to write the CSS that sets the heading to be the size I want (or the design requires, which comes to the same thing).

This is why so many people zero out their padding and margins on everything by way of the universal selector.  That’s a good start, but it does unfortunately mean that all elements will have their padding and margin zeroed, including form elements like textareas and text inputs.  In some browsers, these styles will be ignored.  In others, there will be no apparent effect.  Still others might have the look of their inputs altered.  Unfortunately, there’s just no way to know, and it’s an area where things are likely to change quite a bit over the next few years.

So that’s why I don’t want to use the universal selector, but instead explicitly list out elements to be reset.  In this way, I don’t have to worry about munging form elements.  (I really should write about the weirdnesses inherent in form elements, but that’s for another day.)

There’s another reason I want to reset a whole lot of styles on a whole lot of elements.  Not only do I want to strip off the padding and margins, but I also want all elements to have a consistent font size, weight, style, and family.  Yes, I want to remove the boldfacing from headings and strong elements; I want to un-italicize em and cite elements.

I want all this because I don’t want to take style effects for granted.  This serves two purposes.  First, it makes me think just that little bit harder about the semantics of my document.  With the reset in place, I don’t pick strong because the design calls for boldfacing.  Instead, I pick the right element—whether it’s strong or em or b or h3 or whatever—and then style it as needed.

The maddening barrier to this is, yes, Internet Explorer.  See, in order to set all elements to have the same font weight and style (both normal) and have all elements use the same font face without breaking inheritance, I need to declare the following:

font-weight: inherit;
font-style:  inherit;
font-family: inherit;

But IE/Win doesn’t support inherit, which would seem to bring that whole effort to a screeching halt.  I can’t explicitly assign the values, like I did in a previous version of the style sheet, because that would block the effects of inheritance.  Say, for example, I wrote this instead:

font-weight: normal;
font-style:  normal;
font-family: serif;

Okay, now I have this rule later on in the CSS:

h1 {font: bold 2em Verdana, sans-serif;}

Then I have this markup:

<h1>Considering a <em>Truly</em> Annoying Omission</h1>

The em in the middle of the h1 will be un-boldfaced, and in a serif face.  With the inherit values, it would be bold and in Verdana (or some sans-serif font).  I should have realized that from the outset, but sometimes my enthusiasm gets ahead of my reason.

So do I drop those inherit declarations?  In the end, no.  They won’t work in IE/Win, but since I develop primarily in Firefox and Safari, that’s not actually a problem.  Their effects, as seen in my development environment, will still serve the purpose of reminding me to build up the styles I actually want, and not use the browsers’ defaults as a crutch.  There is the possibility of my forgetting that (for example) IE/Win italicizes em when I don’t want it to, but that’s something I’ll catch during the browser testing phase.

Hopefully this helps clarify my motivations and thinking.  I’ll follow up with a new (and hopefully final) version of the reset styles in another post, along with commentary on what other things I changed.

Sound of a Gun

This morning, the local NPR station devoted an hour to the psychological effects of a campus shooting.  Four years ago, there was a shooting on the Case campus in which one person died, so they had members of the Case counseling staff talk about how they helped affected people cope on and with that day.

The first caller I heard on the program did exactly what I knew someone was going to do: he said that the tragedy would have been much more limited in scope if others had been armed, if students and faculty and ordinary citizens routinely carried concealed weapons.  The very next caller, inevitably, put forth the view that stricter gun controls would prevent such tragedies from ever happening.

In both cases, the host cut the calls short, saying that the goal was to talk about the psychological effects of campus shootings, not start a debate on gun control.  But that’s exactly what was happening.  Those people were trying to mitigate their personal sense of horror by focusing on ways to fix some underlying problem, to prevent such things from ever happening again.  They were trying to make the unthinkable thinkable.

It’s understandable.  We’re a results-oriented, can-do-focused society.  And by locking our attention on what we fervently believe to be solutions, we can shut out the grief that we feel for strangers miles and miles away, ignore the horror and anger that wells inside us.

So far as I know, nobody I know has even a tenuous connection to the events in Virginia.  But all I can think of is the parents, children, spouses, and relatives who will never see their loved ones again.  In my throat, I feel a faint shadow of the freezing, nauseating grip of despair and anguish they are experiencing.  Behind my eyes, there is an echo of the ache of tears that will not come because shock has stopped them cold.  In my guts, there is a small tear that mimics the gaping, ragged void that must be felt by a parent whose child is suddenly dead.

These dead are not my dead… but they are all our dead.

Some other day, perhaps, it will be a time to think about and discuss ways to fix whatever problems lead to or permit such horrors.  Perhaps.  Today I mourn those who died and the death of all their hopes and plans.  I grieve for those left behind to cope with a shattering new reality.  It is not what we’re taught to do, but it is the most human thing any of us can do.  We forget that too easily.

It is no solution, but for me, this is not a day for solutions.  It’s a day of sorrow.

American Express Limited After All

Anyone remember the American Express commercial where a guy talks about how he was at a big client dinner and his credit card got declined?  “I was so embarrassed,” the voice actor moans, and then goes on to relate how his father told him to get an American Express.  With no pre-set spending limit, he informs us, he’ll never have to worry about being declined again.

Wrong.

It turns out that “no pre-set spending limit” does not mean “you can charge as much as you want as long as you pay off the balance on time”.  It means “your monthly spending ability changes based on your spending history”.  You can absolutely have a charge to your AmEx declined.  Even better, since the limit changes continually based on your activity, you have no reasonable way to know when a decline might happen.  It’s the worst of both worlds!

All this, and an annual fee to boot.  Awesome!  Where do I sign?

Of course, when you think about it, you quickly realize that there had to be some kind of limit.  If there weren’t, you could buy a fully armed jet fighter with it.  (Which would of course be awesome.)  What rankles is that the advertising explicitly claims, and the wording “no pre-set spending limit” strongly implies, that declines are a thing of the past with an AmEx—which is completely and utterly false.

Fortunately, it seems that there is a way to handle charges that exceed your spending limit: pre-pay the charge(s) in question.  Of course, I had to think of this and ask someone at AmEx about it; the three people I’d talked to before that hadn’t volunteered the information, or else just didn’t think of it.  I’ve been assured that, having paid in advance, everything will go through without incident, even though what I’m charging is about an order of magnitude greater than the initial spending limit set for the card.  We’ll see how things play out.

I just wish they’d been more open about all this in the first place.  As a result of all this, it’s difficult to shake the feeling that my new card issuer has been lying to me.  That’s not really the way I prefer to start a new relationship.

Anyway, I just thought I’d share this little tidbit for the benefit of anyone interested, including any future Googlers.  Oh, and vent a bit in the process.  That always feels good.

A Question of Identity

Over the weekend, I reworked meyerweb’s sidebar a bit.  One of the changes is the addition of a section called “Identity Archipelago“, which links to various bit of my online identity and makes use of XFN‘s me value.  I’ve been meaning to do this ever since co-presenting a poster on how me could be used to accomplish identity consolidation, and hey, I’m only thirty months late.

I ran into an interesting dilemma as I assembled the links, though.  Should I link to the Wikipedia entry about me, and if so, does it really merit a me marker?  I’m not so sure.  Yes, the page is about me, but it isn’t something I created, nor is it something I control.  Thanks to the open nature of Wikipedia, it could be altered to state that I’m a paste-eating pederast with pretensions to the Pakistani presidency.  It would be kind of embarrassing to link to something like that, let alone proclaim in a machine-parseable way that the information on the other side of the link represented me in some way.

While I’ve never stated a Wikipedia policy, as others have, I’ve privately maintained a hands-off policy.  Even though I’d like to replace the picture with a better one and flesh out some details of my career, and on occasion have wanted to correct some inaccuracies, I’ve refrained from doing so.  I’m not going to proclaim that I’ll never ever edit my own entry, because if libel (alliterative or otherwise) shows up and I’m the first to notice, I’ll at least roll the page back.  But in general, I’m keeping my hands off.

Nevertheless, it is arguably a piece of my online identity.  Not linking to it feels like a glaring omission—or am I just trying to rationalize an egocentric desire to show off?  I don’t think that I am, but then I’m hardly a neutral party.

So what’s your perspective?  Is a Wikipedia entry created and edited by others properly a part of my archipelago, or is it simply a nearby island?

XBox Live via an Airport Express?

Thanks to the faintly odd generosity of a colleague—I won’t name names, but let’s just say the URL of the gentleman in question rhymes with “fairgag”—I find myself with a yearlong XBox Live subscription.  One interesting wrinkle in this scenario is that I don’t really have any multiplayer games besides Halo 2, but that isn’t really the biggest issue.  No, the real problem is that the XBox 360 is two floors away from the DSL router, with no possible cable routes that don’t involve winding about a hundred feet of CAT-5 around stairwell bannisters and across public walls.

Now, I do have 802.11b wifi in the house, so I could buy the official wifi adapter.  What I’m wondering, though, is if I could plug the XBox into my Airport Express‘ Ethernet port (or the USB port) and get it onto the network that way.  I Googled a bit but didn’t turn up anything relevant, and poking around the administration utility’s configuration pages didn’t seem to help.  Anyone know if there’s a way to make this happen?

Of course, I have no idea if my Netgear MR814v2 router is even XBox Live compatible, but one thing at a time, I guess.

April 2007
SMTWTFS
March May
1234567
891011121314
15161718192021
22232425262728
2930  

Archives

Feeds

Extras