Life in my own company

Its all up to me.
posts - 137, comments - 194, trackbacks - 109

My Links

News



Twitter



Tag Cloud

Archives

Post Categories

Play

Work

Tuesday, November 25, 2008

Windows?

So we're having a terminology discussion with co-workers of mine.  The word, "Screen" comes up, and one of my co-workers says, "It's not a screen!  That's the thing you look at.  It's a form!"

Instant response from another co-worker, who has a gift for this kinda thing:  "You're using a program called Windows and you can't see through it, so what the hell!"

Technorati Tags: ,

posted @ Tuesday, November 25, 2008 10:19 AM | Feedback (0) |

Monday, October 27, 2008

Microsoft PDC

I'm at PDC, and glad I am as well.  First, I need to thank the geeks with blogs people for the AWESOME t-shirt.  Well done.  The site looks great.

Second, this whole cloud thing that you're reading about, if you're not here, is pretty cool.  I agree with MS, this will be the big thing of the future.  I just wish we knew what they were thinking for cost.  Microsoft Azure will be a big deal.  They've spent over two years of development on it, torn apart SQL server to make it happen, and are running some of their own services through it.

If you have any kind of distributed app, azure will be a great choice for it.

People are comparing it to the Amazon offer, but it's really much more.  It's not just hosting your applications, its a new development paradigm that lets you abstract out hardware from your application.  Basically, you don't think about server provisioning, you build your app and it's rules and then publish the app to the "cloud."  They worry about how many servers, what bandwidth, etc. that you need.

One thing that was missing was the "auto" provision opportunity.  As load increases, you have to actually go out and tell them to increase your capacity.  I'm sure they'll get there eventually.

Anyway, for more info, go to www.azure.com.  It's going to be big.

Technorati Tags: ,

posted @ Monday, October 27, 2008 11:41 PM | Feedback (0) |

Saturday, October 25, 2008

Recent 20/20 by John Stossel

I've avoided 20/20 in the past because they've been pretty liberal.  However, the recent 20/20 by John Stossel was outstanding.  It wasn't "Republican," it wasn't "Democrat," it was just a bunch of reality about how crappy our government currently is.  If you haven't watched it and care about politics, do yourself a favor and go spend an hour viewing it.  It's really quite good.

Part 1, part 2, part 3, part 4, and part 5.

Technorati Tags:

posted @ Saturday, October 25, 2008 10:03 PM | Feedback (0) |

Wow, this is scary

I'll be honest, Obama/Biden scares me.  His "spread the wealth around" comment is certainly Marksist.  Now, there's an interview by a reporter from WFTV that asks Biden some tough questions.  Obama's response,

"This cancellation is non-negotiable, and further opportunities for your station to interview with this campaign are unlikely, at best for the duration of the remaining days until the election," wrote Laura K. McGinnis, Central Florida communications director for the Obama campaign, according to the Sentinel. (as quoted from fox news).

So, he's saying that either the press coddles him, or they'll not be able to talk to him.  First, tax cuts for people who pay little tax to spread the wealth around, now destruction of the free press.  Oh wait, McCain beat him to that with campaign finance reform.

Ah crap, we're screwed.

Technorati Tags:

posted @ Saturday, October 25, 2008 10:00 PM | Feedback (2) |

Thursday, September 25, 2008

A good concept gone bad

I like the new ribbon features of Microsoft Office, although sometimes finding things can be a little difficult, since I've been using office and wordperfect for years and years.  I recently bought PowerDirector because windows movie maker just wouldn't do what I needed to do.

Upon opening the app, I see nice looking UI, complete with what appears to be a ribbon interface, at least until you click on the "Home" button, and notice that there aren't any ribbons.  When you click on the "Home" button you get this:

image

 

Call me crazy, but I think that actually makes your life HARDER, not easier, since now you have the problems with mouse over, missing menus, etc, and I can't just go straight to "Playback," instead, I have to go to the home button and then to playback.  In the words of Maxwell Smart, "Missed it by that much."

Final gripe, I wanted to split a long movie into shorter clips.  I went through and split out all of the clips that I wanted, then hunted for hours for a feature that would take the clips and save them independently, or at least let me put them in a library and then produce them one by one.  No luck. :(  I had to clip, trim, produce, rinse repeat.

Oh well, it's better than Movie Maker.

 

Technorati Tags: ,

posted @ Thursday, September 25, 2008 4:33 PM | Feedback (0) |

Friday, August 29, 2008

Political Math

I've maintained that we're hosed, no matter who you vote for, but now there's mathematical proof that regardless of how you vote, you're voting for a white liberal male.  Here's the math.

 

1 Liberal Black Male + 1 Liberal White Male=1 Liberal White Male + 1 Conservative White Female

 

So first, Black Male and White female cancel each other out.  They're basically the same thing--both minorities, both oppressed citizens of these united states.  That leaves us with:

 

1 Liberal Black Male + 1 Liberal White Male=1 Liberal White Male + 1 Conservative White Female

 

Of course, 1 Conservative and 1 Liberal cancel each other out, leaving:

 

1 Liberal Black Male + 1 Liberal White Male=1 Liberal White Male + 1 Conservative White Female

 

And there you have it.  1 liberal white male=1 liberal white male.  Now if McCain had been a conservative, you'd be voting for nothing, but as you can see, you're clearly voting for one liberal white male, no matter how you look at the equation.  It'll be fun to watch!

Now I'm sure this equation could be extended, and I know you might question my math, but I thought it was interesting . . .

Technorati Tags:

posted @ Friday, August 29, 2008 11:12 AM | Feedback (2) |

Friday, August 15, 2008

Windows Vista Backup

O.k., I'll admit, the first time that I used windows Vista backup, I was very underwhelmed, but it's grown on me, and now I'm a huge fan.  On Monday, I received a new hard drive from Dell.  It's bigger and doesn't make strange clicking and stalling noises like the old drive did. :)  I was pretty certain that the old drive was going to go.

To swap out the drives, I plugged in a USB drive with sufficient capacity and did a windows backup complete pc backup.  Once that was finished, I plopped in the new drive and my Vista installation DVD.  After the restart, I selected the Restore Vista options, found my complete backup and started the restore.  Once it was done, I rebooted and was up and running again.  That was it!  It just worked!  I spent less than 10 minutes (not counting actual backup time) on completely replacing the drive.  I've NEVER had a backup and restore go that smoothly.  In the past, I've always had to install the OS before I could get to the backup, and then it'd be a hassle because of drivers and such, and the final restore wouldn't quite be the same.  This restored things EXACTLY the same.

I did have to reauthorize Diskeeper, but that was the only thing that I had to touch.

Knowing that I can mount the complete backup using virtual PC is also nice.

Technorati Tags: ,

posted @ Friday, August 15, 2008 4:39 PM | Feedback (1) |

WCF Serialization and the empty object bug

Ran into a serialization problem with WCF the other day that was rather interesting to find and fix.  It wasn't a problem with WCF, in the end, but rather with what we were telling WCF to do.

So we have some complex entities that we're shoving through the serialization layer.  We also send through lists of these entities, and the list may have references to itself.  To keep our list sizes small, we've implemented a DataContractSerializerOperationBehavior where when we create the data serializer, we set preserve references to true (it's just a variable below, but its set to true elsewhere):

        private static XmlObjectSerializer CreateDataContractSerializer(Type type, string name, string Notification Services, IList<Type> knownTypes)
        {
            return new DataContractSerializer
            (
                type, 
                name, 
                Notification Services, 
                knownTypes,
                maxItemsInObjectGraph /*maxItemsInObjectGraph*/,
                ignoreExtensionDataObject/*ignoreExtensionDataObject*/,
                preserveObjectReferences/*preserveObjectReferences*/,
                surrogate/*dataContractSurrogate*/
            );
        }

To make things more complicated, we have some custom lists of our entities that have properties on them.  As you may not know, when serializing a custom collection, the object is treated as a collection and any custom properties are ignored and are not serialized, even if you mark them as a DataMember.  Rather annoying.  To get around this, we implemented an IDataContractSurrogate, which you can see is passed into the data serializer above.  In GetObjectToSerialize method of the surrogate class that we created, we look to see what type we're trying to serialize and if it's one of our custom collections, we create a new instance of a surrogate that has an internal list, but is not a collection class itself, populate it with the contents and properties of the object that is to be serialized and then pass the surrogate back to the serializer.  Since our surrogate class is not a collection, WCF detects it correctly and serializes it correctly.  Then, on deserialization, we create a new instance of the collection, set it's properties, and then iterate through the surrogate's list and add the items to the new custom collections list.

Everything's happy, right?

Nope.  Our custom collection requires that objects of the same type are added to it.  The objects themselves have a Name that tells us what they are.  Our objects also have children that can be of the same type as the parent and are stored in the same type of class.  More precisely:

<Set>
    <SetItem Name="AParentThing">
        <Children>
            <Set>
                <SetItem Name="AChildThing">
                    <ParentSetItem ref="AParentThing[0]"></ParentSetItem>
                    ... (Perhaps even more sets and set items)
                </SetItem>
            </Set>
        </Children>
    </SetItem>
    <SetItem Name="AParentThing">
        ...(May have many layers)
    </SetItem>
</Set>

The problem appeared when we tried to serialize the cases where a child set referred back to a parent set.  We were getting weird errors, caused by the constraint that required that all items in a set be of the same type.  For some reason, the Name wasn't being serialized, or so we thought.  And what was weird is that it worked right most of the time, but then would occasionally fail, and what's worse, if we ignored the error, everything would work like we thought it should.  We were sure we'd just found a bug with WCF.

Turns out that name just hadn't YET be serialized.

I'm not sure about the order of serialization with data members, but it appears to be pretty arbitrary, unless you set the order on the data member.  We'd done two things incorrectly.  1.  We didn't set IsRequired on all of our DataMembers, and since this is a version 1 product, all of our interface elements should be present.  In future versions, maybe that'll change, but for now, they should all be there.  2.  We assumed that the deserialization of child collections wouldn't happen until after all of the members of the entity containing that collection were serialized, which is not the case.  As a result, the collections, which had a reference back to the parent, would attempt to deserialize BEFORE the name property had deserialized.

To fix, we changed all of our data members to look like this:

        [DataMember(Order=0, IsRequired = true)]

Note that order is 0 based.  At first, we only put the order property on the Name element, but that just caused it to fail every time, since WCF appears to serialize everything without an order first, then follow the order priority second.  After updating the other methods to also have an order, the problem has disappeared.  The name is always serialized first.  Note however, that even though the message contains the data, the resulting object may not contain the data.

Fun, Fun, Fun!

Technorati Tags: ,,

posted @ Friday, August 15, 2008 11:38 AM | Feedback (1) |

Wednesday, July 30, 2008

How to annoy your ScrumMaster

As a ScrumMaster, these are some of my pet peeves, in no particular order:

  1. Come late to meetings.  Better yet, don't show up to the meeting, don't let anyone know that you're going to miss the meeting, and then get grumpy when the ScrumMaster asks you to not do it again.  After all, the team doesn't really need to know what you're doing.
  2. Ignore the priority of stories set by the product owner.  He loves not knowing what's going to be completed at the end of the iteration.
  3. Have side conversations during iteration (sprint) planning, or send chat messages on your computer.  Then, when asked a question about what you should have been paying attention to, have a lost look and say, "Could you repeat that," meaning the last 10 minutes of conversation.  Rinse, repeat.
  4. Prefer e-mail for communication.  After all, you don't have to bother talking to a human being and you can do nothing while you wait for a reply!  Heaven.  Why would someone use the phone, an office visit, a chat, screen sharing or any of those other pesky interactive conversation mechanisms.
  5. Never ask for help, and if you do, make sure you always ask the same team member, even if others might know more.  It'll make person your asking much less productive, since he'll have to do your work and his work too!  And if you don't ask for help, you can do nothing and blame it on not being up to speed!  Teamwork, Shmeemwork.
  6. Own your stories, and by own, I mean OWN.  You touch my story, you die!  Then, at the end of the iteration, when you didn't get it completed, make sure they knew it was because you were struggling with a piece of the story.  Make sure you don't act like you feel bad to the team or anything, after all, they should have know that you wanted help, even when you told them to mind their own business.
  7. If you can think of something cool to add, add it now.  After all, there's no time like the present!  And then, when the team misses the iteration, you can say, "But we have a cool XYZ feature now!"  Who cares if you didn't need that feature and it wasn't a priority to the product owner.  They'll get over it.
  8. If you really, really, want a feature to be implemented in iteration, make a defect, and set it to the highest priority available.  So what if it's way beyond the scope of what the team committed to do!  They'll get over it.
Technorati Tags: ,

posted @ Wednesday, July 30, 2008 5:27 PM | Feedback (0) |

Wednesday, July 23, 2008

Great article on Bad Apples

Read this article today.  We've had a couple of bad apples on our team so far, and they caused quite a bit of grief before they were removed.

On an agile team, the team can't function if the apples are bad, and a single bad apple can cause much grief for the entire team.

Technorati Tags:

posted @ Wednesday, July 23, 2008 1:37 PM | Feedback (0) |

Powered by: