Monday, June 23, 2008
I just submitted the final manuscript for Concurrent Programming on Windows to Addison-Wesley.
This marks the exciting transition from things happening on my timetable to things happening on AW’s timetable.
A lot has changed for me since I decided to write this book. You might be surprised to hear that I actually signed the contract for it on November 29th, 2005. That’s 2 years and 7 months ago. It’s almost unbelievable that this book took so long to finish. By comparison, my first one took just a little over a year. The road has been a long one, full of personal ups and downs, but it’s no doubt been an exciting trip.
I’ve been at Microsoft the whole time. At the outset, I was a PM on the CLR Team, hacking on software transactional memory and PLINQ as an evening activity. Then I transitioned to doing it full time, but still as a PM. Then I joined the Parallel Computing team as the dev for PLINQ. Then I kicked off the whole Parallel Extensions effort (which is 20 members and growing strong), became the dev lead, and here I am today. It’s pretty strange to say this, but without the book very little of that would have happened. I can’t think of a better way to get entrenched in a technology, experience the breadth, and force yourself to learn every little intricate and often enlightening detail. If you can afford the impact to mental health and personal relationships ;), it’s an activity I highly recommend to anybody wanting to master a technology... not that one can actually master the concurrency beast, but y’know...
In retrospect, it should have taken a year. Maybe next time.
The good news is that you will have the book in your hands soon. (Well, if you decide to buy a copy, that is.) If you manage to make it to my PDC 2008 pre-con session, I’m hoping we will have some copies available. No promises, since I missed my final deadline by a couple weeks, but my fingers are crossed.
Oh yeah, and you can expect me to pick up blogging again now that I’ll have some free time. Hmm, free time? What will I do with myself!
Laissez les bon temps roulez!
Thursday, November 03, 2005
I targeted PDC as the date for completing the writing process for my book. I essentially hit that, leaving the Chapter on Transactions until after I returned, which was done within a week.
And then I targeted my vacation to Maui as the date for completion of the author review process. This is when I read through what I've written, incorporate feedback from editors and technical reviewers, and crank out the final text that I am happy with.
Well, that date is here and I haven't accomplished my goal. I did the Chapters that were roughest first, requiring quite a bit of wordsmithing. I have a few left, but it should be easy work. With that said, the weeks immediately following my return are going to be tough. I'd mentally tagged this vacation as a transition from book to post-book life, and it seems this won't be the case.
The good news is that I'm particularly satisfied with how the finished Chapters came out. The book will be highly complimentary to others on the market, but offers a great deal of unique coverage and new-to-2.0 topics.
Technical posts will return in a few weeks time. Bear with me. I've been having a difficult time finding material. For example,
- I thought I was clever when I figured out how to debug LCG methods in SOS, until I saw this. (!!)
- Using the 2.0 hosting APIs, I wrote a host that monitors lock acquisitions/releases, and warns you of potentially deadlocking patterns. (E.g. if it ever notices that one thread acquires A..B and another acquires B..A, although they might not have overlapped (yet).) But unfortunately, it required about 1,000 lines of code, and thus isn't a short blog post!
Saturday, October 29, 2005
Friday at around 2am in Las Vegas...
I'm sitting at the Black Jack table at the Luxor with $600 in chips, up about $500 from 3 hours prior, which was down a lot more than a few hours before that. What happened next is a tad ugly... ;)
Plop down $100 on the next hand. Dealt a 12 with the dealer showing a face card. Hit and Bust.
(Think to self: Damn! Gotta win that back quickly.)
Plop down another $100 on the next hand. Stand at 18, and lose to the dealer's 21.
(Think to self: Wow, kindof unlucky. Can't be unlucky that many times in a row. It's my turn!)
Plop down $150 on the next hand. Dealer has a Black Jack.
(Think to self: Down to $250? That went quickly!)
Scale back to $50, and double up on an 11. And I get dealt a 3. Lose the $100 to the dealer's 20.
About 10 minutes later, a few $50 bets, some wins, some losses, I hit $0.
Briefly considered cashing in more $$$ for chips, but I remember that I have a 7am flight to catch. I decide to head back to the hotel room to get some sleep, reeking of booze and cigar smoke, and feeling like crap.
Viva Las Vegas!
Sunday, June 05, 2005
I used to play guitar quite a bit. I also used to create a lot of industrial music using my computer with a whole host of techniques that ranged from sampling and messing with random non-sound binary files, writing programs to generate sounds, sample munging, and plain old recording. I was also in a metal band somewhere late in high school. We played around at local clubs (Worcester/Boston, MA), and released a tiny album that went nowhere. I did the lead guitar, some of the remastering, and a lot of the sampling that made it onto the record.
We broke up, and I dropped the guitar in favor of a keyboard. (I had dropped the keyboard in favor of the guitar mid-high school, so I was technically "returning to my roots.")
A couple weeks back, I picked up the guitar again. I gave most of my recording and guitar equipment to my brother (I saved a guitar and small amp for myself). So I went to Guitar Center and picked up a Cry Baby and Metal Box. I also still have the Acid and Sound Forge software (a couple versions behind now), so I'm a one man band again.
It's refreshing to strum away in an attempt to relearn the scales and random tabs I used to know by heart. And I'm hoping to create some more industrial tunes. The recent NiN release, I think, reminded me of how fun this can be.
Sunday, February 06, 2005
I spent much of yesterday driving to Yakima Valley, hanging out for a bit, and then driving home. Round trip was about 7 hours and 380 miles, includng non-driving time. I suspect it'd be a bit more fun during the Spring- or Summer-time, as the place was (as expected) pretty quiet. In fact, it sounds like most wineries do barrel tastings around the end of April, so I think we're going to have to head back up... maybe a quick weekend trip.
I'm still a newbie to Washington, and so was pretty amazed at the scenery. You go from rainy, tropical-ish climate, through Snoqualmie Pass--which reminded me so much like driving through New Hampshire on the east coast (with real snow falling even!)--, and then land in something which feels a bit like Arizona, with very few trees and very dry weather. All in a matter of 2 1/2 hours. This was one of those times I wish I had a bike.
Threw some photos up on MSN Spaces (free disk space :) ). Here are a few:
Friday, December 31, 2004
My flight for Boston leaves in 8 hours. I'm going home for a week to visit.
Should be a great time, lots of family and friends I haven't seen since moving out last June.
And I get to eat at Blue Ginger on New Year's eve with friends. Awesome prix fixe menu with paired wines. This'll be the third year in a row.
Posting and progress on much of anything will be light. I'll be back in the new year!
Tuesday, October 26, 2004
I subjected a friend tonight to the oh-so-exciting task of providing feedback on my book. I'm finding outside input very helpful actually, mostly because the separation of good writing from technical content is an important one to make. Others are good at providing a relatively objective opinion on the words and sentence structure itself. I simply despise the common excuse that just because someone's a nerd, they aren't able to communicate well (or even in a grammatically correct fashion). And they get away with it, too! Not to say that I have mastered these skills yet, but I digress...
Anyhow, here it be:
“This book is so boring, it has to be good.”
Sunday, October 10, 2004
As mentioned previously, I ate at the Herbfarm last night... absolutely amazing. 9 courses, 5 hours. Too many glasses of wine. ;) The atmosphere at the restaurant was very different than any other. Many high-end restaurants are stuffy and uncomfortable even though they may serve up killer dishes and have great wine menus, filled primarily with folks entertaining business associates and the like. The Herbfarm, on the other hand, is truly a place for people who love great local, artisinal food and wine to gather and have a great night out.
For memory's sake, here's the menu (yes, that Madeira is from the year nineteen-hundred-one... it's not a typo!):
A Menu for
A Mycologist's Dream
Saturday, October 9, 2004
From the Gatherer's Basket
Grilled Honey Mushroom with Spot Prawn
Bears Tooth Mushroom with Sea Urchin Flan
Poached Flat Oyster with Angel Wings
1998 Domaine Meriwether Brut, Captain Wm Clark Cuvee
Chestnut and Delicata Squash Ravioli
With Cauliflower Mushrooms & Quince in Lemon Thyme Consomme
2003 Poet's Leap Riesling
Herb-Smoked Wild Sturgeon with Matsutake
On Savoy Cabbage with Pear
2003 Patricia Green Cellars Chardonnay, Four Winds Vineyard
Lobster Mushroom, Hedgehog, Hawks Wing, and Blue Chanterelle Mushroom Terrine
With Wilted Spinach and Bacon
2001 Beaux Freres Belles Soeurs Pinot Noir
Concord Grape and Rosemary Ice
Spice-Rubbed Muscovy Duck Breast
With Two Gratins: King Bolete-Potato
And Red Chart-Duck Confit
1999 Glen Fiona Walla Walla Syrah, Puncheon Aged
A Mycologist's Salad
Chanterelles, Yam, Asian Pear & Quillisacut Goat Cheese
Harvest Festival of Desserts
Hardy Kiwi and Lemon Verbena Tart
Carmelized Apple Souffle
With Orange-Thyme Custard Sauce
Brewed Coffees, Teas & Infusions
A Selection of Small Treats
Vintage 1901 Barbeito Malvazia Madeira
Herbfarm Yeasted Corn Bread & Multi-Grain Rolls
Chive-Calendula Butter Coins
Saturday, October 09, 2004
I've decided to track my book progress by capturing a number of interesting data points at the end of each writing session. If there are other interesting ones folks would like to see, let me know and I'll start recording them.
Here's what I have at the end of my first session... I'm pretty slow right now, trying to get used to the various writing templates, guidelines, and styles provided by my publisher. I hope my output beefens up as I progress.
At one of my previous jobs, I was affectionately (I think) referred to as the Data Pig. Oink, oink.
Saturday, October 02, 2004
I've been really bad about blogging lately. So much to do, and so little time in which to do any of it. One thing sure remains constant: time keeps ticking away.
Over the last couple weeks, I've been working on a book proposal and outline. It got submitted last night. I was approached by a publisher a few weeks back to author a book, and if all continues going well I'll likely take the offer. I'm particularly excited about the project albeit a bit scared about the time commitment.
Progress on my Scheme compiler has been minimal because of the book effort. This is really a shame because I'd spend all day working on it if I could. Like I said, time is something I'm short on at the moment.
I began writing a paper which I'd love to complete, but that will likely take some time. It explores using structural equivalence for type matching and operational subsumption, foregoing the artificial inheritance policy that OO slams on types. I'm particularly interested in exploring how this would enable rich ecosystems of types to borrow and share implementations from each other at runtime, introducing mutations in parallel. Basically, an evolutionary type system.
Microsoft has been going well, although it obviously eats up most of my time and energy. Mostly this is a shame, simply because I have research work like my Scheme compiler that I am completely in love with. The energy people have there is just sickening at times, and it's difficult to remain in the game 100% of the time. I've found that it's easy to fall behind and lose effectiveness, simply because of a loss of focus for a minimal amount of time.
I had one of those "you're a moron" moments today. Was sitting there, and suddenly some guy shows up at my office door. I was so involved in what I was doing, my brain just couldn't do the context switch fast enough. Paraphrasing... "Hi, I'm Herb. Do you agree with the premise of the email I sent earlier?" I responded, "The value type finalizer thing?" Blank stare between the two of us. Him: "Value types don't have finalizers..." Perplexed, I thought about it for a moment. Ahh, yes... "Oh, disposable value types." Turns out it was Herb Sutter, a C++ Architect and smart dude. It always amazes me how whenever I open my mouth I make myself look like an idiot.
I went to a friend's place last weekend to hang out. It's great to unwind and let the noggin' relax for a little bit. Unfortunately, it again reminded me of my lack of a strong long term career goal. I used to think that it was being a (successful) entrepreneur, as various business topics have always interested me (such as competition and macro-economics). However, computer science is my passion, and academia and/or a research environment seems like a natural fit. I thought of this because many of the folks at the gettogether were PhD's and there was at least one professor from UoW. I wonder every day if that's my real calling.
Chilled with KitG, JoelPob, and AMoore tonight for a couple beers. Two Aussies and a New Zealander. All on the same team. Who woulda thunk it? Good fun.
Anyhow, it's only 1AM and I've got some reading to do!
Monday, September 27, 2004
Another one of those "What kind of person am I?" surveys... courtesy of Mr. Sells.
our distinct personality, The Prime Minister might be found in most of the thriving kingdoms of the time. You are a strategist who pursues the most efficient and logical path toward the realization of the goal that you perceive or visualize. You will often only associate with those people who can assist you in the implementation of your plan. Inept assistants may be immediately discarded as excess baggage. To do otherwise could be seen as inefficient and illogical. On the positive side, you can be rationally idealistic and analytically ideological. You can be a bold decision maker and risk taker who can move society ahead by years instead of minutes. On the negative side, you may be unmerciful, impatient, impetuous and impulsive. Interestingly, your preference is just as applicable in today's corporate kingdoms.
I especially love the bit about being impatient and impulsive. Me? Naahhh...
Saturday, August 14, 2004
340hp. 4.2L V8. German engineered.
I love it. And yes, I enjoy frivolous, wallet draining toys.
Thursday, July 15, 2004
I have a growing respect for Microsoft employees who actually have ample time to blog about meaningful stuff. (As a side note, it is somewhat consoling, however, that there aren't many people who fit into this category. (Hah!))
Person p = PersonFactory.Load(“JoeDu“);
Random r = new Random();
if (r.Next(0, 100) < 50)
Where exactly do I insert the p.Blog() statement? :P
With that said, I've been living under a rock without internet access for over three weeks now. And without 99.9% of my belongings (some clothes, laptop, and books - all a geek needs... although I guess the first is optional). I'm sure this is contributing to the problem.
On to the exciting news... our stuff was delivered today, and we're moving out from underneath the rock and into our [semi-]permanent residence. And internet access is on its way... Wahoooooo!
I'm sure I'll find my way out of the dark shroud soon enough.
BTW, once I get Ponghorn functioning on the WinHEC drop of LH, I'll be talking a bit more about it. I'm super excited because the facts are:
- I was able to build a functioning WinFX application that spans the pillars.
- It wasn't forced - it was very natural to use the various pillars together.
- It was easy and took very little time.
- It works!
Saturday, July 03, 2004
I have now completed a full work week at Microsoft.
And I freaking love it here. The environment, the people, the work. I think my biggest challenge moving forward is to remember that there is life outside of work... Nearly every day this week I ended up so involved in what I was doing that I ended up working between 14 and 16 hours. And I loved every moment of it!
If I wasn't explicit about it previously, I've joined the CLR BCL team as a Program Manager working for BradA. My focus will be primarily on API design and multithreading in WinFX. In particular, ensuring that developers can walk up to the programming model and be productive immediately, while at the same time providing the ability to create very powerful software.
For me, this is a dream come true. I'm able to focus on the big picture of how various pieces fit together (and in fact ensuring that they fit together nicely!), while at the same time having to understand the platform in fairly granular technical detail.
I'll have plenty of stuff to say in the coming weeks. If you have any feedback you'd like to provide, there are a number of channels with which to do so...
- Leave comments on this blog;
- Email my Microsoft email: johnduffNOSPAM at microsoft dot com (Note: my Microsoft email address should be changing shortly to joeduNOSPAM at microsoft dot com);
- Email my personal email: joeNOSPAM at bluebytesoftware dot com.
Thursday, June 17, 2004
Not only can I not find any GSM coverage (yes, I drove around in a 15 mile radius like a moron looking for some), but AT&T claims I don't even have an account with them! This is particularly odd because I ordered a plan, and did in fact receive a SIM card and a bunch of AT&T literature with my shipment... Who knows?! Not them.
And I just now realized that Amazon doesn't provide phone support! (This is good and bad. Good because it means I've never had the need to use it during any of my prior 30 orders, bad because I'm stuck sending an email into a black hole waiting for a response “within 24 hours.”)
At least the phone looks cool.
I just received my new Smartphone (Motorola MPx200) today.
And I also realized I don't have an AT&T GSM/GPRS signal from my apartment.
Which means I can't even register the thing and get my stinkin' phone number.
Saturday, May 29, 2004
The past week or so has been a little crazy and hence light on content. I'm going to try to get back into the swing of things over the next couple days... Next week involves a bit of travel too, but fortunately I should be considerably more connected.
A cousin of mine graduated from the U.S. Naval Academy on Friday, so I drove down to Annapolis, MD, attended a bunch of the Academy events during the week, did some grad parties, visited D.C., and in general just chilled out a bit. Although we had jam packed schedules, the break from my constant emersion in technology was welcome.
During one of the Navy events, I snapped a pretty nifty photo. After playing around in Photoshop briefly, stripping it of color and adding the disgustingly overused cutout effect, I came up with this...
I'm not sure why, but I absolutely love that image. Here are a few other original snapshots that came out well...
Hook me back up to my intravenous technology device, doctor.
(Btw, I'm not quite sure what's worse: trying to catch up with email or my blog subscriptions. I really do need to get one of these for personal use...)
Friday, April 16, 2004
Starbucks Barista: "Hey Joe, what'll it be today?"
Me: "Quad espresso - the usual! - please."
I wonder... is it unhealthy to have approximately 4-8 shots of espresso per day?
Wednesday, April 14, 2004
My old blog had lain dormant and festering for just a single day too long...
As I had suspected, my entrance into the blogsphere was done in haste, and I really needed more time to sit back, observe, and formulate a better mental picture of what it’s all about. So I took a break; and now I think it's time to resume.
Unfortunately, it's nearing 2am right now, and I have a book to finish.
There’s always tomorrow. Well, later today that is.