Wednesday, May 21, 2008

Whoa - Embedded Google docs?

Am I the last person who found out you can embed your Google doc presentations into your website? I thought I knew all the cool tricks!



This was all I had on hand that's worth putting up... and only makes sense if you know all of those psychologists and have read the book Reaper Man by Terry Pratchett.

Sunday, May 18, 2008

It's not hard. Really!

Along with all the analyzing of business I do, I also bake. Get a room with more than five people in it, and I'll get the itch to put something together. It feels very odd for me to come to a shindig without a covered dish of some kind.

People don't bake as much as they once did. This leads to some surprising statements when I bring something in, like my cinnabons.

"Wow, that must be really hard."
"Actually, no, it's pretty easy. I can give you the recipe if you--"
"Oh, no. I could never do anything like that."

You know where else I hear this?

When I tell people that I can read code.

A surprising number of PMs/Designers/BAs all proclaim they could never learn to read code. I say they weren't in my CompSci classes eight years ago.

True, back then, I wouldn't have been asking that more people learn to code. I tutored a guy that had me tearing out my hair. Still, he got basic concepts. Sure, his code threatened to crash our iron clad unix server, but he could tell a for loop from a declarations statement.

It doesn't take much to learn. A community school level 101 class would bring most people up to speed on basic structures, good practices, data types, and common syntax. Even someone with enough chutzpah and a good Dummies guide could get brave enough to look at some code in the wild.

I think the fear of looking at code comes from the same place as the fear of baking. No one expects that your first cake is going to look like something from Ace of Cakes. I don't even really expect it to come out of the pan properly. First cakes are meant to be iced and eaten straight out of the pan, leaving you, the kitchen, and your sense of what a cake is in total disarray.

The first time you read code makes you feel a bit odd. It's the dissonance between knowing that you're looking at gibberish, and yet it's doing something. Something strange and mysterious and not meant for those who see daylight, and yet it's starting to make sense.

No one really expects you to start slinging your own code at this point. No one wants you to be Gates or Jobs or whatever guru people are wanting DNA samples of these days. Just some basic comprehension.

I promise you two things:

1. The sudden desire to make a proper cake will not turn you into Martha, demanding a clutch so that you can raise your own chickens and therefore have fresh eggs for your cakes. Because what the hell.

2. The sudden insight into the craft of the coder will not give you a stronger affinity for Cheetos. Because some of them really prefer beef jerky instead.

While we're at it, let me put up my recipe for cinnabons. Take some time, but most of that is sitting on your rear, reading blogs and drinking coffee.

EAC's cinnabons

Ingredients:
  • 1 (.25 ounce) package active dry yeast (seriously, those little packs you can buy at the store. People use those!)
  • 3/4 cup warm water (110 degrees F/45 degrees C) (Tap water that's almost too hot to hold your fingers under it should do.)
  • 1/4 cup white sugar
  • 3/4 teaspoon salt
  • 1 egg, room temperature (Seriously. Take the freaking egg out when you start)
  • 2 1/2 cups bread flour (Not white. Bread. King Arthur is best, but good ol' Pillsbury will do).
  • 1/4 cup butter, softened (if you forget to take it out, put it in the microwave for a minute on 30% power)
  • 1 tablespoon ground cinnamon
  • 1/2 cup brown sugar (I use dark, because it stores better.)
Directions:

  1. In a small bowl, dissolve yeast in warm water. Take out your egg and let it get to room temperature. Seriously. Then let the yeast mixture stand until creamy, about 10 minutes.
  2. In a large bowl, combine the yeast mixture with the sugar, salt, egg and 1 cup flour (that's right. Not all the flour); stir well to combine. It shouldn't look horribly lumpy.
  3. At this point, if you're using a stand mixer, and you have a hook attachment, switch to that. No foul if you don't have one, but they're easier to clean.
  4. Stir in the remaining flour, 1/2 cup at a time, beating well with each addition. When the dough has pulled together (looks like a lump), turn it out onto a lightly floured surface and knead until smooth and elastic, about 8 minutes. Truthfully, I don't usually knead it that long. But it's good exercise, so what the hey. Don't be shy about adding more flour, if the dough feels sticky and is being fussy. Dough can be like that.
  5. Cover with a damp cloth and let rest for 10 minutes.
  6. Lightly grease an 8x8 inch square baking pan. Roll dough out on a lightly floured surface to 1/4 inch thick rectanglish shape. Smear the dough with butter and sprinkle with cinnamon and brown sugar. Roll up the dough along the long edge until it forms a roll. Slice the roll into 16 equal size pieces and place them in the pan with the cut side up.
    1. Easiest way to get 16 pieces? Cut the log in half. Then the half in half. The one of the quarters in half. Then one of the eighths in half. Recurse your way up. Don't try to cut sixteen starting at one end and going to the other end. Not even cyborgs do it that way.
  7. Cover pan with plastic wrap and refrigerate overnight or cover and let rise at room temperature until doubled in volume, about 30-45 minutes. I am impatient. I do it at room temp for 30 and then cook it.
  8. Preheat oven to 350 degrees F . Bake rolls until golden brown, about 17-20 minutes. Watch them! We're going for golden brown, not unfortunate mass of bubbly blackness.
  9. Take them out and icing them. You can use canned icing, nuked for 30 seconds. I never have that on hand, so I used 1/2 c powdered sugar, 1 T vanilla extract (or vanilla rum/vodka), and 2 T milk. It's not an exact science.
If you can make those, I swear, you can grok python.

Sunday, May 11, 2008

Bit by bit, inch by inch

As I've mentioned before, I'm a business analyst with a bit of a technical background. This is to my advantage in one area in particular:

Prototyping.

I honestly don't know why industries don't do this more. Car companies do it, as do clothing and food companies. Do up a rough, hand it over, and see what comes up.

With some segments of the software industry, though, it seems the norm to only let the customer see and touch the product in five to ten minute increments, or through a series of nicely printed screen shots. The fear is that the customer will (dun dun DUN!) change his or her mind.

You know what? They do that anyway.

The other worry is that the customer doesn't really know what they want. While this is true, it's not unusual to get a customer that will have that feature, come hell or high water.

It reminds me of my son and video games. Like clockwork, Hollywood churns out a new kids movie, then a new movie themed video game. Without fail, about 90% of the spin offs are horrible, and without fail, JT will ask for every one of them.

What we have now is a subscription to a game rental service called GameFly. When he starts pining, we put the game on our queue. One it's in, we can watch to see how often he picks up the game. Some are duds, offering no more than a few minutes of entertainment (Cars for the DS was in that category). Others are too hard, requiring more than the occasional help from a parental unit. Others are just... odd. Happy Feet has us scratching our heads.

Yet he wanted, nay, needed them all.

At least with GameFly, we can test things out. If it's a dud, back it goes, with us none the poorer. I've started doing something similar with customers.

Instead of a long sit down where I force them to pull requirements out of the air, I give them a base product. Usually, it's an open source CMS of some sort, for which we have a shop of developers. Load up a few basic add-ons, then let them play. While they kick the wheels on their time, I can watch what they do from my office. Every so often, I check back in, and we refine what we have by slashing things that they never used, and making what they did use more effective.

True, I'm a bit more technical than some, and a bit less fearless. Honestly, though, what I'm doing doesn't require a lot of code slinging. Plone has a feature where you can import UML to create a product. It looks like the Django community is working on one too. If you can make Visio work, I argue that you can be taught UML.

There are downsides to this process. It takes longer. You're dependent on the client actually kicking the wheels when you're not at their desk. Devs come in at a later state, which some object to. It relies on open source or out of the box products. It assumes your customers are the kinds who can change their minds.

Still, in my three betas, it's going well. It may not have the rush of a grand vision, but at least I'm reasonably sure at the end that it'll get used.

Monday, May 5, 2008

PIE. PIEPIEPIE.

Project minions often have a misconception about requirements gathering: that it's a one time deal. An analyst goes to the client, has a sit down with donuts and coffee, and leaves a few hours later with a laundry list of items for people to code/skin/write charge lines for.

If only.

It's more like going to the grocery store with a hyperactive significant other.

"Okay. We're here to shop for Thanksgiving. What do we need?"

"Is this going to take very long? Because the game's coming on, and..."

"I'll make it as quick as possible. First on our list: the main dish. I was thinking--"

"Can't we start with dessert? That's more fun."

"It's at the other end of the store. Anyway, we should pick out the turkey and ham first, right?"

"Sigh. Fine. That one and that one."

"Are you sure, because I don't think the turkey will be big enough to feed--"

"What are you talking about!? It's HUGE! So, desserts."

"Sigh. No, now we do sides. Here's a list of recommended sides."

"Wow... that's a lot of sides. Why do we have to have so many?"

"Because people like them, and hundreds of Thanksgivings have shown us that this is a good standard load."

"Feh. Halve it. We can spend what we save on pie."

"Fine. Whatever. You get to explain that decision to grandma. Now for drinks..."

"PIE!"

"Okay! Okay! Pie! Go get your pies and then we can talk drinks."

Scamperscamperscamper

Waitwaitwait

"Back!"

"That is WAY too much pie. That's nearly our whole budget!"

"But... but... Carl has this pie at his dinner, and Jennie has this pie at her dinner, and Lisel has CAKE, and this one..."

"Just because someone else has it doesn't mean you have to have it!"

Poutpoutpout

"Sigh. Fine. We'll have turkey and pie. But you get to tell everyone why."

"Everyone will love it. You just wait and see."

There are very few people who love turkey and pie, exclusively.

This is what gathering requirements is like to me, when I try to do it in one sit down. There are, of course, alternatives. Those, next time.

Note: Before the world thinks that I'm portraying my SO, I would just like everyone to know that my darling husband grocery shops like someone has leaked poisonous gas into the store. He is, however, prone to sneaking Pop-ums into the cart when I'm not looking.

Saturday, May 3, 2008

Beckett and Development

You know, I don't really know why more developers and otherwise techy types don't love postmodernism.

I love postmodernism. It's the one period that, on it's own, can get me tossing the kids at my mother and putting my butt on a train into DC. I hated it that I never got to study it in grade school, as any time after WWI or II, the budget and time generally ran out.

With postmodernism, you don't need to worry about what went before. The author doesn't write about the way the dew falls off of the leaves, or the way the heroine's red hair dances in the wind, all the while meaning to talk about the way these things are affecting the subject. A postmodern artist will just say it, if it's that damn important. What's important is cut down, too. Who needs chapters of material that set up the world? A story is a story, no matter where it is. If it needs to be on a farm or in a shop, then assume the reader knows what a shop or farm is and move on.

Also, with postmodernism, you get a chance to take it as is. You don't get this with Shakespeare. Shakespeare's works are great, don't get me wrong, but there's four hundred years worth of people talking about Shakespeare, out there. There's not much chance you're going to have a take on something that someone, somewhere, has already said. It reminds me of my high school English teacher who would shoot down some of our more creative interpretations with a "If that were valid, someone much more worldly and apt to turn in assignments on time would have said it already."

I mean, we're already on recursing Shakespeare, writing plays about his plays.

You also get to forget all the old symbolism. In older literature, we are inundated with references to the Bible, mythology, famous (always famous) works of literature... and it almost always means the same thing. After a while, you're wondering if the whole Christ/Icarus/etc figure thing hasn't jumped the shark a bit.

When I mention to my tech friends that I like postmodernism, I get 'looks.' Blank looks. Disgusted looks. Looks like I admitted a strange fetish casually over morning coffee. I don't get the fear of it. After all, I don't need to know when a po-mo author was born, or where. I just need to get to reading. I don't need to cut through layers of description about castles and forests and ladies dresses. I don't need to worry about what other people thing about it. It can cross cultures as is, and can be interpreted in a number of ways without having post-docs burning you in effigy.

It's the way most of them seem to want to develop, or what they see as 'beautiful code.' Pure and functional, all on its own. Reusable for other systems. Not bogged down in a history of infighting and red tape and better practices that really weren't.

We already translate literature into other languages. Maybe we need to start translating literature into perl. That, or start handing them copies of Waiting for Godot when departmental abusrdism gets a bit high. At least they'd know they're not alone in their featureless landscape.