Wednesday, September 30, 2015

Let x = x + 1

Let x = x + 1

The first time I saw it, my brain revolted. The math in me screamed: NNNNOOOOOO!!!!

But I kept digging, and one day found I had gradually succumbed to my present affliction: earning a living, more than full time, writing software bits.

The math part of me had learned, before I first saw this, that x is x is x, wherever it may be strewn throughout the equation. Wherever it appeared, it represented the same exact value. If it changed over there, it changes here, too, simultaneously. x = x + 1 is a mathematical impossibility.

Yet it's the way things work nowadays.

I eventually came to understand, as programmers tend to do, that x is not always x. x on the left is different than x on the right, and things which are named the same as other things are not actually the same thing. Embrace the ambiguity. Breathe it in. Let it seep down in to the very cells of your body and emit its light of illumination from within.

Let x = x + 1. The x on the left means "put the result of the stuff on the right into the spot named x." The x on the right means "use the value in the spot named x and add 1 to it to produce the result." These two xes are NOT the same, and because they are not the same, x = x + 1 is actually not a mathematical impossibility.

It's merely a Maths geek finally accepting his inner English geek.

Let x = x +1.

Forever and ever. Amen.

Thursday, August 20, 2015

The Infinite Amplification Potential of Smiles

Smiles propagate.

My wife recently connected with our son in a special way, exchanging links to music videos on YouTube via text message. Deeper conversations and more sharing followed. Two people, smiling, happy to have connected over something special. She shared the texts and videos with me, and then there were three...

Shortly afterwards, we had lunch with Allen and Gayle Giese, and shared the story with them. And they smiled. Hmmmm. Then there were five.

Allen and Gayle wrote it up in a blog post for Ride to Awareness and shared a link to it on Facebook. So far, 123 people have "liked" that post and 11 have re-shared the link. I don't have the stats for their blog, but let's just say "even more" people saw it there. Many many more have probably now seen it, and I bet many of them smiled, too.

Not bad, right? From 2 people smiling, to 3, to 5, to 123+, to ...?

The smiles of ordinary people can now propagate beyond the physical rooms they're in thanks to all this amazing modern technology. The amplification factor is astonishing: you can literally start a chain of events that leads to thousands of people smiling just by sharing something cool with someone you love.

So go ahead, share some smiles. :-)

Continuing the conversation, my son sent me another link to a YouTube music video just a few days ago. It has some awesome tech in it, and is a very cool piece of music, with some stunning visuals, physical effects, and super slo-mo video sequences. I posted a link to it on Facebook, and got an "IN. Credible." comment from my cousin, who immediately re-shared it, too.

Then, I'm poking around related links from the dude's YouTube video and other stuff he's done, and find him on Twitter, with an awesome retweet near the top of his recent Twitter activity. So awesome, in fact, I had to retweet it myself. It was that good. Now when I tweet something, or retweet, it automatically goes to my Facebook page, too. My daughter picked up on this one, and re-shared my retweet to her Facebook friends. And now my brother's Mom did too (sounds weird, right?, but true...), just now, as I was writing this. 2 shares, 8 likes here, a few more there ... this one actually made me laugh, not just smile.

The geography of all this, by the way, is worldwide. From New Zealand to Albany, NY to South Florida to Boston to Connecticut to Arkansas to Seattle to ...?

Smiles now propagate across the globe via the new Social Ether. Please use ALL THE MEDIA to full effect to help us all get a little bit happier...

  • Text messages
  • YouTube videos
  • Actual Lunch
  • Blog
  • Facebook
  • Web pages
  • Twitter
  • Instagram
  • Vine

If you think something's cool, share it with somebody. You never know. You may end up making the entire world smile.

Propagate. Amplify. Smile, it's almost Friday! :-D

Monday, June 22, 2015

Summer Solstice

15:56, 15:17, 14:45, 13:44. Guess which one is the hours and minutes between sunrise and sunset for me today, here in the Miami area, right around summer solstice? You got it: 13:44. The angle between the horizon and the arc the sun follows across the sky here today will be 87 degrees, taking the sun nearly directly overhead at its zenith. I've got less sunshine than you, my northern friend, but it's more direct and intense, and we get more heat resulting from the sunshine we do get.

The other numbers apply to my friends in the Albany, NY area (15:17), Seattle (15:56), and San Francisco, too (14:45).

Enjoy the sunshine today, friends. Personally, I can't wait till winter solstice is here again...

Today's moon is waxing crescent, by the way.

Tuesday, May 19, 2015

It's Time

It's time for oil and gas to die. The transition to full solar power is coming, and it will come sooner than most of you think is possible.

Why should we wait any longer? We could do it within 10 years if we focus on it and dedicate resources toward it.

The iPhone was introduced in 2007. Here we are 8 years later, and 64% of the population has a smartphone. It should be everybody, but the damn things are just too expensive for some folks.

Two things coming, for sure, better get ready: solar power as our primary energy source for ALL energy needs, and self-driving, much safer than human driven, cars.

Rock on, humanity, rock on. Achieve shit despite the dumbass politicians who think they rule the world... (Shhhhh... Don't tell them it doesn't really matter who becomes president in 2016. We gonna do this stuff anyway.)

Friday, March 20, 2015

San Francisco Has a Vibe

I love this city. There's a vibe here. I don't feel I can quite explain it in words, but this is one of the places on Earth which resonates with my soul. San Francisco. Like Seattle, Maui and Edinburgh, too. It's mysterious to me, but I somehow feel more alive when I am in one of these places. There's a combination of factors, the lighting, the atmosphere, the proximity to water, the hills and mountains, the typical weather, the aromas of the types of food around, the coffee, the bustle or complete lack thereof. Geographic love. The feeling of not wanting to go back. The desire for change of pace.

This trip, I got to re-connect with an old friend thanks to the simultaneously best and worst thing which has ever happened to mankind, this here beast you're reading this on: The Internet. It would have been extremely unlikely I think, for me to have taken the opportunity to reach out to a few of my old friends, to let them know I'd be here for a few days, without the advent of email and Twitter and Facebook.

Thankfully, however, I mentioned to two friends (and more) I'd be in SF to demo my company's work near a trade show. Andrew took me up on the invitation and came to see what I've been working on for the past two years. And I am so glad he took the time to come hang with me for an evening and grab some dinner. It was great to catch up in person after 20 or so years, and shoot the breeze about school days, friends, biking, work, kids. All the stuffs.

We talked about our kids, as parents are wont to do, and of course, the "best and worst thing" came up. How can you be a good parent if you allow unfettered, uncensored access to all the (disturbing, pornographic, senseless, racist, homophobic, myriad-other-pejorative-adjectives) bullshit available on all the servers Google crawls? Let alone just letting them connect with their own questionable peers on Facebook or its ilk. And yet, how can you be a good parent if you deny access to all the (wonderful, literate, scientific, artistic, factual, reasonable) content of the world wide web? And their own friends! The www both rules and drools at the very same time. Parenting is becoming more difficult as time goes on, because keeping our kids from knowing things "too soon" is harder than it used to be.

Used to be you could rely on the librarian to let you know if your kid was checking out (or even just checking out) a book of questionable morals... Now, there ain't no librarian between clicking the search button and instantly seeing the top 100 images on any topic 13 year olds can imagine. Access to knowledge is a great thing, but access to certain knowledge before you're ready for it is just not the best thing for kids sometimes. Parents: take good care of your babies, and help them figure it out when they are inevitably exposed too soon to something they weren't quite yet ready for.

Dinner dinner dinner. Ah, Thirsty Bear, my old friend. As I order my second beer, while he's still half done with his first, I'm reminded I can (fortunately? unfortunately?) handle more alcohol than my friends of Asian descent who weigh less than me. More sorry for them than anything really. ;-)

We talked about biking, and racing bikes, and commuting by bike. He far exceeds my own feeble attempts at bike commuting. My commute is flat and 10 miles one way. His is through the hills surrounding the San Francisco Bay Area and 25 or 30 miles one way. I do an average of 27 miles a week. He does 200. He races. I do not. But hey, I commute by bike 1 or 2 or 3 days a week, and I'm loving it. And he tells me "every ride is a good ride." I couldn't agree more.

And... since he works for Synaptics, I took the opportunity to ask him "why the fheck does my Dell trackpad suck, but my old MacBook Air trackpad rocked?" And, as it turns out, there's actually a reason for it. It's not just "all in my head." Most PC manufacturers still connect the trackpad via the old school PS2 mouse/keyboard hardware interface because they don't want to sacrifice a USB port to have a higher speed connection between the trackpad and the motherboard. But Apple, oh Apple, paragon of producing engineered consumer delight, once again trumps every other company on the planet by designing a custom interface from the trackpad itself to the board. Their higher speed interface allows them to produce the infinitely better experience of actually tracking my fingers across the trackpad accurately. I remember fondly the days when I could actually click and drag on my trackpad. Oh, to work on a MacBook again. What I wouldn't give.

As it turns out, my friend Andrew is listed as one of the inventors on something which Apple, somehow, mysteriously, after some of them saw a demo of it in action, "invented independently" very shortly thereafter. Or something like that. Wouldn't it be cool if you could have a touch-based trackpad, but like a clear one, so you could put it on top of an LCD screen and make, oh, I don't know, a touchscreen cell phone or tablet?

(Note the dates, and recall, if you will, the first iPhone went up for sale in 2007.)

Despite the obvious use of the patented technology, which, you know, could have been an independent simultaneous invention, Andrew tells me he's grateful every day for Apple and their iPhone explosion around the world. Since they won't sell their parts to anybody else, all the other cell phone manufacturers look to Synaptics to get their transparent touch screens for their phones, which turn out to have quite a high market demand these days... Thanks, in large measure, to Apple. Moral of this particular story: if Apple wants to steal something from you... Let them!

Last time I was here was about four years ago, in 2011. I attended Apple's WWDC that year, the last year Steve Jobs was alive and spoke to the conference attendees. I do hope I get to visit again sooner than four years from now. My honey's got a conference lined up out here for July. Hopefully I'll get to go with.

San Francisco has a vibe. It resonates with my very being. And I love it.

Friday, July 19, 2013

Obviously Secure

Empty your water bottle, stow it in the suitcase. Empty your pockets: wallet, cell phone, coins, keys. Put stuff in your laptop bag. Keep your license and boarding pass out. Smile, be friendly, don't be irritated or grumpy, don't look suspicious.

OK, now get the baggie of liquids out, get the laptop out, wait till the last minute to step out of the flip-flops, put 'em all in trays, push the bags and the trays into the gaping mouth of the RapiScan 620 DV... Wait just long enough to be reasonably sure they won't be burped up, forcing the lady behind you to deal with them.

Stuff the license in your pocket, show your boarding pass one more time, step through the metal detector, pause for the slight delay caused by the re-scan and eventual manual probing of the suspicious bag of the dude in front of you. Wait just a few seconds for the guts of the RapiScan to digest your stuff.

OK, you're nearly there. You are now deemed safe for air travel by the Men In Blue. But the dude who was in front of you is now behind you, waiting for his bag, hopefully not having to explain why he's trying to transport so many batteries on an airplane. Or God forbid, a sole nail file.

You do not have a shoe bomb, your water does not have any explosives mixed in with it because THAT'S RIGHT, YOU DON'T HAVE ANY WATER, your laptop cannot possibly be used to trigger anything except blog comments at this point, you ARE who your ID says you are, and there is no possible way you could be a threat to anybody for any reason while on your upcoming flight. If there was, surely they would have prevented your passage.

So, now you can reverse the whole process and put yourself back together. Mostly.

Collect your bags and trays, pooped out irregularly from the butt of the RapiScan.

Empty your trays, put your flip-flops back on as soon as possible, get your laptop and baggie of liquids, stash 'em where they belong.

Get your pocket contents back out and put them back in your pockets. Put your license away. Now keep the boarding pass in your pocket.

And, now, finally ... you can get your empty water bottle out of your suitcase, fill it up at a water fountain, take a nice long swig, and bask in the glow of your ... safety.

After all, we all know the screeners are perfect and never miss a thing. I mean, they spend a whole few seconds on EACH bag and tray. Plus, the visualization software they use to scan the bags for bad stuff is certified to have NO BUGS WHATSOEVER. I feel so warm, and fuzzy, and safe. And secure.

Thanks, Men In Blue.

Monday, June 10, 2013

Desperately Seeking Sugar Daddy

Come on, Internets. You have 13 hours left to prove how big you are...

Kickstarter project ends tomorrow morning. I need 861 more honorable mention pledgers, ... or 2 corporate sponsors, ... or 1 sugar daddy.

Tuesday, June 04, 2013

The End Approacheth: One Week Until 11:11 am on June 11...

Less than one week to go. At this time next week, we will find out whether ActiViz .NET has enough financial support to continue, or whether it will hibernate until somebody comes along and gives it a resurrecting kick.

I'm talking, of course, about my kickstarter project again. I just updated the project page with some pictures and some explanations that my non-geek "regular people" friends have a chance of understanding.

Check it out, and most importantly, share this link with your geek friends. And your friends who have geek friends. (They're the ones most likely to know somebody who actually uses ActiViz .NET...)

If we don't hit the goal of $11,000, then NO money changes hands and the project will remain unfunded. Please help spread the word if you can: I don't want YOUR money. I want you to tell the people who really need this thing to fly, just so they become aware of it. And then I want THEIR money.

So ... even if you already shared the link two weeks ago: share it again. There's so much stuff flying past everybody these days, it's easy to miss things. A little repetition doesn't hurt.

Thanks, friends!

Wednesday, May 29, 2013

Kickstarter Rocks!

I'm finally doing it: I launched my first Kickstarter project earlier this month, raising money for an open source software project. It's got 12 days and a bit to go. We're 10% of the way there. Will we make the goal? I don't know... We'll soon see.

In fact, you can see, too. It's all public, right here: -- it ends at 11:11 am on June 11th.

I would like to thank the people who have already pledged real money to this campaign: about half are people who really want the end result, and the other half are dedicated friends and family, whose moral support I have always known to be rock solid, but whose financial support of this project kind of took me by surprise. I am humbled, touched even, and honored to have you all in my life. You know who you are.

Kickstarter is awesome. I have been a backer of 5 projects since last summer. And I'm sure there are more in my future. It's a fabulous way to raise money toward completing artistic, technological, culinary endeavors and more. Stuff that you wouldn't normally be able to do because it costs more than you have, and there's no obvious way to get from A to B without having a rich uncle. Or worse, having a miserly rich uncle. Or so I'd imagine.

Karen Sabo, the creator of the first Kickstarter project I backed last summer said to me "I love crowdfunding, don't you? It's so Stone Soup." And it really is, isn't it?

It's "crowdfunding." Everybody who cares about your project kicks in just a little bit, and they help you spread the word, and before you know it, you have enough money to do the awesome thing you've envisioned.

I'm a numbers guy: I'm constantly figuring, counting things, and running what-if scenarios through my brain. The average Kickstarter pledge is about $70. For my $11,000 project, it would only require 158 people pledging at the average level to fund it. Or 1,000 people coming in for honorable mention at the $11 level. Or 10 people who really, really care about it coming in at the $1100 level. It is sooo possible.

But consider this: even better than the money perhaps, executing a Kickstarter campaign shows you something tangible about your endeavor. It proves that some number of people really do care about the art you're building. Even the campaigns that don't hit their goal end up with some pledgers. That, to me, with this specific project, is the real reason I'm running this Kickstarter campaign. If it succeeds, then I will have tangible proof that doing the work is worthwhile, and there are people who care enough to make it happen.

And if not, ... well, I've already made contact with a small number of people who really do care, and that just may inspire future actions: Kickstarter campaigns or other endeavors.

How about you? Need some money to finish a project you've always wanted to do, but have never tackled simply for lack of a large enough bank balance? Kickstarter might be for you. First, pledge to support a project that resonates with you. Perhaps even mine. :-)

Then check out their guidelines, and see if you can't come up with your own project to bring to life.

Sunday, May 19, 2013

Rush Still Rocks


The quintessential power rock trio.

They totally rock. Still. And they appeal to the thinker in me. And they do odd musical things now and again, like sections of songs in 7/4 time. And instrumental songs, where the music speaks for itself, no need for words. (YYZ, La Villa Strangiato, The Rhythm Method...)

And they don't care about blending in and being like the rest of the bands. They've got their own thing going, they do it well, and they still rock, after nearly 40 years together.

Cool facts about YYZ, sure you've heard them before: the percussive beginning of that song is the Morse code representation of the letters YYZ, which is the airport code for their home airport in Toronto.

I realized back at the end of last year / beginning of this, that I was lacking 12 of their studio albums. So I'm on a mission this year to collect one each month, and by the end of the year, I'll have them all in my music library.
  • January: Counterparts
  • February: Fly By Night
  • March: Hemispheres
  • April: A Farewell to Kings
And now, in May, this month's acquisition was their original studio album, the self-titled Rush, including the final classic track, "Working Man."

Five down, seven to go.

As my cousin Erik pointed out to me: "If you don't have La Villa Strangiato running in the background of your psyche 24/7, you are not a true Rush fan." Well, obviously, La Villa Strangiato is *always* running in the *background* of my psyche... but in March, I actually listened to it in the foreground about 38 times while I was working. I tried to learn bits and pieces of it on my guitar, too, but dang! Some of those riffs are fast in there.

If I had HBO, I would have watched the 2013 induction ceremony on TV last night, recorded last month out in LA -- Rush was finally inducted after years of being overlooked. A well-deserved honor indeed. Congrats Geddy, Alex and Neil -- and keep on rockin'... At least for a little while longer.

Rock on, eh? Ten bucks is ten bucks.

Friday, March 08, 2013

My Next Prediction: Tesla Model S for the win

The Tesla Model S is the next game changer.

I do not frequently make predictions, but I don't see how the world can stay the same old, same old after Elon & co. rolled this thing out.

Last time I wrote about a game changer was a bit over 3 years ago about Apple's introduction of the first iPad model. Was I right? I don't know, you be the judge. Have any computer manufacturers struggled or gone out of business since then? Have millions upon millions of iPads been sold?

Anyhow... the facts now: the Tesla Model S is affordable to richer folks right now, and it runs COMPLETELY and ENTIRELY without using any gasoline. Not one single drop. Fuck you, Exxon-Mobil. Every single mile driven in one of these cars is powered by pure electricity, which could potentially be powered 100% by solar, wind and hydro sources. In fact, with the Tesla provided, solar powered, free (ok, really "included in the rather high sticker price") so-called super-charging stations scattered about the highways of America, you may be able to charge your car entirely on their dime and the constant influx of power from our brilliant closest star. Last time I checked, the sun keeps rising every day.

Personally, I cannot afford one yet. But as soon as I can, or as soon as they come out with a $20k or $30k model, sign me the fuck up. This car's the future, and I've wanted it since I was a kid.

The writing's on the wall. The future is now. The oil & gas companies can kiss the long run goodbye right now. And the other car companies can follow Tesla's lead, or say bye bye real soon. It's a new game, starting now.

Wednesday, February 27, 2013

Windows Dev and Dashboard Prompt

First set up a cmd file (a batch file with a *.cmd extension) whose sole purpose is to set environment variables.

Mine, called DashboardEnv.cmd, looks like this on one of the machines where I have Visual Studio 2010 Express Edition installed:

    @call "%VS100COMNTOOLS%\vsvars32.bat"
    @set PATH=C:\Program Files\Git\bin;%PATH%
    @set PATH=%USERPROFILE%\DevBox\cmake-\bin;%PATH%
    @set PATH=C:\Python27;%PATH%
    @set PATH=C:\Qt\4.8.4-vs10\bin;%PATH%
    @set PATH=C:\dev\tools\bin;%PATH%

As you can see by inspecting that file, it sets up the environment just like a Visual Studio command prompt, and then adds a bunch of useful stuff to the PATH environment variable: git, cmake, python, qmake, ninja and jom, to name a few. I have ninja and jom in the C:\dev\tools\bin directory -- they could be anywhere, you just have to add the right directory to the PATH here in this script.

Next, set up a cmd file in the same directory as the environment batch file to display a "developer cmd prompt."

Mine, called DashboardPrompt.cmd, looks like this:

    @call "%~dp0DashboardEnv.cmd"

    @title Dashboard Prompt

    @echo Environment set by "%~f0"

    @call "%COMSPEC%"

If you prefer the "git bash" prompt to the raw Windows cmd prompt, you can change the call COMSPEC line to:

    @call "C:\Program Files\Git\bin\sh.exe" --login -i
After you have both of those setup, double click the prompt cmd file to test it out. Then you can create a shortcut to the prompt cmd file, put it on your desktop, or whereever you like, and then just double-click the shortcut to get a new instance of your customized developer prompt.

Some things I do to make the command prompt itself slightly less intolerable:
  • edit the command prompt window properties: with the window open, click on the icon in the top left corner, and choose "Properties" from the menu
  • modify the properties of the window to allow "select-and-Enter-key to copy, right-click to paste" behavior by choosing the "QuickEdit Mode" checkbox
  • set the screen buffer height (number of scroll back lines) to 9999, the max allowed
  • set the window size to something larger so you can see more text at once (120 by 40-50 is nice depending on your usual screen)
  • set the font to Lucida Console, and choose a font size large enough to read
  • if prompted, check "modify the shortcut that started this prompt" on the way out
Now that you're all set up for an interactive prompt with the right environment... here's the reason why separating it into two scripts is good for you. You can easily run any other script with the very same environment by adding one line at the top of it:

    @call "%~dp0DashboardEnv.cmd"

The %~dp0 there means "drive letter (d) and full path of containing directory (p) without any double quotes (~) of this script file (arg 0) including the trailing '\' character (implicit in p)" -- so if you write a script that references another script in the same directory, using %~dp0 is a reliable way to reference it, regardless of how the batch file was invoked. See the output of "help for" in a Windows command prompt for all the gory details about possible letter codes you can use in such constructs.

So: to run dashboards or other automated builds with the same environment that you use for interactive development, you can write a script that uses your Env.cmd file.

Mine, called RunDashboards.cmd, looks like this:

    @call "%~dp0DashboardEnv.cmd"

    @title Run Dashboards

    @echo Running script "%~f0"
    @echo.  started on %DATE% at %TIME%

    @echo Updating VTKLargeData...
    @cd "C:\dev\My Tests\VTKLargeData"
    @git pull

    @echo Updating VTKData...
    @cd "C:\dev\My Tests\VTKData"
    @git pull

    @echo Running VTK Release dashboard...
    @cd "C:\dev\My Tests\VTK"
    @ctest -S C:\dev\EasyDashboardScripts\EasyDashboard.cmake,ninja-Nightly-Release

    @echo Running VTK Debug dashboard...
    @cd "C:\dev\My Tests\VTK"
    @ctest -S C:\dev\EasyDashboardScripts\EasyDashboard.cmake,ninja-Nightly-Debug

One nice thing about guaranteeing the right environment is set for running a script like this is being able to just use "git" and "ctest" in the script itself.

Obviously, you'll need to adjust path values according to tool installations on different machines.

For more details on setting up to run dashboards on Windows, see this page over on the CMake blog. (Also published on the Kitware blog.)

Good luck -- tweet me @DLRdave or ping me on G+ if you use this technique.

Monday, December 31, 2012

'Twas the (Charitable Giving) Season

It's that time of year again. A chill wind blowing, long, dark nights, ... balanced by warm fireplaces and Christmas tree lights.

And time to figure out how to spread some Christmas cheer without filling the world with more "stuff."

As with recent years, we are continuing our tradition of donating to charities in honor of our loved ones instead of spending money on "too many" gifts. I encourage you to consider doing the same, and helping those who are less fortunate than we are.

We've donated to the following charities this Christmas season. We would encourage you to do so too, with the charitable organizations that are closest to your hearts. Write up a blog post, or put it on Facebook, or send us a note. We'd love to hear about what charities you love to support.

Give generously!

Here's wishing you and yours a Merry Christmas and a peaceful and prosperous New Year!

Sunday, September 02, 2012

Worn out

Today, Sunday September 2, 2012:

distance: 8.01 miles

time: 94.27 minutes

average pace: 11.77 minutes per mile

calories burned: 1065

fainted after the run: nobody

calories re-ingested at Perecca's after we were done: unknown, but of course, enough to call it brunch with a cupcake dessert...

Here's a picture of the bottom of my shoe:

Think we'll be ordering new Five Fingers on Amazon later today.