Tuesday, January 31, 2012

Street Musician

I just watched a very pretty performance by a street musician on YouTube.  Two things in the video struck me:

1. A surprising number of passer-bys put some money into his case.
2. None of them stuck around to listen to the music.

I wonder why? 

Presidental Elections

Right now, if I had to vote for someone for President, and wasn't allowed to abstain, my vote would go as follows:

1. Mitt Romney
2. Barack Obama
2. Rick Santorum
3. Newt Gingrich

I was listening to Mitt Romney's celebration speech (for winning the Florida primary) this evening on the way home from work, and I had to shake my head several times.  Most of it was at the attacking nature of speech: "My opponents are doing this stupid thing!  The president wants to destroy America!"  Other times it was at the black and white nature of the positions he presented.  "The president wants to disband our entire military! I'm going to make it into the greatest military juggernaut in history!" (Yes, I'm exaggerating.)

Apparently Florida has been just about the most negative political race in history.  As a huge believer in decency, respect, and diplomacy, my estimation of Mitt Romney (and the other candidates) has been lowered because of the attack ads they've ran.

At the same time, I know why the candidates run attack ads: they get attention, they get press, and they get results.  People are swayed by them.  The unfortunate side effect is that candidates are willing to run incorrect (read: lying) attack ads, because by the time they're exposed, the damage has been done and of course the expose gets much less attention than the ad itself.

I'm guessing most people in country would agree that the state of politics in our country is pretty bad.  It's hard going to the polls when you're only selecting the least distastful of two choices.

Saturday, December 24, 2011

Year-end Letter

Hello all! In the revered tradition of year-end updates on our lives, we'd like to let everyone know how Drek, Child, and Ash are surviving the punishing, temperate climate of California.

Hanging Christmas lights in the dead of San Diego winter
In a year full of raising a kid, buying a house, and holding down a job, our family's crowning achievement, of course, was getting chickens. Four of them, although only one seems to be laying eggs, and then only once every few days. A few days ago, another chicken made a half-hearted effort leading to a marble-sized egg which was more of hors d'oeuvres than a meal. Lazy chickens. Little do they know that their carefree, freeloading era is near its end. As the old saying goes, "An egg in the fridge is worth two in the chicken." Those who don't produce end up as dinner. Or so Drek's boss tells him on a regular basis.

Speaking of 5D Robotics, Drek has managed to hold down a job for a full year. Even better, he's quelled nearly all the robotic revolutions he's instigated. For those worried about robots taking over the world, don't be—the end will be swift and painless. The company is doing well, having moved to a larger building nearly a 400 foot trek from the old one. The “big bay” itself in the new building is nearly the size of our old digs, with plenty of room to get a robot up to speed before slamming it into a closed door (protip: laser rangefinders do not handle highly absorbent paint well).

As winter approaches, Drek misses his yearly tradition of snow cave camping, but he's taking what solace he can in weekly visits to the beach or early morning outings to the neighborhood Frisbee golf course.
 
Child spent 2011 taking care of a Sunday School class of fourteen teenagers, a new house, a ten-year-old car, a two-year girl, and four chickens. It's totally understandable how confusions could arise, with the occasional chicken sitting up for dinner at the table or Ash locked in the chicken coop on one of her “spirited” days.


The most beautiful woman in the world
Child and Ash took the brunt of the enjoyment of the aforementioned zoo passes, visiting once a month at least. The passes also gained them access to the Safari park, which supplies much of the animals to the San Diego and other zoos.

The future of Humanity
The zoo is located near La Jolla, yet another of the beaches that dot the California landscape. At La Jolla, Child and Drek got to experience scuba diving for the first time, at which Child excelled but which involved a little too much water for Drek's taste (Drek prefers his beaches above sea level and boat engines not leaking oil slicks into his mouth). As beginners, they stayed in a shallow, churned-up lagoon, the theory apparently being that the less visibility there was, the more likely they'd be to want to return in hopes of actually seeing something. They did see a few fish close-up, but they were chance meetings in the murk and as much of a surprise to both diver and fish. Still, they (Drek and Child, not the fish) enjoyed it enough to probably attempt it again—preferably somewhere tropical.


Scuba diving (brochure picture)

Scuba diving (actual picture)
One of Redacted's primary accomplishments was buying their first house. Having had enough of wall-sharing neighbors testing their sound systems at 11 pm at night, upstairs dogs peeing onto their porch, and walking through a fog of cigarette smoke on their way to their car in their Sunday clothes, they decided to leave that world behind for the relaxing, care-free life of a home-owner.
Listing photo of new home in Vista, CA (lawn photoshopped in by real estate company)
The first month in their home, they received a visit from a representative of the water company. They were informed that their home was using enough water to supply a small village and that if they weren't, in fact, operating a clandestine water-park, they might want to get that looked at. As they found out, their home was leaking water underneath the cement foundation, which according to the plumber was “a mite hard to get to.” That's plumber-speak for “we're just going to cut off your pipes at the foundation and route everything through the ceiling instead,” or more succinctly, “Looks like I'm going to Hawaii this year.” Three days and one vacation package to Hawaii later, the Redacteds were able to shower again and reestablish social contact.

A few days later, cleaning up the backyard became a priority when the next-door neighbor asked if the Redacteds were growing marijuana back there (no). A few days later, Drek met the back-fence neighbor and mentioned this anecdote to him with a laugh. The back-fence neighbor didn't laugh. “I grow marijuana. For my injured back, you know. But never around the kids.” Oh, good.

Interesting aspects to home-ownership aside, it's been enjoyable having a garden, chickens, and yes, neighbors at property-line distance. Our backyard is big enough for tents, so everyone is welcome to visit, as long as they don't mind the possibility of a chicken slipping into their sleeping bag with them.

Friday, December 16, 2011

This may be the height of nerdiness, but the sheer length and impenetrableness of the following compiler error message amused me so much I decided to post it.

Yes, it's a single error message, for one line of code:

error: no match for ‘operator&&’ in ‘behaviorOption.std::_Rb_tree_iterator<_Tp>::operator* [with _Tp = std::pair<const int, std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >]()->std::pair<const int, std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >::second.std::map<_Key, _Tp, _Compare, _Alloc>::find [with _Key = std::basic_string<char, std::char_traits<char>, std::allocator<char> >, _Tp = std::basic_string<char, std::char_traits<char>, std::allocator<char> >, _Compare = std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, _Alloc = std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >](((const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)(& std::basic_string<char, std::char_traits<char>, std::allocator<char> >(((const char*)"reportParams"), ((const std::allocator<char>&)((const std::allocator<char>*)(& std::allocator<char>()))))))) && std::operator== [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>](((const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)((const std::basic_string<char, std::char_traits<char>, std::allocator<char> >*)behaviorOption.std::_Rb_tree_iterator<_Tp>::operator* [with _Tp = std::pair<const int, std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >]()->std::pair<const int, std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >::second.std::map<_Key, _Tp, _Compare, _Alloc>::operator[] [with _Key = std::basic_string<char, std::char_traits<char>, std::allocator<char> >, _Tp = std::basic_string<char, std::char_traits<char>, std::allocator<char> >, _Compare = std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, _Alloc = std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >](((const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)(& std::basic_string<char, std::char_traits<char>, std::allocator<char> >(((const char*)"reportParams"), ((const std::allocator<char>&)((const std::allocator<char>*)(& std::allocator<char>()))))))))), ((const char*)"true"))’

"Oh, yes, I clearly see what my mistake was.  Using the C++ Standard Library."

Sunday, November 13, 2011

Child made me a wonderful Halloween costume this year: 



Those poor chickens had no idea who they were up against.  It was a hard-fought battle, four-on-one, but let's face it, the outcome was never really in question.  Besides, there's nothing dishonorable with a retreat in the face of superior numbers.

While strolling through downtown as part of the city's Halloween activities, I noticed this sign on one of the storefronts:


The "around back in alley" part would really seal the deal for me, if I were looking to sell my gold or silver.  You can tell just from that that you're dealing a an upstanding, reputable businessperson.




Friday, November 04, 2011

Function transformations

I wish I had a little cheat-sheet like this during my math classes:

Given vertical translation a (+ to shift up, - to shift down), vertical scaling b (larger to grow, smaller to shrink), horizontal translation c (+ to shift right, - to shift left), and horizontal scaling d (larger to grow, smaller to shrink), the function transformation would be:

(f((x-c)/d)+a)/b

You can pick and choose values.  If you don't have a or c, replace with 0.  If you don't have b or d, replace with 1.

Assume our function f was the sine function.  sin(x):



Say we wanted to shift the whole function to the right by +1, i.e. up the x-axis.  c=1 and our transformation would be sin(x - [+1]):



Note how the graph used to cross the x-axis at 0 (red), but now crosses it at 1 (green).

Say we now wanted to stretch it longer, i.e. horizontally scale it.  Maybe stretch it twice as long.   If we choose a horizontal scaling factor of  d=2, our new function would be sin((x-1)/2):


Now perhaps we want to shift it upwards, e.g. a=1.  Our new function is sin((x-1)/2)+1:

And finally, we want to stretch our function in the vertical axis, perhaps also by double, so b=2.  (sin((x-1)/2)+1)*2:

 Before, it ranged from a minimum y of 0 to a maximum y of 2, now the maximum y is 4.

Monday, October 31, 2011

Halloween

Today I biked into work in full ninja regalia.  There were a few honks, a few shouts--presumably of fear, or perhaps in surprise at seeing a bike travel by itself--and an "Avast, ye scurvy dog!" emanating from a pirate sword being waved out a car window.

At a stop light, a "pro" biker pulled up beside me wearing spandex tights, black/lime-green socks, and a neon-yellow logo-covered shirt.  "Nice costume!" he said.  "Likewise," I answered.  He seemed a little huffy as he left me in the dust, but I'm not sure why.

Arriving at the back door of work, my ninja-invisibility came in handy as I made a less-than-graceful dismount from my bicycle, thanks to the baggy ninja pants.  Walking to the front of the building to assassinate my boss and assume his position, I saw three visitors from another company approaching the front door, so I opened it for them.  They stopped, looking a little confused--probably terrified--checked the company name on the window, glanced at each other, then finally approached.  I took pity on them and lowered my mask, calming their fears.  They didn't offer to shake my hand though.  Probably afraid of being shurikened.

This afternoon, we're having a barbecue with them using a new grill the company just bought.  I'll probably demonstrate how I can hold fire in my hand without getting burned.  I'll let you know how it goes.

Thursday, October 20, 2011

War Update, Plus Work Productivity Note

After the last three public executions, the mice decided to lie low for a while.  We didn't hear a peep from them until last night, when a scout foolishly ventured into the garage while we were paper mâché-ing jack-o-lanterns for Webelos.  He was quickly apprehended and incarcerated, then met a swift end at dawn at the hands of our chickens.

On a different note, my productivity at work has soared since I blocked a few websites in my /etc/hosts file.  I realized I had gotten in the habit of working, then every time I hit a complicated spot, I'd almost instinctively switch to a browser to read a quick Slashdot article or CNN report.  The waste of time was adding up quickly, so I decided to block a handful of sites for myself at work.

127.0.0.1 ksl.com
127.0.0.1 cnn.com
127.0.0.1 slashdot.org
127.0.0.1 failblog.org
127.0.0.1 espn.com

It's worked surprisingly well over the past couple weeks.  Even though I could unblock them in a few seconds, the very fact that I'd have to jump through a hoop reminds me that I'm supposed to be focusing on work.

Sunday, October 16, 2011

Camping Trip

Friday and Saturday was our Elder's Quorum camping trip.

My wife blogged about it from her end and was fairly accurate in her description of the event being presented as a way to work off some testosterone poisoning. There were promises of guns, fires, possibly explosions, and definitely no kids.


There was a hairy road to get to our remote wilderness campsite, but we all made it alive.  There were seven of us, four of who were auto mechanics, so the campfire conversation was distinctly auto-oriented.  The moon was nearly full that night and it was surprisingly bright, which led directly to The Incident.

About 11 p.m, as we sat around the campfire, the manager of the property (who was also camping with us) told us that the narrow, rutted dirt road we had come up continued on to the top of a nearby peak.  One of the mechanics had brought an old BMW that he had fixed up Baja-style, and he promptly jumped up.  "It's bright enough out here," he said.  "I'm going to go check it out.  Who wants to come?"

Another guy took him up on his offer and a moment later, the two of them were roaring up the dirt track towards the top of the mountain.  The property manager watched them go, then said, "They're going to get stuck.  There's no room to turn around on the road."

There was silence for a moment.  "You probably should have told them that before they left," someone finally suggested.

The property manager shrugged.  "They said they wanted an adventure."

They apparently had one, because an hour later they came hiking on foot back down the mountain.  As they later explained, they had reached the end of the road, where there was a small dirt patch.  It was just large enough that with their small car, they probably could have done a hundred-point turn and ended up facing back down the hill.  Being 20 year old guys, the thought of doing it that way didn't even enter their minds and the driver decided to try to gun his engine, spin out on the dirt, and swing the car in a circle.

All he succeeded in doing was going off the road and nearly rolling down the mountain, fortunately stopped from doing so by the brush on the side of the road.  The car was holding on precariously with two tires, necessitating cautious climbing out through the driver side door for both of them.

"We'll get it in the morning," said the property manager, unperturbed.


The next morning, we started up the mountain in a pickup truck.  The goal was to somehow use the pickup truck to rescue the car, but true to the form of all ill-fated rescue missions, we only succeeded in nearly getting the pickup truck stuck.  It was only "nearly" and not "completely" because we ended up physically lifting up the rear end of the pickup truck and swinging it around. 


Fortunately, that led to the realization that if seven guys could lift up the tail end of a pickup truck, surely we could heft a small Baja-style BMW.  We finished the hike up the mountain on foot and finally arrived at the car.



It was dangling pretty solidly over the edge of the hill, but it was nothing we couldn't handle.  The Elder's Quorum president gave a stirring speech based on Elder Utchdorf's talk, "Lift Where You Stand," and we manually hefted it out.

Unfortunately the first video section was fairly large and was rejected by Blogger.  This second section I videotaped is just as good though, because it's shorter and still demonstrates the prowess of our biceps.



So all the people and vehicles survived, but one casualty of the event was my sock, forgotten by the campfire as it dried out from the previous night's dew.  It's the tragedies in life that make us stronger, though, so it was probably a good character-building experience.  And a reminder to bring a spare pair of socks next time.


We finished the morning on a lighter note, shooting large amounts of ammunition from a wide variety of weapons.  The cows in the nearby field cautiously moved to the far side of their enclosure, but the wives would be pleased to know that we were extremely safe and that the only casualties during this portion of our event were about 250 clay pigeons and a variety of soda pop cans and assorted campfire detrius.

 We even cleaned up when we were done.

Defense News Feature

We're in the news!  Our partner, DRS, demoed our joint product at a conference in Washington, D.C.  where Defense News did a feature on it.


Sunday, October 09, 2011

The War is On

This morning, I woke to find that a mouse had brazenly eaten the cheese from the mousetrap with the unmitigated audacity to not die in it.  Even more offensive, he left a taunting note to the effect of "Sucker!" behind.

Okay, he may not have left a note, per se, but I could tell he had thought of it.  I reset the trap with the cheese embedded deeper than a CNN journalist in Iraq and placed it back under the sink.

An hour later, a spider the size of the hamburgers in Cloudy With a Chance of Meatballs was discovered in the hallway to much shrieking and violent jumping about.  My wife was also a little startled by it.  I quickly vacuumed it up, then extracted the plastic vacuum container to empty it out.  Imagine my surprise when I discovered two mice saboteurs inside, a little wide-eyed and windswept but very much alive.

Caught red-handed, their protests of innocence did them no good and I delivered them to the gallows.  Our chicken executioners made short work of one, but let the other escape to warn his comrades. 

The stakes have been raised.

Saturday, October 08, 2011

No honor among mice

For the past week I've been hearing mysterious rustlings in the walls and under cupboards.  We've had a wet week too, which led me to suspect that a gang of mice had been  driven inside.  On my near-daily meander through the hardware store today, I spotted mice traps and got a package.  When I got home, dinner was ready so I placed a mouse trap under the sink and sat down to eat.

By cleanup time, we had our first victim.  Interestingly, the cheese I had placed on the trap was gone, so either he had gobbled it down then went back to lick the grease off the trap trigger, or another mouse had crawled over the first one's dead body to get to it.  Either way, it doesn't speak much to the intelligence of the mice, although I guess they don't make particular claims along those lines.

On the plus side, the chickens loved the mouse.  As my wife pointed out, one of the downsides of belonging to a vegetarian is that the chickens don't see much food "on the hoof," so to speak.

Yard Saling

Another good find obtained today at a yard sale: an A-frame ladder for $3. 

I felt like Patrick McManus explaining to his wife why he needed so many different types of guns.  "Well, I need an extension ladder for getting on the roof or climbing trees, then a smaller section of ladder for...well, small trees.  Then an A-frame ladder for high light bulbs and killing spiders on the ceiling, plus a step-ladder for..."

We also signed up to clean the church building this morning.  There were another handful of people there helping as well, and I overheard one mother say to her eight-year-old son, "My, you're grumpy this morning."  Personally, I couldn't really blame the kid.  Instead of watching Saturday-morning cartoons, he was cleaning bathrooms at 8 o'clock in the morning.

Moving on to yard work: over the past couple days I've been pulling weeds from our old, falling-apart asphalt driveway.  I got a tube of asphalt repair goo, but I think I grossly underestimated how much I would need.  Pulling the weeds left ravines the size of irrigation canals behind, some of which were quite possibly harboring wildlife.  A amazingly wide variety of bugs for sure.  Anyway, I'm hoping the goo will hold together the pieces of our driveway at least for another year or two.  We still have a garage door, fence, yard, painting, and a million smaller things on our list to do before we can afford that.

Thursday, October 06, 2011

Beginning of the End

I finally took the plunge.  I downloaded a password manager.

Until now, I've either remembered my passwords, used some algorithm to determine them on a per-website basis, or tracked them in my emails.  All of those had shortcomings, so I decided to try a password manager.

Using no particular criteria, I devided to try Revelation.  Simple, to the point, and for the handful of days I've used it, it's gotten the job done.  Using a password manager has its own shortcomings, but having to look up a password in a single application beats trying to find passwords in my email or guess until my account is locked.

Tuesday, October 04, 2011

Ice Shaver

The best $1 I ever spent:

Not the pumpkins: those were $3.33 each.  The ice shaver was $1 from a garage sale.  To make a delicious ice shavee, you will need the following ingredients:
  1. Ice
  2. Jello powder
Step 1: Grind up the ice

Step 2: Liberally dust it with jello powder to taste.  If you're gourmet, add a teaspoon of lemonade powder for an extra kick.


Step 3: Mix it all together.



Step 4: Hop your kid up on sugar and red dye 40 an hour before bed.  Which may explain last night's experience...

Resolution!

It's never too late to make a new resolution, so I'm going to attempt to start posting with renewed vigor.  Perhaps even daily. 

First post of the new resolution: WHY IN THE WORLD IS MY DAUGHTER STILL AWAKE at 3 AM?!?!

Thursday, August 25, 2011

Follow Me

Last week, half of our company was at the Association for Unmanned Vehicle Systems International (AUVSI) conference in Washington, D.C.  By all accounts it went well.  We may not have people hurling sacks of money at us yet, but soon enough.

One of the conference attendees uploaded a video of our follow behavior running on a robot called the Landshark, made by a company called Black-I.


Wednesday, August 17, 2011

Falcon


Friday, August 05, 2011

Summer Vacation

An overseas contact wrote the following line in an email he sent our company yesterday:

"Our company is going to be off tomorrow so I will follow up late in August."

That is no typo. Apparently most of Europe takes August off work.

How come the U.S. doesn't do that?

Scrambled Eggs

Coming home from work a couple days ago, I found out that someone had egged our house. After some questioning, my wife admitted that it had been her. She claimed our 2-year-old daughter made her do it. I tell you, what is the world coming to?