Funny, I didn't catch this in the Thursday PI, but it seems that Verizon is going to be offering EV-DO Service to Seattle.
This is really pretty big news. EV-DO is a cellular technology that has speeds comparable to DSL. Yep - that means you're not tied to a nearby 802.11 WIFI linkage and it takes the data into a much broader area. And it has typically been offered at a cheaper rate too. I don't know what it will end up being, but I recall doing some really cool experiments in another city where we took advantage of EV-DO and all of a sudden transfering some pretty heavy data (voice, video) from moving vehicles became really possible. Cellular technology already is (to my mind) Voice of IP, but this just ups the potential quality (desperately needed by cellular carriers!) and allows for a much broader range of services to be offered. And no - I haven't a desire in the world to watch video on a mobile phone, but I wouldn't mind being able to wirelessly connect my laptop no matter where I was in the city. Of course, knowing our luck, where I live will be a deadzone for EV-DO as much as it is for CDMA and GPRS service.
While I was doing some code reading, I ran into an example using CFRunLoopRunInMode with a negative time to run - which was a bit outside the documentation. I posted to the mailing list, but didn't really hear anything back - I expect because it's a bit obscure. So today I figured I'd resolve that and worked up some experiment code to figure out how it all works.
For the record, it seems to me that using a negative number where the API is expecting a time interval, just gives you the same result as handing it a zero. Which makes sense, even if using a -1.0 there was kinda weird when a 0 would have done the same thing and was listed as such in the API. -1.0 is a completely legit CFTimeInterval, but it still kinda struck me as odd. So now I know.
All this because I'm still fighting around writing something on using the WSMethodInvocation api's and working with SOAP from Objective-C. I don't know why I have such a bugaboo about writing this up, but I can't quite get the obsession out, so I think I'm going to have to give in and just write the damn thing.
The forecast this morning was for light rain, clearing by mid day.
They didn't get it right.
Happy Solstice!
Today's the longest day of the year. And its actually sort of muggy in Seattle - how odd is that? Not that anyone is very good at predicting the weather around here anyway. I've heard rumors of rain, and rumors of 90 degree heat. We'll see...
There are some components of yardwork that I don't like, and some that I positively despise. Today included the "despise" set.
I laid down 12 bags of cedar bark mulch, bought 20. That's pitching out and spreading 24 cubic feet of mulch. And that crap may look good and work great, but it is an incredible pain in the ass to work with. I end up with these vile little cedar splinter needles freakin' everywhere - feet, hands, back, neck. Blech!
Well, at least it is done for now. I still have the additional bags to rend and spread, but I'm going to give it some time first. I suspect I'll be feeling the effects of this one tomorrow.
That whole flikr thing? I didn't realize when I started just pumping data up there that I'd burn through my upload limit so quickly. And especially when pushing up the full-res image. Yowza!
At this point, its wait for a month or upgrade to a Pro account.
hmmm.....
(and I still haven't played with the interface enough to grok it all yet - sorry about the lack of tags!)
Well, I finally got myself a Flikr account since I keep finding that I'm taking more photos and want to share them, but I don't nessecarily want to push them all into this blog.
Frasier Speirs was the reason I did it - he makes this incredible iPhoto plugin for Flikr that makes it completely cake to upload photos into Flikr. And since I took a big-ole pile of photos yesterday at the Solstice Parade, I wanted to put them up somewhere. Some are, yes, the nekkid bicyclists in their body paint and periodic costume, others are the floats themselves, or the clowns, or just anything. It really was a great time...
The question of what we were doing today didn't take long to answer - it's the Fremont Solstice Parade!

Naked bicyclists, kids on unicycles, hand-made & hand-powered floats with no commercial representation, marching bands, the works.
I've been telling myself for the better part of four months that I should dig deeper into Ruby. The language is fascinating, it's roaring high on the hype list, and it's running well on every platform that I have anything to do with. But for all that cool stuff, I think I need to gracefully declare that it's going to "be a while" before I play any more in it.
At work, I'm working with python and java, and I've even been holding off getting Programming Python (which I could really use) because I kept thinking that Ruby would be where I would go. Alas, I was already somewhat knowledgable about python, so when I needed to do something quickly, I tended to lean that way. That and it comes preinstalled on most of the linux distro's, while Ruby is a bit behind in that respect. I know that sounds stupid, and easily overcome, but it had an effect. The final bit was that there's more documentation, code snippets, and hints on how to get things done with python and python libraries that I'm easily able to find.
I'd really like to get my feet wet with Ruby on Rails, and generally just enjoy more of the language. I'm feeling bad that I can't spread myself thiner than gold leaf and just learn it all. Bah.
I'm not sure how much of a "tremendous success" the house vote to limit some aspects of the Patriot Act represents, but it is at least a step in the right direction.
I'm all for good tools to help deal with terrorism, but this whole act just trampled civil liberties.
Karen and I went and saw Howl's Moving Castle produced by Studio Ghibli and currently the only thing I can see that's keeping Disney's animation vessel afloat.
The movie was well done, with a complex plot that seemed more reminiscent to me of Princess Mononoke than of Spirited Away. Karen absolutely loved the movie, so maybe my idea that it was overly complex for an american audience is off base. The voices were really well done, and it was definitely Ghibli style.
As it turns out, we also had Nausicaa of the Valley of the Wind arive from Netflix, so we spent tonight watching that one. Never had seen it before. One of the oldest from Ghibli, it was a bit more stilted and overtly preachy than the newer movies, but still a good flick. I think I prefer the more nuanced characters of recent films a bit more than Nausicaa.
VoodooPad 2.1 is out and ready to go! If you're looking for a great hypertext editor, this is it! It has all sorts of really awesome features like running a page as a script and using the output, saving into iPod notes, exporting to a linked HTML format - the works.
You know the weeds are kicking your butt when they're both talling than you and the thorns on them are going through the leather gloves you're wearing.
I almost invested in a gallon of jet fuel this afternoon.
I've been continuing to work on an article idea - how to use the WebServices API directly in MacOS X. The inspiration was that WSMakeStubs wasn't doing everything I wanted or needed, and after looking through the mailing list archives, it became clear that it wasn't likely to work in all cases.
The real generator for all this was that I was having a hard time getting WebServices to work properly with an ASP.NET web service that was posted on XMethods. So after digging around and learning how to use a 'WSMethodInvocation' object, it became all too clear that I wasn't making much headway. It was really confusing, because I wasn't getting a fault back - I was just getting an empty set.
Since I wasn't making process with Objective-C, I thought "Ok, I'll try a different library and see how it goes" and moved to trying the whole thing with python and SOAPpy. That was incredibly instructive, since I got to see the whole thing from a different angle, but in the end resulted in exactly the same trouble - a big ole nothin' from the web service.
Finally, I did some hunting on Google about SOAPpy and ASP.NET, and there's where I found at least part of an answer. The Objective-C library already does the whole named variable thing, but the real answer was that you had to add something beyond the basics with your .NET code to make it work!
This was at once both a relief and incredibly frustrating. At no times, as far as I perceive it, should a service give you a fucked up answer like .NET seems to be built to do. Maybe it doesn't need the SoapDocumentService (Use=SoapBindingUse.Encoded) stuff for it's own use, but it shouldn't freakin' fail for external clients. The whole point of SOAP, XML-RPC, and all the others is to make cross-platform integration easy!
I can't really say the "microsoft purposely poisoned this", but it sure as hell feels like it, and I'm sure not the first person to run into this.
I think my article is still worthwhile since I did the learning and it seemed worth sharing. I'll scrawl it up and see if I can get any takers for it, but the original goal (to show how to interop with microsoft's ASP.NET web services) is pretty much moot since you need to control both sides of the equation to really make it work. That's just wrong. Really freakin' wrong.
The whole overcomplexity combined with lack of proper functionality just makes me come to the conclusion that this whole SOAP thing is a piece of crap.
UPDATE: There's a little more detail on all this at http://www.dotnetjohn.com/PrintFriend.aspx?articleid=91, talking about the Microsoft .NET defaults and setting the wire format, MSDN Documentation says trifling too little about it, and there's a good commentary that was tricky to find on John Bristowe's blog. The gist is that .NET uses special sauce for it's internal bits to allow for more complex types to be pitched about, which apparently violates WS-I Basic Profile 1.1 conformance.

Nope, nothing to do with Ruby on Rails - haven't done a thing with that. These are the last photos from our Portland trip.

It's a four hour train ride, and so worth it. Rolling around from Seattle to Portland is the way to go as far as I'm concerned. No crazy parking issues in Portland, the train station is right on the south end of downtown Seattle, and the north end of downtown Portland, so transporting the light luggage we usually take for short trips like this is a piece of cake.
Another really cool Google map hack: BusMonster, which overlays bus information for Seattle on a Google map.
One of the things I love about Portland is the light rail transit system they have rolling through the core of their downtown. It's just wonderful to use. And they have this nifty historical version that Karen and I happened upon and road around the last day we were in town.

It was sort of like getting a tour, because this fellow was happily hollerin and meandering on about all sorts of little details about Portland. It was a pretty fun trip, and we easily blew an hour just riding back and forth to listen and look.
Well, I'd thought that I would post up a step-by-step of making a computer act as a 56K pipe for the purposes of folks needing to simulate such a thing (e.g. Dialup account anyone?)
Well, it turns out that there's already instructions out there - I just had to find them.
After learning some interesting twists and turns around recompiling the FreeBSD kernel, turns out it isn't even really nessecary. Ah well.
So the first part of this whole thing is setting up a "Filtering Bridge". That is a machine that has two network interface cards and acts like a network switch. Anything (packet-wise) that goes in one that doesn't match on that network segement gets transfered to the other nic.
The details are at Alex Dupre's Filtering Bridges documentation on the freeBSD site. Follow steps 1 through 4 in that article.
Step 5 is enablng the firewall, and I have a slightly different purpose in mind. The only thing I want the firewall enabled for is to manage the ipfw "pipes" that will do the handy-dandy bandwidth shaping.
So as a replacement to step5:
Create a file /etc/rc.firewall.56k which contains the following:
ipfw add pipe 1 ip from any to any out
ipfw add pipe 2 ip from any to any in
ipfw pipe 1 config bw 56Kbit/s
ipfw pipe 2 config bw 56Kbit/s
And change /etc/rc.conf... replace the line
firewall_type="open"
with
firewall_type="/etc/rc.firewall.56k"
reboot, and you've got yourself a 56K bridge!
James writes about the future of UnitKit. The Unit Testing framework OCUnit is built in to XCode 2.1, which sort of means that if you want to use UnitKit you'll have to go to some extra effort now.
Integration with XCode was the hottest thing about UnitKit for me, followed by it's relatively simple setup, and just that I was involved in a few small pieces of it.
I knew vaguely that BBum and some of the Apple folks were using Unit Testing, but I didn't know that CoreData was unit tested throughout until I saw the writeup from James. That's really great to hear, because as far as I'm concerned, that is one of the best methods of making sure you don't regress codebases accidently (all to easy to do).
OCUnit has been around for quite a while, and there is quite a bit with it. I plopped the XML formatted output into UnitKit, so I guess I'll take a gander at OCUnit and see if they have something similiar, or would maybe accept a patch for it.
Anyway, James is asking for people's thoughts on what to do with UnitKit, and I think he should lean towards his "#4 choice" - integrate the cool pieces of UnitKit with OCUnit if the Sente folks will have it and go from there.
I'm downloading XCode 2.1 right now, and it's SLOOOOOOOW. But I've already snagged some documentation thats got me pretty excited: Introduction to Unit Testing Guide and XCode 2.1 User Guide.
Oh yeah, unit testing built in at the bottom! I hope they took the best bits from UnitKit and OCUnit, but I'll have to wait and see after the download is complete.
There was also this little side mention of visualization in there, which I'm really curious about, but I can't find much more on quite yet.

yep, in Portland.
Nice little french cafe, just around the corner from Powell's technical books.
Man, I do wish I was at WWDC this year...
In Mail.app on MacOS X 10.4, the mouse-over highlighting appears to queue up in the Mail app. Here's a nifty little trick to try:
Launch mail and mouse over the delete button. Now quickly pan the mouse back and forth from the 'Delete' button to the 'Get Mail' button. Repeat lots and quickly, like 15 times. Then stop.
Now you get the cylon mouse-over highlighting buttons.
heh
I thought it was bullshit, but I guess not. PowerPC chips haven't maintained the performance curve (except in floating point) - so they're getting dropped.
I think Apple is going to take a pretty significant revenue hit on this for 6 to 12 months as their hardware sales goes batto due to the transition.
As seen on Slashdot, the linux kernel is now getting a continuous integration mechanism, and the results are pretty good.
I'd guess nobody is tracking it, but it would be interesting to see how much development accelerates from having this.
Obviously, the next word is Christmas, although I don't think that applies 100% to what tomorrow brings.
In perusing the RSS feeds that I watch, I noticed that Apple updated a whole pile of documentation entries... Highlights from the list include an updated Spotlight reference, Updated SearchKit documentation, Introduction to Sdef, scriptability guide.
Yeah, still posting about Portland. Still have some pics to post, after all. Speaking of - James has an incredible picture of a rainbow over Portland on his blog. I mean, really - WOW!

Park St. is this great strip of open vegetation and incredible green in the midst of downtown urban Portland. Walking up to it, it sort of pounds at your eyes with the intensity of all the green and trees, especially after having walked through a lot of brick and cement. And all throughout this park, Portland has really invested in public art. The elephants I posted earlier are in this park, and I took that picture at the beginning of the day. This one was closer to the end.
The sculpture is also functional - and there are a large number of public drinking fountains available. I guess someone decided there should be one for dogs too - which I applaud. And I think the whole effect of the grass "tiles" were just wonderful. This is actually one of my favorite pieces of public art in all of Portland. The elephants are probably second. Not sure what's third, but it's probably around the courthouse (it was all getting renovated when I was there).

Sorry about the tilt to the picture, but it's actually pretty good for me today. I just feel a tad off-kilter. A little photoshop will correct that guy, I've no doubt.
I snapped the picture because of the lines and perspective that it kicked out. That was just sort of neat. It's up at the north end of downtown Portland, a few blocks from the train station and near the most godawful hideous freakin' fence around the federal buildings parking lot. Not that I have an opinion about that fence or anything...