# Wednesday, October 01, 2003

In one of his posts a while back, Scott mentioned that he was using Mozilla Firebird, so I decided to check it out.  Wow.  It completely rocks.  Page rendering is WAY faster than in IE, and I have yet to see any of the major rendering problems that I recall from previous experiments with Mozilla/Netscrape.  I’ve only seen a couple of minor issues regarding table layout (and the fact that Windows Update won’t load at all).  I set it as my default browser, and haven’t had any reason to resort back to IE (except for Windows Update).  

Possibly the best part is there extension architecture.  There are extensions for all kinds of things, including a Google bar, an Amazon browser, and a great download manager that handles multiple concurrent downloads without popping up extra windows.   

There are only two things which still vex me… 1) I can’t for the life of me figure out any way of replicating IE’s “never reuse browser windows” feature.  I’m so used to it that I keep clobbering stuff I’m not done with by clicking on links.  2) I miss my context menu for “Subscribe in NewsGator” when right clicking on links.  (I think I may be able to come up with a solution, just haven’t had time yet.)

Wednesday, October 01, 2003 2:58:41 PM (Pacific Daylight Time, UTC-07:00)  #    Disclaimer  |  Comments [2]  | 
# Thursday, September 25, 2003

Scott posted a great rant on what it means to be a GenX geek (I’m one too, although I’ve at least seen a punch card at the Smithsonian J ).  I was inspired to check out the geek test, and I only scored a 45%.  I was sure that those SCA questions would put me over the top.  Sigh.  I guess I came to it late.  I’ve always been a geek, but I didn’t really come to grips with that fact (or dedicate my life to it) until I was in college.  

And just in case anyone was wondering, I’m an INTJ, which didn’t really come as a surprise to me.

Thursday, September 25, 2003 5:09:11 PM (Pacific Daylight Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 

Clemens Vasters posted a great article on what’s really behind a Service Oriented Architecture from the implementation standpoint.  He makes some very astute points about why schemas are important for expressing service contracts, and what the implications of SOA are on implementing scalable solutions.  Having wrestled a bit with this myself, I agree with his conclusion that old-school OOD is not the way to approach this particular problem.  Also, with regards to the stateful vs. stateless issue, I really like his take:

Ruling out that state is implicitly shared between services (in memory or on disk) is a direct consequence from this and also serves the scalability purpose, because it further eliminates co-location assumptions about services and enables clustering. Note that this isn’t about “stateless” or “stateful”. Everything is stateful while it runs.

Thursday, September 25, 2003 1:25:27 PM (Pacific Daylight Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 
# Tuesday, September 23, 2003

I’ve been a big fan of XMLSpy for a long time.  It’s one the best XML tools out there, and I’d have to say the very best schema editor.  Now with their new version 2004, you can integrate XMLSpy directly into VS.NET, and use all the functionality of XMLSpy without having to leave everyone’s favorite development environment.  Very cool stuff. I much prefer the schema editor in XMLSpy to the database-centric one that ships with VS.NET, so it’s nice not to have to launch yet another app to get at it.  

Tuesday, September 23, 2003 1:43:08 PM (Pacific Daylight Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 
# Monday, September 15, 2003

I love appropriate applications of technology, and I just came across a really cool one.  Our public transit system here in Portland (Hillsboro) OR now has up to the minute bus tracking information available for cell phones (trimet.org/wap) and wirelessly connected PDAs (trimet.org/pda).  You put in what route and which stop you are at, and it will tell you when the next bus is coming.  How cool is that?!  As someone who both has a WAP phone and commutes to work on public transit (since I can’t afford one of the new 2004 Prius), I’m pretty excited.  This is possibly even better than WAP/PDA accessible movie times, which was formerly my favorite application of wireless technology.  Since they are pretty static, I actually get my movie times through AvantGo on my PocketPC (a ViewSonic v37).  

Monday, September 15, 2003 6:32:05 PM (Pacific Daylight Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 

If you haven’t already, check out the PDC episode of Red vs. Blue.  Talk about an appropriate use of technology… 

Monday, September 15, 2003 1:18:29 PM (Pacific Daylight Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 
# Wednesday, August 27, 2003

Werner Vogels posted a great article on what Web Services are and aren’t, and why they represent Service Oriented Architecture, and not a Distributed Object Architecture.  Don’t let the name SOAP fool you.

Wednesday, August 27, 2003 4:01:35 PM (Pacific Daylight Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 

Just finished struggling through yet another Windows Forms issue that had us completely baffled.  Writing multi-threaded WinForms applications brings up some very interesting challenges, and involves learning a bunch of new stuff, some of which is not at all obvious.  See my previous posts on InvokeRequired for a good example. There end up being some really interesting consequences of the boundary between the CLR only world, and the underlying implementation where windows have to deal with message pumps.  While WinForms insulates us from the real underlying PeekMessage calls, they are still there, and at some point the rubber has to meet the road, so to speak.  The problem I just had to deal with is way to complicated to even summarize here, but the core of the problem was that if I call Thread.Sleep on short intervals in a loop with calls to Application.DoEvents in between, the GUI doesn’t update correctly, but if I call Form.ShowDialog then it does.  WinForms knows something about message pumping that I don’t, which doesn’t really come as a surprise. 

Some days I think that this is way harder than MFC was, but on other days (like today) I realize that the real difference is that WinForms frees us to hurt ourselves in new and different ways that were too hard to achieve before.  I can only think that’s a step in the right direction. J

Wednesday, August 27, 2003 3:33:59 PM (Pacific Daylight Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 

It’s a bit off topic, and not strictly speaking technical, but I’ve got to say I’m totally digging Rhapsody.  For a very reasonable fee ($25 a quarter) I can now listen to something like 20,000+ albums from anywhere I’m online.  Much easier than trying to haul around 10 or 20 Gb worth of MP3s, and I can play music from anywhere there’s a broadband connection.  There’s no activation or other association with a given machine, so as long as I remember my credentials I can listen from anywhere (one place at a time, of course).  So if I really want to listen to Rob Zombie, Fatboy Slim and the Rolling Stones in the space of 20 minutes ( I hadn’t realized what a Rob Zombie fan I really am ) it’s all there.  There are a few noticeable holes in their collection, but they’re adding new albums all the time, so I have high hopes.  And best of all, it’s legal and guilt free.  And if I really must listen to something when I’m not online (which doesn’t seem to be all that often) then I can burn most of their tracks to CD for $.79, which is comparable to Apple of Buy.com’s offerings. 

Groovy

Now if only Rhapsody supported the blogging plug-in… (Right now it’s Mad Flava by Fatboy Slim)

Wednesday, August 27, 2003 3:10:18 PM (Pacific Daylight Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  | 
# Wednesday, August 13, 2003

Fixed.  If we move all our initialization code to run after the controls have been fully created and added to their parent’s Controls collection then everything works just fine, and InvokeRequired returns what it should.  Again, the more I think about this problem the more it makes sense that it would work this way.  However, what I would expect is for the call to InvokeRequired to throw an exception if it can’t really determine the right answer (e.g. isn’t initialized properly?) rather than just returning false.  If it had thrown an exception we would have found the problem right away, rather than having to discover it the hard way.  And since calling InvokeRequired on a control without a parent is apparently an exceptional case, it would be the right thing to do. 

If anyone who reads this is or knows a PM on the WinForms team, you might mention this issue. J 

Wednesday, August 13, 2003 2:35:03 PM (Pacific Daylight Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |