January, 2006

Posts
  • Eric Gunnerson's Compendium

    Collaborative development, pair programming, etc.

    • 9 Comments

    There have been some interesting discussion on our internal "agile" alias around pair programming, with some advocates and some skeptics.

    I wrote something in response to one of the skeptical posters, who (to paraphrase badly and perhaps miss his point) said that he was an introvert and preferred to work alone. Not that I'm advocating forcing something like pair programming on anybody.

    Here's what I wrote, slightly edited to protect the innocent.

    *****

    The introvert/extrovert concern is an interesting one. I like to be left alone at times, and I'm also a big fan of flow state.
     
    But I'm also pushing for us to *experiment with* pair programming in our next cycle. Why?
     
    Well, I've been on a lot of projects in my career, and I see the same bad things happening over and over again. Code reviews that don't happen. Important components that one or fewer people on the team understand. Overly grandiose architectures. Re-inventing the wheel. Solutions looking for problems. Bad bugs that are really expensive.
     
    Who is at fault? Well, we are.
     
    For example:
     
    You've just finished adding a new feature, and to do so you had to do a bit of re-architecting to fit it in. Do you ask one of your co-workers to review what you've done before you check it in?
     
    Reasons you get the review
    1. It's the right thing to do
    Reasons you skip the review
    1. You're an introvert. Given the choice between personal interaction and working on something new, you usually choose something new.
    2. Your co-worker is also an introvert.
    3. Nobody really understands your code because you're the only one who works on it, so the review may not give useful feedback
    4. You have to get up, leave your office, find the person, and bring them back. Lots of time, and they may not be there.
    5. You get evaluated on the features you produce and don't feel review pain because of the bugs in your code.
    6. It's early/late, and you're by yourself
    7. You don't want people to say bad things about your code.
    There are a lot of factors pushing you to do the wrong thing, so it's not surprising that the right thing rarely happens.
     
    So what about TDD? Well, I think TDD is a great way to get code that has fewer bugs in it, and I don't underestimate the value in that. But TDD doesn't address code maintainability issues - you can still write overly grandiose and poorly factored code using TDD. You can still write code that is inconsistent with code elsewhere in the project, or using the wrong library. You can still spend hours trying to figure out something where the group knowledge could have solved it in 5 minutes. And - as I am chagrined to admit - I can still write code that should be under TDD but isn't because it wasn't convenient.
     
    I don't think that collaborative development - by which I mean anything from co-location in a big room to pairing - is a silver bullet that is going to solve all these. But I think that it can make a pretty big dent. And as a company, I think we have to figure out a way to stop producing big legacy codebases that nobody wants to work on.
  • Eric Gunnerson's Compendium

    Regex 101 Exercise I6 - Remove font directives from HTML

    • 10 Comments

    Regex 101 Exercise I6 - Remove font directives from HTML

    Remove all <font…> or </font> directives from an HTML string.

  • Eric Gunnerson's Compendium

    Devo 2.0

    • 11 Comments

    I came across a site for a group doing covers of Devo songs.

    That by itself only rate a 5 or so on the weirdness scale. The weird thing is that

    a) It's a kids group, of undisclosed age, though they look like 12 year olds to me.

    and

    2) It's backed by Walt Disney Records.

    I listened to a couple of their on-line videos. I tried watching them, but it's pretty painful - their actions on the video bear only a modest relationship to what's happening in the audio track, though I suspect that there are some sync problems between the two as well. The musicianship is adequate - it's not like the typical Devo song requires mad skillz - but the mix is the typical kid-pop over-smooth mix, without any real edge to it, which kindof misses the point of the music. And I came across at least one gratuitious lyric substitution in "girl u want".

    On the other hand, I'm mindfull of what Wayne's World did for Queen's music, and hoping that this will "expand the horizons" of some newer music listeners. So, I don't know what to think. It could be a lot worse.

    [Pre-updated: on looking at the official Devo site, I came across this:

    DEV2.0 is a strange, Corporate-Feudal experiment that attempts to bring the original DEVO music sensibility to children in the 5 to 8 year old demographic range.
    ]

    Here's the site. So, what do you think?

  • Eric Gunnerson's Compendium

    Regex 101 Discussion I5 - Remove unapproved HTML tags from a string

    • 16 Comments

    When accepting HTML input from a user, allow the following tags:

    <b>

    </b>

    <a href=…>

    </a>

    <i>

    </i>

    <u>

    </u>

    and remove any others.

    ******

    My first comment is that you should be very careful when you do this sort of thing, because if the user can slip script by your filter, they can execute code on your server. Which is bad. Some attacks exploit html escape characters so that what you see may not look like "<script>".

    So be forewarned, and forearmed. Or lower-backed, it doesn't really matter which.

    My approach is going to match all HTML tags, and then guard against the ones that I don't want to match. So, I start with:

    <.*?>

    as my initial match. I'll then refine it so that it won't match the good tags, so I can use replace on the bad ones. I'll start by not match <b> and </b>:

    <                        # opening <
      (?!                        # negative lookahead
       (b|/b)                      # b or /b
      )
      .*?                    # match between <>
    >

    What does that mean? Well, negative lookahead means "try to match the pattern at this point. If you do, the match fails". It doesn't eat any of the characters when it does this. In this case, it will try to match "b" or "/b" inside of the <>, and if it can, it will fail. If it can't, it will succeed.

    It's very much like the ^ and $ anchors - the match can only continue if there is a specific condition that is not met. There are both positive and negative variants of lookahead and lookbehind.

    Adding the other tags is pretty simple:

    <                        # opening <
      (?!                        # negative lookahead
       (

        b|/b|                      # b or /b
        i|/i|                      # i or /i
        u|/u|                      # u or /u
        a\s+href.+?|/a             # a href= or /a
       )
      )
      .*?                    # match between <>
    >

    Doing the right thing with the string inside the "<a href=...>" is left as an exercise to the reader.

  • Eric Gunnerson's Compendium

    Scrubs

    • 6 Comments

    I don't usually write about popular culture, partly because it's a bit off-topic (yes, I know, I'm not exactly known for staying on topic in a single post, much less for producing a coherent blog experience, though I did read yesterday that it's easier to eat a banana if you open it from the bottom by squeezing, and was delighted to find that that was true, at least on the a-bit-too-ripe bananas I had, though further experiments will be required on bananas that are perfectly ripe, which, by my estimation, is not "fleck with brown and has a golden hue", which is stage 7 on the official Chiquita ripeness scale - the optimal banana is stage 6), but I'm going to make an exception this time.

    Good comedy writing is rare, so when I come across something that I like I stick with it. Scrubs was great the first season, but has wavered a bit in previous ones, but this season is back on track. A recent episode had a "Wizard of Oz" theme, but mostly managed to make it subtle rather than overt. The best scene in the episode, however, doesn't have to have to do with that theme at all.

    As part of a pan, the long-suffering hospital lawyer Ted is seen through a window singing "Maniac" from the 1983 movie Flashdance with his barbershop quartet. That's the kind of quirky thing this series does well, and it's only amusing. But about 30 second later, in another pan, we see them continuing the song, and halfway through the pan, Ted picks up a pitcher of water and pours it over his head as he continues singing.

    Brilliant. Not because it's a great comedic reference, but because it's done as a throw-away part of the script, put in there for the enjoyment of the people who will get the reference, but not really set up as a joke. That shows both passion and craft, and you don't get good comedy without it.

    For those of you who didn't get it, there's a classic scene in Flashdance where the dancing character sits on a chair, pulls a chain, and water dumps all over her. So Ted is paying homage to the movie by re-enacting the scene as part of their rendition of the song.

  • Eric Gunnerson's Compendium

    Batch modification in ASP.NET

    • 4 Comments

    I have a page on my website where I have a list of climbs with a checkbox next to each one. I'd like to allow my user to check/uncheck each line and then click "update" to make all the changes at once.

    Is there a way I can easily do this with GridView or Repeater, something else, or will I need to hand-code it?

  • Eric Gunnerson's Compendium

    Feline Cranial Protection

    • 1 Comments
    Protect your cat!
  • Eric Gunnerson's Compendium

    Video for my wife to watch...

    • 4 Comments

    And for other wives, girlfriends or other spousal equivalents.

    Make You Happy Tonight

  • Eric Gunnerson's Compendium

    Regex 101 Exercise I5 - Remove unapproved HTML tags from a string

    • 16 Comments

    Regex 101 Exercise I5 - Remove unapproved HTML tags from a string

    When accepting HTML input from a user, allow the following tags:

    <b>

    </b>

    <a href=…>

    </a>

    <i>

    </i>

    <u>

    </u>

    and remove any others.

  • Eric Gunnerson's Compendium

    Regex 101 Discussion I4 - remove unprintable characters from a string

    • 5 Comments

    Exercise I4 - remove unprintable characters from a string

    Given an input string, remove all characters that are not printable.

    --------------

    Assuming ASCII - or something like ASCII - non-printing characters have ascii values of 31 or lower. You can match them with the following:

               [\x01-\x1F]

    and then user Regex.Replace() to replace each of those characters with an empty string.

  • Eric Gunnerson's Compendium

    Four words

    • 4 Comments

    Four words I never thought I would use together...

     

    Seattle Seahawks Super Bowl.

     

    We Tivod the game since we were up skiing, and just finished watching it. Where did that Seahawk defense come from?

    [Update: I thought this morning that there might be a fifth word to stick at the end of those four...]

  • Eric Gunnerson's Compendium

    Endless Forms Most Beautiful: The New Science of Evo Devo and the Making of the Animal Kingdom

    • 0 Comments

    I picked up this book a few weeks ago when I was at the 'brar.

    I've read a lot of stuff on evolution over the years. I think Dawkins has the position that I most agree with, but his writing is really hard to get through. I've been working on "The Ancestor's Tale" for a few weeks off and on, and while it's easier to read than some of his stuff, it's still really hard work to read. So, I was happy to read something by somebody else.

    Carroll works in the field of what is known as "Evo Devo". No, it's not about this, but about how genes and embryology work together to create an animal. As you probably know, all DNA contains genes, which code for proteins. What you may not know is that at the head of every gene - in the region that has sometimes been labelled as "junk DNA" - are a set of receptors that determine whether a specific gene is on or off. Carroll's thesis - which is well supported by examples - is that it is modifications in these switches that are the primary driver for evolution rather than modifications to genes themselves. This explains how humans and chimps can share 98% of the same genes but be so different. We all share similar toolkits, but they're wired up differently.

    If you've ever wondered "how do the legs know where to grow?", this is a book for you.

    Highly recommended.

  • Eric Gunnerson's Compendium

    Windows DVD Maker - Hub Page

    • 6 Comments

    After you have selected the content that you want to burn onto your DVD, you go to the hub page. It looks like this:

    Dominating this page is the DVD menu preview - a static preview of the menu that you will see when you first play the DVD. On the right is a list of menu styles that you can use. There are quite a few different styles that you can choose from, all of which show the content that will be on the DVD, and all of them with live video. I picked the most simple style, named "Full", which simply shows the main content with clickable buttons on top of it. The content here is from RedVsBlue, which I chose because it looks nice. I'll be talking more about other styles in the future.

    The combo box above the list of styles allows you to choose amongst groups of styles. We expect that other companies (or users) will create their own "style packs", which will show up in this list.

    If you like what you see on this page, you can choose Burn, and we'll go off and make the disc for you.

    If you want to get a better idea of how the disc will look, you can choose "Preview", which will generate an interactive preview. From this preview, you can play all the content, go to the scenes menu and, most importantly, see what how the menu will look with live video in it.

    "Menu Text" lets you change the text that's displayed and how it appears, Customize changes how the menu appears, and Photo settiings are used to modify the slideshow. More on all of those later.

     

  • Eric Gunnerson's Compendium

    Windows DVD Maker - Add pictures and video page.

    • 3 Comments

    I pulled a couple of screenshots off of the current build, so I could talk a bit about how DVD Maker works. The first page that you go to is the "Add pictures and video to the DVD" page, which looks like this:

    On this page, you add the content that you want to be on the DVD and choose the order in which you want it to show up on the DVD. You can also set the title of the disc, and choose which dvd burner you want to use (if you have more than one).

    This screenshow shows the state with two videos added. You can have as many videos as will fit on the DVD. You can also add pictures, which all get placed into a single slideshow. I'll talk about slideshows in a little more depth later.

    Once you've chosen the content, you can then go onto the next page.

    There is an obvious bug with toolbar rendering in the screenshot - the toolbar buttons should have the following text:

    • Add Items
    • Remove Items
    • Move Up
    • Move Down
    • Back to Videos (used when you're looking at pictures in a slideshow).

     

  • Eric Gunnerson's Compendium

    Spousal Injury Loans

    • 6 Comments

    About a year ago, in the fall of 2004, I needed to clean out the gutters on the back of my house. So, I got out my 28' heavy-duty aluminum ladder, and put it up against the roof and climbed up.

    I'm not particularly freaked out by high places, but extension ladders have a special place in my stomach, especially the way that they bounce when you get into the middle of them. I read the Fine Homebuilding forums, and there are lots of bad endings to the stories that deal with ladders, so I'm particularly careful on them.

    To clean the gutter, I have to climb way up, do a section, climb down, and then move the ladder. I carefully lift the ladder to the vertical, pick it up, and walk it over to the next spot.

    Those of you with a physics background may be familiar with the term "moment arm", which is the distance at which a weight operates. So, you have a 24' arm with a weight on it. When the center of gravity moves away from the contact point at the bottom, this produces a torque, which - if not counteracted by the cycling-degraded upper body strength of the holder - moves the top farther away from the contact point, which increases the torque. And so on.

    The best thing to do in this situation is to let go of the ladder, so I held onto it as it speedily approached the ground. Luckily, I had a standoff on the top of the ladder, which caused the bulk of the kinetic energy to be converted into rotation of the ladder, which spun around and whacked me in a manner which can only be described as "upside the head".

    I got a nice bruise on my head, and a severe laceration, which led to a quick trip to the emergency room where I talked about the tour with a PA who had recently ridden in France while she put a lot of stitches in my ear. A *lot* of stitches.

    The point of all this - to the extent that there is a point - is not that ladders are dangerous. It's that on that day, I took out a loan from the spousal injury bank, in the amount of 2.5 units of gore and one visit to the emergency room.

    That loan has been sitting there, accruing interest, for about 15 months. Until last Sunday.

    Sunday was a great ski day - Stevens Pass had had 73.5" of snow in the last week, and during our lesson we skied a lot of great snow. At lunch, my wife said, "I want to ski Corona this afternoon".

    There are lots of things that make a ski run hard. The main factors are:

    1. Steepness
    2. Bumps
    3. Trees
    4. Tightness
    5. Poor sightlines
    6. Bears

    Corona all of these- it's a tight entrance where you can't see the run until you're into it, with lots of obstacles and big bumps. Kim slid into it until she could see better, and made a few tentative turns on the top third.

    Corona is guaranteed to bring out the worst in my skiing, though I did okay on the entrance, sliding over the first bump (there is only one bump at the top - it isn't wide enough for there to be two. Kim was about halfway down when, in the middle of a turn to the right, a bear jumped out of the woods and knocked her off balance. She slid a bit and then landed hard on her left leg. .

    I knew it was a serious fall, but despite her obvious pain, Kim put her skis back on, skied to the bottom of the backside, got on the lift, and the skied down the frontside to the lodge.

    Monday morning was spent at her doctor's office. Monday midday at the Overlake hospital imaging department for ultrasound, and then another 4 hours in the ER getting treatment for a blood clot. And Wednesday morning, up at 5:30, eat breakfast, watch my wife shoot up with Lovenox, and then an MRI appointment. The initial diagnosis is a calf tear, and we'll find out exactly how bad it is when she goes to an orthopedic surgeon, hopefully in the next few days.

    Given what's happened since then, I think I've paid that loan off, and Kim is now the one holding the loan. Perhaps I'll learn how to juggle knives...

    Strangely, there weren't any bear tracks near the site of the fall.

  • Eric Gunnerson's Compendium

    Why didn't I think of that?

    • 6 Comments

    One of the challenges of writing a blog is keeping the writing fresh and interesting. Granting, for the sake of argument, that the writing has ever been fresh and interesting.

    Coming up with good ideas is hard, and I'm really disappointed I didn't think of this one.

    (warning: don't click if it's between the hours of 10:30 AM and 1:30 PM. )

  • Eric Gunnerson's Compendium

    Regex 101 Exercise I4 - remove unprintable characters from a string

    • 3 Comments

    Exercise I4 - remove unprintable characters from a string

    Given an input string, remove all characters that are not printable.

  • Eric Gunnerson's Compendium

    Regex 101 Answer I3 - Expand ranges in a string

    • 6 Comments

    Sorry about the lateness of this one. I had a meeting on Friday afternoon, and then had some things to take care of today. So anyway...

    I3 - Expand ranges in a string

    Given a string like:

    1,2,4,6-9,12,15-17,20

    expand the ranges, so the final string is:

    1,2,4,6,7,8,9,12,15,16,17,20

     

    Answer:

    This is a fun one, because it uses a .NET regex capability that isn't in a versions of regex. If you look at the docs for Regex.Replace, you'll see that there's a version like this:

    public string Replace(string, MatchEvaluator);

    When the regex engine finds a match, it calls into the MatchEvaluator delegate to do the substitution. So, to match a range, we'll use a regex like:

    (?<Start>\d+)\-(?<End>\d+)

     and then, we use the following method as the MatchEvaluator:

    static public string Evaluator(Match match) {
        int start = Int32.Parse(match.Groups["Start"].Value);
        int end = Int32.Parse(match.Groups["End"].Value);
        string[] values = new string[end - start + 1];
        for (int i = 0; i < values.Length; i++)
        {
            values[i] = (start + i).ToString();
        }
        return String.Join(",", values);
    }
      

    Figuring out how that works is left as an exercise to the reader.

    The nice thing about using MatchEvaluator methods is that it lets you create a hybrid of regex and procedural code.

  • Eric Gunnerson's Compendium

    Brainiac on G4TV

    • 2 Comments

    I haven't been a big fan of G4TV since the TechTV marriage - not that I've watched them much.

    But last week I came across the Brainiac Thermite Segment, and a quick search showed me that G4 is showing episodes of Brainiac. I set the TiVo to pick up episodes, and we watched one last night.

    Great show. A little bit like Mythbusters, but a little more science oriented.

  • Eric Gunnerson's Compendium

    Windows DVD Maker FAQ

    • 8 Comments

    If you have a question, please add it as a comment, and I'll add it to this post.

    Questions about Windows DVD Maker

    1: I hope you support HT and Dual Core processors

    A: The short answer is that we are multithreaded and support dual proc. I don't know of any reason we wouldn't support dual-core or HT, but I don't have those so I can't be sure. Having said that, we're I/O bound in some cases, and faster CPU doesn't help.

    2: How will you ensure that people 'own' the content that they record ? How do you know that the photos and other material aren't copyrighted ?

    A: Currently, we honor DRM flags on media that supports it, which I *think* is limited to Windows Media content (I depend on a library for DRM checking). Absent that, we don't do anything.

    3: Will Windows DVD Maker provide an API for other 3rd party applications to use for creating a DVD? Or will it only be an end user GUI app?

    A: Yes and No, depending on how much control you want. You can pass DVD Maker an XML file that tells it what content to use, and optionally have it just go off and burn a DVD based on that content. Or you can use that as a starting point and let the user do some customization on top. We don't provide a full API for people to do what they want.

    4: Is DVD Maker written in managed code?

    A: No. Yes, it is ironic that I spent so much time on C# and then spent a ton of time writing something in C++ code. Everybody on the team is a believer in managed code, and we hope we'll be able to use it for future projects.

    5: I always get “Missing codec” message. What do I need to install to launch DVD Maker in Vista 5270?

    A: Yeah. Weeeell, unfortunately, you need a codec to be able to create the media files on the DVD, and that codec isn't present in the current drops. I can't go into the details - some are confidential, and others I just don't know - but I can say that we should have that resolved when we get to beta. If you're internal to microsoft, there's a link you can follow to get a codec that will work. For the rest of you, I'm sorry you can't see it yet. 

    6: Will you support creating HD-DVD discs?

    A: We won't support it in the initial release. The hardware wasn't there at the time we would have needed to have it, and I'm not sure it's there now. When the whole high-def DVD world settles down a bit, we'll take a look at where things end up, and go from there.

    7: Will DVD Maker run down-level on Windows XP?

    A: Vista is our only target right now.

    8: Followup on question #4. Why didn't you use managed code?

    A: I would have loved to use managed code for the UI part, which is what I own. I won't go into the details, but suffice it to say that it wasn't the team's decision.

    [Update: I've thought about what I can say about this. I don't know all the details of the decision, but the reasons I know are related to decoupling and reducing dependencies.

    I should also note that shipping managed code in an OS is different than shipping managed code elsewhere.]

    9: Will DVD Maker support dvr-ms files? (from Media Center)

    A: Yes

    10: Please tell me that you've hired some (and I hate to say this) "Apple" quality designers to produce the styles for the DVD menus.

    A: I think you're going to be pleasantly surprised with the styles. They're really nice.

    11: Will DVD burning work on XP?

    A: I don't know of any plans to provide down-level support.

    12: Can you specify slide show transitions on a per slide basis, or is there one transition for the whole slide show? Can you adjust the display time for individual photos?

    A: The transition setting is global to the whole slide show. Some transitions (such as wipe) support multiple variations, and DVD Maker will use all the variations, but there is no user control over this. Similarly, the picture time is the same for all pictures.

    DVD Maker is intended to cover the most common scenarios. If you want to use a different transition between each picture and change individual picture duration, you can easily do that in Movie Maker, and burn the result to a DVD.

    13: Is there any way you guys can add the ability to add short captions to the scenes?  (Not a mandatory step, just provide the option to do it if you want)

    A: Our original design provided a lot more control for scenes - you could combine them together, give the names, etc. But without the ability to control where the scenes points start, we decided that the ability to name them wasn't very useful, so we cut the feature. You do get motion video on the buttons, so that will give you some idea of where the scene goes.

    14: When you burn the dvd, can you provide the option to save the encoded files just in case there is an error while buring the disc?  Encoding takes the most time.

    A: This is something else that we considered but it didn't fit into our schedule.

    15: How does the project file support in DVD Maker work?

    A: The project file saves anything that you do in DVD Maker, with the exception of the settings that you make in the options page, which are persisted in the registry. Opening a project file or launching dvdmaker from the command line with that project file is equivalent to launching DVD maker normally, adding the content, and making all the settings.

  • Eric Gunnerson's Compendium

    Regex 101 Exercise I3 - Expand ranges in a string

    • 16 Comments

    I3 - Expand ranges in a string

    Given a string like:

    1,2,4,6-9,12,15-17,20

    expand the ranges, so the final string is:

    1,2,4,6,7,8,9,12,15,16,17,20

     

  • Eric Gunnerson's Compendium

    Fun with gift wrapping

    • 8 Comments

    My wife and daughter have learned to expect strange things when the unwrap their holiday presents. Clothes will never be in the boxes with the store from which they came, and they may not even be in a box at all. One of my wife's presents was in a rather attractive wood-tone vase, and another was inside a partially-filled tube of M&Ms (note that if you use this, the recipient may not open your present for days or even weeks).

    But my best one this year was the copy of "Bullet in a Bible" that I gave my daughter (she didn't get to go the concert because of her young and impressionable mind, so this was the next best thing). I went to office depot, bought a ream of inkjet paper, took it home and carefully opened it (buy one with a paper wrapper if you do this, it will be much easier), extracted the paper, and proceeded to hollow-out an appropriately-sized section in the middle of the paper. Put the DVD in it, put it back in the outer wrapper, tape it shut, and wrap it up.

    This was especially effective because it's not outside of the realm of possibility that I would give her a ream of paper. Perhaps I'll do that next year, and when she opens it, she'll just find... paper...

    Have you done anything like this? Is there a website devoted to it?

  • Eric Gunnerson's Compendium

    Review my book - Winners

    • 1 Comments

    After a painstaking analysis of the reasons why people wanted to review my book (well, Mark and my book...), I have selected 5 winners. To be objective, I came up with the following ranking factors:

    1. Breadth of knowledge
    2. Years of experience
    3. Number of languages known
    4. Previous review expertise
    5. Whether their comment number matched the output of the RAND() function in Excel
    6. Whether they would do a good review

    After considerable thought, I decided on the following rankings:

    1. 0.0%
    2. 0.0%
    3. 0.0%
    4. 0.0%
    5. 100.0%
    6. 0.0%

    But before I announce the winners, I'd like to address one comment, which said,

    # Bribery doesn't seem ethical @ Friday, December 30, 2005 2:03 PM

    Giving out free books seems to slant the reviews in your favor. I'm sure your book rocks, but why not let impartial observers post reviews through the normal process (buy the book first, then post a review)?

    Well, anybody is certainly free to buy the book and then post a review. I'd be happy if you did that. I'd be happy if lots of people did that.

    But it's a fact of life in the publishing business that publishers provide free books to reviewers. I could have requested that those books be sent to people who I know and who are in my target audience for the book. But I'd rather get a broader cross-section, which is why I decided to ask my readers.

    Yes, the people who read my blog have some connection to me, but I don't think it's likely that they will consider themselves beholden just because they got a free book out of the deal. Especially if they got a free book that they didn't find very useful.

    So, just to be clear, the only requirement is that you write an Amazon review. You can write other reviews if you like, and you can obviously say whatever you want in the review.

    So, without further ado, the winners are:

    Piero Giacomelli
    Nanda
    Simone Chiaretta
    Andrew Burrows
    Brian

    I have email addresses for all of you that I will be passing onto Apress. You should hear from them soon.

    For the rest of you, thanks for playing.

  • Eric Gunnerson's Compendium

    Introducing Windows DVD Maker

    • 9 Comments

    For the past 9 months, I've been working on a product for making DVDs. In Vista, this product (feature? applet? wizard? well, pick one...) will allow you to create a nice DVD containing your pictures and video - a DVD that you can watch at home, send to your parents, or enter in a film contest. Assuming, of course, that you have a computer with a DVD burner on it, and your DVD player supports the format you burn (I may get into that a bit in later posts).

    Given where we are with current builds, I'm pretty confident that we will ship with Vista, though it's not clear yet what SKUs we will live in. And, since we haven't shipped yet, any specific details should be taken with a grain of salt (or appropriate low-sodium substitute).

    In this first post, I'm going to talk a little bit about what our goals are, which I hope will give you some insight into why things work the way they do.

    Some of you may be familiar with existing programs for creating DVDs. The full-featured ones are known as DVD authoring programs, and they give their users a lot of control over all the details of the DVD. That control is great if you want it, but it does add a lot of complexity to the process.

    For DVD Maker (and, to be fair, other existing products out there also have the same goal), our goal is to allow users to "Create" DVDs rather than "Author" them. In other words, we expect that a user can select some content, start DVD Maker, and get a nice DVD without having to do a lot of work.

    To make that a "nice" DVD, we'll provide a number of styles that you can select from as a starting point, and a limited amount of tweakability.

    Or, to put it another way, DVD Maker is not an authoring program.

    Oh, and I should also talk a bit about speed. Video consumes a lot of computing resources (disk, processor, I/O), so there are some operations that are just going to take a bit of time, and creating the final DVD can take a long time (ie hours), even if you have a fast system. There will be some optimizations to make things faster, but don't expect miracles.

    So, that's about all for the first post.

  • Eric Gunnerson's Compendium

    Stop inlining...

    • 3 Comments

    If you want to prevent a method from being inlined, add:

    [MethodImplAttribute(MethodImplOptions.NoInlining)]

Page 1 of 2 (26 items) 12