Friday, 15 April 2005

Odd Friday in Minneapolis

I’ve been working out of the home office most of the week. Today was my first opportunity to spend some time around the city. You know – with other people. Glad I did.

I caught a slightly-punk late-twentysomething, walking casually down Nicollet Mall with full-grown macaw on his right shoulder. Yes, they were deep in conversation.

There isn’t a Dress Like a Pirate Day – I checked – and we’re months from Talk Like a Pirate Day, so I think this is normal in his world. Sweet. I was on the phone with Kari, so no photo. Sorry.

Hey, parrot guy, if you’re reading this, I’d love to interview your macaw on my podcast.

My neighbor’s roof is being redone. I get home, settle into my office and watch one of the roofers walk to the opposite side of my house and drink from my hose. Speechless.

Thursday, 14 April 2005

First Crack 37. From Betty’s Bikes & Buns

A big thanks to everyone that helped keep Betty’s open. Betty’s is a great independent coffee shop and I’m happy to see the community pull together and keep it open.

Tom Roe owner of Betty’s Bikes and Buns and I talk motorcycles, community, and the best coffee in Minneapolis.

The First Crack podcast website has been recently redesigned. It now has episode voting courtesy of the Votio plugin from Asymptomatic.net. I want to thank First Crack subscriber Jonas Rullo for identifying and resolving a CSS issue with the new site. Thanks Jonas and good luck on your quest for a West Bend Poppery I.

Listen to From Betty’s Bikes & Buns [18 min]

Got questions about coffee or comments about the show? Call: 206-20-BEAN-1

Like the show? Support the First Crack Podcast

Wednesday, 13 April 2005

Learning Ruby – Day 12

Day 12 – When repeating yourself is the preferred method is repeating yourself.

Today’s topic is recursion – iteratively calling a function numerous times with a single minor change. On face value, it sounds like something computer technology should help us avoid. In addition, it seems to directly conflict the Ruby on Rails mantra Don’t Repeat Yourself. Though recursion is inherently resource intensive (repeating yourself over and over is often tiring), the prime benefit seems to be highly concise code without resorting to loops or iterators. Yeah, this is alpha-geek stuff.

All snarkiness aside, Slagell is positioning recursion as a tool to help clearly define the necessary action at the smallest level and using recusion to focus.

I should probably read this chapter again.


This post documents my journey through Sam’s Teach Yourself Ruby in 21 days. I’ll be joining Al Abut in his effort to learn Ruby and blog along the way.


Italian-American Comfort Food at Cossetta’s

Last night, Darrel and Mark W. from MNteractive.com and I grabbed a bite at Cossetta’s in downtown St. Paul.

When we were in Evanston, IL, Jen and I lived right next to Panino’s Italian Cafe. Panino’s is a little takeout italian place with decent pizza, soggy italian beefs, and overdone onion rings. All 5 minutes past their prime. Though Panino’s is not a place for culinary epiphanies – it does have its place. Conveniently for Panino’s, that place was between the commuter train and my apartment.

Cossetta’s is the larger, St. Paul version. Conveniently close to the Xcel Energy Center, their limited menu offers a handful of options for salads, sandwiches, pizzas, and other red sauce-laden entrees. I found the path through the store confusing. One line for pizza, one line for everything else, both lines converge on the same checkout. It wasn’t clear which person I order the meatball sandwich from, the person underneath the sandwiches menu? the person in front of the red sauce-laden dishes? the person making the cold sandwich? Yes, 3 different people.

Answer: Person in front of the red sauce-laden dishes.

The meatballs were plump, moist, and just the right texture. The bread, I want to say it was the wrong bread for that sandwich. Though, it was the same half-chewy, half-soggy, meat-delivery-device Panino’s uses. Perhaps this bread is like parsley. More for presentation than ingestion.

On the way out, I grabbed some pizza and a tiramisu to enjoy while watching the Amazing Race (Go Lynn & Alex!) with Jen. The tiramisu was exactly right; creamy, espresso-y, and rich.

Three things in closing:

  1. Their wine pours go all the way to the top.
  2. Bus your own table.
  3. Check out their Italian market, full of interesting foods you won’t find at the local Cub.

Cossetta’s
211 West 7th St
St. Paul, MN


UPDATE: 18 May 2006, Two MN Foodies Cossetta’s review is even harder on them.

Sunday, 10 April 2005

First Crack 36. The First Home Roast of the Spring

Toddy Maker Cold Brew Coffee Maker Coffee by Kenneth Davids

In celebration of the first great day of spring, I dust off the West Bend Poppery and roast up some Aged Sumatra. Then brew up some iced coffee in my Toddy Maker Cold Brew Coffee Maker.

Things mentioned:

Listen to the First Home Roast of the Spring [12 min]

Got questions about coffee or comments about the show? Call: 206-20-BEAN-1

Like the show? Support the First Crack Podcast

Historical Political Drama Double Feature

Last night, Jen and I watched All the President’s Men, off the Netflix. It’s the screen adaptation of the Watergate investigation starring Robert Redford and Dustin Hoffman as Woodward & Bernstein, or “Woodstein”.

Considering the whole thing went down months before I was born, my understanding of Watergate is ethereal at best. The movie is more than a retelling of one of America’s low points, it helped form the basic language of our cloak-and-dagger stereotypes; the smoking informant that will only meet the dark of night, hints just falling into your lap, and a nondescript enemy foiling you at every step. Or maybe that’s just Washington politics.

The dynamic between Hoffman and Redford was remarkable, the Washington Post’s office furniture stylish, and the intrigue kept me on the couch and away from the laptop for more than 2 hours.

As Redford was searching through a stack of big, heavy telephone books, I couldn’t help but wonder how different this same investigation would be today. With Google, weblogs, and 24 hour news, would it be easier or more difficult to uncover the conspiracy?

I vote for the same.

On the subject of enlightening historical political dramas, The Fog of War – Eleven Lessons from the Life of Robert S. McNamara. McNamara was Kennedy & Johnson’s Secretary of Defense, putting the subject of this movie just a few years ahead of All the President’s Men.

This movie gave Errol Morris an Oscar for best documentary and he deserves it. Walking into it, Jen and I had no idea who McNamara was – just that Morris is a brilliant documentary filmmaker.

By the end, I was stunned. Stunned at how little I knew about; the Cuban Missle Crisis, the Vietnam War, and how the Cold War wasn’t so much.

Learning Ruby – Day 11

Day 11 – Program organization, Part 3 of 3.

Today, Slagell clarifies the difference between classes and modules. As I mentioned back in my review of The Object-Oriented Thought Process, a ‘class’ in object-oriented programming is a noun, a Thing. Like a chair, a sweater, or Slartibartfast. Modules are like adjectives. All the nouns I mentioned above could, in fact, be furry. So, if the chair, sweater, and Slartibartfast were classes, they could be all include the same Furry module.

He also offers an solution for the deck of cards exercise. Rather than creating a ‘collection’ class, Slagell subclassed Ruby’s own Array class for Deck. Fine enough. He starts with the shuffle method within the Deck class, finally moving it to the Array class (as made more sense to me) before wrapping up the chapter.


This post documents my journey through Sam’s Teach Yourself Ruby in 21 days. I’ll be joining Al Abut in his effort to learn Ruby and blog along the way.


Saturday, 9 April 2005

Learning Ruby – Day 10

Day 10 – Program organization, Part 2 of 3.

As an experienced information architect, I’m familiar with the challenges of declaring an organizational structure. Whether its for books, furniture, clothing, or software, every structure has it’s biases – somethings are easier, others more difficult. With this in mind, the goal is always to net a more sustainable, maintainable, self-evident state.

Ruby’s include (for modules) and require (for files) commands make organizing code into separate files for easier maintenance possible. The question is how.

Jen once quipped about working in retail, “I can’t sell it, if I can’t see it.”

The same is true in programming, Slagell reminds us, “…for Ruby to include a module, it has to be able to see that module.”

Therefore, the chunk of code to be included should either be in the same file as the include command or the appropriate file should be required. Otherwise, mixing metaphors, the product isn’t really on the floor.

In today’s exercises, Slagell asks us to think about how to organize a program that shuffles a deck of cards.

Here are my initial thoughts:

  • Both “deck” and “hand” are collections of “cards”, differing by the specific number of “cards” contained. Therefore, “deck” and “hand” should be subclasses of a larger “collection” class.
  • It maybe desirable to reorder both the “deck” and a “hand”. So, the action of “shuffle” should be applied at the “collection” level.
  • “Card” should be it’s own class with “suit” and “rank” properties.

This post documents my journey through Sam’s Teach Yourself Ruby in 21 days. I’ll be joining Al Abut in his effort to learn Ruby and blog along the way.


Friday, 8 April 2005

True Thai is Our New Thai Place.

Last night, Jen and I ate at True Thai down on the south side of Minneapolis.

This was our second attempt at dining there. Attempt #1 was trying to seat a party of 6 on a Saturday night, without calling ahead = bad idea.

I haven’t been real pleased with the Minneapolis’ Thai offerings. Sawatdee‘s offerings are fair and their locations are many, and their staff is sharp. Like Dunn Bros.

There’s a bad place just north of us. Bad. Awkward service, bland offerings, bizarre staff. Like bad milk, I don’t see a need to share. Anyway – that’s not True Thai.

The only odd thing about True Thai is, well:

“I am assuming he is the owner, but, I sometimes wonder what restaurant owners do. Well, at least, what was he doing at the front desk if he was incapable of seating us? Better off letting the staff, who knows what is going on, run the show while he plays with the books. Anyway, aside from the owner who rudely passed us off to a staff member, our time at True Thai was enjoyable.”

Scott McGerik wrote this back in November of 2003, Jen and I had the exact same experience – 18 months later. Something to be said for consistency.

My side of the table was their Spinach Curry in Peanut Sauce with Mock Duck. Yes, spicy – to 11. Initially, it was exactly what I was looking for. In the end, it was a little too sweet. Jen enjoyed her bite of it. On her side of the table was the Calamari Pad Thai. You can’t go wrong with that. Can’t.

Thursday, 7 April 2005

Learning Ruby – Day 9

Day 9 – Program organization, Part 1 of 3.

Back in my review of The Object-Oriented Thought Process, I talked about the difference between is a and has a in programming world. Dave was then kind enough to clarify.

Today’s chapter was that. In practical, We’re-Writing-Code terms, rather than the abstract, This-is-How-To-Think-About-It way of the previous book.

Here’s a quick background in Object-Oriented Design for the non-programmer:

  • Methods are chunks of code that do Useful Things.
  • Classes are collections of, among other things, Methods.
  • Rather than rewriting a Method to reuse it in another class, it can be imported into both Classes – as a Module.
  • Multiple Modules can be imported into a single Class
  • If 2 Modules imported into the same Class contain 2 different Methods with the same name, Ruby says the last one imported is the default.

Sometimes, the only way to stay responsive and relevant is to process things on a ‘last in, first out’ manner. I’m glad Ruby feels the same way.


This post documents my journey through Sam’s Teach Yourself Ruby in 21 days. I’ll be joining Al Abut in his effort to learn Ruby and blog along the way.