Development at Oracle

I really, really like the place that I work. The commute is amazing. The facility is breathtaking. My co-workers are stunningly enthusiastic, skilled, and intelligent. My pay is… well, good enough to get by 🙂 Recently a thread popped up at Slashdot in which a lot of commenters trashed Oracle, and I felt a need to set some of the record straight.

I really, really like the place that I work. The commute is amazing. The facility is breathtaking. My co-workers are stunningly enthusiastic, skilled, and intelligent. My pay is… well, good enough to get by 🙂 Recently a thread popped up at Slashdot in which a lot of commenters trashed Oracle, and I felt a need to set some of the record straight.

Disclaimer: The views expressed in this post are my own and do not necessarily reflect the views of Oracle.

TL;DR: I am an Oracle employee. It’s an awesome place to work with above market pay, superb benefits, and a demanding but rewarding engineering culture. Virtualbox is one project in a large and growing virtualization team, creating and improving some truly amazing cutting-edge technologies that make your virtualization life better.

I’m going to share some facts as I see them, and let you draw your own conclusions instead of drawing them for you.

1. The Oracle VM and Oracle VM Virtualbox teams are one and the same within Oracle. There’s a lot of cross-pollination of ideas and effort, and the virtualization team is frakking huge: HUNDREDS of developers. Not “4”, as some have asserted here! 2. There’s a ton of stuff happening in virtualization at Oracle: https://blogs.oracle.com/virtualization/ 3. There’s a substantial line-up of products that are demo’d to customers as part of “Virtualbox Appliances”. Virtualbox demos are a key strategy for introducing many of our products to customers. http://www.oracle.com/technetwork/community/developer-vm/index.html . Corrollary: I manage a lot of ZFS appliances. I like them; they make my job easier, particularly at the kind of scale at which one begins measuring one’s storage in exabytes. You should download the Virtualbox-based Oracle ZFS Storage Simulator and check it out. Hint: Dig into the REST interfaces and ECMAscript workflows concepts. This kind of thing is Stored Procedures for enterprise-grade storage appliances with absolutely blistering scale, reliability, and performance, and if you don’t yet understand how powerful that idea is, you might be insufficiently experienced in high-end storage and databases. 4. Wim Coekaerts is a smart, friendly, and communicative dude. He also happens to be SVP over our Linux & Virtualization efforts. If you’re really interested in the details of virtualization development at Oracle, you should check out his blog: https://blogs.oracle.com/wim/

Next, my opinions. No longer facts!

VirtualBox is a mature, stable product that’s doing its job and — as a GPL project — seems to me like more a vehicle for showcasing Oracle technology than a revenue generator in its own right. That doesn’t mean development has ceased! It just means that, in general, Oracle engineering teams are laser-focused on how we can make money so we can stay employed so we can keep creating really unique and useful products for our customers. Responsibilities on teams shift as need demands, and with such an enormous knowledge base in virtualization on our Engineering staff, there’s no question that if a product needs a feature to benefit customers, and a good case can be made that it’ll pay off, it gets the engineering resources it needs to give it a try.

The Sun transition was tough for some employees. In advance of the merger, a lot of old-timers split. A lot of younger engineers went looking for somewhere hipper and younger to work than what would become a Fortune 500 company. Many Sun managers, sensing the change in the wind as Oracle’s intensely results-oriented management team integrated with them, split for positions elsewhere.

I know and work with the survivors of the merger every day. And overwhelmingly, those who’ve integrated into Oracle culture, shown they belong here through their productivity and attitude, and produce results consistently have built success upon success, and are valued and rewarded.

They’re also a bunch of brainiacs who routinely blow my mind with deep insights into operating systems, hardware, and performance optimization.

Those who don’t deal well with rapid change, high expectations, and a dogged focus on constantly improving our products at an increasing pace while doing more with less don’t tend to thrive here.

From my point of view, Oracle’s a great place to work. The focus is always on delivering new benefits — not just features! — for our customers. The pace is hectic, every product we work with internally is “eating our own dogfood” to try to figure out why our customers will love or hate it (third content management system in five years, blech!!!), we typically pay above market rate, and we expect a high degree of professionalism, intelligence, cooperation, and problem-solving ability. I’m a busy dad of four with a triathlon habit, and the work-life balance usually comes out just right.

If you think you have what it takes to keep changing the world for the better as fast as you possibly can, check us out at http://www.oracle.com/careers/ .

A Rant About Fitness Trackers

I’ve recently been chiming in on the Garmin forums about my 910xt watch and Garmin VivoSmart. The frustration of users not knowing how to use their fitness trackers — and blaming the devices for not being the magical weight loss talismans they thought they were! — is palpable.

I’ve recently been chiming in on the Garmin forums about my 910xt watch and Garmin VivoSmart. The frustration of users not knowing how to use their fitness trackers — and blaming the devices for not being the magical weight loss talismans they thought they were! — is palpable.

…I should have saved my $200 and just continued using the free myfitnesspal account and entering my estimated calories and got on with my life. I feel like such a sucker!…

First advice: if you felt as if you got more consistent results and inspiration sans a fitness tracker, return the fitness tracker. No need to have buyer’s remorse.

General fitness tracker rant below 🙂

So many buy a fitness tracker having “faith” that it would be accurate. They didn’t do sufficient research before the purchase. Even gold-standard metabolic ward studies are typically accurate to no more than +/- 5%, which for a typical 2000-calore diet can be the difference between gaining or losing about a pound a month, simply due to the margin of error and individual differences between human beings.

Caloric intake on MyFitnessPal is precise, but slightly inaccurate. 100g of pineapple is ostensibly 43 calories. What about the core? The cap? Nearer the skin vs. further? Avocado blended with or without the pit? Which part of that Costco rotisserie chicken are you eating? The nutrition difference from seemingly small differences is enormous! It’s the averages over time for a user’s specific diet that a studious user will care about and use to guide their choices.

Fitness trackers are also fairly precise, but slightly inaccurate. Even the famous “BodyBugg” — widely regarded as one of the most accurate fitness trackers to its indirect calorimetry method based on perspiration and body heat — misses the mark by greater than 10% for many users, particularly as their biology changes over time (as they lose or gain weight, the Bugg is often slow to respond to the change and proffers inordinately-high calorie estimates).

One can use the combination of two precise but inaccurate instruments to still often create useful results. Trackers are a useful feedback mechanism, and the truth is that many people using Fitbits, Jawbone Up, and Nike Fuelband and other trackers gain weight rather than lose it: http://www.today.com/health/my-fitbit-making-me-fat-users-complain-weight-gain-fitness-1D79911176

I would guess it’s usually because they don’t understand very well how to use the information provided by a fitness tracker, combined with under-estimating their consumption and over-estimating their exertion. If users watch their weight and body composition to gauge the accuracy of the device, they’ll figure out these discrepancies within a month and adjust nutrition to achieve goals even using inaccurate measures like pretty much every fitness tracker currently in existence.

For examples of the supportive community surrounding the VivoSmart/VivoFit with MyFitnessPal (mostly VivoFit, because it is both older and vastly out-sells the VivoSmart), look to the MFP boards, rather than these Garmin boards: http://community.myfitnesspal.com/en/group/21248-vivofit

It’s not all bad, but for your personal happiness if this tracker isn’t the right one for you, take it back! Garmin will sell millions more devices to numbers-geeks like me for whom a precise but slightly inaccurate measure is preferable to a straight-up estimate. However, both methods work just fine for weight loss, gain, or body recomposition!

ZFS Tricks: Blinking The Lights

I’ve created a new blog with my work at https://blogs.oracle.com/storageops . The first entry is copied below.

Source:
https://blogs.oracle.com/storageops/entry/zfs_tricks_blinking_the_lights

I’ve created a new blog with my work at https://blogs.oracle.com/storageops . The first entry is copied below.
Source: https://blogs.oracle.com/storageops/entry/zfs_tricks_blinking_the_lights

I’ve had an account on blogs.oracle.com  for several years now, but never really used it. Decided it was about time. Without further ado, let’s dive in!

One of the most powerful facilities of the Oracle ZFS Storage Appliance is "workflows". You can find these in the BUI or the CLI under "maintenance":

ZFS Maintenance Workflows BUI image

For most people, Workflows are kind of a mystery. If you’ve been on a call with Support, you’ve probably been asked to use them, but they seemed like this arcane thing that was only for Support.

In reality, Workflows are for YOU!  So to get you started playing in the land of workflows, here’s a sample script. What this does it turn off all the hard drive lights on your ZFS appliance. This is a useful little utility I wrote; with thousands of ZFS appliances in our domains and dozens of storage admins working with several on-site remote hands, often the blinking locator lights get left on after repairs are complete.  Wouldn’t it be nice to have a way to clear them? Now you have one!

For now, don’t worry about some of the comments. I’ll go into jslint/jshint in a later blog entry. Just save this BlinkenLightsOff.akwf to your computer somewhere handy, then upload it by clicking the plus sign in the "Maintenance Workflows" section of your BUI:

Save the code below as "BlinkenLightsOff.akwf" on your hard drive somewhere memorable.

/*globals run, continue, list, printf, print, get, set, choices, akshDump, nas, audit, shell*/ /*jslint maxerr: 50, indent: 4, plusplus: true, forin: true */

//BlinkenLightsOff.akwf //A workflow to cause your drive locator lights to turn off. //Author: Matthew P. Barnson <matthew.spam.barnson@oracle.com> //Last updated: 2014-10-06

var workflow = {     name: 'BlinkenLightsOff',     origin: 'Oracle PDIT mbarnson',     description: 'Disk Lights Off',     version: '1.2',     hidden: false,     alert: false,     setid: true,     execute: function (params) {         "use strict";         var myBlinkyBlinkBlink = function (params) {             run('maintenance hardware');             var myHardware = list(),                 hardware = 0,                 myComponents = [],                 component = 0,                 myDisks,                 disk = 0,                 myLightStatus = false,                 lightStatus = "Blinkenlights Output:\n";             for (hardware = 0; hardware < myHardware.length; hardware++) {                 run('select ' + myHardware[hardware]);                 myComponents = list();                 //lightStatus = lightStatus + 'Checking ' + myComponents + '\n';                 for (component = 0; component < myComponents.length; component++) {                     lightStatus = lightStatus + 'Checking component ' + myComponents[component] + '\n';                     if (myComponents[component].match(/disk/)) {                         run('select ' + myComponents[component]);                         myDisks = list();                         for (disk = 0; disk < myDisks.length; disk++) {                             run('select ' + myDisks[disk]);                             myLightStatus = get('locate');                             if (!myLightStatus) {                                 lightStatus = lightStatus + myHardware[hardware] + ':' +                                     myComponents[component] + ':' +                                     myDisks[disk] + ':' +                                     " is already dark.\n";                                 run('done');                             } else {                                 lightStatus = lightStatus + 'Darkening ' +                                        myHardware[hardware] + ":" +                                        myComponents[component] + ":" +                                        myDisks[disk] + "\n";                                 set('locate', false);                                 run('commit');                                 run('done');                             }                         }                         run('done');                     }                 }                 //printf('%s\n', myComponents);                 run('done');             }             run('done');             audit('Turning off all blinking disk lights.\n');             return (lightStatus + '\n');         };         return (myBlinkyBlinkBlink());     } };

You can run this workflow either by clicking on it and executing via the BUI, or executing it from the CLI with this command:

maintenance workflows select name="BlinkenLightsOff" execute

Enjoy! Next week, just in time for the holidays, I’ll post a way to make all your hard drive lights turn on; you can enjoy blinking Yule lights in your data center. Those of you with a modest amount of appliance experience will be able to easily figure it out from the above code; it’s very similar code.

Barnson.org Triathlon Team–East Coast Report

I really liked Matt’s play-by-play from his last triathlon, so I thought I’d add my own. I just completed my 2nd triathlon ever, an Olympic (aka International) distance event in Maine.

Garmin Connect logs:
Swim: http://connect.garmin.com/activity/584331856
T1: http://connect.garmin.com/activity/584331858
Bike: http://connect.garmin.com/activity/584331859
T2: http://connect.garmin.com/activity/584331860
Run: http://connect.garmin.com/activity/584331861

I really liked Matt’s play-by-play from his last triathlon, so I thought I’d add my own. I just completed my 2nd triathlon ever, an Olympic (aka International) distance event in Maine.

Garmin Connect logs: Swim: http://connect.garmin.com/activity/584331856 T1: http://connect.garmin.com/activity/584331858 Bike: http://connect.garmin.com/activity/584331859 T2: http://connect.garmin.com/activity/584331860 Run: http://connect.garmin.com/activity/584331861 4:40: Alarm goes off. Out of bed and dressing. 4:55: Kirsti and 5 kids (ages 12 to 4) in the van. Driving to Maine. 6:55: We arrive and are directed to parking. We end up next to the transition area, which is about the best parking spot one could ask for. 7:10: My 3 oldest kids are at their volunteer assignments. They wanted to do this to kill time, and to get free shirts. I pick up my race pack and head to transition. 7:20: My numbers are now on my body, and I’m setting up in transition. I’m still pretty slow at this. I notice an enormous playground next to the finish chute, so I call Kirsti, who I know hasn’t seen it yet. That’s going to make the day for her. 7:50: I’m set up and have chatted with a few coworkers who are also doing the race. They are all more experienced and faster than I will be. No big deal. I make the decision to only carry one water bottle for the bike, because there’s a water bottle hand-out at mile 12. That’s going to prove a fateful decision. 7:55: Out for a 10-minute easy run. 8:05: Back in transition, I put on my wetsuit to head to the ocean. In Maine, the ocean is “warm” this year–66 degrees–but with a wetsuit and a few strokes behind me it feels great. I always forget to breath when starting out in cold water, so I want a good warm-up so that I can acclimate. 8:54: Pre-race meeting complete and 2 waves gone, my wave starts. 1.5 kilometers (which, with drift, I will turn into 0.98 miles–not too much extra). The swim goes very well–I’m generally in the middle of the pack, which helps me feel confident that I’m going the right direction. (It’s hard to see the next buoy right after passing the most recent one.) There is a lot of contact during the entire swim, but I manage to avoid the dreaded “kick to the head.” I don’t sweat my speed too much, but just try to maintain form and breath every 3rd stroke. If I let myself go to every 2nd stroke, I’ll quickly pick up my speed. T1: Have to run up a steep incline to get to transition. (This is a precursor of things to come….) I change quickly, though I have a hard time getting the wetsuit off my ankles. I need to cut the legs an inch or two shorter. Bike: I salute the family just after mounting, drop into my aero bars, and start off in a low gear. The course starts off with a nice half-mile climb at a grade around 6%. Ouch. Racing on a bike is great–the adrenaline makes it easy to exert up to my desired output, so I almost feel like I’m holding back as I stay just below my lactate threshold. I eat some Shot Bloks after 25 minutes or so and am barely drinking. At mile 8 I decide to be more deliberate about my drinking–don’t want to wait for thirst. I have to focus on my exertion level rather than keeping up with or passing people–I can tell that if I get competitive in the moment, I will pay later. Mile 12: I hit the water bottle station at about 20 mph. Ever tried to grab a water bottle at 20 mph? It’s something that needs practice. Which I haven’t got. I leave empty handed, but with a bottle smacked to the ground behind me. I think about going back, but, hey, this is a race! Feeling good. T2: The bike leg went great–19.1 mph, a new record and better than expected. I just might turn in a total time close to 2:40! I’m pretty thirsty though, and my spare bottle at the transition area is now piping hot. I don’t think about that until it’s spraying into my mouth–I feel like Chevy Chase from the Three Amigos. Spit it out–there’s a drink station right at the start of the run. I have to go to the bathroom–hope that feeling passes… Run: I give my “fans” high fives as I head out for the final leg. It’s getting hotter and the sun is now out in force. My heart rate is sky high, even though I’m barely moving. Yes, I’ve experienced this in poorly executed training sessions before–I’m dehydrated. Have to run up the same stupid hill right at the beginning–it feels like this course is all uphill. I feel generally okay though–like I can finish a 10k. I try to drink a lot each mile. Mile 4: Wow, it’s hot. And I feel a little like I can’t quite stay conscious. Maybe I should have turned around back at mile 12 on the bike after all. When I reach some longer hills, I have to run so slowly to keep my heart rate down that I finally just walk for about a 20th of a mile. Some folks have been walking from the beginning, so at least I held on longer than that. In spite of 2 more brief walks, my heart rate never drops below 156, which is pretty high exertion. Still have to go to the bathroom…ouch. Finish: At least I get to run back down the killer hill before the finish chute. I manage to “kick” the last quarter mile, though I don’t think I was going very fast–at least 1 minute below the pace target I had for the ENTIRE run! (Kirsti said I looked much better than the last triathlon.) The volunteer asks me to stop to take my chip off but I tell her I have to keep walking. I feel like I will collapse if I stop. I make it to the water station and she starts urgently handing me cups and asking if I’m going to need assistance. (I walk past a guy on the ground being helped by EMTs. I could be worse, I guess.) I’m good after a minute or so–don’t think I’ll be collapsing.

A few minutes later I felt sort of normalish, though I probably sit on the grass for more than 75% of the next hour.

Total time 2:53. Swim and bike set me up for 2:43, which would have made my day, but I lost 10 minutes on the run. That’s basically what happened to me at my first tri back in June. Slow learner, I guess, but I feel good that I went so much farther this time.

I’ll be back.

First Triathlon: I am 409

Brief version race report for the Riverton Central Stake Sports triathlon today for those who asked. The race was free, and hosted by the local LDS churches in the area. I was number 409: fourth out of 5 waves, 9th registrant in that category.

Garmin Connect logs:
Swim: http://connect.garmin.com/modern/activity/560790985
Bike: http://connect.garmin.com/modern/activity/560790991
Run: http://connect.garmin.com/modern/activity/560790995

Brief version race report for the Riverton Central Stake Sports triathlon today for those who asked. The race was free, and hosted by the local LDS churches in the area. I was number 409: fourth out of 5 waves, 9th registrant in that category.

Garmin Connect logs: Swim: http://connect.garmin.com/modern/activity/560790985 Bike: http://connect.garmin.com/modern/activity/560790991 Run: http://connect.garmin.com/modern/activity/560790995 Slept somewhat poorly. I was confident I’d double-checked my bags, and I hit the sack around 10:45PM, so I knew that getting out the door would be pretty straightforward. I still woke up a couple of times in the night worried that I overslept.

4:45AM: Alarm goes off.

5:00AM: Alarm goes off again. I tumble out of bed, make my typical morning smoothie (digging getting the spinach in there lately), then hit the shower. Because people who don’t shower before swimming in a pool gross me out.

6:00AM: Registration has opened, but I’m just finished loading the car and strapping the bike on the rack, dressed in my tri shorts, a light t-shirt, and some sandals. I don’t panic; the start is less than 10 minutes from my house, so I’m not in any kind of hurry.

6:30AM: After arriving at the South County Pool in Riverton, UT, I found the line for the “4s” at the registration desk under some sun tents. I am, apparently, a “4”, based upon the time I listed for my expected swim. The categories go 1 (fastest) through 5, where 5 is the “family” entry. I am, obviously, not fast. I mingle, and meet quite a few people with names like, “Mark”, “Greg”, and “Gary”. I was directed to locate my bike and my T1 and T2 gear at the T1 transition point, told by a helpful volunteer that anything I didn’t need for T1 would be taken to T2 for the end of the race. There are no bike racks; I carefully lay my bike down in the grass, realizing that I’ll be sitting in dirt later when I change. Oh well.

7:00AM: Race organizers make announcements to the several hundred participants, discuss the course, and — this being a local church-hosted event — have a prayer to request a blessing on the participants. I realize I’m supposed to have dropped my T2 bag at the church. Most people on this ride won’t bother; 3 out of 5 bikes aren’t road bikes. They are mountain bikes or hybrids, many clearly recovered from a garage where they sat since they were bought years ago. A helpful race volunteer grabs my T2 stuff and hauls it to my chair at T2 on my behalf. I also notice I neglected to attach my footpod to my Vibram Five Fingers Bikila shoes. Oops.

7:15AM: The other “Fours” have shoved me to the front of the line of fours, with the excuse “Any man who wears a swim cap is faster than the rest of the Fours”. Thank you so much, Di, for giving me that gift from your Ironman race! Not feeling very grateful at that moment, though. It’s kind of cold in my shorts & no shirt; the organizers promise the pool is fairly warm.

7:26AM: Timer counts down. I press “start” on my GPS watch. The first lap was SMOKING; I pass three people. I realize as I start my second 100 meters that I’ve basically just burned my arms out feeling so good; start to back-stroke through the lap. Not promising. The last guy I passed glares at me as he WALKS past me. I then realized that at any time I can touch the bottom in this shallow 50-meter pool. I take advantage of that for a second to push off again and get some momentum back.

7:34AM: First transition. Panting. Exhausted already. That was only 300 meters? Really? I climb out of the pool, rip off the goggles & cap, grab my sandals and shirt from where I left them by the pool gates, and trot toward T1 where my bike lay. The grass keeps getting caught in between my toes, and I don’t like running barefoot on grass anyway. Too many hidden dangers, too much time spent running barefoot to like running where I can’t see what’s underneath my foot. The volunteers keep trying to tell me to run on the grass because it’s “more comfortable” than running on pavement. Heck, no. I don’t really feel like running to T1 either… I kind of half-trot, half-walk to my bike.

7:35AM: I never realized jerseys and Injinji socks were so freaking hard to put on when you’re not dry. I’m sopping wet, sitting in the dirt and getting my new tri shorts and hands covered with mud. Next time, I’m either wearing a singlet or else using a zip-up jersey; this over-the-head thing is terrible and I feel like I can’t get the back down. I eventually get everything together and roll out. On the plus side, I didn’t have to futz with a heart rate monitor around my chest; my new Mio Link on my wrist next to my Garmin 910XT has been recording the whole time. Yay technology.

Most other racers notably lack any technology. I feel a little weird even having trained for this short race, particularly when so many others around me openly discuss not having done so. It’s also weird to me that there are a ton of people standing around, chatting with volunteers and amongst themselves. I thought this was a race, but for many the transitions are apparently social hour. Many of them will pass me later on the run anyway 🙂

7:37AM: Rolling out of first transition. I forget to hit the lap counter and reset my watch until I’m well into the trail. Oops. Weirdest-looking swim leg ever in my logs. I hit my stride, calling “on your left” several dozen times. This is where I feel at home. The doc told me I wasn’t allowed to just bicycle for my sport anymore, though; I have to participate in other activities, particularly ones that strengthen the core. Swimming and running suit, so Triathlon it is.

07:58AM: Twenty minutes later, the bike leg is done. I’m a little early, and wonder if I missed part of the route. Was supposed to be a 6-mile ride, but was actually a hair under 5 miles; I’m betting the mapping tool they used when designing the course plotted “middle of road” or something like that, rather than actual lines the racers will use. Other than one steep little section of road, the bike ride was cake. My legs were fresh from the swim — though my arms and shoulders ached! — so it was pretty easy. A helpful volunteer steered me away from a gravel section that people had been wiping out on, for which I was grateful.

T2! Easy switch. I’d un-velcroed my triathlon cycling shoes when coming into T2 (I’ve occasionally second-guessed my decision to buy those over more traditional cycling shoes; not today!), so I just step off my bike, leaving the shoes attached. Take off the helmet and clip it to my bike, laying the bike against the chair labeled “409” that was helpfully provided. Grab the bottle I’d put in my T2 bag and guzzle about ten ounces of Nuun-infused water; I don’t want to carry a water bottle on what should be a short 2-mile run.

08:00: Made it out of T2 in 2 minutes. Not bad, not lingering. Big giant row of snacks that I sail right past; I don’t want any food. I had a good breakfast, and I have a morning snack planned already. Besides, muffins make my stomach hurt, and I’ve already had a banana. Blech. No thanks.

08:10: My plan to run 2 minutes, walk 1 minute repeatedly until my 2 miles are up has a major flaw in it: I don’t know how to program my watch to allow that kind of interval reminder during a multi-sport workout. I try to mind the time on my watch, but running is a really weak point for me, so I inevitably run too long, then start walking and gasping for breath, or walk too long and realize my heart rate has slowed down a lot. I’m slow, I’m overweight, and my plantar tendon in my right foot gives me sharp, jabbing reminders if I push too hard. I settle for doing phone-pole intervals of walk-run. It seems to work well, but the run is by far my slowest segment. My bike jersey is really comfortable and non-chafing, but it’s a little warm for the run; next time I think I’ll jump for the sleeveless variety, because the sweat puddling in the small of my back behind my jersey pockets where I’ve stashed my phone & keys is a regular reminder that I’m not quite wearing the right equipment for a run.

08:26: Twenty-six minutes and twenty-seven seconds later, I run past the finish line to the announcer calling my number and time. While it’s not a fast two mile run by any stretch at around fourteen minutes per mile, I console myself that one year ago today, I was flat on my back, laid out with a back in jury and unable to run at all, even if someone held a gun to my head and demanded it. My goal pace for a 5k is currently 12 minutes per mile, and 14 is much better than the 18 I was clocking — running! — just a couple of months ago. I’ll get there.

I grab a drink of water. I go check on my bike and try to figure out where the heck they dropped the T2 bags. A few minutes later, my lovely wife shows up at the course, and we eventually find one another and exchange kisses and hellos, and she tells me how proud she is of me for finishing my first triathlon.

My wife Christy is AWESOME.

She introduces me to a couple of fellows that I didn’t know but that she did, and she grabs all our bags and meets us back at the pool. We chat about the upcoming St. George triathlon on September 13, 2014 as the two other fellows and I cruise down the hill back to the pool. Given that it’s a month away, and is heading SOUTH instead of North as fall closes in, I think I may give that one a try.

Ahem.

A “tri” 🙂

The Value Of Truth

A philosopher named Harry G. Frankfurt wrote a brilliant essay a number of years ago entitled, “On BS”. The title notwithstanding, the essay brilliantly examines a phenomenon you’re going to see your whole life: people who say things for the effect of the saying, not the truth or falsehood of what it is they say.

A philosopher named Harry G. Frankfurt wrote a brilliant essay a number of years ago entitled, “On BS”. The title notwithstanding, the essay brilliantly examines a phenomenon you’re going to see your whole life: people who say things for the effect of the saying, not the truth or falsehood of what it is they say. I’m not going to try to restate Frankfurt’s essay here. He does a fine job on his own. I want to focus on what this means to you.

Words are generally a means to an end. That end may be to convey information, rally support, provoke a fight, fulfill the requirements of an oral exam, or whatever. Those words you use will typically be one of three categories: words you believe to be true, words you believe to be false, and words you believe will have some sort of impact regardless of their truth or falsehood (“BS”).

To be an effective storyteller, you must be an effective BSer. It’s the nature of the business. People know that your words are not necessarily true; they realize those words are intended to create an effect and bizarrely they pay you to BS to them. Many other entertainers must be masters of BS in one form or another to do their jobs.

I believe that many of our biggest problems — both personally and as a society — arise when we persuade ourselves not that what is false is true, but that which is BS is true. The difference is subtle but important. Frankfurt has this to say about it:

Both in lying and in telling the truth people are guided by their beliefs concerning the way things are. These guide them as they endeavor either to describe the world correctly or to describe it deceitfully. For this reason, telling lies does not tend to unfit a person for telling the truth in the same way that [BS] tends to. …The [BS]er ignores these demands altogether. He does not reject the authority of the truth, as the liar does, and oppose himself to it. He pays no attention to it at all. By virtue of this, [BS] is a greater enemy of the truth than lies are.

I’m not going to advise my older children to never lie. The truth is, lying is an important skill under varying circumstances: to protect others, to protect yourself, to make yourself look better, and to get out of trouble, among other reasons. It’s extremely important to realize that everybody lies. Especially the people who tell you they never lie; that statement itself is guaranteed to be a lie. As long as you avoid being a pathological liar — someone who lies frequently and for no good reason other than compulsion — you’re really no different than everybody else in that regard. It’s important to know that your ability to discern a lie is really no better than random chance; in fact, you are more likely to believe a lie from a loved one than a stranger.

Those you believe to frequently tell the truth usually have some reasons they do so: 1. It’s much easier to remember the truth than a lie. Telling the truth is pretty straightforward; you don’t have to keep multiple stories straight or come up with weak excuses. This is the primary reason I advocate for telling the truth as a pragmatic measure. 2. They have some sort of personal religious, moral, or ethical bias toward truth-telling rather than falsehoods. 3. Gaining a reputation for telling the truth means that when one absolutely, positively needs to lie, that lie is much more likely to be believed.

I encourage my children for all of the reasons above to tell the truth as much as possible even when it is uncomfortable to do so. Telling the truth about yourself — including your failings — typically makes you look BETTER than you would otherwise, as it causes you to appear humble and self-effacing, even when an impressive lie would be more convenient or useful. Telling the truth rather than a lie to avoid trouble convinces others you are ethical and willing to face the consequences of your actions; the consequences of doing something wrong and telling the truth about it are also usually much lighter than the consequences of doing something wrong and lying about it. Sticking to the truth when describing events helps you remember and keep the story straight.

If you must lie, it’s important to know the truth yourself, and the lie should be carefully planned and not spontaneous. Spontaneous lies are extremely easy to crack through. One just needs to look hard enough. A well-planned lie works on multiple levels to obscure the truth. Certain careers in Intelligence, for instance, require such lies to protect lives and prevent tragedy. These jobs are rare, but exist; you should consider carefully whether you’re willing to live that way.

Above all, save the BS for entertaining people. Avoid using BS to try to get your way; that’s the path frequently used by politicians, lawyers, and CEOs. It often works, but it takes a terrible personal and professional cost. There is a reason those in these kinds of positions are typically so widely reviled. I — and H.G. Frankfurt — call that reason BS.

FMC: Body Hair

Dear Children,

Today I touch on a sensitive topic: body hair. If you are easily offended, please go read something else, as we’re going to deal very bluntly with the topic.

Dear Children,

Today I touch on a sensitive topic: body hair. If you are easily offended, please go read something else, as we’re going to deal very bluntly with the topic. Human body hair serves several obvious purposes, amongst others I probably have not thought of.

  • It keeps us warm in the cold.
  • It is decoration. One’s hair — including that on the head — serves much the same purpose as the mane on a horse. The beauty of one’s hair and/or beard causes a reaction amongst the opposite sex, which may be one of revulsion, attraction, or simply an expression of interest.
  • The comparative lack of body hair on humans relative to other animals is thought to be an evolutionary advantage allowing us to run longer distances without overheating, whether for running down game or avoiding predators. There may also be some aspect of sexual selection to it, as being less-hairy has throughout recorded history been believed to be a mark of civilization or better breeding, while those who are perceived as hairier are often assumed to have other Neanderthal traits as well.
  • It serves to trap and preserve bacteria and fungus, and is therefore a scent to be used to mark one’s territory from encroaching would-be competitors or predators.

It is this last bit I want to focus on. In modern society, we care about smells. The dense patches of body hair on modern humans stink. This is an evolutionary artifact, and I submit that scent-marking of our territory — as evidenced upon opening the door to the bedroom of any teenage boy — is a long-expired bit that should be put to rest as well.

If you are human, you stink.

Them’s the breaks.

To mitigate our intense odor, there are several things you can do. We call these “good hygiene”, but it’s really more than that. You don’t wish to offend your family and friends. Here are my tips for all youth aged ten and up that, if followed, will dramatically lower your odor.

  1. Bathe daily with soap, paying special attention to get in the cracks where bacteria festers, and one’s body or scalp hair: behind the ears, the butt, the genitals, the armpits, the feet (if you habitually wear shoes, as most of us do), and the scalp. All of these regions tend to foster smelly bacteria which requires daily removal to prevent strong odors.
  2. Brush your teeth at least twice daily, morning and night.
  3. If you still have tonsils, gargle with a non-alcohol mouthwash. This will help dislodge fetid “tonsil stones” that tend to build up in the folds of one’s tonsils; even warm water gargled several times a day this way can help.
  4. Avoid malodorous foods if you plan to have company that day. Garlic, asparagus, and onions top the list.
  5. Wash your clothing regularly; any individual piece of clothing should be worn no more than perhaps three times between launderings, and underclothing only once. If you sweated heavily in any piece of clothing, it should be washed immediately thereafter and not left to molder on the floor. The principal exception is outer-garments which do not come into direct contact with skin bacteria, such as suit coats, raincoats, snow pants, etc.
  6. If your body hair, as mine, reaches extreme lengths, it’s helpful to trim it every few months if you wish to avoid excessive smelliness. Once or twice a year suffices for mine to keep it down to less than an inch; if left untended, my leg hair grows longer than the typical length of hair on my head. Keeping body hair groomed is nice for you and nice for those around you. I will not comment on the unsightliness or not of having body hair (such standards change over time with sensibilities about body image), but simply suggest that if your armpit hair is longer than your pinky finger, it almost certainly harbors a surprisingly-large colony of bacteria that everyone around you can typically smell.

Thus endeth the lesson.

FMC: The Nature of MLM

I’ve been thinking for a long time that I need to write a series of very important things I’ve learned over my lifetime. Almost every day for the last year, some concept has occurred to me that would be good for my kids to know so they can avoid making the same mistakes I’ve made, or seen others close to me make.

In that vein, here’s my first topic!

For My Children: The Nature of Multi-Level Marketing Companies

I’ve been thinking for a long time that I need to write a series of very important things I’ve learned over my lifetime. Almost every day for the last year, some concept has occurred to me that would be good for my kids to know so they can avoid making the same mistakes I’ve made, or seen others close to me make.

In that vein, here’s my first topic!

For My Children: The Nature of Multi-Level Marketing Companies

For a moment, think about what your average shopping experience is like. What’s your process? I can’t talk about yours, but I can talk about mine.

For me, the process typically can start in one of two ways: 1. I desire something because it’s something I already know would satisfy me in some way. Food, shelter, clothing, warmth, a TV, a new hard drive to move data at my work, whatever. I may not know the specific exact thing that I want, but I know I want something that does a thing for me. 2. I desire something because it’s new. There’s a lot more detail to it — new feature, new price point, totally new thing, etc. — but it’s the new-ness and the timing of the purchase is important.

Now imagine you hear about or see a certain product. It serves a need for you of some sort, and it may not have been something you’ve seen before. You make the decision to purchase it. You like it so much, you buy something else of the same brand, and again have a good experience. This is the heart of brand loyalty, and there are many, many ethical companies that purposefully try to build that type of customer loyalty through superior products, advertising, image, etc.

There’s a fine line, of course. What if the product is crap but has a great marketing campaign? What if it’s a good product, but abuses its workers in some way? What if a company pioneered a product or service, but now some other company is producing a similar product at a lower cost? What if that new company is undercutting their competition in a completely ethical way? What if they are doing so unethically?

These are good questions to ask yourself to inform your purchasing decisions. As I often tell my kids, “Question everything. Then question your questions to discover if there are other questions you should have asked instead.” It’s very important to always question what you are told or read.

Even what you read here, from me.

That may be a topic for another post on another day, perhaps, but is not the thrust of what I want to discuss today. I want to talk about “direct marketing”. Direct marketing occurs when someone you already know in some way advertises a product and/or service to you. It’s also often called “affinity marketing” or “direct sales”, but many companies give their own special name for it.

There is, of course, a spectrum of direct marketing approaches and products for sale, from personal hygiene products to jewelry to financial services to sex toys. It’s truly dizzying. Direct Marketing allows companies to build product loyalty through word-of-mouth. Some times the products are worth the price of this method of marketing, others not.

What matters for the purpose of this little discussion, though, is their FOCUS.

Inevitably, at some point in your early adulthood, someone will try to invite you to some sort of direct marketing seminar. I won’t tell you not to go! Instead, I encourage you to go. But leave all your cash, checkbook, and credit cards at home. If possible, leave even your identification at home. At some point in the seminar they will try to convince you to sign something, purchase something, or whatever.

For this first experience, I want you to practice saying, “no” in the mirror.

Seriously.

Look yourself in the mirror and mouth the word, “no” several times. You want to get used to it.

Practice asking yourself oddball questions aloud, and answer “no” to yourself. “Do you love your family?” “No.” “Do you like good food?” “No, I don’t.” “If you could make a million dollars in the next thirty seconds by saying ‘yes’, would you do it?” “No, I won’t.”

The more you might possibly want to say “yes” to a question, the more important it is to say no. You’re not going to lie; you’re practicing this to avoid being manipulated.

Then go to the meeting with your “friend”. Be sure to have your own transportation; do not rely on someone that already is purchasing and/or selling the product! Do not take up a pen. Do not pull out cash. Do not answer “yes” to anything. Do not sign anything. Keep your hands in your lap. If it really seems like a good product — and more importantly, if it’s an ethical company — there will always be an opportunity say yes some other day. Don’t be deceived by false timing propositions like, “If you don’t do this tonight, you’re going to pay more later!” There’s always another sale later. If the product is good enough, it or one like it will be available later. Trust me on this part.

Once you come back from the presentation — once again, don’t agree to anything while you’re there! — evaluate the merits of the presentation, and ask yourself this one question:

“Did they focus on selling me a product? Or did they focus on recruiting ME to sell product?”

If a salesperson is trying to sell me a product, it will be worth evaluating and comparing to similar products or services. It may be overpriced; if so, buy something else. It may be high or low quality; determine if it’s worth purchasing based on those merits. Verify that their product seems to be ethical. If it’s something that ostensibly holds resale value, verify for yourself that the used market for the product or service increases in value; if it decreases in value, but you still want it, perhaps you could obtain it used and save some money? If you buy it new, are you paying extra simply because you are the first to have the thing?

You may end up a satisfied customer of a new product or service. Do your research, and heck, you might end up saving money and improving your quality of life. It’s important to be open-minded to new things.

But then there’s the dark side.

If that salesperson is trying to recruit you to also be a sales person for that thing in the presentation, you should avoid that thing with all the power you possess. Ethical businesses do not thrive by recruiting new people to pay into their company in some way. That is the behavior of predatory companies, and those who tread as close as they legally can to being a “pyramid scheme”, while not actually doing anything strictly illegal.

Pyramid schemes are notorious. The simplest of them were popular several decades ago. You receive an envelope containing a ten-dollar bill, a list of names, and a promise: Send five ten-dollar bills to five people you know, and to the five people on the list, crossing off certain names as you do so. If you do this, the letter promises, you will soon receive many thousands of dollars from people doing likewise. It sounds like magic, and for those who received such letters early on — high in the “pyramid” — it was enormously profitable. For the cost of a hundred dollars, you could get many times the return. And if every time you receive such a letter from someone else in the chain, you repeat the process, you are promised to continue compounding your money.

Such schemes are illegal now. You can go to jail for participating in them. The simple reason is mathematics. Any process that doubles itself with each iteration soon will number more iterations than there are atoms in the entire universe. With a finite population, you simply run out of people willing to participate in the chain. When you run out of people willing to send money to others in the list, the process falls apart, and you are left with a HUGE number of people that sent money, but never received any. All it does is shuffle money around, typically landing the largest portion of the pot in the hands of the guy who started the scam in the first place. Those people left holding the bag at the end of the chain typically don’t lose very much individually, but because so many people lost that bit, it represents an enormous drain on society as a whole. As a matter of public financial safety, we discourage the practice.

Mostly we do this because those who start such scams are usually people whom we really don’t want to end up with a lot of money: criminals. Those who’s first impulse is to figure out how to cheat society out of the products of other people’s labors rather than earning it honestly themselves.

And that’s the problem when you get home from that seminar at which you steadfastly said, “no”, refused to pick up a pen, refused to agree to anything that was presented to you. You’ve determined what their focus is: was it sales of a product? Or was it recruitment of more sales people?

If the latter, steer far away. It is the modern incarnation of that legendary postal chain mail from decades ago. It works for those near the top of the pyramid, but if you were to sign up, if you were to pay a $500 “signup fee”, or “marketing bundle purchase”, or “sales starter pack”, or whatever they choose to call it… you will know that the only way you will ever see money is if someone else is left holding the bag. Eventually, such a direct marketing approach must inevitably, mathematically fail. You cannot recruit everyone on the planet to sell these things.

The numbers bear it out. On average, some 97% of people who sign up for such “new” marketing schemes never sell enough to recoup their initial investment. The only ones making money are the 3% who are hard-working enough — or is it, perhaps, “unethical enough” — to willfully, repeatedly, with full knowledge of the devastated lives and lost money in their wake, continue to peddle their recruitment seminars indefinitely.

Do you really want to be one of those people? Callous enough to know that 97 out of every 100 people you talk to will utterly fail attempting to recruit others, and that their investment is simply wasted as part of the endless money-churning effort lying behind such pyramid schemes?

It’s up to you. As for me, if the answer to that question ever comes back that they want to sell me stuff just so that I can sell it to other people, I turn around and run the other way. I want nothing of such unethical business practices, knowing that the only way I can make money is to prey on the young, the gullible, and the desperate.

No thanks.

Blendtec vs. Vita-mix

We burn through blenders within a year or two, including a $150 Ninja among others. Looking at higher-end, long-warranty blenders, there are really only two choices in the USA today: Blendtec & Vita-mix. We ended up buying a Blendtec. Here’s why.

* “Will It Blend” videos. Duh. Huge appeal for that reason alone.
* Broad base, easy to clean.

We burn through blenders within a year or two, including a $150 Ninja among others. Looking at higher-end, long-warranty blenders, there are really only two choices in the USA today: Blendtec & Vita-mix. We ended up buying a Blendtec. Here’s why.

* “Will It Blend” videos. Duh. Huge appeal for that reason alone. * Broad base, easy to clean. * Dishwasher-safe jar (Vita-mix specifically says it’s not dishwasher-safe) * Blendtec is in Utah and I used to fly my model helicopter across the street from them in Orem. It’s how I first heard about them, asking a heli-buddy, “Hey, there’s a blender company in Utah? Who knew!” * Blade will never dull ‘cuz it’s already dull. Vita-mix stuff you have to send in for a replacement set every so often, or get blades sharpened. * Tom Dickson is a blending god. * Blendtec makes hot soups a little faster than a Vita-mix due to the more-powerful motor. From where I sit, the difference isn’t huge, but hey, it’s there. * Dull blade means no more cutting my fingers cleaning the thing. Of course, both companies recommend you not bother scraping; just run the blender with some warm water and a drop of dish soap, and it cleans itself. * Blending glowsticks. * One-piece construction of the jar, no taking it apart for the dishwasher. * 90-ounce jar. Doesn’t come bigger than that. With a family of six, that’s important: I can do eight 8-ounce smoothies in one go. * Short jar. Fits under the counter. I understand Vita-mix now offers a “compact” model with the same feature. * No plunger required. * Nine seconds to make nut butters with the Twister jar, compared to several minutes in the Vita-mix and Blendtec standard jars. We have the Wild Side; Twister’s on my to-buy list! * Eight year warranty. I realize that Vita-mix also offers an 8-year warranty on some of its models, but damn. If you figure we spend $50 a year on blenders — on average, given how frequently we burn them up — we’re saving money. * It can blend a freaking iPhone and keep coming back for more. * Programmed, set-it-and-forget-it buttons on the “cheap” model (you have to buy the highest-end Vita-mix for this feature)

So far we’ve used it to create a bunch of smoothies. We’ll see how much we like it years from now!

Unconditional Love

The “feeling” of love is largely out of your control; you can no more choose to feel love for someone without an action than you can choose to feel pain, hunger, or misery. The only love over which you have any control is love as an action: choosing to include someone in your life.

The “feeling” of love is largely out of your control; you can no more choose to feel love for someone without an action than you can choose to feel pain, hunger, or misery. The only love over which you have any control is love as an action: choosing to include someone in your life. In that sense, the idea of “Unconditional Love” is responsible for an enormous amount of destructive, abusive, and codependent behavior. It should be abandoned.

Love must be conditional. The conditions, however, don’t include understanding or agreeing with someone. It’s just one condition: that the other person does not mentally, emotionally, or physically abuse you. If a person cannot abide by that one simple rule, you may want feel love for them, but you must not keep them in your life (love as an action) or you will suffer on their behalf.

In an emotional sense, “unconditional love” is meaningless because you can’t choose to feel love. And in an action-verb sense, love must have that one condition. Otherwise, you are positioning yourself as a martyr, suffering endlessly for the sins of someone else. And as far as I know, in the Judeo-Christian tradition, only One Man was ever required to do that.

Even this atheist can tell you putting yourself in that position is probably a bad idea.