Geeks With Blogs

@UMLGuy
  • UMLGuy @LeeHate are you still selling art? I would like to license Vodun Bokor for book/ebook cover. It's incredible! You're very talented. about 708 days ago
  • UMLGuy @kzoomoo Indeed. You know 2 of my influences. Characters have multiple influences, but Father and Daughter partly inspired by your family. about 1095 days ago
  • UMLGuy @SteveAndrews That is awesome news, man! You worked hard for that. about 1095 days ago
  • UMLGuy The Night We Flushed the Old Town in Digital SF V2. Kindle: http://t.co/8cVA6zw It's about ecological disaster. And beer. about 1111 days ago
  • UMLGuy @kzoomoo Sounds like a very happy birthday! Your kids are great, as always. about 1245 days ago
  • UMLGuy @julielerman You're in Bangalore and Bali... and you need cheap tickets to feel lucky? I would call that great fortune in itself. about 1245 days ago
  • UMLGuy So weird watching Dr. Gregory House M.D. play Bertie Wooster. Same facial expressions convey completely different meanings. about 1246 days ago

News LoungeWare is now available. The UML Guy T-Shirt
Ulterior Motive Lounge UML Comics and more from Martin L. Shoemaker (The UML Guy),
Offering UML Instruction and Consulting for your projects and teams.
November 2008 Entries
Ship It On The Side

Curtis Gray informs me that the first Ship It On The Side podcast is now published.Listen to us talk about building and shipping great software while holding down day jobs.

 

Posted On Saturday, November 29, 2008 3:59 PM

Quality is NOT Free
A business classic tells us that Quality Is Free. The title is intentionally provocative: no, quality isn't free, it just pays for itself. But first, you have to pay for it. And that, unfortunately, is where we fail in the quality game so often. Corporations seem addicted to the practice of compartmentalized budgeting, or what I think of as "bucket budgeting": you've got a bunch of different buckets you pour money into at the start of the fiscal period; and each bucket can only be spent on a particular ......

Posted On Friday, November 28, 2008 10:54 PM

Thanks, comment spammers!
Comment moderation is now activated. Thanks, comment spammers!

Posted On Wednesday, November 26, 2008 10:46 PM

Ulterior Motive Lounge Episode 25: The UML Guy's Terms
Note: This was scheduled for tomorrow (hence the date drawn on the strip); but due to the U.S. Thanksgiving holiday, I'm releasing it a day early. Continuing The Project That Time Forgot, a UML case study in comic strip form... (Click picture for a larger image.) So in the previous Commentary, I wrote: This Episode is all introduction. It doesn't include much UML content, and there's not much to add yet. So naturally, this Episode has no UML content. But it was necessary to set the stage and to introduce ......

Posted On Wednesday, November 26, 2008 7:04 PM

Ulterior Motive Lounge Episode 24: The Project That Time Forgot
Starting today in Ulterior Motive Lounge: a new UML case study. (Click the picture for a larger image.) And so it begins: a "simple" software project gone awry, and the slim hope that modeling will help us to understand it better and get it back on track. And if you think you've seen this story before and you think you know where it's going, take a closer look at that "hex sign" in the dirt: There's something mighty peculiar going on on The Island... So here's how this case study is going to work. ......

Posted On Monday, November 24, 2008 7:51 PM

It’s All About Communication
Note: This was originally chapter 13 of my book, UML Applied: A .NET Perspective from Apress. My editor and my tech reviewer read it; and both said, "We like it; but what does it have to do with UML?" So I came up with a more on-topic closing chapter. But I still like it. It sums up my view of the software development profession quite nicely. So I thought I would share it here. Somewhere, deep in our prehistory... A man tells a story, a story of a hunt. Perhaps it's a hunt he's planning. Or perhaps ......

Posted On Friday, November 21, 2008 11:27 PM

Ulterior Motive Lounge is a Bit Lost Today...

We are now entering the Mutara Nebula...

Spent all day on other projects. Look for the first Ulterior Motive Lounge case study starting Monday!

 

Posted On Friday, November 21, 2008 9:00 PM

Doctors are the Stupidest Users!
Note to doctors: No, I don't really mean that title. I use provocative titles to get attention and capture an attitude. What? What are you doing? You're going to stick that thermometer where? Doctors are the stupidest users. If you've ever had to write software for doctors, you've discovered this: the phrase "RTFM" was made for doctors. They just can't be bothered to read even the simplest help docs. They can't bother to learn even simple tools that a bright grade-schooler can master. OK, that's ......

Posted On Thursday, November 20, 2008 10:33 PM

Ulterior Motive Lounge Intermission 3: Plan for the Future, Learn from the Past
UPDATE: My word, what a lot of typos! I blame the bright sunlight and the glare it created on my Tablet PC. And I wasn't gonna move, because bright sunlight in Michigan is a rare treat right now. Fixed! In our last Episode, The UML Guy and Geek Girl explored how State Diagrams help you to model the rich range of flow in a user interface. Today, The UML Guy has an announcement. (Click picture for a larger image.) To this point, the Lounge has been somewhat random and piecemeal. (In other shocking ......

Posted On Wednesday, November 19, 2008 1:55 PM

欢迎您, 尊敬的中国客人.
If Babel Fish hasn't let me down, that title should read, "Welcome, honored visitors from China!" But if it doesn't, I couldn't tell you. (UPDATE: John Workman and a Chinese friend have provided a better translation. Thanks!) Ever since I added Google Analytics stats to the Ulterior Motive Lounge archive, fully two-thirds of my visitors there have come from China. And tonight, someone found my Geeks with Blogs site via this referral string: http://google.cn/search?q=u... Yep, that's ......

Posted On Tuesday, November 18, 2008 12:55 AM

Requirements Night at Ulterior Motive Lounge
Inspired by Steve Ballmer, here's some cheerleading for the most important part of the software development process... UPDATE: Here's a larger, more legible WMV version. Once upon a time, I wrote a book. Or rather, I wrote all but one-half of chapter 3 of a book: Requirements Patterns & AntiPatterns, sold to Addison-Wesley. For various reasons -- partly lost motivation when my Dad died, partly needing to put food on the table, partly just not finding time -- I've never been able to finish chapter ......

Posted On Monday, November 17, 2008 1:01 PM

Quantity IS Quality
On a mailing list where I hang out, a participant recently said (paraphrased): “He believes that popularity proves quality. I believe that there is almost no correlation between quality and popularity.” We hear this sort of thing all the time. There’s an implication among self-appointed elites that “the masses” — i.e., everyone who’s not them — just can’t recognize quality. It’s assumed that “popular” is proof that something is bad. You see this attitude in film snobs who insist that an Oscar nomination ......

Posted On Saturday, November 15, 2008 6:20 PM

Concern vs. Worry vs. Obliviousness
Concern Worry Obliviousness "Has this happened yet?" "Oh, no, what if this happens?" "This could never happen." "How likely is this to happen?" "Oh, no, what if this happens?" "This could never happen." "How can we tell if this happens?" "Oh, no, what if this happens?" "See no evil, hear no evil, speak no evil..." "Can we prevent this from happening?" "Oh, no, what if this happens?" "This could never happen." "What will be the impact if this happens?" "Oh, no, what if this happens?" "No problem..." ......

Posted On Saturday, November 15, 2008 5:56 PM

The Department of Motor Vehicles and Clipboards
All right, I've had enough. It's time for me to issue a decree: Henceforth, programmers who wish to use the clipboard must be licensed in the same fashion as automobile drivers are licensed by the Department of Motor Vehicles. (Yes, yes, we call it the Secretary of State's Office here in Michigan; but more people know it as the DMV.) 1. Before you may use the clipboard to copy code, you must take 20 hours of classroom instruction on how not to use your clipboard. 2. Before you may be fully licensed ......

Posted On Saturday, November 15, 2008 5:55 PM

Dr. Strained Memory or: How I Learned to Stop Worrying and Love Compact Framework Memory Management
OK... So why has my DODO been incalculable? Well, because we've been chasing down memory problems in our .NET Compact Framework 2.0 app that runs under Windows CE 5.0. And if that just sent a chill down your spine, then you've probably been here before. You have my sympathies. If you haven't been here before but you're planning a CF/CE app: Be afraid. Be very afraid. The following is a brief summary of what we've learned (the hard way) about memory management in a Compact Framework application. "In ......

Posted On Saturday, November 15, 2008 5:53 PM

Don't Make Me Send Yoda Over There to Whack You With a Stick...
15.5 hours in to what I hoped would be a 5 hour day... Working the last major bug on the bug list... A bug that has literally consumed over 200 hours of development spread among various team members... A bug that our best minds looked at, and looked at, and looked at, to no avail... A bug that got the project lead so frustrated, he did the programming equivalent of taping electrical tape over the blinking VCR clock... And today, the black-electrical-tape patch started showing massive bugs of its ......

Posted On Saturday, November 15, 2008 5:49 PM

Take Pity on the Poor Maintenance Coder
It might be you.

Posted On Saturday, November 15, 2008 5:47 PM

Process is a Lie
Process is a lie. All of it. If you're spitting and fuming because you believe in software development processes, bear with me. I have a point to make, and you'll enjoy it. If you've never believed in software development processes and you're cheering me on, take a seat and a deep breath. I have a point to make, and you're not gonna like it. But you need to hear it. Process is a Lie? Process is a lie, because process is a plan for how we'll work. And plans are lies. All of them. A plan says, "This ......

Posted On Saturday, November 15, 2008 5:44 PM

The Horse and the Stag
AT ONE TIME the Horse had the plain entirely to himself. Then a Stag intruded into his domain and shared his pasture. The Horse, desiring to revenge himself on the stranger, asked a man if he were willing to help him in punishing the Stag. The man replied that if the Horse would receive a bit in his mouth and agree to carry him, he would contrive effective weapons against the Stag. The Horse consented and allowed the man to mount him. From that hour he found that instead of obtaining revenge on the ......

Posted On Saturday, November 15, 2008 5:42 PM

Aesop’s Fables of Software Development
2500 years ago, a man named Aesop gathered the accumulated software development knowledge of the ancient Greeks, and presented the knowledge to history. However, since so few people in the intervening millennia knew anything about software, they misinterpreted Aesop's lessons as simple morality fables, rather than as hard advice for software managers. Now you can learn what Aesop had to teach us about software development processes and management. The pioneering programmer known as Aesop is still ......

Posted On Saturday, November 15, 2008 5:39 PM

Murphy’s Dictionary: Short Cut
Short Cut (n): Something that will take longer and cost more, but might gain some immediate goal. (Odds of gaining that immediate goal average around 7.3%.) Example: "Yeah, we know we needed to test that, but it would take all week. We need to ship today, so we're going to take this short cut instead: we'll test after we ship." Commentary: Really, if the short cut were a good idea, why didn't you plan to do it that way in the first place? As Professor Tolkien wrote, "Short cuts make long delays." ......

Posted On Saturday, November 15, 2008 5:35 PM

Murphy's Dictionary: Show Stopper
Show Stopper (n): The largest bug that isn't fixed yet.
 
Example: "Last week, the show stopper was that the brakes cut out. This week, the show stopper is that the buttons are cyan instead of teal."

Posted On Saturday, November 15, 2008 5:34 PM

Murphy’s Dictionary
What would you get if you married Ambrose Bierce's Devil's Dictionary… CYNIC, n. A blackguard whose faulty vision sees things as they are, not as they ought to be. Hence the custom among the Scythians of plucking out a cynic's eyes to improve his vision. …with the engineering adage Murphy's Law… If there's more than one possible outcome of a job or task, and one of those outcomes will result in disaster or an undesirable consequence, then somebody will do it that way. …? Murphy's Dictionary: an ongoing ......

Posted On Saturday, November 15, 2008 5:32 PM

Code Is Not Enough
So you're a coding ace. You know the latest languages. You use the latest tools. You even write your own tools, so your development environment practically reads your mind. You eat, sleep, and breathe code. So why do you keep missing your deadlines? Code is not enough. You love to code. You can hardly believe that people pay you to "work" at a hobby you often do for no pay at all. You're never without a few personal projects under development. So why do you feel so stressed at work? Code is not enough. ......

Posted On Saturday, November 15, 2008 5:31 PM

Ulterior Motive Lounge Episode 23: Girls Just Wanna Write Code
In our last Episode, Linguist Coder and Prototype Analyst kidnapped The UML Guy and demanded he explain arrows in UML. After a rescue by the police, The UML Guy returns to the Lounge. (Click the picture for a larger image.) This one is for Jennifer Marsman, who is quite possibly the second-most-fanatical UML geek that I know. She's also the creator of Featured Women in Technology, an ongoing series of profiles on women who shine in technology fields. Jennifer does her part to show young women that ......

Posted On Saturday, November 15, 2008 5:23 PM

Ulterior Motive Lounge Episode 22: Time's Arrow
In our last Episode, Apathetic Coder and The UML Guy derived code from Sequence Diagrams. Today, the Lounge has a pair of unexpected visitors. (Click picture for a larger image. UPDATE: The larger image is broken somehow. I probably can fix that later tonight.) This Episode is a hodgepodge of obscure references: Star Trek. Zatanna the Magician. The Ransom of Red Chief. Benjamin Franklin. Entity Relationship Diagrams (ERDs). Data Flow Diagrams (DFDs). Episode 8. Night Court. Columbo. Who Framed Roger ......

Posted On Saturday, November 15, 2008 5:20 PM

Ulterior Motive Lounge Episode 21: The Wrath of Code
In our last Episode, The UML Guy met Deadline, a project manager with a Grim problem. Today, another member of The Team wanders into the Lounge. (Click the pictures for larger images.) This one is for @arphahat (who shaved his beard a long time ago). Now can I have my freakin' cookie dough? And yes, I already referenced this film in Episode 18. It's one of my favorites. Deal with it. Back in Episode 10, I introduced Sequence Diagrams because I needed to demonstrate them for Ann Arbor Day of .NET. ......

Posted On Saturday, November 15, 2008 5:09 PM

Ulterior Motive Lounge Episode 20: Final Meeting
In our last Episode, Evil Tester used his newly gained UML skills plus his testing expertise to generate mountains of good news for The Reader. The Lounge is attracting attention from unexpected quarters, including today's new cast member... (Click the pictures for larger images.) Why yes, I am reading Steve McConnell's Software Estimation right now. You should be, too. While he has earlier argued that requirements errors are the most common factor in project failures, here he shows that systemic ......

Posted On Saturday, November 15, 2008 5:08 PM

Ulterior Motive Louge Q&A #3: In & Out
In response to Episode 16, Mitch asked yet another thought-provoking set of questions: Another reason for swim lanes: I've seen them before. It was very enlightening to see the similarity between the new concept of Sequence Diagrams with a familiar friend. Here is a nagging concern: whether you approach your model from the top-down or the bottom-up, if your premises are flawed, how will you know that your nice neat diagrams have errors? It's one thing to note omissions, like the outstanding payables. ......

Posted On Saturday, November 15, 2008 5:07 PM

Ulterior Motive Lounge Episode 19: Young E.T.
In our last episode, The UML Guy showed Evil Tester how he could use UML to define new test cases with ease. Now The UML Guy wonders what sort of monster he created... (Click picture for a larger image.) When you're a kid, and somebody famous shares your name, it opens your eyes to possibility. It gives you a sense that Hey! That could be me! You Johns had Wayne (the ultimate tough guy) and Cash (the incredible musician). You Jims had Stewart and Cagney and Garner. You Robs had Redford. We had Feldman. ......

Posted On Saturday, November 15, 2008 5:06 PM

Ulterior Motive Lounge Episode 18: Trick or Treat!
UPDATE: Alan Richardson beat me to the Evil Tester joke, including his own Evil Tester comics. He also left a great comment below, and he has a lot more to say on testing. In our last Episode, Process Cop explained the Process Menagerie, and The UML Guy lectured you on its importance. Today, a new cast member appears... (Click the picture for a larger image.) First, let me say it's merely a happy coincidence that Evil Tester debuted in the Lounge on Halloween. I needed him for another project, and ......

Posted On Saturday, November 15, 2008 5:05 PM

Ulterior Motive Lounge Episode 17: Process Cop Academy
In our last Episode, we wrapped up Activity Diagrams (for now) by showing how Swimlanes let us specifiy who or what is responsible for each Activity or Branch. After the Lounge has dried out, we get some process instruction from Process Cop. (Click the picture for a larger image.) Too often, I find that teams embark on "process improvement initiatives" without first understanding what their process currently is. This is like asking an architect to redesign your house without him ever seeing your ......

Posted On Saturday, November 15, 2008 5:05 PM

Ulterior Motive Lounge Episode 16: The Hunt for Wet October
In our last Episode, we saw how Forks and Joins let us model parallel behavior within Activity Diagrams. But we're not quite done with Activity Diagrams. (Click pictures for larger images.) No, the dolphins in panel 3 aren't my work. Anyone who thinks I can draw that well hasn't been paying attention. They were drawn by my lovely wife Sandy for our wedding invitation. I merely traced them. (The scuba gear and the singing crab... Now those you can blame on me.) To discuss Swimlanes, I needed water; ......

Posted On Saturday, November 15, 2008 5:02 PM

Ulterior Motive Lounge Episode 15: Back... to the 80s! Part II
In our last Episode, The UML Guy showed how to organize Activities into larger Activities. Meanwhile, Old Guy absconded with The Reader's UML book and the time-traveling Gremlin... (Click pictures for larger images.) And following up on Mitch's suggestion, here's a joke-free version of that diagram: And so we see the second film, or at least the finale of it. This was a great opportunity to show parallel behavior with Forks and Joins, illustrating three different timelines. (Actually, experts say ......

Posted On Saturday, November 15, 2008 5:01 PM

Ulterior Motive Lounge Episode 14: Let's All Go to the Lobby!
In our last episode, The Reader (inspired by his UML book), The UML Guy, and a small army of guest stars drew an Activity Diagram to get Traveler back... to the 80s! That led to some good comments from Mitch and Corey, along with a lot of blather from The UML Guy. Now they examine the results of their work. But what's happening with The Reader's book? (Click the pictures for larger images.) OK, so why the weird title for this episode? Well, I needed to introduce Superactivities and Subactivities ......

Posted On Saturday, November 15, 2008 5:00 PM

Ulterior Motive Lounge Q&A 2: Battle of the Twitter Guest Stars!
So our last episode has generated some back-and-forth between the guest stars in the comments. Due to anomalies in the Spacetime Continuum, these comments appear in reverse order. I'd like to correct that order, and then respond. First, most-frequent-commenter Mitch (a.k.a. @anklebuster, a.k.a. Dad Geek) wrote: That was a great comic strip! Thanks for letting me have a part. At first, I wasn't getting the data flows. Then I thought about Office Race and the "trap" where there is a 66% chance of going ......

Posted On Saturday, November 15, 2008 5:00 PM

Ulterior Motive Lounge Episode 13: Back... to the 80s!
UPDATE: Fixed a missing arrow in page 2. Last week, we saw previews of my AADoDN talk. Before that, we saw Office Race, the first Ulterior Motive Lounge game. Now The Reader and The UML Guy return to the Lounge... (Click the pictures for larger images.) I can't imagine why a film with a protagonist named Marty would be one of my favorites... Many thanks to my guest stars: @coreyhaines, @curtisgray, @anklebuster, @jbkazoo, and @crazeegeekchick! Besides being a cleaner Activity Diagram than we saw ......

Posted On Saturday, November 15, 2008 4:58 PM

Ulterior Motive Lounge Q&A 1: Mitch Asks About Interactive UML
Today, @Anklebuster -- a.k.a. Mitch Allen of Morpho Designs, and maker of the really cool Morpho Board game design tool -- asked some really interesting questions: The packages remind me of how Mindmap "folds" detail when you want to get a higher level look at things. One thing that I may have been assuming, incorrectly, is that these drawings are the end product. If the presentation is hard copy, you would have to have multiple sheets to display "drill-down" views. Does UML provide an interactive ......

Posted On Saturday, November 15, 2008 4:58 PM

Ulterior Motive Lounge Episode 12: Where's Pest?
For this week's strips, I'm multi-tasking, running slides for my presentation at Ann Arbor Day of .NET. So we're 11 episodes in (plus 2 intermissions). That's not a lot, right? Wrong! Take a look at today's episode, which includes a little bit of everything we've seen so far... (Click picture for a larger image.) I imagined this strip as a way to make a point: even simple models become complex quickly, and are too large to grasp all at once. They're also too large to navigate easily. But I proved ......

Posted On Saturday, November 15, 2008 4:57 PM

Ulterior Motive Lounge Episode 11: It Doesn't Look Like Feb. 2...
No, we're not doing that film (yet). But we are back in Right Court one more time. We're taking an unscheduled break from the schedule this week. I'm giving a UML presentation at Ann Arbor Day of .NET, and I need to prepare material for that. So rather than going Back... to the 80s as planned, I'm going to dual-task: the episodes this week will be the slides I'm prepping for my presentation. These were episodes I was going to run eventually; I'm just doing a little time travel. In Monday's episode, ......

Posted On Saturday, November 15, 2008 4:56 PM

Ulterior Motive Lounge Episode 10: Rerun!
We take an unscheduled break from the schedule this week. I'm giving a UML presentation at Ann Arbor Day of .NET, and I need to prepare material for that. So rather than going Back... to the 80s as planned, I'm going to dual-task: the episodes this week will be the slides I'm prepping for my presentation. These were episodes I was going to run eventually; I'm just doing a little time travel. For today's episode, we have a rerun of Episode 8: Right Court, but slightly abbreviated and redrawn as a ......

Posted On Saturday, November 15, 2008 4:56 PM

Ulterior Motive Lounge Episode 9: Office Race
UPDATE: At the suggestion of Ernie Out in the Barn, here's a larger PDF for 11x17" paper. SECOND UPDATE: Boy, was I tired when I printed up those rules! I lost the paragraph that explained how the game ends, and I spelled "through" as "throw". Fixed here and in the PDFs. In our last episode, The UML Guy was tried for violations of Process and common decency; but pulling out all his best Captain Kirk tricks, he turned the illogic of the system against itself, and was acquitted. He decided to celebrate, ......

Posted On Saturday, November 15, 2008 4:54 PM

Ulterior Motive Lounge Episode 8: Right Court
In our last episode, The Reader and The UML Guy explored for inheritance lets you design common behavior and structure, and then describe specific variations of that behavior and structure. Then they showed how some Patterns (reusable solutions to common problems) involve inheritance. But at that moment, The UML Guy was arrested for committing a grievous offense against Process. (Click picture for a larger image.) If this episode is at all funny, that's because I started with a great inspiration. ......

Posted On Saturday, November 15, 2008 4:53 PM

Ulterior Motive Lounge Episode 7: Pizza Party
In our last episode, The Reader and The UML Guy refactored the simple Pizza Order Class into a more complex but more robust Class Diagram that supports a full range of pizza order options. (Click picture for a larger image.) No new references in this strip. Too much material to cover. But we see the return of some old friends. Inheritance in UML is called "Generalization": Menu Item is a general Class, and Pizza, Item, Drink, and Side are more specific Classes. But in most common languages, it's ......

Posted On Saturday, November 15, 2008 4:52 PM

Ulterior Motive Lounge Episode 6: Class Act
In our last episode, The Reader and The UML Guy drove through time and space in The Search for Class Diagrams. Along the way, they held a long discussion on the philosophy of modeling. But The Reader was surprised when they reached their destination: they were back at the Lounge! (Click picture to see larger image.) If you haven't seen the film, parts of this strip will make no sense at all. I like some oddball films. Get used to it... Oh, and because Editor Bill and Ernie Out in the Barn demanded ......

Posted On Saturday, November 15, 2008 4:51 PM

Ulterior Motive Lounge Episode 5: To Gumball, and Beyond!
UPDATE: Minor but significant art correction. UPDATE: Another minor but significant art correction. In our last episode (not counting the Intermission), Pestbuster pursued Pest right through the strip, leaving a mess in his wake. The UML Guy told The Reader they would need Class Diagrams to help in the clean-up, and said they wouldn't find any without a road trip. (Click the image for a larger view.) Yeah, I know... A lot of blah, blah, blah, yackity-smackity... But these were things that needed ......

Posted On Saturday, November 15, 2008 4:50 PM

Ulterior Motive Lounge Episode 4: The Real Pestbusters
In our last episode, The Reader and The UML Guy explored how adding collaborating Actors to a Use Case Diagram gives the audience more context and thus better understanding of the requirements. In the process, unfortunately, Pest escaped. Pestbuster has abandoned his diagram to recapture Pest. (Click for a larger image.) And now I'd like to address four related questions. Editor Bill asked me why, in Episode 1, I chose to use an obscure in-joke from a mostly forgotten film -- and worse, a film that ......

Posted On Saturday, November 15, 2008 4:49 PM

Ulterior Motive Lounge Episode 3: Pestbusters II
In our last episode, The Reader and The UML Guy drew Use Case Diagrams for a number of Actors within Pestbusters (The Reader's client). In the process, The Reader discovered and a vital Use Case that he had earlier overlooked. Two weeks later, after the team has implemented, tested, and delivered this new Use Case, Supervisor and The Reader meet in the Ulterior Motive Lounge... For those who are curious what lies in store for Pest, I have an obscure one-word reference/hint: growlf! Oh, and it's time ......

Posted On Saturday, November 15, 2008 4:46 PM

Ulterior Motive Lounge Episode 2: Who Ya Gonna Call?
In our last episode, The Reader (with a little help from The UML Guy) drew his first Use Case Diagram. Friends have asked, "What's your schedule? How often will these come out?" My answer: "Whenever." I want to make sure I have fun with the strips and make the strips fun. A fixed schedule would ruin that. Don't cross the streams ......

Posted On Saturday, November 15, 2008 4:46 PM

Ulterior Motive Lounge Episode 1: Friday Night in Ulterior Motive Lounge
Beginning a slightly twisted introduction to the Unified Modeling Language... (Click the image for a larger version.) Inspired by these YouTube videos: Animator vs. Animation The One by mkrepps (music by Gaelic Storm) Also an old Warner Brothers cartoon I can't find right now. Further inspiration from Scott Adams, Jolly R. Blackburn, and Chris Muir for convincing me that limited art skills are no barrier to telling graphic stories. Thanks to Bruce Willis for the porkpie hat ......

Posted On Saturday, November 15, 2008 4:45 PM

Project metrics they never taught you in Project Manager training
Project management involves lots of metrics: data you gather, measure, and analyze to assess and predict the state of your project. But I find some of the most useful project metrics are often overlooked. Here are a few to add to your toolbox. WSR (Work-to-Sleep Ratio) This is a measure of how likely your team members are to make mistakes at crucial moments. If their WSR for the week is 1 or less, they're probably bored. 1.25 or even 1.5 are signs of a team moving at a good pace. Higher than that, ......

Posted On Saturday, November 15, 2008 4:42 PM

Dee Jay, Part 5: Homophones and Alternates
So in Part 4, I said that recognizing the music key would be tricky. But why? Didn't I spend most of Part 3 explaining how cleverly I used M-SAPI so that users only had to say partial names to be recognized? Well, yes; but I've long said that programming has a Conservation of Complexity law: the less complex for the users, the more complex for the programmers. (Be glad: that's the short version. My long discussion on Conservation of Complexity would take up the rest of this post.) The reason why ......

Posted On Saturday, November 15, 2008 4:40 PM

Dee Jay, Part 4: I recognize that!
In Part 3, we built a Grammar for Dee Jay to recognize. Update to Part 3 Driving around last night, it occurred to me that I can let the user specify what sort of media is expected. For example, I could say "Dee Jay, play song Has Been" to pay the song, or "Dee Jay, play album Has Been" to play the album. This specifier should be optional, so the user only has to use it when the user knows there's a potential conflict. Besides making my Dee Jay experience a little more convenient, this also gives ......

Posted On Saturday, November 15, 2008 4:38 PM

Dee Jay, Part 3: Building a Media Player Grammar
In Part 2, we dug a little bit into MPM (Media Player Magic) to build a JukeBoxPhraseMap, mapping phrases from the Media Player to songs, albums, and collections. Now we need to turn those phrases into M-SAPI commands. In concept, we want a Choices object, which represents a choice between two or more alternate phrases. We could turn the whole map into one giant Choices, and we will; but that Choices would be pretty unusable. No user is going to remember and correctly speak some of the song titles ......

Posted On Saturday, November 15, 2008 4:35 PM

Dee Jay, Part 2: MPM, and more MPM
In Part 1, we saw how the process of building a grammar is similar to the Decorator or Composite patterns, building a larger structure out of smaller pieces. In Part 2, we'll build and recognize a grammar to see how to define and identify parts of a command. In some ways, I wish I had chosen a different example for my first speech application. I think Dee Jay is a really cool app, and I use it every day on my drive to work; but the Media Player rogramming is complex enough to be worthy of a few blog ......

Posted On Saturday, November 15, 2008 4:32 PM

Dee Jay, Part 1: Decorating, composing, or encompassing?
To understand the code behind Dee Jay, we first need to understand the basics of the M-SAPI speech recognition system. That means we need to understand three concepts: SpeechRecognitionEngine. This is the class that will listen for commands and phrases and fire events when it recognizes something. We're not ready to understand this class yet, even though it's a very simple class. Before we can look at the SpeechRecognitionEngine, though, we need to look at Grammar. Grammar. This class describes a ......

Posted On Saturday, November 15, 2008 4:30 PM

Dee Jay: A Voice-Controlled Juke Box for Windows Vista!
I wrote Dee Jay as an example for a proposed talk for the Ann Arbor Day of .NET, and as a way to learn more about the Managed Speech API in Microsoft Windows Vista. Dee Jay works with M-SAPI and Windows Media Player to give you a totally voice-controlled way to play your music. You simply say a command like "Dee Jay, play some Dire Straits", and it searches your song catalog for songs by Dire Straits, picks one, and plays it. Or you can name a specific title, or even a genre. If there are multiple ......

Posted On Saturday, November 15, 2008 4:28 PM

Jason's hearing voices...
...and they're listening to him. Jason built a C# implementation of a Z-machine, the engine that powered classic old text adventures. Now James Ashley has added a Managed SAPI user interface, allowing you to talk to the game and have it respond. Jason knows I'm very excited by M-SAPI, so he sent me a link. Now I'm sharing it with what few readers I have; and I'll be keeping an eye on James's blog. And yes, Jason, I am very excited about M-SAPI. Witness my next post ......

Posted On Saturday, November 15, 2008 4:26 PM

Inspiring!
It's a cliche, but it's generally true that kids adopt computers faster than older people do. They don't have any fear that they might do something wrong and make the computer catch on fire, which seems to be in the back of the mind of every reluctant adult computer user. (I tell them and tell them that they can't make the computer catch on fire, but they just don't seem to believe it.) We've all heard the same story: "My kid (or grandkid) is a wiz with computers, but I can't figure them out." So ......

Posted On Saturday, November 15, 2008 4:23 PM

Not that there's anything wrong with twins!
In no way should anything in the prior post be construed as a criticism of twins in general; and by no means do I wish to imply that twins are evil, as a rule. In fact, twins are some of the most delightful people around, especially if the twin in question happens to be the most lovely and patient and understanding and beautiful wife on the planet. (Whew!) Some days I count myself lucky that Sandy has no interest in computers; but just in case... (hide) ......

Posted On Saturday, November 15, 2008 4:22 PM

Public Service Announcement: Beware of WiFi Evil Twins!
OK, this may be old news to some of you; and it's obvious, once you think about it. But it's news to me, so I want to pass it along. The topic is WiFi Evil Twins. What's a WiFi Evil Twin, you ask? That's when some thief goes to a public WiFi hotspot area and sets up a new public WiFi network with the same or similar name, in hopes of getting people to sign in through his WiFi instead of the public one. Then he can attempt to upload viruses, record traffic, capture credit card information, etc. Usually ......

Posted On Saturday, November 15, 2008 4:20 PM

The 21st Century Cocktail Napkin presentation is now available on-line!
The 21st Century Cocktail Napkin is a talk I presented to the Ann Arbor .NET Developers group on June 14. It's an example of a smart cocktail napkin application built using the Tablet PC API. In a a smart cocktail napkin application, you draw shapes as part of some design you'll share with other readers; but as you draw, the Tablet PC also recognizes and understands what you draw, and creates information behind the drawing. (For an example of a smart cocktail napkin application, you can start here.) ......

Posted On Saturday, November 15, 2008 4:18 PM

The Ink in 60 Seconds presentation is now available on-line!
Ink in 60 Seconds! is a talk I have presented to a number of user groups (some courtesy of INETA). It consists of a number of small little demos of Tablet PC programming, most written in 60 seconds or less. Now, thanks to Camtasia Studio, I have a recording of this presentation from the Ann Arbor .NET Developers group on June 14, 2006. And thanks to YouTube, I can now present it to you on-line here. And you can also download a ZIP file of the slides and a cleaned-up version of the sample code. One ......

Posted On Saturday, November 15, 2008 4:17 PM

Lessons in porting
At a client's request, I've been porting my Tablet PC labs to VB.NET. In the process, I've learned some lessons that might be helpful to others who have to make this sort of a port. This is strictly programmer geek stuff, so I'm hiding it. The rest of you may prefer to look at the cute baby llama. I'm ready for programmer geek stuff... Note: In no way is this intended as a slam against VB.NET. Anything I can do with C#, I can do with VB.NET, and vice versa. It's simply a pair of lessons to keep in ......

Posted On Saturday, November 15, 2008 4:13 PM

Insufficient system resources exist to complete the API.
(UPDATE: This is a rerun of a best-of post from 2006. I applied the fix described below, and have never seen the error in question again.) Ever since I got my Gateway CX200X — and even before, with my less-than-wonderful Toshiba M200 (which I'm managing to put to productive use, but cautiously) — I've had this annoying problem. When I would shut the lid, with every expectation that that would suspend the machine, I would be deceived. I would put the machine in my backpack, and head off for the road ......

Posted On Saturday, November 15, 2008 4:08 PM

And-every-single-one-of-them-is-right!
So one time, I showed a friend a Web site for a project I was working on. And he asked an interesting question: Well, you're design guy right? Shouldn't you be writing a design document? And what I suddenly realized was unclear was that the Web site was a design document. It was just a design document of a very different sort. It was basically a step one design document, serving as a way to put the ideas in a concrete form for discussion. The team kinda knew what the product should do, but not every ......

Posted On Saturday, November 15, 2008 4:04 PM

Richard Hale Shaw says, "Put up or shut up!"
Well, maybe that's not exactly how he put it; but he referenced a post where I wrote: Richard Hale Shaw makes an interesting argument against the C# using statement (not the using directive; and thank you, C# team, for that bit of confusing language). I disagree with him; but it will take time and sleep before I can fully explain why. The short preview: he says you can't force people to use your class correctly; I say I can, and I'll show you how, soon.And he writes: Always wondered what you had ......

Posted On Saturday, November 15, 2008 4:00 PM

And somehow...
...I managed to get through the entire Agile Summer Camp without drawing a single UML diagram. I must be coming down with something...

Posted On Saturday, November 15, 2008 3:39 PM

What you missed at Agile Summer Camp 2008...
(Reposted from Agile Summer Camp. The team will edit and improve that version, filling in the gaps in my memory and understanding. This is my rough draft.) Organized by Chris Woodruff with the able assistance of Josh Holmes and Michael Eaton, Agile Summer Camp 2008 was a fantastic success. This is an Agile Summer Camp Diary, documenting bits and pieces of a fun, rich, informative weekend with a crowd of unwashed geeks. No text page (nor even sadukie's great pictures) can capture the full experience ......

Posted On Saturday, November 15, 2008 3:38 PM

The Echo Effect
The primary conundrum in requirements analysis is simple: how can you be sure that you understand what the user said or wrote? Analysts have to master the terminology and domain of the customers. Only customers can verify that analysts have done so. This is made more difficult by many forces: The difficulty of learning a new domain and new terminology. The slippery nature of language. Overloaded language: you understand the words they’re using, but not the domain-specific way in which they’re using ......

Posted On Saturday, November 15, 2008 3:34 PM

The Outline Effect
And as long as I'm posting UML tips to get you ready for the case study, there are two other analysis effects you should strive for. The first of these is The Outline Effect. It’s difficult to learn a new domain. Analysts have to constantly learn new domains and requirements. They’re always learning and studying. How can they better focus on the information that they gather and draw knowledge from it? Some teams work in the same domain from project to project, but many teams tackle a new domain with ......

Posted On Saturday, November 15, 2008 3:33 PM

The "Martin the Moron" Effect
Inevitably as I discuss modeling and requirements, I find myself discussing The "Martin the Moron" Effect. And that's important enough that I wanted to revisit it here. The "Martin the Moron" Effect is as simple as this: I want to hear "Martin, you're a moron" on day 2 of a 200 day project; because if I don't, then it's almost guaranteed that on day 500, I'll hear, "Martin, you're a moron, and we're not paying for this!" Early modeling is not about being right; it's about being wrong, but in interesting ......

Posted On Saturday, November 15, 2008 3:31 PM

The Number One Rule of UML Tools
The Number One Rule of UML Tools: They all have quirks. Every single one of them. (Even mine.) They'll all drive you nuts, and frustrate you, and disappoint you. So a little frustration and disappointment shouldn't make you give up on a good tool. You just gotta compare it to other tools, see if it does what you need, and then learn to cope with/circumvent its quirks. (And you whiteboard guys who say, "See? Quirks! You should just give up and use a whiteboard! It has no quirks!"... It has no memory ......

Posted On Saturday, November 15, 2008 3:29 PM

Where'd You Get Those Pretty Pictures, UML Guy?
They are pretty, aren't they? As much as I'm excited about Rosario, I can't give Rosario credit for these diagrams. It's still a Community Tech Preview, remember. No, I draw most of my production diagrams these days with Enterprise Architect from Sparx Systems. I'm really looking forward to Rosario's integration with VSTS's process tools, which I find to be top-notch; but until Rosario can match it, Enterprise Architect is my second-favorite UML tool. (It's my first favorite if we ignore the UML ......

Posted On Saturday, November 15, 2008 3:27 PM

Absolutely! (Not!)
There are only two words you should never believe: "only" and "never". Oh, and "always". And "every", "each", "none"...Yeah, that's more than two. You didn't believe "only", did you? Never do that! Whenever the stakeholders tell you an absolute, don't believe them. Challenge them on it. Make them prove it. Make them defend it. Make them put it in writing. Or if it's not the right time to be challenging them, make a note of it; and then later, come back and challenge them and make them defend it and ......

Posted On Saturday, November 15, 2008 3:24 PM

"Where Do I Start?" Part II
After a shameless plug for my UML Applied Class, I tried to give some answers to the question: "I want to learn UML, where do I start?" I also demonstrated how I like to give multiple answers to seemingly simple questions. I want to add yet more answers to that question. I discussed how a sequence diagram lets you explore and document how objects call other objects to carry out some requirement. A related diagram is a communication diagram, which shows which objects are allowed to communicate with ......

Posted On Saturday, November 15, 2008 3:21 PM

"Where do I start?"
Friends and family claim I have an annoying habit of answering a question with a question. They think I'm being difficult, and they think the answer I deserve is a kick in a tender spot. But I have a reason: I’m convinced that the answer to most useful questions is: It depends. The best answers depend not just on the question, but on the context. So when people ask me “I want to learn UML, where do I start?”, my answer is, “Where are you stopped?” Well, OK, my first answer is, "My UML Applied Class." ......

Posted On Saturday, November 15, 2008 3:10 PM

"Legible" does not mean "Pretty"
The point of UML – and I'll repeat this often – is communication. But there are different kinds of communication, even when the medium is the same. For example, speech is a very common communication medium; but there's a very wide range of speech styles that all manage to communicate. The stops and pauses and half-finished sentences and even grunts of a casual phone conversation between old friends are very different from the formal, scripted, ritualized sentences of a traditional marriage ceremony. ......

Posted On Saturday, November 15, 2008 3:00 PM

Copyright © Martin L. Shoemaker | Powered by: GeeksWithBlogs.net | Join free