The Glass is Too Big

I'm J Wynia. I'm a software consultant by trade who lives in Minneapolis. I'm a dabbler (see cyclical enthusiast and here) who enjoys a wide variety of pursuits. The world is an interesting place full of things worth knowing. This site is part of how I explore my curiosity and share what I learn.

The site name sums up a philosophy I have that inherently distrusts dichotomies. They are so often false dichotomies that a default assumption to that effect has served me well. I wrote up a little parable that describes that philosophy.

If you're on social networks, I can usually be found under the username: "jwynia". I'm currently most active on Twitter and you can follow me here.

Recent Articles

Suicide and Hope

I posted this on Facebook today after watching some of the discussion after Robin Williams' suicide. I am also posting it here because it's something I think worth sharing.

Almost 30 years ago, I was picked up at summer camp and told that my dad was in what I later learned was the psych ward of a hospital after the first of 2 attempts to end his life.

20+ years ago, I personally put the barrel of a 20 gauge shotgun in my mouth and pressed against the trigger. I'm only here today because the safety didn't disengage completely. When I pressed, nothing happened and my resolve crumbled.

This morning, I sat with tears welling up as I read of a friend who just a few weeks ago reached that same point, the one where you look at the future and see, nothing. No hope. No promise. An empty "pro" side of your pro vs con list. A black abyss.

The abyss is a lie, you say. Of course it is. You can see that from where you sit, mind un-clouded by Depression. But, Depression ensures that the lie is the most convincing lie ever told. It parades evidence for the black abyss being very real in front of you as you sit alone.

My own experience and conversations over the years have made me 100% certain that someone around you is at or near the point where the thing they want most in life is for life to end. They need hope. Find a way to give it to them.

The Secret to Reading Lots of Books

TL;DR - Audiobooks, they're worth it.

When I was a kid, I read voraciously. My mom says that when I was in Kindergarten, on library days, I'd read the other kids' books to them in carpool before we'd even get home. By 4th grade, I'd already left most "children's" books behind, reading things like The Lord of The Rings trilogy. By 6th grade, when Pizza Hut instituted it's "Book It" program to get kids to read, my teachers changed the program from the standard (something like 100 or 200 pages a month to get a personal pizza) to having us set our own, ever increasing goals and having to reach them. One other kid and I got competitive and I distinctly remember a goal of 3000 pages in a single month being surpassed by both of us.

That love of reading continued through college and getting an English degree. Then I graduated and "got busy".

After college, in the late 1990s, faced with a 14 hour drive across North Dakota and eastern Montana to visit my new mother-in-law, I went to the library and checked out a Stephen King audiobook on cassette tape to play in my 1990 VW Passat. Someone had recommended listening to an audiobook as a way to make the time go by more quickly and I missed reading for enjoyment.

The trip ended up being shorter than the 28 hour round trip that the map (cassettes, libraries and paper maps, oh my), due in large part to Montana's lack of a speed limit at the time. And, the book I selected (Desperation) proved wildly inappropriate (go read the summary and consider listening to it as you drive across the wasteland of North Dakota). But, for quite a few years, audiobooks were something reserved for a 10+ hour drive).

Then I took a contract in St. Cloud (60 miles NW of Minneapolis) in winter. After a few days of 2+ hours on the road, I knew I had to do something to counteract the boredom and turned, once again, to audiobooks. This time, they were on CD (The Diamond Age most notable among them) and they made time stuck in snowstorm traffic go by much faster.

But, I still kept them for "long" drives. They work wonders for keeping me awake in a way that music and other audio content don't. They're the next best thing to having someone to talk to at keeping you awake. That's pretty much what I treated them as for years: an alertness aid with the nice benefit of an enjoyable story.

For most of the ensuing 5+ years, I spent most of my time when listening on headphones, in the car, or office stereo listening either to music or a long subscription list of podcasts.

Until 2012 when I had a series of epiphanies.

My car at the time, like so many new cars, kept track of not only miles driven, but average speed over those miles. As I cycled through the values it offered after fueling up on a particularly boring trip, I did the math. The 15,000 miles I'd driven in the previous year averaged 30 miles per hour. If my 7th grade algebra has held up, that means I'd spent 500 hours in my car.

A short while later, as I drove I90 across southern MN (that's one boring drive), I found myself having a hard time staying awake. It didn't matter whether I listened to familiar music, new music, or podcasts. None of it could keep me awake. At the next truck stop, I bought an audiobook and the problem was solved.

I reflected on those 2 things and came to a few conclusions.

  1. I had nothing to show for those 500 hours (other than moving from point A to point B).
  2. If audiobooks kept me awake better than any other audio content, there's clearly more mental stimulation there.
  3. Audiobooks were the safest thing for me to listen to on the road to combat sleepiness.
  4. Given the previous, I should switch to 100% audiobooks in the car.

I switched on that trip and got a subscription to Audible.

Since then, my consumption of audiobooks has ramped up. It moved beyond just in the car to any activity that primarily occupied my body and not my mind. The properties of listening that make them good for keeping me awake make them bad for trying to listen while working, horrible for writing, etc. But, for exercise, yard work, cooking, cleaning, etc. they work great. As my consumption increased, I also started trying to listen to them at faster speeds. Audible (and other software) lets you listen at 1.25x, 1.5x, 2x and even 3x the normal speed. This can make a huge difference. For example, the first book of the Game of Thrones series has a runtime of almost 34 hours. But, the guy who narrates that series reads fairly slowly (to my ear, it's actually painfully slow now). I can pretty easily keep track of everything being said at 3x. That turns a 33+ hour book into an 11+ hour one.

At this point, I listen to  most American-accented narrators at 3x and most other-accented narrators at 2x with some, like slow British accents like in Game of Thrones OK at 3x. I get through 2-6 books a month, depending on length. Audiobooks generally have a runtime of at least 7 or 8 hours up to 40 or 50 for long novels. When reading a series full of long books, the pace slows down. But, it's amazing how fast I get through them.

And the kicker is that all of this is without creating any special "reading" time. I just took time that my ears were otherwise idle and put them to use.

Sure, some would argue that it's not the same as reading print. But, I consumed every single word of those books. In fact, I think I tend to notice more of the text when listening than when I read print. Whenever print gets slightly boring, I tend to skim ahead. That doesn't happen with audio. Beyond that, I don't care. I got to live in those stories. I got to learn from those non-fiction books. I'm not interested in a contest of authenticity. I'm now back to enjoyment reading at a level I "haven't had time for" since I was a kid. No technicality can take that away from me.

Drunken Baked Beans 2.0

This is one of those recipes that changes every time I make it. Different beer/cider changes the flavors in interesting way and on days like today, I get Vidalia onions, which I really like to use when they're available. This is for a large, oval crock pot. The older style circle crock pot should probably be half of this.

1/4 pound of bacon or salt pork
1 lb pork sausage
1 lb of diced onions
3T of diced garlic
1.5 lbs of dried great northern beans
1 29 oz can of diced tomatoes
1 6 oz can of tomato paste
2 cups of brown sugar
3 bottles of beer or hard cider
4 oz of whiskey

Soak the beans for 24 hours.
Dice and brown the bacon or salt pork and add it to the crock.
Brown the pork sausage and add it to the crock.
In the pork fat, sauté the onions and garlic and add them to the crock.
Add all but the beer and whiskey and beans to the crock.
Add the whiskey.
Add the beans.
Fill the crock with beer.
Put it on low for 24 hours. I usually try to get a 4 hour window on high, somewhere in the first 12 hours. The character really changes in the last 8 hours.
Make sure that the beans stay covered in liquid or you’ll get a layer of crunchy beans on top.
Depending on the beer or cider used, you may need more sugar or a bit of maple syrup to balance the acidity.

At Least Make New Mistakes

I’m a firm believer in learning by making mistakes. For all of the value of learning lessons other ways, I have found the lessons I learned “the hard way” are the ones I learn better and more permanently. When I’ve been in leadership positions and those I mentor are feeling bad about their progress, I often ask if they’re failing in new and interesting ways. If they are, I consider THAT progress.

In contrast, people who make the same mistake more than once drive me nuts. That’s because it indicates someone who *doesn’t* learn from their mistakes. Someone who doesn’t learn from their mistakes is dangerous. If they don’t learn from mistakes (which are the lessons most of us learn best from), they probably aren’t exactly dynamos at learning lessons other ways either.

All of which has been on display the last few weeks when I go to Sunday breakfast.

My friend Aaron and I have breakfast every Sunday morning and a few weeks ago, we changed our regular destination to Hell’s Kitchen.  Since it’s in downtown Minneapolis, parking is in a ramp. Because it’s the weekend, the parking is a flat daily rate: $5.

The first week we went there, as we went to pay on the way out and I handed him a $20, he asked, “Do you have anything smaller?”. I said I didn’t and he reluctantly made change. I didn’t think much of it.

The next week, I gave him back one of the $5 bills he gave me the week before. For the most part, I don’t use cash for much except parking, vending machines and sport arenas these days. But, it’s always been the same attendant.

Then, over the last few weeks, I’ve not had anything other than $20 bills when heading through his station. And, each and every week, he asks if I have any smaller bills.

I can understand being surprised without enough change once. Maybe even twice. But, we’re basically talking about a place where the service you sell for 2 straight days of every week is exactly $5, a place that only deals in cash. But, after weeks of working the spot, how does it not occur to you to roll up into the bank every Friday and basically clean them out of $5 bills as change?

After all, in a world where fewer and fewer transactions require cash, it becomes more likely that the only cash we have on hand is going to come from an ATM, in the form of $20 bills. The pattern isn’t likely to change soon. I have to wonder how long he’ll keep asking people for change instead of learning from the mistake?

Need Your Input on Pliers Framework

It’s been a while. OK, that’s a whopper of an understatement. There’s the usual suspects that play a part: little stuff being posted on Twitter and other interests like brewing, Irish song and mandolin, etc. One could even just wave a hand and chalk it up to “being busy”.

But, “being busy” has really had a very specific meaning for me for the last 18 months or so. I’ve been building a software framework/product/platform called “Pliers”.

Since about 2007, I’ve been working with/subcontracting for the guys at JDB Associates, in particular, Dave (the “D”) for nearly all of my projects. During that time, we talked quite a bit about the commonalities we see in all of the projects we’ve worked on over the years (they’ve been in business since 1993 and I’ve been in the software business in one form or another since 1998).

Those commonalities combined with several long-lasting frustrations we shared. First is that of the limits of trading time for money. Most of the consulting industry operates on an hourly basis. You set a rate for your hours and bill them out. But, if you aren’t billing hours (whether sick, on vacation, doing marketing work, selling, etc.), you don’t make money. And, the amount you can make is tied to an “acceptable” hourly rate.

This means that you actually get punished for getting better or more efficient at what you do. I’ve had the experience more than once of watching another developer struggle with a task for a week and then give it to me to solve. After throwing away their attempt, I solve the problem in an afternoon. If both of us are paid hourly, unless the higher rate is 10x the lower, I can’t get paid equally for the less efficient person.

I won’t pretend that 10x ratios are always there, but I do know that the longer I do this, the better I get at it and that little bit of reality isn’t encouraging if you’re getting paid hourly.

Second, we both lamented the fact that, for many of these common problems, we were basically re-inventing the wheel. Now, it wasn’t because we weren’t aware of previous solutions. Rather, in nearly all contracts, the client owns the code. So, we build something for one client, but, because that client owns that output 100%, we can’t bring any of it to the next client.

So, we started talking in 2010 about ways to solve all of those issues (and a few others) and, in 2011, we started a completely clean-room project to build a common codebase for future projects.

Fast forward to today and we have a platform we call “Pliers” that’s 170,000 lines of code (that’s 2800 pages if printed, FYI). We’ve got a few pilot customers about to go live with applications we built on top of Pliers. And, we’re pretty happy with it in a “let’s call it version 1.0” kind of way.

The basic idea of Pliers is to help manage “work” via web applications. I put it in quotes for a reason (other than as a writing “tic”). The definitions of “work” vary wildly.

For some, like me, work is features, bugs, customer requests, product demos, prospective client requests, estimates, etc. For others, work might be customer orders, available inventory, potential employee/candidate applications, interview notes, candidate hire approvals/rejections, annual reviews, salary request, vacation requests, etc.

And, if you think of your personal life in the same way, you could consider the following things “work” too: my gym workouts (including time, repetitions, weight, etc.), food diaries, *ahem* blog posts, beer recipes, grocery trips, etc.

If you look at that “work” you get the “what” of what you want to track. For much of that work, what happens to it is some sort of process that can be described in a workflow diagram. A “vacation request” is submitted by an employee, reviewed by a manager, approved or rejected by that manager, sent over to a payroll person and made available for anyone who needs to know employee availability. That workflow gets you the “how” you want to do the work with the “what”.

Now, when you look at that workflow, it’s clear that other people are involved. Any employee should be able to submit a vacation request, but only that employee’s manager (or another manager) should be able to approve it and only someone in HR can make sure that the employee gets paid properly for the day and that their vacation balance gets adjusted.

So, we have a whole system of “who” governing the roles that are allowed to move things between statuses.

Some of those status transitions are special. We want people to get emails, other work needs to get kicked off or closed, etc. And, the definition of “valid” or “allowed to” can sometimes vary according to circumstance.

Further, when all of this work is going on, you need visibility to see what’s going on and make decisions. For some, that means visibility for work that they need to do, a la Kanban. For others, visibility means knowing what percentage of the work is in what status or how many support tickets have been closed today and other things that make those with MBA’s lip sync the acronym KPI.

Combine all of that and sprinkle with a bit of other stuff and you get Pliers.

We use web forms to collect information/work, define workflows for that work, map roles and permissions for who should be allowed to move the work, business rules for validation and what actions should happen when work reaches certain statuses, dashboards and reports to give visibility to the flurry of work happening inside.

And, I have to say, I love working this way. I’m able to build functionality so much faster and better than the 100% custom way that so much of my previous work has been. Some of our pilot projects are really amazing if I do say so myself.

We’re starting to use it for all of our own “work” both professional and personal and are seeing the benefits we predicted when work is able to be tracked and integrated with other work.

All of which puts us at a bit of a crossroads.

As we’ve been building the product, we’ve done much of it “on the side”. For the pilot projects (with largely existing clients), we basically did them at “cost”, charging them only for the time to customize and augment Pliers, giving those customers a deal and allowing us to finance some of the work.

That’s been great for the phase we’ve been in and allowed us to do what we needed to: focus on building the product.

Now, we need some help.

We’re trying to figure out the best way to bundle this product, to price this product, who to talk to about this product, how to market it, etc. So, we’re asking for whatever advice or input you’re willing to give us.

If you’d like to know more, we’re putting together a webinar/presentation that shows Pliers at work. I’d love for you to “attend” and tell us what you think. Sign up here with whatever time slot works best for you (psst, that form is powered by Pliers, so if you see any glitches PLEASE let me know so I can squash the bugs).

Afterward, we’ll also be trying to put together some video demos, etc. to show those that can’t make the live webinar.

I really look forward to your thoughts.

Low Carb Protein Smoothies

Over the last year or 18 months, I’ve come to a few conclusions about my diet. They may not be true for everyone, but I’ve become convinced as I’ve observed the results.

When I eat sugar or starches, it inevitably leads to unhealthy binges, eating tons of crap. I end up craving foods, even when I’m not physically hungry. I’m fairly well skilled now in being able to tell the difference, but that knowledge doesn’t seem to let me override my behavior.

When I eat wheat, I get heartburn. I used to think that when I ate pepperoni pizza, the heartburn came from the pepperoni. However, I’ve eaten an entire stick of pepperoni by itself and nothing. It’s the bread in the crust.

When I eat carbs of any sort, I gain weight. I’ve tried quite a few times to allow “reasonable” amounts of carbs into my diet only to discover that I weigh 2-3 pounds more at the end of a week or two of such eating. Even when I attempt to eat “right” while including the carbs.

When I avoid carbs, I lose weight (albeit very gradually). After weeks of gaining while eating carbs, if I cut back and go relatively strict to sub 100g levels of carbs for a few days, I start losing weight. The cravings subside, and I generally feel better overall.

When I take calcium and vitamin D, my appetite stabilizes. This one was weird to discover, but I found a study that backed my anecdotal experience. When I’m taking those particular supplements, I get full on smaller portions, stay full longer, and my hunger is sort of “muted”.

When eating out on dates with my wife and in places like hockey games, I’m incapable of resisting the foods I enjoy. Since we eat out every Saturday night and go to 10-15 hockey games a season etc. these meals affect the rest of my eating results.

Overall, that combination means that, to strike a balance, if I eat low carb most days and what I want on Sat nights/hockey games, I’ll maintain my weight. If I want to lose weight, I need to eat low carb AND reduce the calories too. Enter the smoothies.

I started making them as an attempt to solve the problem of breakfast. There’s plenty of low carb breakfast options. Heck, the breakfast options are one of the big perks of eating low carb. However, the time and mess involved in making such a breakfast has proven impractical in my life. I tried low-carb protein bars (the Quest protein bars are really good), but, despite low carbs, I was prone to eating them as snacks and far too many of them in a day (especially at $2 each).

So, someone suggested a protein smoothie. I made a few and discovered that, properly made, they filled me up until at least my 11am normal lunchtime (I like to avoid other people when getting lunch). Often, I was pushed into having to wait for lunch until 1pm and was completely fine. Prompted by that, I tried a week or so of smoothies for both breakfast and dinner, with relatively normal, low carb lunches. I lost weight easily that week. Thus, I have a eating plan where I can lose weight without being too hungry AND it’s relatively cheap and doesn’t consume time or make messes in the kitchen.

So, I’m going to share with you a few of the “recipes” that have become my favorites.

All of them are made with a “Magic Bullet” blender, using the large container. As such, I don’t so much measure as use ratios for many of the ingredients. To re-create these, you’ll have to tinker a bit.

Base Recipe

Nearly all of my smoothies are based on this starting recipe.

  • 1/3 container crushed ice. From the fridge’s ice maker.
  • 1 serving of vanilla protein powder.
    • My current favorite is Isopure Zero Carb Vanilla. Lots of the whey varieties have an “off” flavor I don’t like. The soy varieties are gritty. Still trying other varieties too.
    • Depending on variety, a “serving” is one or 2 scoops. Use whatever the container says is the amount for an 8 oz glass.
  • 2 big spoons full of full fat plain yogurt. I’ve done both plain and Greek vanilla or honey flavored, all with good results. The plain is lower in carbs and sweetness can be added with stevia or other non-caloric sweeteners instead. I always use yogurt with live cultures. Plenty of evidence mounting that the live cultures help bacterial health in the gut and yogurt provides them in the right form and adds a nice tangy flavor that works well with quite a few other flavors.
  • 1% milk on top to fill the container. I tried whole milk, but that, combined with the full fat yogurt led to too much frothing and it got too thick and expanded too much.

To that base, I add my flavorings. I know that the typical thing here is fresh fruit and veggies. I also know that keeping that stuff around doesn’t tend to work well *for me*. It also tends to bring a lot of sugar to the party. So, I’m generally after something much quicker to make and these end up being REALLY easy to make and to have ingredients on hand.

Peanut Butter Smoothie

This one is higher in calories than the rest, so I limit the number of these I eat.

  • Base smoothie
  • 1 large spoonful of natural peanut butter. Check out the carb content on peanut butters and get the lowest.
  • 1/2 tsp cinnamon

Apple Butter Smoothie

  • Base smoothie
  • 2 big spoons full of the lowest carb apple butter I could find.
  • 1/2 tsp cinnamon

Chai Smoothie

Fruit Flavored

These are the ones I make most often for breakfast. The Crystal Light “To Go” single serving drink mixes work really well to flavor the base smoothie. I use 2 packets when I want strong flavor, 1 if I don’t.

Dreamsicle Smoothie

Grape Mister Misty Freeze

I always enjoyed DQ’s Mister Misty Freeze (grape slushy with ice cream in it), particularly the grape flavor when I was a kid. While I haven’t had one in years, this one tasted remarkably like I remembered.

Other Fruit Flavored

I’ve found that many/most of the flavors in the section near the Crystal Light are pretty good. They’re all really low in carbs and work pretty well.

Overall, there are plenty of options for variety and it seems to work well for me. If you’ve been contemplating making smoothies and want something easy and tasty, give these a shot.

Oyster Stout Irish Stew, Irish Red Ale Shepherd’s Pie and Irish Soda Bread

A few days ago, it was my turn to host our homebrew club for our monthly gathering to taste beer and “talk shop”. As March often brings up discussion of Irish beer and food, I figured I’d make the menu Irish-themed.

I’m not a fan of corned beef and cabbage (plus, that’s not terribly Irish in actuality anyway). But, I like stews and shepherd’s pie and both seemed like good opportunities for recipes including beer. So, the menu ended up being an Irish beef stew, shepherd’s pie and “my” Irish soda bread. All-in-all, a tasty menu that I’ve been enjoying leftovers from for a few days afterward.

Here are the recipes for the things other than the soda bread. Comments indicated either extreme politeness or that these are good recipes.

Oyster Stout Irish Stew

If you’ve never had an oyster stout, what you’re imagining is probably pretty unappetizing. Yes, it’s actually made with oysters (homebrew recipe for making your own oyster stout). However, what they add is mostly a briny, salty taste. While interesting in the stout itself, I thought it would make a really great addition to food. I was right. I used Porterhouse Brewing Co’s Oyster Stout as the oyster stout.

  • 2 lbs stew meat (lamb is actually much more traditional than beef, but, try as I may, I can’t get myself to like lamb)
  • 2T of butter
  • 2T of flour
  • 3 large potatoes, cut into whatever size you like in stew
  • 1 large onion, diced
  • A clove or 2 of garlic, diced
  • 2-3 large carrots, sliced
  • 1/2 tsp salt
  • 2 T of tomato paste
  • 2 bottles of oyster stout (or 1 bottle and equiv chicken stock)
  • Black pepper, rosemary and thyme to taste

Brown the stew meat, onions and garlic in the butter in a large Dutch oven-type pot. Sprinkle the browned ingredients with flour and stir until the flour is saturated with the fat and browns up. Add the rest of the ingredients and simmer for a few hours until it’s at the consistency you like.

Pretty simple, but stew is. Serve with Irish soda bread.

Irish Red Ale Shepherd’s Pie

Again on this dish, beef isn’t actually traditional, lamb is. However, there’s a flavor in lamb and goat that I just can’t get past. Use whichever meat you prefer and it will turn out tasty. I used Porterhouse Brewing Co’s Irish Red Ale on Saturday, but if you can’t get that, try Smithwick’s or brew your own (Midwest’s Irish red ale is their #1 selling beer kit and really easy to make). This is a nice dish because it can be made ahead of time/frozen and tastes better if you do so.

  • 2T butter
  • 1.5 lbs ground beef
  • 1 large onion, diced
  • several cloves of garlic, diced
  • 2T of flour
  • 1+ bottles of red ale
  • 2T of tomato paste
  • 1tsp salt
  • 1 tsp Worcestershire sauce
  • 2 carrots, peeled and chopped
  • 1/2c frozen peas
  • 1/2c frozen corn
  • Black pepper, rosemary, thyme to taste
  • Batch of mashed potatoes (see below)

Brown the onions and garlic in the butter, and then brown the ground beef in a Dutch oven-style pot. Sprinkle flour on top and mix until flour absorbs the fat and browns a bit. Add the rest of the ingredients except the frozen peas and frozen corn. Simmer until the carrots are tender, adding beer as necessary to keep it from drying out. Add the frozen vegetables. This is the lower level of your shepherd’s pie. Put this into a casserole dish, but make sure to leave room for the mashed potatoes or the whole thing will spill over later. Leave 1/3 to 1/2 of the height of the casserole. Cover with mashed potatoes. If you want the best results, chilling before adding the potatoes makes them easier to spread on top.

Freeze or refrigerate if you’re not making it for the “current” meal. Bake, uncovered until browned on top and hot in the center (not sure on timing because I always use a thermometer rather than timer to determine when done).  Serve with Irish soda bread. :)

Mashed Potatoes

Like many cooks, I don’t follow a recipe for mashed potatoes. But, here’s how I make them. They’re good enough that my wife, who refused to eat mashed potatoes when I married her, loves them now.

I peel and cut the potatoes into small chunks. They go into my vegetable steamer to steam until they’re tender. The steamer prevents them from getting water-logged and the flavor is much better as far as I’m concerned.

Anyway, I either run them through a ricer (if I want really smooth potatoes) or mash them up with a masher (if I want chunks in them). As I mash, I put in a bunch of butter. After they’re all mashed, I switch to a wooden spoon and mix them as I pour whole milk in a splash at a time until they reach the consistency I want.

For the shepherd’s pie, you want a relatively “loose” mixture so you can spread it across the meat mixture underneath.

If there are extra, topping with fresh chives, bacon crumble, cheddar cheese and eating right there in the kitchen is something one could do. You know, if one was so inclined.


Motivations Vary. Don’t Assume.

Recently, I’ve been toying around with options for “work” shirts for my home brewery. I have several of the Dickie’s-style work shirts from homebrew stores, etc. and like them. So, I thought it’d be fun to have a couple of “Fat Basset Brewing Company” work shirts.

Of course, having them printed the same way Northern Brewer did, you have to order quite a few shirts (even 6 is more than I really want). Then someone suggested that I just get set up to do my own screen printing. Then, I could print the logo on whatever clothing, etc. that I wanted.

Since that also appeals to my chronic desire to learn to do new things/hobbies, I, of course, started doing a bit of Googling for what’s all involved. That’s when I ran into something that I see in a lot of hobbies: assuming everyone else’s motivations are the same as yours.

I found TONS of information on screen printing at home. However, in doing so, I was struck how the vast majority of the tutorials emphasized (to the point of often including in the headline), the “on the cheap” nature of doing your own screen printing. There were tutorials about using old pantyhose as your screens, wire hangers as the frame, etc. All the while, the authors pointed out how much cheaper this was than any of the alternatives.

Clearly, the authors assumed the primary motivation of anyone seeking out info on screen printing at home would be frugality.

That particular assumption is also found in lots of the homebrewing information I’ve dug into. True, in every gathering of homebrewers, there’s someone who’s managed to figure out how to make their beer as cheap as humanly possible. But, there’s also almost always someone who got into it because they want to make beer they can’t get easily where they live. There’s the person who really enjoys building with stainless steel or wiring electronics to pumps. There’s the person who enjoys entertaining and giving beer away.

Fortunately, that diversity of motivators is represented in the content I find out there. Some sites show how to go all out and build your own stainless steel monstrosity that brews beer practically unattended. Others show you how to re-use junk you can get for free to build your home brewery.

Unfortunately, what I saw (in my admittedly small sampling) of the screen printing, the assumption of frugality nearly turned me off from even pursuing the idea. I don’t really want to do a bunch of futzing with the screens, getting them coated, exposed properly, framed and ready to go. I’m willing to do the actual printing, but don’t want to do a whole bunch of setup. And, I want a quality print when I’m done.

All of the articles that focused so heavily on the cheap way to do it left me wondering how I might actually do it WELL. Or easily. I’m not opposed to spending a little bit of money if it means that the process gets easier or that the outcome is of a higher quality.

I see these kinds of assumptions in software and other businesses as well. Rather than asking prospective customers what their needs are, salespeople assume that this customer is like many others and jump into their pitch. And, in the process, lose the customer.

It happened a little bit when I bought my new car a few months ago. I actually ordered it 9 months ago and waited 6 months to get it. When I went in and we discovered that the configuration I wanted would take 6 months, they assumed I cared about how quickly I would get the car and started pushing me to compromise on what I wanted. Fact was, I didn’t care much if I even bought a car last year at all. But, if I WAS going to buy a car, I wanted exactly what I wanted.

Ask good questions that either invalidate or confirm your assumptions whenever you can. In nearly every endeavor, it leads to better outcomes.

Memorizing Lyrics

I’ve now been taking the song classes at The Center for Irish Music for a couple of years. One of the challenges issued by every instructor there is to genuinely memorize a song and make it our own. And, every time I hear that, the challenge resonates with me, but I never seem to get anywhere on it.

In the last couple of weeks, I’ve decided to set myself some modest goals to completely memorize the lyrics to 5 songs per semester.

When I was a kid in elementary school (a Christian school), memorization was a key part of my education. I was required to memorize not only Bible verses galore, but poems and other texts as well. Among the only childhood ribbons I have (never participated in childhood organized sports) are for competitions reciting poetry.

So, I know I can memorize plenty well, if I put my mind to it. However, I believe there are more effective techniques than the brute force methods I used as a kid.

As I thought about this and reflected on what I’ve read about memorization, I realized that what I really wanted was a web-based tool where I could enter the lyrics and have it blank out words to be supplied by the memorizer.

Obviously, if such a tool could adjust how many words should be dropped out, starting with just a few and gradually reaching the point where all of the words are missing. If you are able to fill in all of the blanks, you’ve got it memorized.

That, combined with writing the whole thing out a few times and I think I’d be on my way to learning songs quickly and thoroughly.

So, last night, while watching TV (when all my prototyping seems to happen), I put together a quick app to do the random word dropping. I called it “Text Memorizer” and you can try it out at that link. It’s REALLY simple. No saving or keeping track of “scoring”. It just highlights the box in green if you get the word correct.

We’ll see if it accomplishes the goal. Regardless, it was fun to put it together and a nice distraction from the database-heavy work I’ve been doing lately.

Trickle-Down Economics, Giant Piles of Cash and Thriving Economies

Warning: What follows may be seen as political. Like the theme of this blog suggests, my political beliefs don’t fit into the neat boxes that typical political conversations sort people into. If I get into a discussion with a room full of Republicans and Democrats and genuinely share my opinions, I’m likely to upset nearly everyone, for different reasons. So, in any response you make, please avoid any projecting on to me the properties of other people you’ve argued with about such matters.

I've had a few conversations lately where supply-side/trickle down economics came up (I'm great fun at a party). There's something I see as missing from most discussions of the topic.

When you look at 20th century economic activity prior to Reagan, there's actually plenty of evidence that "trickle-down" actually works. When business owners and other wealthy people did well, they re-invested in their businesses, opened new factories, and gave to charity, thus fueling the economic engine.

I really do see “trickle down economics” working when I look at the evidence of that era. So, why do I think that most of the policies that Reagan and other that followed implemented based on supply-side economic theory are a failure?

Well, first, I should say that I do think that most of those policies are failures. The gap between the rich and poor, between CEO and low-paid workers in the same companies has widened. And, while that’s been going on, companies have been making record profits while sitting on more cash than any other time in history.

So, what’s different? Taxes.

The pre-Reagan era where supply-side economics worked was a “complete” system. The top tax bracket was anywhere between 63-94% between 1932 and 1981. Lots of people think that such tax brackets are about taking money from the rich (and that’s the focus of much of the recent debate). But, that presumes that people in such tax brackets look at those tax rates and just pay them.

What high tax rates generally do instead of actually collecting that money is encourage them to re-invest it in their business or charitable giving. If your business generates $1 mil in profit and you have to pay 94% of every dollar over $500K, would YOU just write the check for $470K to the federal government? Or, knowing that if you use it to build a new office/factory, hire new workers, build new machines, increase production capacity, spend money on marketing and advertising or, alternately, put the money to work in your favorite charity?

That’s the point of high tax brackets: the THREAT of having to give that money to the government.

When that threat is there, there’s pressure to put the money back into circulation. When it’s not, you get companies sitting on $76 billion in cash. You get companies sitting on that cash rather than using it to create new products, to innovate, to put people to work, to do goo charity work, etc.

When that threat isn’t there, presidents hold meetings with CEO’s and “ask” them to get the money moving. Eisenhower didn’t have to have such meetings during the 1950’s that people so often love to harken back to. Given that the whole point of a healthy economy is to keep the money moving, that stands out to me.

When you re-invest in your business, it tends to come back in higher revenues and the cycle repeats itself. That preserves the wealth while keeping the economy chugging. Remove the forced incentives and you’re left with only the “natural” incentives to re-invest. Those shouldn’t be minimized. They’re significant.

But, when you’re making plenty of money with your existing products, with your existing marketing, you probably don’t feel much of a push to re-invest. You might just sit on the cash until a really great idea comes along. There’s no urgency.

So, huge stockpiles of cash are forming in large corporations and for the wealthiest (the, ahem, 1% if you will). There are plenty of people advocating for increasing their tax burden and even a few wealthy people saying they should pay more. Their opponents say that we shouldn’t be taking their money and “redistributing the wealth”.

I think we should put those tax brackets back in place, specifically hoping we DON’T ever collect any of that wealth via the government. I don’t want the government to take Apple’s $76 billion. I want to see what amazing products and services Apple would create if they HAD to spend it. I want to know how many people would be put to productive work if the Fortune 500 put the $2 trillion they’re sitting on to work instead of it sitting in the financial services companies.

In short, I think that the facts point to nearly all sides of this argument being right on some points and nearly all being wrong on others. In between, there’s a system that actually works. That system is, in fact, the one that existed in the era that most business people hold up as a shining example of the version of The United States we should aspire to.

So, does this make me a “liberal” or a “conservative”?

Hybrid Expertise

Had a conversation about "being the best" that reminded me of something I read a few years ago. Scott Adams (of Dilbert) talks about how the advice that most people give to be the number 1 best at something doesn't make sense.

Think about it. In a given field, if anything other than being number 1 is deemed failure, almost no one will ever be considered a success.

His advice instead is to be in the top 25% at a few different things. In doing so, you DO become the best at that combination and essentially can carve out your own niche. Being in the top 25% in something you're interested in isn't terribly hard.

For me, I did this by accident. My degree and educational background is in English and communications. I took tons of writing and public speaking classes. I took a bit of art and design classes giving me skills to make my communication look and sound better than it would otherwise. I think I have good evidence that I'm in the top 25% for those kinds of skills.

I have loved computers since I sat in front of TRS-80 and TI-49A computers in 1985. I'm self-taught as a software developer, but think I've managed to get to top 25% there too.

I grew up in an entrepreneurial family and learned a LOT about how to run a small business as I grew up.

The thing is, when you combine those, you get a software developer who is good at communicating with non-developers and understand business. THAT combination turns out to be fairly useful in the marketplace.

Other synergies from that combination have also shown up, such that I'm suited to speak at software conferences (something I've started doing over the last few years), I mentor and teach other software devs on my projects, I'm working on my own software product that I'm aiming to get to be a profitable business so I can quit selling my time, etc.

I might even go further than Adams does and think that enough skills where you're even just above the 50% mark (just barely better than average) can work to build a solid niche.

The Dilbert Blog: Career Advice

Originally posted at:

Kindle Fire - Volkstablet - My Review

My Kindle Fire arrived today. I bought it to have an Android tablet for web application testing. Of course, I'll also just plain use it too.

For context, I should note that my work bag that I take with me to work and pretty much everywhere contains the following:

* Windows laptop
* MacBook Pro
* iPad
* iPod Touch
* TMobile MyTouch Slide (in my pocket, technically)
* Dell Venue Pro - Windows Phone 7
* Google Nexus
* iPhone 3G that actually only has 2G data access and no WiFi.
* Original Kindle

The Kindle Fire will probably replace the original Kindle, but for at least a while will just be an addition.

OK. With that out of the way, I've seen plenty of reviews of the Kindle Fire, most from people who clearly prefer the iPad. In many cases, I can see biases that the reviewers seemingly aren't aware of.

The first is that many of the reviews sound like someone who's been driving a Lexus or Mercedes for the last 2 years and they're reviewing a Toyota or Honda. Any but the most neutral reviewer in that situation would find themselves underwhelmed, no matter how solid and appropriate the Toyota.

That's because a Lexus is $60-80K while the Toyota is $25-30K. That's relevant because that's the same kind of ratio we've got when comparing a $500-800 iPad against a $200 Kindle Fire.

So, when reviewers act like that price difference doesn't matter, I have to wonder how they'd handle reviewing the Lexus/Toyota next to each other. Those reviewers keep comparing 3G data access, cameras, etc. against the iPad.

You want to know what the killer feature for the Kindle Fire will be? The fact you can buy one EACH for 3 kids for the same price as one 3G iPad.

The other thing that strikes me is that the people who are happiest with their iPads are those who buy into the "Apple lifestyle". They're the ones that buy their music, movies and TV from iTunes on a MacBook Pro or Air, watch that content on their AppleTV over WiFi provided via their Airport Extreme. That's clearly by design.

That's where I think my experience with the Kindle Fire so far differs from many reviewers. See, when I powered it up, it showed ~120 Kindle books on my bookshelf that I've already purchased. When I opened the music section, there were nearly 30,000 MP3's that I've already uploaded for free to the Amazon Cloud. When I open the video section, I'm greeted by a bunch of movies and 54 TV seasons, including the current season of Walking Dead where the last couple of episodes I haven't had time to watch are waiting. Along with them are piles of stuff in the Amazon Prime library.

That sounds like one big Amazon commercial, doesn't it? Of course it does. That's how most Apple pitches sound too. But, if, like me, you've actually been in the Amazon content camp for quite some time, things line up nicely and you have that same, smooth experience that longtime Apple customers have had when buying iPads.

None of the reviews I've read so far seem to have come from anyone who already had a lot of Amazon content. And, the content strategy is really where the success or failure of this product hinges, doesn't it?

Overall, it's a decent device. It does the 80% most common things I do on an iPad and, for content consumption, which is a large part of that, it does it better FOR ME, because my content is already on the Amazon stack.

The built-in speakers are acceptable, screen's bright, etc. The size is actually better for me than the iPad. I know, from reading the tech press, that I'm not supposed to feel that way, but I do. In portrait mode, it's narrow enough that I can type with my thumbs like on a phone. Given my hand size (I'm a 6'4" 260lb guy), it's actually better/easier than it is for me on software keyboards in phones. It's trade paperback size, which, in books, is clearly sold in that size for a reason. I can read much more comfortably with the Kindle than I can with the iPad. I like that.

Lots of geeks/techies seem to think "everyone" already has an iPad, any time spent in more "mundane" circles (like western Minnesota where I grew up), you'll find very few iPads and lots of derision at the idea of spending $500-800.

If you look at this like the early days of cars, you don't get America driving by selling them Mercedes Benz cars, you do it by selling $600 Model T's. The whole time Henry Ford was cranking out Tin Lizzies, Mercedes and other luxury brands were doing much more feature-full models, but cheap, basic cars took over America.

Only time will tell whether that parallel is correct or just another in a long line of ill-fitting analogies of technology to cars. But, I'm betting on Amazon.

Why All The Superhero Origin Re-Hashing?

Had another conversation with someone who is baffled by the fact that they just keep re-making the origin story comic book movies rather than moving forward with other stories. It's not all that surprising, actually.

See, there's this pattern of storytelling for sci-fi/fantasy that TV and movies (and many books too) stick very closely to as it's the least risky structure they can go with. The pattern involves a "mundane" or "normal" person as a primary character.

That normal person serves as a proxy for the viewer or reader. All of the weird stuff going on in the sci-fi or fantasy universe needs to be explained to them and thus, to the audience. Luke Skywalker knows nothing about the force and neither does the audience at the beginning of Star Wars.

Since Luke needs so much stuff explained to him, it becomes much easier for the filmmakers to explain it to us as an audience. When Sheriff Carter shows up in Eureka and has never heard of the place, anything the writers need us to know gets explained to Carter. When a weird artifact needs to be explained to the audience on Warehouse 13, it gets explained to any of the half of the cast filling this role on that show.

This can be multiplied to include more than one such character. Shows like Stargate put nearly the entire cast into this role when the started out. Same with most of the cast on Lost.

This formula is so completely ingrained that when a show like Stargate matures, the often need to inject a new character or set of characters to fill the role.

Once you realize this pattern and are looking for it, you can usually see which sci-fi or fantasy material has any chance of mainstream success. Those that follow the formula have a shot, those that don't, don't. I'm sitting here trying to think of ANY examples that succeeded against this formula and I'm coming up empty.

This formula is seriously powerful. First, it really is good storytelling, particularly when the story world deviates from the rules of current reality. Second, it provides an onramp for those who wouldn't otherwise be interested in the weird story world. That second part is damned near a law of nature when it comes to TV and movies. Whether or not it's ACTUALLY necessary or it's just talking down to audiences is irrelevant. The studios clearly believe that nothing in the genre works without this.

Back to super-hero movies, you'll probably see that, in an origin story, the hero serves as our proxy character, exploring their new powers, learning how to be a hero, etc. This is a particularly powerful combo because our proxy user (whom we are meant to empathize with) is combined with the protagonist (whom we are meant to empathize with). Put those together and nearly all of the story's empathy is channeled in the direction of the hero.

When you look at the non-origin super hero stories, they often lose the proxy character. At the very least, the hero stops being able to fulfill that role. That means siphoning some of the empathy away from the hero. That gets tricky to write and still keep it compelling. As such, each time a franchise strays away from origin stories, it gets more and more risky, speaks to a smaller and smaller audience and generally scares the crap out of the people in Hollywood pouring hundreds of millions into making these movies.

Their reaction? Stay in the end of the pool where it's safe. Let's just re-boot and go back to the origin story again.

Ideas, Matches and Bonfires

I think of a successful business, product or service as a bonfire. The idea is a match or spark or friction. Without that, you won't be able to start the fire. That makes the idea critical.

However, unless someone provides tinder, kindling and a steady supply of firewood, your bonfire will be, at best, a quick flash of light and heat and then a charred match.

After the fire has been built up and it settles into a proper bonfire, you've got a pile of hot coals that are lighting the additional wood that gets added and it becomes an engine for heat and light.

From the perspective of those sitting around the fire and enjoying its output hours after it was started, the guy who brought the match is important, but hardly worth praising over those who gathered the pile of firewood that will fuel the fire into the night.

Too often in business, I see the guy who had the idea getting disproportional recognition. Ideas are plentiful (matches are sold in boxes of thousands of them) and pretty much disposable. But if you really want a fire that burns strongly and for a long time, someone has to do the hard work of either gathering or cutting/splitting/drying and preparing the firewood.

I've been in meetings where literally hundreds of ideas are recorded in an hour. Any one of those ideas might require 10,000 hours of human effort to see it to completion.

I love ideas. I keep a notebook full of them. But, I make my living from turning those ideas into blazing bonfires.

Using the Razor for Templating Outside of ASP.NET MVC

For my upcoming software products, I’m carrying forward a strategy I’ve used at several clients for skinning/theming the application: a template engine. I like to think of my template engine approach as the “reverse” of what usually gets called a “content management system”.

See, most CMS’s force you to let their app run your site as well as manage your content. If you want to write custom business logic or customize what they can do, you have to write it as a plugin to the CMS. I’d rather have content/templates available as subordinate to my application. I’ve used that approach often enough now that I’ve grown to love it and consider it one of my most useful tools.

In past implementations, I’ve used various templating languages. Back in the PHP days, I used Smarty and for the last few years, I’ve used NVelocity. It’s nice enough, but it’s different than the view engine we use for things like our back end admin portions of our platform. So, you end up jumping back and forth for syntax in views, depending on whether you’re working on the back end or the front end of the whole deal.

Since we chose NVelocity, Microsoft added the “Razor” view engine to ASP.NET MVC. I’d seen several people mention that you can use it to do “in memory” templating like what I’m used to doing with NVelocity. I wanted to do a quick prototype to get a handle on how it works. Right after doing my IronRuby prototype, I tackled a quick one using Razor to put together a templated email.

It was really easy. And, since I was already in the groove, I recorded a screencast walkthrough of the prototype, such as it is. Here you go:

Razor Templating for Emails, Etc. from J Wynia on Vimeo.

Using IronRuby as a Scripting Engine in Your Application

So, one of the products I’m building needs several points of extensibility that can be dropped in. For a certain type of extension, we’re using MEF. I’ve been using MEF on my current client project for a while and have worked out many of its quirks. But, MEF still puts the author of extended logic in Visual Studio.

On the other side, we’ve got a templating/snippet system that stores chunks of “views” for rendering pages, emails, etc. that provide a mechanism so that the entire look and feel of the application is stored in chunks in a database. They’re editable via a web app by people other than web developers. I’ve built similar for several projects and it works out really nicely.

I want something closer to that templating solution for simple business logic and rules. There’s still a definite place in my architecture for MEF plugins. C# does heavy lifting well. However, I have long been intrigued by IronRuby as an embedded scripting engine. So, this morning, I did a quick prototype to determine how much effort it was going to be to use it in the way I want.

Turns out, it’s pretty damned easy. When I mentioned that I was doing this prototype, someone asked if I was going to blog it. It’s often easier to just record a quick explanation/walkthrough, so that’s what I did. The video is below.

IronRuby Scripting in .NET from J Wynia on Vimeo.

Building Some Software Products

Since 1999, I’ve been in the software consulting business, selling my skills, either directly or through an employer who was a consulting company of some sort. In fact, since graduating from college in February of 1998, only 18 months of my working history has been in any other context than consulting.

I’ve built a decent business/career doing consulting and it’s clear that I can continue that for a good long while. However, as I headed into 2011, something was very clear to me. I need to have some ways of making money that aren’t me directly selling my time/skills.

Over 2009-2010, I billed a LOT of hours. 4 x 40 hour weeks yields “fulltime” months of 160 hours. However, rather than seeing that number regularly, I’ve had 300 hour months and rarely bill fewer than 200. In doing so, I made pretty good money during that timeframe. But, it’s tiring and isn’t something I can keep up for very long.

At this point, the only ways I can make more money selling my time directly is bill more hours (been there for 2-3 years now) or raise my rates. I am raising my rates, but the local market for contract dev work is weird for how it responds to rates.  Beyond that, I just don’t like having my options limited like that.

So, I’m now working on 2 software products/services/platforms that I can use to make money via licensing, monthly fees, per-project billing, etc. In short, I’m building levers to harvest the reward of working smarter.

So, what am I building?

The biggest is a framework for building document/data workflow applications for businesses. It’s right in line with the kinds of stuff I’ve been doing in my consulting practice for years. And, that’s where that platform will be applied first. We’re going to use it as the starting point for consulting projects where we charge a licensing fee for the platform and then do the customization and extension as a more typical consulting project.

I’m really excited for the possibilities this offers to do more value-based pricing, which gets the focus on ROI instead of clients focusing on the hourly rate. 

If I told you that if you give me $10 and I guarantee that I’ll bring you $20 immediately after walking outside, you probably wouldn’t question it much. In fact, you’d probably start looking for as many $10 as you could find. Yet, somehow, when it comes to software consulting, people focus on the fact that $10 for 5 minutes’ work is $120/hr and they start negotiating like mad to reduce that number.

Anyway, this product is shaping up nicely and I’m working hard to get it ready for my next consulting project. It’s .NET and is based on the tools I’ve come to rely on in the last few years: ASP.NET MVC and related tools.

The other project is a web application for managing conferences/codecamps, etc. running on Google App Engine. There’s a gap for a really cohesive app in this space and we have a pretty good plan for building one that works well.

So, while I’m cutting down on the hours billed, I’m still working like mad to get these things built, aiming for a day when the leverage starts paying off and I can shift my income away from selling my time. Until then, it’s nose to the grindstone ‘round here.

Boiling Honey: Bochet Mead and Cyser

So, in an archived episode of Basic Brewing Radio (from 2009), Charlie Papazian referenced a magazine article he’d written about a mead from the 40s labelled “1949 Gulval Bochet”. In the article, he described the amazing complex flavors. In the panel discussion, he asked the other meadmakers (all world class meadmakers) if any of them had made bochet. There was basically silence. Clearly none of them had ever made it. Given Charlie P’s description, and it’s apparent obscurity, my interest was suitably piqued.

Bochet is “A mead where the honey is caramelized or burned separately before adding the water. Gives toffee, chocolate, marshmallow flavors.”

Anyway, a few weeks later, while heating some sugar for priming some beer, I forgot about it on the stove and burnt it completely to charcoal. When I tweeted about that, someone asked if I was making bochet. Suitably reminded about the idea, I decided to dig into a it a bit and ran across this video of caramelizing/”burning” the honey:

Further intrigued, I decided to pilot a small batch on the stove. I used just a single pound of honey (it’s pretty heavy and a pound is less than you think) to see how it works, how much it foams, etc.

I didn’t use an open fire, and with the controlled heat of a burner, it was pretty easy to turn the honey into a dark mahogany and it developed a wonderful caramelized flavor. I pitched that honey into a concoction of Trader Joe’s juices as a test, 1 gallon batch of cider (still fermenting). While that’s still not done, I was encouraged by the results.

While I do want to make a full bochet mead, what I’m most interested in trying first is a cyser made using the “burnt” honey. My ciders have all been getting pretty good reviews from those who’ve tried them and I’d like to enter something interesting into competitions for the cider categories (in particular the MN State Fair this summer).

Today, I took the idea up to a full 5 gallon batch size and I’m really excited about the possibilities.

Here’s what I did, in a nutshell.

I took 5 pounds of clover honey, into my 10 gallon kettle, outside, over my Blichmann burner. Given how much honey foams when you boil it, I wanted to give it plenty of room. I probably would have been fine with my 5 gallon kettle, but better safe than sorry.

Boiling honey

I lit the burner and got the honey going. I let it go until I just started smelling burnt marshmallow and then killed the heat.

In order to ensure that the honey would be able to be poured into the fermenter, I wanted to dilute it a bit, so I grabbed half a gallon of water and SLOWLY added it into the honey. If you decide to do this, be VERY careful in this step because it will bubble and spatter quite a bit as you add water. Boiled honey/sugar is like napalm if it gets on you and it sticks like glue, so be careful.

Anyway, after I added the water, it was a nice dark liquid. In the bottom of the pot and on the sides, etc. were little chunks of solid, caramelized honey. Since I wanted that dissolved, I needed more liquid.

Boiling honey

I took one of the 4 gallons of apple juice destined for the final recipe and added it too. For most of my “off-season” ciders, I use “bottom shelf” apple juice. Anything that’s pasteurized and has no preservatives (except Vitamin C, that’s OK) works. I’ve been using the stuff I get from Costco for about $4/gallon.

That gave me enough liquid to cover nearly all of the solid chunks of caramelized honey. I lit the burner to heat it a bit and stirred until all of the bits were dissolved.

From there, it was pretty much like most of my ciders. I put the remaining 3 gallons of juice into the fermenter. On top of that, I poured the apple juice/bochet honey mixture and topped with a bit of water. If I get this recipe refined, I’d rather have that extra liquid be apple juice or apple juice concentrate, but I didn’t have any on hand.

I was tempted to add some of the things I’ve gotten used to adding to my ciders: black tea, vanilla, etc. However, when entering cysers in competition, it’s only supposed to have apples and honey as the ingredients, and I have high hopes for this one, so I want it eligible for the cyser category and not just the “Open Mead” (which is basically the miscellaneous category).

For yeast, I went with what’s become my “old standby” for ciders: Irish Ale yeast. While I really need to do some side-by-side experiments to determine for sure, my anecdotal experience says the Irish Ale Yeast compliments ciders well, so unless I have a good reason to use something else, Irish Ale it is.

I pitched the yeast and set the carboy in my shower for the first 48 hours of fermentation. As you can see in the blurry photo below, the final pre-fermentation result is really dark. It will be interesting to see how it turns out.

Boiling honey

The “Previously On” Portion Of Production Problems

Last week, a series of unfortunate events led to major problems in the production environment. The mad rush to get these problems diagnosed and fixed is something that’s pretty much part of the job when you are a software developer. It usually ends up with a steady stream of visitors to the cubicle of someone who can actually move the problem forward.

During this last round, I noticed a pattern and it struck me as funny.

If you watch TV dramas, you’re probably used to a little “recap” that happens at the beginning of an episode, particularly if it’s been a while since the last episode aired. It typically starts with the phrase “Previously On…”.

That phrase kept running through my mind as I watched people join our little scrum trying to fix the production problem. Each new person would arrive and ask the same set of questions, which had already been answered 5 or 6 times over the course of the previous half hour.

When you aren’t planning on this pattern appearing, it’s irritating. The thing is, that this is pretty much the way these things always go, so it shouldn’t be unexpected.

Once you recognize the pattern, you can deal with it. When a new person joins the room, you just accept it, give the most concise “Previously On…” and move on to solving the problem. We started doing that and found that the time spent catching the new person up went much faster than when left to happen “organically”.

I’m going to have to watch more carefully the next time to see if there are ways to make this even more efficient.

Domains Available

Like a lot of geeks and digerati, I register a lot of domains only to discover that I never get around to using them for anything. In the spirit of spring cleaning, I’m getting rid of some to cut my portfolio down. I could just release them, but figure the people I know (even just casually online) should get first crack at them.

This list represents a batch of projects that I thought I’d get around to at some point. I am growing more and more willing to abandon such notions when it’s clear that I’m actually not going to get around to doing anything with the idea.

Then there’s the effort I’m putting into ideas that I have a much better chance of actually executing on.

Maybe you have a use for one of these domains. If you do, let me know and I’ll transfer it over to you instead of just deleting my claim on it. – was going to be for a niche blog about making good iced tea instead of just using Lipton tea bags – I am largely self-educated. Wanted to build a site to help others do the same. – aimed at being a not-all-that-short URL shortener. – Intended for a blog of recipes using beer. Even started this one, but got nowhere. – Back in the days of “pro” blogging and blog “networks”, I registered this. – Same day. Same reason. – This was intended to help highlight content licensed under Creative Commons licenses. Used it for a bit with subdomains like to highlight CC-BY photos from Flickr. Like this idea, but I never invested enough time in it. – Paired with the above for covering the common domains. – I get sick of the poor way people ask technical questions. They don’t include the stuff that geeks need to actually help and often include lots of irrelevant info. Was planning on writing up a guide to asking technical questions of geeks. – Intended to be used for a StackOverflow for “maker” culture (see Make Magazine) – Was going to be a blog of movie reviews with a binary rating system (i.e. a single bit): 1 if I would pay to see it if I had it to do over again, 0 if I wouldn’t. – Like, intended to highlight CC-licensed fiction. Turned out to be really hard to find much of it to feature.

So, just let me know in the comments that you want the domain. First come, first served. Anything not claimed by next week will just be released to the domain pool.

Site Formatting

Just a quick note to say I am aware of some of the formatting issues on some of the content on the site(mostly showing up as too much whitespace) . Because so many different tools put content into my Wordpress setup over the 7+ years I've been posting content here, some variations are causing problems because they relied on Wordpress "magic" to make things look right.

Now that such magic is no longer involved, posts are looking strange. However, rather than attempting to re-invent the magic, I’m aiming to actually fix the HTML on the articles instead. That will fix the problem forever, but takes a bit longer.

So, I’m just working my way through articles to get them all compliant.

KnockoutJS Advanced Search Unknown Schema In ResultSet

In my exploration of KnockoutJS for a variety of projects, I’ve had several instances of a tricky requirement. “Normally”, you know in advance the kind of object your AJAX/JSON search will bring back and you can template the output grid accordingly.

However, in several of my projects, I have very good reasons and situations where the results coming back will be different columns, depending on the search criteria. That means that the KnockoutJS/jQuery template that displays the data can’t go after properties by their names.

That proves tricky to figure out within the layers of frameworks involved. There are plenty of examples of how to do a procedural loop on the list of properties of a Javascript object, but that’s within a normal Javascript “foreach”, not the jQuery templates version.

A normal Javascript foreach includes the name to be used to refer to the object that is the subject of each iteration. For the jQuery template/Knockout version, that variable isn’t visible. Instead, you just see {{each Collection}}.

After a bit of digging, I finally found the information that a couple of “magic” variables are available in the loop: $value and $index. So, if you loop on a collection, the $value is the subject of each iteration. Then, if you take that a step further and loop on the non-array object, its *properties* become the collection and thus $index becomes the name of the property and $value is the value.

Combined, that lets you dig through any unknown object (at least of known depth) and create a display template for it. This works for my need where server-side plugins will determine at runtime what the “shape” of the data being returned is, depending on the inputs.

Here’s a KnockoutJS/jQuery template that displays the values out of an unknown object.

1:  <script type="text/html">
2: {{each resultRow}}
3: <tr>
4: {{each $value}}
5: <td data-bind="text: $value">
6: {{/each}}
7: </tr>
8: {{/each}}
9: </script>

Here’s a version that uses the other “magic” variable: $index, which is the actual property name.

1:  <script type="text/html">
2: {{each resultRow}}
3: <tr>
4: {{each $value}}
5: <td data-bind="text: $index">
6: {{/each}}
7: </tr>
8: {{/each}}
9: </script>

If you use both $index and $value (on multiple levels (which is when things get confusing)), you can build a grid out of any list of properties off an object.

Also hugely helpful is the following combination of investigation tools. You can subscribe to the changes on a portion of your ViewModel and window.alert the new data. If you first call JSON.stringify on that data, you can get a nice, JSON version of the object. Take that JSON over to the JSON Formatter and you can see it all nicely indented and organized.

I find that to be really helpful given you don’t get code completion when writing templates to display this JSON data. The formatted JSON code gives you “documentation” for working off of.

P.S. Sorry for all of the “quoted strings” in this article. It’s a bad habit, but they all seem necessary to me.

P.P.S. This is another of those kind of article where I’m as much posting this for my future self as anything else. if it helps you too, great.

Tweaked Site Engine Again

So, back this summer, I yanked this site off of Wordpress and put it on a temporary solution, powered by Lucene. That appeared to work well, but cracks started showing in that setup recently. See, this site is hosted on a cloud hosting environment.

That works great for distributing load across servers. What it’s not so good at is handling changes to the files. When, like with Lucene, the data is stored directly in files within a site, as the individual servers in the cluster attempt to sync up, they get confused.

That’s what’s been happening with this site. As I updated the Lucene indexes, all would be fine for a bit and then gradually, duplicate content started showing up on the site.

I figured it was time to switch it back to being database-powered to get around that problem. I’ve converted the dominant content over and this should make it much easier to update the site. Only time will tell if that reduced friction will result in me writing more. One can hold hope, right?

MVVM Library For Javascript: KnockoutJS

The last few years, nearly every web application I’ve built has been using the MVC pattern, and pretty much all of those using the ASP.NET MVC framework. I’ve worked out some repeatable patterns that make building a certain kind of application (straightforward CRUD and similar apps) very straightforward. That’s a good thing given how often the projects in front of me line up with that pattern.

But, there’s another kind of application I’m wanting to build and being asked to build. It’s characterized with a more sophisticated UI that has “richer” interactions. While that could be steered in the direction of Silverlight, most of the time, my clients (and myself for a couple of upcoming applications) really want more devices targeted than Silverlight supports.

That points to a Javascript/AJAX powered application. However, the looking at Silverlight I’ve done has highlighted how useful the MVVM pattern is for richer client applications. Just about the time I was thinking about whether or not that pattern might work well in Javascript, I listened to an episode of Hanselminutes where he interviewed Steve Sanderson (who has done quite a bit of interesting work using ASP.NET MVC) about his MVVM Javascript framework: KnockoutJS.

The framework drives the entire UI from a “view model” Javascript object. The UI/HTML is bound to that object and any changes to either are rippled through to all other bound elements in a really elegant way.

I did a bit of digging into the framework, looking through the examples and it all just “clicked” with me. It makes so much sense for client-side heavy web apps. I’ve got some needs on client projects as well as 2 products that I’m 50% owner of underway right now where KnockoutJS is a really good fit, so I’m plowing ahead with it.

That, of course, necessitated a prototype to get myself a little bit oriented to the framework. I figured a good place to start is with an “advanced search” screen. These are screens that are nearly always asked for in apps. But, with all of the moving parts, they’re actually tricky to get right and to include everything people want.

What usually happens (at least what I’ve seen) is that most of the feature makes it in, but there’s always at least some that gets left out from the following list:

  • Multi-field search. Search by any of a variety of parameters.
  • Sorting by any one of several columns.
  • Pagination of resulting data. That includes varying page size.
  • Dependent fields. If Field A changes, the options for Field B should change as well.
  • Complete layout/content control of the data rows.

Given that that’s usually a screen that’s more tricky to build than your typical CRUD screen, I figured it would be a good prototype for me to determine how difficult KnockoutJS was going to be to work with.

I started with a database I’ve got for generating data for other databases. For instance, if you join a few tables together, you can generate random “fake” users for your site, chosen by gender, give them semi-realistic fake addresses, etc.

Part of that database is a list of cities of the world, the regions and countries they are in. So, I built an advanced search over the cities.

I used ASP.NET MVC as the back end, writing a quick Entity Framework layer over the database. The search controller action itself is pretty hacky/basic code, but it served the purpose of letting me exercise KnockoutJS.

Once I got going, I also got curious about how this might work with OData. Since KnockoutJS in my prototype (and in general) is sending data to and fro in JSON and OData lets you put a URL-addressable layer over your data on the web, I wondered if you could expose an OData service directly to your KnockoutJS client-side app and let it access the data directly.

Enter DataJS, which handles the data out of OData and makes it more digestible as JSON. So, I included a view that did a more basic search directly to the OData service, which was a little different, but still fairly straightforward.

All told, I’m really happy with how quickly this prototype came together and how well it works. This has me really excited to implement this in all 3 of the projects I’m juggling right now. If you’ve been dabbling with (or working more seriously with) rich UI Javascript web applications, KnockoutJS is something you should really check out.

If you’d like to take a look at the code for my prototype, you can download it here.

Brewing For My Health

In my last post, I mentioned that I've begun running and some other exercise as part of my quest to improve my health and decrease my risk of dying early. That activity was at the top of my list because it has a high return on investment and it's something where the effort IS the result.

That's in contrast with "losing weight", where complicated factors can mean that a tremendous effort can result in no change and no improvement in the metric that correlates with the risk of an early death.

The distinction has moved "losing weight" lower on my list than it used to be.

It's also responsible for the second item on my health improvement list: brewing and drinking beer.

Based on my experience with our culture, that statement probably alarmed more than a few of you. However, I assure you that this is actually a well thought out decision, based on good evidence.

It first came up when I was searching for the most impactful ways to reduce, in particular, heart disease. The following quote jumped out at me when I was digging around:

The American Heart Association, based on the research evidence, concludes that the "Consumption of one or two drinks per day is associated with a reduction in risk of (coronary heart disease) approximately 30% to 50%."

Read that twice. If there was a new drug, from one of the major drug companies that, when taken daily, cuts your risk of dying from heart disease by UP TO HALF, they'd be shouting it from the hilltops. For aspirin, which has a large, similar effect, we *do* hear all of the time about how it will help and doctors *do* put an awful lot of people my age and older on the low-dosage aspirin. However, I've never had anyone in the medical profession even hint at these facts when it comes to alcohol and heart disease.

So, I started digging deeper and kept coming up with more and more studies related to a reduction in risk of death. This article (on a university site) serves as a really nice summary of what the complete body of scientific study on this topic says. In short, the fact that I used to abstain from alcohol on all but a few days per year was actually one of my greatest risks for dying early.

That summary doesn't just talk about the benefits related to heart disease, but a whole range of other diseases and illnesses like Alzheimer's and Parkinsons. In other words, that cliche of a 100 year old person being asked what their secret to longevity is, and answering "a daily shot of whisky/beer/sake" may not be far off from reality.

Now, while I'm frustrated that this info wasn't shoved in front of me sooner, I understand why, even though I think that the reasons don't hold up.

See, the benefits are in a weird "U" shaped curve. If you don't drink at all, you have a high risk of dying early. If you drink more than 3 drinks per day, you have a high risk of dying early (though from different things from what I understand). Only in this narrow little band of 1-3 drinks per day and only when that level is actually consistent (no saving them all up for one day), does the big benefit exist.

I know that if this recommendation were generally made, people would miss the end of the "U" where drinking more than the 3 daily drinks eliminates the benefit. I know that's true, in part, because nearly every single person I've told about the benefits of moderate alcohol consumption has made the same joke: "Then I'm the healthiest person around because I drink a lot".

In online discussions of this research, I've seen people wonder "aloud" about "all of the people those drunk drivers kill" and heard people wonder aloud how I'll "function when I'm drunk all of the time". We have a seriously strange relationship with alcohol in this country.

Keep in mind that as an adult male of my weight and height, even under the newer 0.08 BAC standards, I'm OK to drive even after 5 beers and no waiting. Given that the benefits only exist at the 1-3 drinks per day level (and are therefore my exact level of drinking), I will never be in jeopardy for a driving violation. I won't ever reach anything resembling "drunk".

So, from about 2 months ago, I've been following the 1-3 drink regimen, like most humans historically and most places on earth other than the US.

Of course, because of how I tend to do things, rather than just going to the liquor store and picking up my "prescription", I've actually begun brewing my own beer and cider, a hobby that's proving enjoyable and paced appropriately given all of the other stuff I've got going on.

It's one of the few hobbies you can be really "into" while only putting in a few hours once every few weeks. I'm on a quest to brew what I want to drink. I think I'm on the right trail.

Or, browse the archives.

Recent Tweets

For more tweets, follow me here.

"Anyone want to go out for some after dinner omelettes?" -Ron Swanson

After looking at my calendar for the last couple of months, I think this half-off Wed "mini weekend" might be able to be a regular thing.

Among several other errands, I picked up a couple of items that are making me grin:

Took the afternoon off for some errands and to brew a batch of Little Beggar, my Belgian table beer.

If you have more coupons than items, the expresslane is not for you. Especially if the difference is measured in orders of magnitude.

Them: "You need to look in the 'Item' table." Me: "There is no 'Item' table in that database." Them: "Oh yeah, it's called 'Parts'".

Just used the "Copy this network profile to a USB drive" in Windows for the first time to get tablet on network. Slick.

How many times is this article going to be written? Is any of this still new for people?

"What would it take" to get me to be an employee? $7.2 million. Or, a WAY worse economy than I've seen in my career so far.

Had to shut the windows with rain blowing in and stuff blowing off shelves here. Looks like only a single line of storms though.

Further facilities drama: clogged furnace filter meant that A/C being turned on the last couple of days resulted in a block of ice.

Tons of drama involving the circuit box after the pizza oven and microwave in the home theater died. Turned out to be a power strip instead.

I posted the ehealthinsurance link because so many people seem completely unaware that buying your own health insurance isn't that hard.

Just got my annual health insurance premium notice. Looks like it's time to shop for new health insurance.

Think I'm going to take at least half of Wednesday off to brew. Need to keep scheduling such days to retain my sanity.

"Installing update 76 of 137" is what happens when you crate up a tablet for 2.5 years and then put it back in service.

anyone have resource pointers for using a TabletPC/Win7/Win8 and a projector for meeting/whiteboard/presentation purposes?

Don't show the trivial thing I can do "without writing a single line of code". Show me how to dent the universe with 1K or 25K lines.

Moved the sour porter to the oak barrel. Now we wait.

It feels very wrong to drive to a hockey game with the AC on in the car.

© 2003- 2015 J Wynia. Very Few Rights Reserved. This article is licensed under the terms of the Creative Commons Attribution License. Quoted content or content included from others is not subject to that license and defaults to normal copyright.