Essential WPF Chapter 1 available online

SearchVB.com is hosting Chapter 1 of my book... very cool!

Got my book!

Wahoo!

Got the real printed version of my book today. Very cool. I'm terrified to read it because I might find an error. Chris Sells assures me that I'll find many.

Now I have to get the book web site up to snuff since copies will be streaming out to book stores next week!

TechEd 2007

I'm suggesting a session for TechEd 2007... this is my attempt to influence the judges by winning popular support for my talk:

Title: XAML as a better C#

Abstract: .NET 3.0 introduces a new technology enabling declarative programming. This session will focus not only on the built in runtimes (WPF and WF) but also applying the technology to other domains (eg. WCF, ASP.NET, System.Configuration, or better yet, your application domain)

I've been thinking a lot lately about XAML as more than just WPF, WPF/E, or WF... I think that more broadly XAML is the begining of a much richer declarative programming model. This new declarative model will (hopefully) raise the abstract level for developers and allow for better tools, interoperability, and ... well... basically make the world a better place. :)

Thanks Charles!

Charles was nice enough to congratulate me on finishing my book. Mr. Petzold is off writing his next WPF book, an entire book devoted to 3D programming.

Essential WPF: Copy edit completed last week

Wasn't too painfull of a process, my copy editor was great. One more step in the book is complete.

Available for pre-order on Amazon. According to Amazon it will be available April 17, 2007. According to my publisher the first copy roles off the press on April 2... so Amazon may have the street date availability right!

 

Done... again?

5/5/2005 - first post, saying I'm going to write a book. Estimated completion date: 12/15/2005

10/3/2005 - I realize I'm falling behind - "October is going to be the month of the book"

10/23/2005 - I "finish" the controls chapter, yes, that is the second chapter of the book.

12/15/2005 - solid progress, but only one chapter really "done" (applications)

1/9/2006 - Rory's "steel cage death match" of WPF authors.

3/20/2006 - I take a week off to focus 100% on the book

3/24/2006 - Book is "content complete". Am I done yet?

9/10/2006 - finish first round of technical reviews

Today?

Tonight I am submitting my "final" version of the book. This includes all feedback from reviewers. Final art for all 231 pictures in the book (129 hand drawn art in XAML, 102 screenshots). Images all in high-resolution B&W TIFF images (1200dpi). Dedication page (to my wife, Megan!). Forwards (well, I have one, but waiting on the second).

There is still a tremendous amount of work left on the book (editorial review, page layout review, etc.). However, this is a major milestone.

18 months.

One of my most exciting moments - listening to people that saw early drafts talk about the more recent ones. My best compliment - Chris Sells saying "this is actually going to be a good book" (I'm probably misquoting him). Now that I've finished I can go read Chris' book and Charles' book. It will be nice to see how they tackled some of the same issues.

Thanks everyone for all the help on this.

Can you view XPS without .NET? Of course!

Want to read the pages from Essential WPF but you don't want to download the .NET 3.0 RC1 bits... well, I missed the announcement but Rob forwarded me Andy's article linking to the XPS Team's announcment of the XPS document viewer Beta 2 - which reads XPS without the .NET Framework... (links to links to links, oh my!)

Thanks Rob, Andy, and the XPS Team!!

Essential WPF: the site

As part of finishing the book, I've needed to setup the web site for the book. I plan on putting source code for samples, extra frameworks, and related materials for the book. Right now it's pretty empty, however I have put the first couple pages of the latest draft (not complete, i'd love feedback!). Note - these are in XPS format, so you'll need .NET 3.0 RC1 to read them... of course!

Book update

It's been almost a month since I last talked about the book.

I'm done with the first round of reviews!

Wahoo! This has been a long, tough, process, but I think the book is really coming together.I'll be puting a draft version of the book up on Safari Books in the near future, i'll post when it is available.

WinFX... err... .NET Framework 3.0 RC1

Yes, it's finally available... WPF, WCF, and the rest of .NET 3.0 shipped RC1 today (including the RC1 SDK). Wahoo!

PS: old news, and not related to .NET 3.0... the PowerShell RC1 bits are also on the web.

Book update

Like the construction project, there has been book progress. Slow, not steady.

I've gotten renewed focus on the book and I'm in the process of working through technical reviews. I finished two chapters this weekend, and did a source code scrub for formatting throughout the entire book. The two chapters I cleaned up (Actions & Styles) feel a lot better. Actions definitely has the biggest improvement, mostly because it was a little tough before.

With Petzold going to press, and Sells & Griffiths right behind him, I need to get in gear if I hope for anyone to be left to buy my book!

Book-acation: Day 5

The appendix is done!

Well, kinda.

My goal with the appendix is to cover the nitty gritty of the most critical base services in Avalon. Things like the property system and input system. Because it's more of a reference tone, instead of the conceptual stuff in the rest of the book, it's quite a bit easier to write. I also had already written about half of it.

The "kinda" part is that I'm going to ask my reviewers for other suggestions of topics that should be in the appendix.The sections as of now are:

  • Threading and dispatchers
  • Properties
  • Keyboards, Mice, and Styluses

Any other big sections missing? The bulk of "core" concepts are covered in the rest of the book, so this is really designed to be a deep dive into some particularly interesting features...

Taking this time off to focus on finishing the book is probably the best use of vacation time that I've done in a long time. Each day I've given myself about 1-2 hours of errand time, so I've caught up on a lot of stuff that had been building up. In addition I feel like this enormous weight of completing this project is finally off me. I know that reviewing and editing of the manuscript is a big task, but I feel that it's achievable now.

I'm going to have a margarita at lunch!

Book-acation: Day 4

Done with the introduction. Wow.

With that, I'm done with the "body" of my book. At least the first draft. I still have an appendix to write, a lot of cleanup, and reviews to go through. I'm working on a deal to hire out some of the scrubbing of the book into a final form, but having the body content done is a massive accomplishment (for me).

Right now the book weighs in at 284 pages with out the appendix. My guess is that once I finish reviews i'll tip just north of 300, which was my goal. Originally I started out with a 600 page goal, but after talking with people I realized that not even I would want to read a book that long about Avalon! :-)

I'm going to get lunch, and run by Kinko's to print 3 copies of my first draft of the entire book. I'm pretty excited to see the entire thing on paper. My last draft that I printed the entire thing was on July 6, which was in a different format and had less than half the content I have now.

When I get back from lunch I'll start digging into the appendix.

Book-acation: Day 3

I managed to finish up the styles chapter, and begin work on the introduction yesterday. Today I got about a solid 6 hours of work (acceptable for an 8 hour shift). As of now I have 22 pages of content written on the introduction, with about 8 or so left to write. I should be able to get that done before lunch tomorrow. The introduction is much easier to write because it's basically a road map to the rest of the book, which is all written.

After I finish the introduction I have two options as to what I do. 1) write the appendix "Base Services" that covers threading, property system, etc. or 2) update all the chapters to the Feb CTP bits. I guess there is a third option also; 3) work through the feedback from Michael on the chapters he's given me feedback.

Of these, the least appealing is writing the appendix, but I have a feeling it's the right thing to get done.

Book-acation: Day 2

Yesterday turned out to only be a half-day on the book, there were a couple of critical work meetings, so I did a 50/50 split. I still managed to get about 7 pages finished, which at least kept me from getting too far behind.

Today I have a noon meeting, so this is my half way check point. I've finished almost all of the content for the styles chapter, I have a total of 15 pages done (8 written today), and I figure this afternoon I should be able to easily finish up the rest of the chapter (only one or two pages left), and get started on the Introduction.

I'm going to finish the introduction then move to the appendix, which will cover some gritty details of the platform.

Here is a question for any readers that are left out there (after you don't post for months readership drops off)...

What do you think about the title "Essential Windows Presentation Foundation" or "Essential WPF" for short?

Book-acation: Day 1

I'm taking a week off of work to (hopefully) finish my book. I've set up some rules for myself...

1) Treat it as a job - show up on time, and finish. I figure that because I'm working from home I could be tempted to put in 20 hours the first day, then start slacking off. I want to put ~50 hours into the book this week, not 100.

2) When working, no work. That is, no Microsoft work when working on the book. I'm burning vacation time to do the book (something I said I'd never do). I'm not going to burn vacation time *and* work!

That's about it. Today I'm working on my final content chapter - Styles. Hopefully I'll finish that in the next couple days, then I can write the Intro chapter, which should be another 25-30 pages. If I can get both of these chapters done this week I'll be golden.

Quick update

Two months with no posts. That's a while. I won't bore you all with the reasons, but I think I'm back.

A quick status report...

1. My machine that runs NewsGator for Outlook lost it's connection (working on it), so I haven't been reading blogs for a while. I think I'm going to try and use the new Outlook features for RSS as my aggregator.

2. The book is still not done. I'm taking a week off of work this month to try and close it down.

3. I haven't done any diving, but I have gotten out on the boat a bit. The house project is ramping up (been to the county offices a couple times now). My HD TiVo is dying and needs to be replaced.

Also, I've moved offices... I now sit right across from Don, and virtually sit next to Sells. I'm still working on technologies related to WinFX and close to Avalon, however I'm focusing more on some longer term investments (more later on this).

Steel cage death match of Avalon authors

Rory delivers... while Ian Griffiths is missing from the picture (sorry about that Ian, I love you man, really!), the US contigency is well represented in Rory's comic.

Thanks for the art Rory!!!

My favorite part is Don's ability in the comic to continually simplify the problem of programming languages until he gets to "I wrote binary with one line of unary"... comedy gold.

Hierarchical Binding

Today I spent some solid time working on the book (9 pages, wahoo!) and worked on a bunch of data binding topics. While it didn't make the book, I really liked this sample I wrote up for showing hierarchical binding.

I started out with a chunk of XML:

      <Media xmlns="">
        <Book Author="John" Title="Fish are my friends" />
        <Book Author="Dave" Title="Fish are my enemies" />
        <Book Author="Jane" Title="Fish are my food" />
        <CD Artist="Jane" Title="Fish sign good" />
        <DVD Director="John" Title="Fish: The movie">
          <Actor>Jane</Actor>
          <Actor>Dave</Actor>
        </DVD>
      </Media>

What I wanted to do was data bind it into a TreeView that would show the structure of the XML... so effectively I wanted:

<Grid 
    xmlns="http://schemas.microsoft.com/winfx/avalon/2005" 
    xmlns:x="http://schemas.microsoft.com/winfx/xaml/2005">
  <Grid.Resources>
    <XmlDataProvider x:Key="dataSource">
      ... xml ...
    </XmlDataProvider>
  </Grid.Resources>
  <TreeView 
      ItemsSource="{Binding Source={StaticResource dataSource}}" />
</Grid>

Part of the data binding support in WinFX is native support for hierarchical binding. Basically if you have some data that has hierarchy, and a control that has native hierarchy support, you can wire the two together without a lot of fanfare. The trick is the HierarchicalDataTemplate, which lets you specify how to walk the object graph to produce the hierarchy. What's even better, that because of the automatic look of data templates based on types, you can make this extrememly simple:

        <HierarchicalDataTemplate 
            DataType='{x:Type sx:XmlNode}' 
            ItemsSource='{Binding Path=ChildNodes}'>
                
            <TextBlock Text='{Binding Path=Name}' />
        </HierarchicalDataTemplate>

That's it. With that data template as the ItemTemplate for your TreeView, you will get a complete dump of the template. The content of the HierarchicalDataTemplate is the display tree for the item, and the ItemsSource property controls where the template will get the next level of the hierarchy. Since ChildNodes returns something that is an XmlNode, the template automatically recurses. Pretty cool, huh?

With a little fancier template, you can get something like this:

XAML Source

Petzold vs. XBox

Jessica Fosler forwarded me this link (I'm avoiding reading Charles' blog until I finish my book... same reason I didn't read Sells' book, I don't want my interpretation of the technology to be "tainted" by someone elses)...

Apparently Charles was happy when I got my XBox, but then saddened when I gave it away :)

I've only met Charles once, but I like to think of Sells, Me, and Charles in a steel cage death match for your hard earned book dollars. We have the venerable Jedi master, that is PETZOLD, the heir apparent SELLS, and the upstart unknown from Seattle, ANDERSON. I can't wait to finish my book so that I can read the other two and see how the match turns out. My guess, you'll want to buy at least two of these titles...

First step, remove the distractions

Today I painfully lent my new 360 to a friend... I need to focus on the book, so I figure that a) I won't be tempted, and b) it won't sit idle. Erick agreed (without much hesitation) to "holding" the 360 for me for a couple days while I dig into the book.

Book update

By request, here is an update on the book.

Going slow, but making some forward progress. My developmental editor (Michael Weinhardt) just moved from Australia to the US, he now works at Microsoft on the SDK team as an author. Pretty cool! The good news is that means we can actually meet face to face to talk about the book.

The book is slated to have 7 chapters plus an appendix and an introduction, currently the status is:

  1. Introduction - I'll write this late - 0%
  2. Applications - Done and edited - 100%
  3. Controls - Content complete, editing - 80%
  4. Layout - Content complete, waiting for edit - 75%
  5. Visuals - Content complete, waiting for edit - 75%
  6. Data - 3/4 content complete - 60%
  7. Actions - 3/4 content complete - 60%
  8. Styles - not started - 0%
  9. Appendix, "Base Services" - not started - 0%

When the next CTP is released, I'll be able to start posting some of my code samples up here.

End of The Month of the Book

Well, it's over... but it's not. I got through a lot of good work during October. I really feel I turned a corner where I began to focus on writing, instead of on the technology. I have until the end of December, and I'm still behind. The book focus is going to continue. Over the past couple days I've let it slip a little, but I need to get back into it.

Writing is hard...

... editing is ridiculously hard.

I got my second round feedback on the Applications chapter from Michael... over 150 comments in this round. They are all good comments that are making the book much better, but damn! Apparently I've got a lot of "opportunity" to improve my writing. ;-)

4 days left in The Month of the Book

This week I took Wednesday as a vacation day to work on the book. Tomorrow I had planned on taking a half day (going up to the mountains with Megan for a weekend getaway), but now I'm going to take a full day vacation and spend the first half writing. Oh, and I'm planning on writing all weekend up at the lodge.

I just finished the first draft of the Visuals chapter - 66 pages. It was fairly brutal, our platform is absolutely huge. I'm not happy at the overall quality of the chapter, but I've at least gotten through all the content. Media, 3D, 2D, Text, and Animation - all covered with some level of depth. Media and 3D probably needs the most help, but I'll get back to them to clean them up before submitting.

Next up is to integrate the second round of feedback on the Applications chapter. Mike has said he should be able to get a first round of feedback done on the Controls chapter over the weekend, so next week will be a big week. Hopefully Monday I'll submit the Layout chapter also.

Writing is hard work.

8 days left in "The Month of the Book"

This has been a good week for progress on the book. Chapter 4 - Layout is basically in the can (although not submitted yet for various reasons), and I'm making big progress on "The Big One". Chapter 5 is slated to be "Visuals", which means one chapter to cover 2D, 3D, Text, Animation, and Media. I budgeted almost 100 pages for this one chapter, and it's hard to get through.

Its a good reminder that our platform is really big. Not only is it really big, but it also builds on itself. No sooner have I spent 20 pages pages talking about 2D drawing, then I hit 3D where you can take anything from 2D and project it onto 3D. Of course, everything in the whole system can be animated, etc.

All the drawings in the book are being authored in Avalon. I decided that there isn't a platform out there that can capture Avalon bettern than Avalon. I've ended up having to write some new controls (a "SmartShape" library that clones some PowerPoint/Visio features for diagraming), but overall it hasn't been too much work. The workflow is a bit painful - I end up writing the XAML in AvPad, then doing a screenshot. I really need to write a XAML -> TIF program, so that I can skip the screenshot step.

My new favorite feature in the platform - scRGB. I love the extra color and everything, but I really dig the text format in markup. For some reason I find it really easy to write: "sc# .8,1,0,0" for 80% opaque red, instead of "#CCFF0000". I know I should be geeky enough to think natively in hex, but the decimal representation to be really easy to grok.

I also stumbled across an ole post from Joe Beda about scRGB, which I liked so much I asked for permission to include chunks of his post in the book (I'm not sure how much it takes for "plagerism", but since I want to take the *idea* of comparing scRGB to Unicode, I figure it was polite to ask). Joe already said "yes" - thanks Joe!

I've got about 40 more pages to go on the Visuals chapter, if I can push through it this week, then I think I'm golden on schedule.

Chatper 3 - Controls

Finished another chapter this morning. The Controls chapter is in the can now. Controls and Applications where both pretty much written, so now I'm getting out of the "port & polish", and into the "generate content" phase. Much slower.

The right tool for the job

I often get the question about why we need multiple APIs or programming languages or whatever. While I haven't been in the woodshop for a while, I still like to make the comparison. There are certain tools that can do the job, while there are other tools that are the right tool for the job.

For example, an impact driver vs. a drill motor. Given a phillips head bit tip, either tool can drive a screw into a piece of wood. In basically all ways a good drill motor can replace an impact driver.

[as an asside, for those not familiar - a "drill motor" refers to the base (the motor) a what is normally called a "dill". The "impact driver" is a tool that specifically drives screws/bolts/etc using a combination or rotational force and impact (pounding). The result is that an impact driver has significantly less toruqe on the user, with better results on driving the target]

However, if I'm driving 100 screws into wood, i'll take the impact driver every day. It is the *optimal* tool for driving screws. It can't drill a hole though.

This morning I bought a copy of SnagIt, which is a screen capture program. A screen capture program! Alt+PrtScn works pretty well, right? Again, the built in Windows screen capture is OK, but SnagIt is the optimal tool. After five minutes of using it I saw how much better it was at grabbing a section of the screen, automatically converting the format, and overall streamlining the process I was doing for making figures for my book.

Which brings me to our developer platform.

The other day one of the developers on our team asked the question of why we needed two APIs for something. Basically the question was if we should, in the future, move to a single model for presentation. Today we have far too many - Windows Forms, ASP.NET, Avalon, Avalon/E, HTML, DHTML, Win32, DirectX, etc, etc. - and we don't always have clear guidance between them.

We ended up focusing the conversation of Avalon vs. DirectX. His argument was - the only reason someone would use DirectX in the future is for performance and access to low level hardware features. Avalon introduces some overhead when dealing with scene graphs and hides some of the DirectX features (Pixel shaders specifically in V1).

My view was different - I think that sometimes the right tool for the job varies for people. I think that developers will find one tool to be their "natural" tool for the job. Writing twitch games like Quake in Avalon, while possible, is not what I would consider to be the optimal tool. But why?

Let's flash forward to a future where Avalon has shipped several versions, has a robust API for pixel shaders, vertex shaders, 3D input, etc. In this future world we are 100% capable of writing twitch games. But, is it the right tool? I would argue that the design center for Avalon is building Applications, Documents, and Media. We have a control centric view of the world that relies heavily on data binding, templating, etc. Yes, you *can* build Quake, but what unique value are you getting from Avalon?

It's with this that I believe in a portfolio of APIs. I believe that there is a big tent of technology for presenting information to developers. HTML, and DHTML have a place. Windows Forms and Win32 have a place. DirectX has a place. It isn't about removing the options, but rather having a comprehensive view of the tools in the shop and picking the right one for a job.

These debates about "AJAX" vs. Avalon, or Windows Forms vs. ASP.NET, are wrong. When question is "when" to use each technology, not "if" you use each technology.

Chapter 2 - Applications

Well, I just did my second draft of my first chapter (chapter 1 is the introduction, which I'll write last). I'm working with a great developmental editor, Michael Weinhardt (who worked with Sells on his book also), who is giving me some great advice. It's awesome to start to see the chapter come together, it feels like a real book now.

I'm officially a week behind now. I was supposed to submit Chapter 3 - Controls, today, but instead of I focused on finishing the feedback from Michael. I think it's the right call.

Travel and books

Ah. Just got back from China. I spent last week visiting the Microsoft office in Beijing. The Avalon team is partnering with a group in China to produce some of the control and features in Avalon. It was great to get to meet all the folks over there. So, over the past 3 weeks I've spent 1 in LA, 1 in Seattle, and 1 in Beijing. It's nice not to have anything on the radar.

except...

The deadline for the book is fast approaching. I have due dates every couple weeks for the rest of the year. I've decided to declare October to be "The Month of the Book". I'm planning on spending 5am-7am each day, 7pm-10pm three times a week, and Sundays on the book. Hopefully this will give me enough time to push through finishing up. The first chapter is due this week (which I've already written, just have to finalize it).

Some book work

In midst of the PDC fire drill, I'm trying to make a little progress on the book (I stress little). Today I got a couple hours in - producing ~8 pages. I finished up my section on list controls and almost got done with editors, just a little bit left on ink. The controls chapter is definetly getting beefier than expected. Originally I budgeted 36 pages for it, I've written about 40 and I still have a a couple more sections to go.

Yes, I'm still writing the book

Over July 4th weekend we went up and stayed at a great place in the San Juans... Wood Duck Ponds. While there I got in 15 or so more pages. I've been able to work in a couple pages here and there also. I'm planning on bringing my laptop with me on vacation and continue working on the book. Hopefully when I get back I'll be all up to speed.

I'm working on the Data chapter right now - which is growing a bit out of control. I think I'm going to let it grow uncontrollably, and then go back in and whittle it down to just the key concepts. I really want to keep the entire book to be 350 pages or less. I want something that a normal developer could pickup, read in a weekend, and understand the key concepts in Avalon.

Weekend

Some progress on the book - probably around 10 pages. Not quite as much as I should have. Also, massive yard work. Last sunday I borrowed my neighbor's tractor and since then have been tearing my yard apart. This weekend I put several hours into the yard, change the oil in my truck (first time I've ever changed my own oil!), watched some movies, and had dinner work friends. Quite a busy weekend.

Hmm... book update?

I spent this morning in a local coffee shop (Sorento's in Redmond Ridge) working on the book. Made some progress, but mostly I just realized how far behind I've gotten. Between work, vacations, and "life", I've only managed to get 11 pages done since May 17th. I budgeted 16 pages a week, so that means I'm *way* behind. The only saving grace is that I was slightly ahead before, so I'm not totally in a cave.

I've decided to work on my book while on vacation this summer, so hopefully that will help make up for the slip.

Weekly book update

I'll try to do a book update once a week...

This week I made moderately good progress, even with the distraction of Python. I got the first two chapters (well, really 2 & 3, but i'm starting with 2... you get the idea) mostly done. They each have another couple pages to write, but I'm getting into this mode of wanting to jump around a bit to write the section that interests me the most. Another piece of advice I got was to "just write". Instead of forcing myself to write something that I"m not excited about right now, I'm letting myself jump around to keep making progress every day.

I have around 67 pages of content, so I got through about 17 pages this week. My goal was 16 pages a week, so I'm on track.

I've started playing with the section about visuals (2d, 3d, etc), and I'm running into a problem with Word as my document editor. I find I can't capture the quality of Avalon in Word easily (lots of screen captures, etc.). I'm trying to think about how to integrate Avalon into my document workflow...

Yes, procrastination

Yes, that was my latest procrastination from writing...

Application Model chapter, almost done

I've got a few more pages to go, but I'm through the meat of the application model chapter. The last section I have is on some details around CAS and express applications, but first I need to get IIS installed on my home box to try out some stuff.

I printed out my manuscript on the 8th, it's about 65 pages long. However a lot of those are blank or placeholder pages, so I would say I have around 50 pages of content. But it feels like it's becoming a book. It's weighty enough that I can't really say it's just a document anymore. I really like the tactile feedback of the paper, I'm going to have to set a limit on how often I print it out or blow through an ink cartridge a week.

Procrastination

I was going to link to this, but figure it could wait until tomorrow... oh, uhm, well...

Mike Pope sent a great link to a an essay by John Perry on procrastination.

Ed's defense of Navigation

In response to my post yesterday, Ed fires back with some good points about user model, window management, and familiarity...

"While there are tons of sexy features coming in Avalon, my money is on navigation as the single most important feature. Sure, the MIL, simple 3D, styling, declarative design, great tools, interop, etc, are all cool, but navigation is what Windows client programming is most sorely missing today and will benefit most from in Avalon." [Ed Kaim]

Styling, Navigation, and writing

This weekend was fairly productive, although not as much as I would have liked. I got through around 10 pages of content, and I really had wanted to get 12 or more done. I mostly finished my section on Navigation, with just a couple more pages on Express Applications needing to get finished when I fix some problems with my install.

A couple interesting realizations I've had over the last couple days... First, styling isn't nearly as central to the story of Avalon as I first thought. With some changes coming in the new CTP, you have the ability to set a template (aka visual tree) directly on an element. Which meant, from a story perspective, you get to incorporate templates directly inline with the controls section. Makes for a much better story, and hey, it actually is pretty usefull!

Second, I had an interesting conversation with Mr. Sells regarding the relative importance of navigation for application authors. It's been such a central part of the whole "Best of Win32, Best of the Web" spiel that we've been talking about for so long, I hadn't really dug into the real motivation for what it helps with. There is the obvious thing - leveraging people's experience with web navigation in your application. Really bringing that web user experience to desktop applications. But beyond that, why did web navigation really add value? I'll have to think about this some more - I have some ideas but I want to spend some time on it.

Lastly, writing is real work. I keep finding myself looking for excuses not to write. I'll get stuck on a particular section, and hey!, the lawn needs to be mowed (well, it really did). This working from home thing is hard. The number of distractions that you have at your home is huge, and without the discipline of always working from home, it is way too easy for me to go off and do something else. I need to figure out a way to keep on track.

The book - "Programming Avalon"

OK, a progress report on the authoring...

First, I submitted my chapter by chapter schedule for the book. Ten chapters (I wanted 7, but the Overview, Interop, and Base Services pushed me over the limit).

  • Chapter 1: Due 12/15 (yes, this is the last chapter i'll write)
  • Chapter 2: 5/27
  • Chapter 3: 6/13
  • Chapter 4: 10/4
  • Chapter 5: 10/13
  • Chapter 6: 10/25
  • Chapter 7: 11/1
  • Chapter 8: 11/7
  • Chapter 9: 11/17
  • Chapter 10: 12/2

My target for the book is ~350 pages. I'm taking some advice to heart - make the book as short as possible, but no shorter (with appologies to Albert).

I have approximately 25 pages written to date. My goal is to try and do about 20 pages a week. I'll have ~6 weeks off for a long vacation this summer, and ~4 weeks off for the PDC. The goal is to sim-ship the book with the release of Avalon.

I've created a new category on the blog "Programming Avalon" for future posts about the book.