Disclaimer: I am not an investment advisor. When I describe my own trading activities, it is not intended as advice or solicitation of any kind.
Showing posts with label bintgoddess. Show all posts
Showing posts with label bintgoddess. Show all posts

06 August 2013

Grays/Torreys Peaks

Diane and I hiked our very first 14er last weekend, and as a bonus we bagged a second peak. Grays Peak, and the nearby Torreys Peak, are the two most popular 14,000-foot peaks in Colorado, especially for first-timers like us. This is because they are very easy peaks to summit - Grays can be done with a Class 1 hike - and also because they are easy to get to from Denver. Just take I-70 west past Georgetown, jump off at the Bakersfield exit, and drive the terrifying Stevens Gulch Road up to the trailhead, and you're all set.

The Bakersfield exit is visible from Torreys Peak
The adventure started on Saturday right after a quick lunch in Denver. We headed out on I-70 and only a few miles down the road we ran into stop and go traffic. An illuminated sign said, "Slow Traffic from Floyd Hill to Idaho Springs", but we were about 5 miles from Floyd Hill. We sucked fumes along with all the other weekend warriors for an hour or so, and cranked it back up to the speed limit shortly after traversing the Idaho Springs tunnel. I've heard about I-70's epic weekend rush hour, but I hadn't experienced it until now.

The guide books all say that you should use a high-clearance vehicle on Stevens Gulch Road, and they are not kidding. We took the trail-rated Jeep Liberty, threw it in 4wd, and crawled up the rocky hole-covered 1-lane road. It was made even more exciting because we started our trek about 1pm on Saturday, just as the early Saturday morning hikers were breaking camp and heading back down. Several times we had to balance on the edge of a drop-off or back up a ways to find a wide spot to let a line of cars come down the opposite way. This also limited our ability to avoid some of the potholes and wash-outs. I heard a couple of scrapes on the undercarriage of the Jeep on the way up.

As we got close to the trailhead parking lot, we were shocked by the huge number of cars parked along the side of (ie in the middle of) the road. There must have been a thousand hikers on the site, based on the number of cars. We timed it well, though, getting there after Saturday morning folks had started to leave but before most of the Saturday evening folks had arrived. We were able to get a spot in the actual parking lot right next to a very nice campsite. We set up the tent in a light rain, and crammed all our sleeping gear into it just as the thunder started to rumble. We spent a lazy cozy hour or two reading and snoozing while the rain pattered on the tent.

A glimpse of Grays Peak from the trailhead Saturday afternoon as the weather rolled in
Picturesque Columbines at the trailhead
We had brought enough food to eat dinner in camp on Saturday night, as well as breakfast and lunch on Sunday. But about 4pm we decided to head into Silverthorne to pick up some dinner. I wasn't thrilled about trying to drive Stevens Gulch Road in the dark, so we hit up a Jimmy Johns and brought it back to camp. It wasn't all that different than the sandwich parts we had in the cooler, but I also got a Frappuchino out of it, so I wasn't complaining. Diane liked Silverthorne, too; this was her first visit to a real Colorado ski town.

Every campsite needs a bint

The alarm was set for 4:00 the next morning, so we hit the sack early. Our lullabies consisted of a barking dog and some idiot trying to split a firewood log with a camp shovel. He succeeded, broke the shovel, or gave up eventually; I didn't investigate which. The next morning we awoke in the pitch black, affixed headlamps, and started the process of fueling and gearing up for the hike ahead of us. I was hoping to be on the trail by 4:30, but I knew it was probably optimistic. Sure enough, we set out about 5:00. The beginning of the trail is very easy, which helps when you're navigating by headlamp. It wasn't long before we could see the mountains against a lightening sky, and about three quarters of a mile up the trail we rounded a bend and were finally able to see both peaks illuminated in the sunlight.

Grays (left) and Torreys (right) at sunrise

The trailhead is just about at the tree line, at 11,300 feet. Not far from the start, the pines fade out and the largest vegetation are shoulder-high bushes - I think mountain mohagony, but I'm not sure. These then dwindle in size and frequency until they disappear completely, yielding to alpine tundra. When the bushes were about waist high, still in the pitch black, we both decided that the longjohns that seemed like such a great idea back at camp were now a little on the warm side. Taking advantage of the bush cover as well as the dark, we took turns doing a costume change while the other stood guard at the trail. During my post, I must have talked to about 8 people. Pretty busy for 5:30 in the morning.

At about 12,000 feet, well into the tundra, we started hearing little squeaks from pikas. Every once in a while one would poke his head out and look at us, but the best picture I was able to capture was his little fat bottom disappearing into the rocks. So I had to settle for scenery, which doesn't flee from cameras.

American Pika (Wikipedia)

Morning light hits one of the mountains that frames the trail valley
Farther up the trail, the tundra starts to get patchier, and the broken rock piles become more frequent and continuous until eventually it's nothing but jumbled rocks above 13,500. We were really feeling the altitude at this point, and our pace slowed from a comfortable stroll to a plodding death march. The sun and the wind increased at about the same pace, which made further outfit adjustments unnecessary. Unusual for us, we were not passing anyone on the trail, and instead were the ones being passed. This was an indication that we were hiking right at our level of fitness.

Same mountain, 500 feet higher. The whole trail valley is visible to its right.

We started seeing the occasional hiker coming down at this point, although no one that had passed us on the way up, which was encouraging. I chatted with one for a couple of minutes as I stopped to rest and he stopped to put on sunscreen; he said he had set out at 2:00 that morning, and had watched the sunrise from the peak. Very impressive. We also had a runner go by on his way up the trail. He was visible running back down the trail later while we basked in the glory of the summit; talking with other hikers, it turned out he had run all the way from I-70 - a 12-mile round-trip run with an approximate 5000 foot elevation change, peaking at 14,278. Wow.

Cool rock formation next to the trail at the base of the Grays switchbacks

We summited Grays Peak at about 8:30, along with about 20 or 30 of our closest friends. We all hunkered down among the rock piles to escape the wind and had our lunches, chatting about how awesome this all was. We met lots of nice people, and traded picture-taking services freely. Everyone wants to commemorate their achievement, of course. There was an obsessive-compulsive lad there building up the rock cairns at the top into a continuous wall. Not quite sure what his problem was, but it was a little disconcerting having 50-lb rocks dropped on top of the pile I was leaning against.

The view, predictably, was amazing. The wind, predictably, was bitter-cold. The sky was the deepest blue I've ever seen. Words don't really do justice to the summit experience, and pictures can only approximate the panoramic magnificence that we all took in, open-mouthed. You really have to go there yourself, and yes, it's worth the effort.

One of the many amazing views from Grays Peak.
Looking down on Chihuahua Gulch from Grays Peak.
The lake which is the source of the stream is at 12,200 feet.
Diane provides proof-of-life for the kidnapping investigation.

After celebrating, resting, and eating on Grays, it was time to bag Torreys. This is done by taking a trail down the north face of Grays to the saddle that runs between it and Torreys, and then back up the other side. The bottom of the saddle clocks in at 13,750, and Torreys is only about 7 feet lower than Grays, so down we went 500 feet and then back up the same amount. The trail up Torreys is somewhat tougher than the Grays trail, but still easy enough. It is classified as a Class 2, but frankly the elevation was a much bigger factor than the trail difficulty. At Class 2, you're still hiking and not needing your hands, but it's steeper and you're taking larger steps up to get over rocks. Distance from Grays Peak to Torreys Peak: about 1 mile. Not doing it would be crazy.


Torreys Peak from Grays.
Note the trail running along the ridge of the saddle.

Grays Peak from the Torreys Peak trail.
Clearly visible are the switchbacks near the summit.
We think they should install a Grays-to-Torreys zipline.
Despite it being later in the day, the crowd at the Torreys summit was no larger than it was at Grays. Grays was getting busier, though. If you look closely at the picture above (click to enlarge), you can see the summit covered in tiny people. Back at Torreys, a couple of college students that we had summited both peaks with were taking pictures of each other jumping on the top of Torreys. It looked like they were having fun, but we were satisfied with just taking pictures with the sign proving we were there.

Proof of life, location, and date. Send the ransom, already!
After a little more time hanging out on Torreys, it was time to head down. The trail was a lot busier than it was on the way up. We noticed that the farther down the trail we got, the more casual the hikers seemed to be. By the time we dragged ourselves back to the trailhead, we were seeing T-Shirts and sandals on folks with no packs and limited water. I really hope they weren't determined to summit, especially considering the afternoon weather was about to get started again.

Hikers everywhere
We took the tent down in a light drizzle, and broke camp about 1:00 pm. Back down the treacherous Stevens Gulch Road, and onto the stop-and-go I-70 again, spending over an hour getting 10 miles back to Idaho Springs. To break up the suffering, we stopped in Georgetown and had calzones at the Alpine Grill - tasty! When we finally made it home, we were ready to sleep for days.

Satellite View of our trail

For more details and stats about the hike, see my Trimble Outdoors profile.

So, which one is next?

05 January 2011

Video Editing is Hard

For my birthday, the bintgoddess bought me a ContourHD, which comes with mounts to attach it to a goggle strap against a helmet, or to any flat surface.  This freakin' awesome video camera is only 4.3oz, and about 3 inches long.  It shoots 30fps natively in 1080p with a 110-degree wide-angle lens, so as to capture more of the surrounding scenery.  Check out some videos I found on their site here and here.  The second one starts a little slow, but stick with it for some great tree skiing.

Since I'm due to leave for the first ski trip of the season soon, I thought it would be a good idea to record some test video, and then try to upload it to the laptop and edit it some.  My needs are small: I need to be able to crop out boring stuff (stopping to wait for Jerry, fumbling with the camera to start/stop the video, etc).  I also want to suppress sound some of the time, since most of the skiing video I've seen with native audio on it just sounds like a wind tunnel.  Mixing in some appropriate music during this dead air would be great, but just lowering the sound track gain low enough that it doesn't drive viewers crazy would be fine, too.

I had no trouble shooting the video or getting it onto the laptop.  And once there, I could play the raw QuickTime video file without a problem.  But I had a lot of sharp noise when turning the camera on/off, or moving my hand around on it while holding it.  I wanted to trim off the excess on either side, and mute that noise.  I figured if I could do this, I can use the same tools for ski videos while sitting around the house in Utah.

Since my laptop runs Linux -- doesn't yours? -- I jumped onto Wikipedia and looked at open source video editing programs targeted at complete newbs.  Oh yes, I am a complete newb.  I am totally baffled by all these things that start with "MPEG".  I have no idea what the difference is between codecs, nor why I should care.  I just want awesome video, and I want it in 1080p.

First I tried Avidemux, because I'd heard of it, and because it started with A and therefore was near the top of the list.  Avidemux gives a lot of control over selection, which I like: I can move frame by frame.  But when it comes to actually encoding the edited video, I couldn't make heads or tails of it.  Most of the time it refused to generate video at all, complaining that my audio/video/container formats were not compatible with each other (then why let me choose that combination?).  Sometimes it would instantly trumpet success, leaving me with a 0-byte file.  Sometimes it would render my 61-second video for 4-5 minutes, spitting out a 2.5GB AVI that I could not play in any video player I had.

Next I tried Openshot, because it seemed to be one of the more popular ones, and it also seemed to be aimed at the totally ignorant (me).  It has a cutesy KDE-style interface that I suppose is designed to make me feel comfortable, but really makes me feel like I have no control.  I immediately ran into a bug where my video file would fail to appear on the timeline, where all the cropping and editing is done.  After searching online for a while, I found a workaround I could live with, and commenced with editing.  I spent an hour trying to line up pixels in the frustratingly inexact editing interface so I could start the video where I wanted it to start.  Then I crashed it by clicking somewhere that seemed reasonable to me.  I never did get a video file out of it.

Next I tried CinelerraCV, because it looked like it gave the user a lot of control over the audio and video.  I'm sure it does, but holy crap what a lot of buttons.  I was greeted with a toolbar that looks like this:
The best part is that none of the teeny tiny little icons have tool-tips, the more obscure ones are a complete mystery even now.  After three or four attempts, I finally managed to output a video file... but instead of the head-and-shoulders 16x9 framing in the original video, it was just the top half of my face in 4x3.  It was like watching a facebook avatar thumbnail come to life -- creepy. 

Finally I tried PiTiVi, which is written in Python, of all things.  I know a lot of you younger whippersnapper programmers think the world is written in Python, but I just can't get my head around why anyone would bother with it.  Despite my discrimination against the language, I gave PiTiVi a fair shake. In return, it gave me its share of confusion and frustration, but it also gave me HD video trimmed where I wanted it!  It was easier to learn than Cinelerra and Avidemux, and gave me a better feeling of control than OpenShot.  The rendering process was nice and straightforward.  I couldn't control the audio the way I wanted to, but I suspect it probably can be done... I just haven't figured out how.

The most frightening thing is that this little 61-second video required about 4:30 of rendering on the laptop, heating it up enough that it was blowing a hot wind at me out of its vents.  What happens when I have a couple of hours of skiing video to render?

30 December 2010

Wrapping Paper Everywhere

Just to warn you up-front, this is not a trading post.

The bintgoddess and I returned from five days in Michigan just yesterday, both with pretty serious headcolds.  This makes three colds for me in six weeks, which is just <sarcasm>really awesome</sarcasm>.  I'm trying to remember the preceding year or two when I watched the bintgoddess get colds at normal intervals while I managed to fend them off without a sniffle.  But bringing that memory forward over the ringing in my stuffed up ears is a little challenging at the moment.  I just woke up from 11 hours of sleep punctuated by bizarre pseudo-fever dreams, and the bintgoddess sleeps on.

The worst part is that we're pretty sure we both picked this up on Sunday, and we saw friends and family Sunday, Monday, and Tuesday.  I really hope we didn't pass it along to everyone else, but if the entire Detroit Metro Area fails to show up for work on Jan 3, 2011, you can blame us.

It was great to see many of our Detroit-area friends on this trip, and I have to say that the scheduling really worked out well.  We managed to see everyone we had discussed visiting, and didn't feel like anyone got short-changed on time.  We even laid some preliminary plans for going with another couple to Punkin' Chunkin' next year, which looks like a fantastic nerdy silly time.  With its massive Discovery Channel coverage this year, I'm sure next year's PC will be booked to the gills.

With all the friends and family we visited, it was a pretty full trip.  But there was still time to try to cope with four dogs and four people cooped up in a house.  My coping method of choice was to disappear into my laptop, where I started learning about delivering rich web applications via Flash movies (SWFs).  I'm working on a top secret project which I hope to deliver as a Facebook application, and I reckon Flash is probably the best way to make it a reality.  Unwilling to pony up hundreds of dollars for Adobe's development environment, I started looking at other avenues.

The one that I settled on is OpenLaszlo, named for either a painter, or a cat who was named after the painter, it isn't completely clear.  OpenLaszlo is an open-source language that is based on an interesting combination of XML and JavaScript, and lets you compile to either SWF (8 or 10), or to DHTML.  There are a few things you can't do in DHTML like embed fonts, but I think Flash is a better solution for my particular problem anyway.  OpenLaszlo's pedigree is impressive: H&R Block, Wal-Mart, and Pandora are all using OpenLaszlo to deliver rich content.

Over the break, I read through the QuickStart guide, and started digging my way through the Developer's Guide.  I've gotten to Chapter 10 (of 57), and so far have built a little test application that doesn't really do anything useful, but lets me exercise what few skills I have managed to accumulate.  You can check it out here if you're so inclined, but don't expect much.  If you're a developer-type and interested in the OpenLaszlo code that made it happen, you can find that here.  I added ".txt" onto the end of the file so that Firefox will just display it instead of trying to download it.  As I keep working through the Dev Guide, I will from time to time post my progress up on markmccracken.net.  I will probably not keep the source file up to date, though, unless someone asks me to.

09 December 2010

Such a Slacker

I've been distracted most evenings lately from the four Xbox games I picked up during Black Friday madness, and so it has taken me even longer than usual to record thoughts, trades, and rambling nonsense.  As if that weren't enough to eat up my attention, the Bintgoddess and I just received our HTC Incredibles we ordered through Amazon Wireless, and I at least have been spending more time than I should customizing and moving into my new phone.  I had intended to switch from AT&T+iPhone to Verizon+Android when my contract ran out in August, but the Bintgoddess' pre-pay plan ran out of minutes, and we could save more money to switch us both to a family plan now, despite the early termination fee from AT&T.  With nearly free phones (1 cent each from Amazon Wireless) and free 2-day shipping, the choice was pretty clear.  And yes, Amazon did charge my credit card $0.02.  Silliness.

Iron Condor
The January 2011 Iron Condor position has required some adjustment to keep it close to delta-neutral recently.  Recall that I opened a 650/660/810/820 iron condor on Nov 8, and then adjusted it Nov 16 by buying a 630/640 put spread.  Since we're into December, I'm now erring on the side of closing positions rather than opening them - but I'll still increase a position if it's the right thing to do for the risk or the greeks.

The stock market had been rallying pretty hard the last week or two - in fact, it has been rallying pretty hard ever since the day after I put on that downside protection.  This is not a surprise - it's just how I roll: don't believe me? watch me play poker on Full Tilt sometime.  But I digress.  With the stock market rallying and delta going pretty negative, it was time for some upside protection.

First, I bought back about half of the 810/820 call spreads for 1.40: a very reasonable 10c loss.  This moved the delta up about halfway to where it needed to be, but gamma was still pretty negative.  Another up-move and the position would be in trouble again, so I beat the rush and put on a Wolfinger Kite Spread.  Specifically, I bought back an extra 810 call for 3.70, and financed that by selling four 830/840 call spreads for 50c each.  Not only did this bring delta to a nice manageable level and give me some much-needed upside protection, it also significantly improved my max-loss on the upside.  Of course if MDW is reading this blog, he's probably seething that it isn't a perfect Kite Spread - I should have sold the 840/850s, or reduced the sales by 1 contract.  Tough.  I am convinced this was the right trade to make, whether it can rightfully be called a Kite or not.

The next day, I took advantage of another rally to buy back a few of the 660/650 put spreads for 45c.  This lowered delta a bit again, but like the previous day's adjustment, it really helped out in the max-loss department.  The total position now has a nice flat S-curve to it, and theta miraculously is still 13.  So a sideways market for the next 30 days should net me about .25 per contract - that may not sound like much, but that's 2.5% margin-return on a monthly trade.

It's also about time to be looking for a February trade, but I'll learn my lesson from January and wait for volatility to come up a bit.  Using paperMoney is nice, because I have so much fake margin in there that I can make trading decisions without having to be concerned about margin.  If I want to put on February before taking off January, so be it.  Doing that with real funds would take some very careful money management... or more money than I have.

CS|MACO
Still very bearish signals (53% are bullish as of last night, way too many for my taste) from investors, who happen to be right this time about the market as it sustains an uptrend, and bullish signals from the trend following MACO component.  As a result, it still waits in (fake) cash.

CiG
Eurodollar futures (GEH1) gave a bullish entry signal on Tuesday, so I bought them at the stock market close for 99.56.  Trading Eurodollar futures is similar to watching a bad horror movie: long periods of mind-numbing boredom punctuated by moments of pure terror.  So far I'm in the boredom phase - two days after buying them, I'm up 3 ticks.  W00t!  No exit signal yet, so I wait.

07 November 2010

Ranty McRant, volume 1

It's 7am on a Sunday, I've been up for 2.5 hours, and I'm feeling ranty.  The bintgoddess is very familiar with this situation, and I think (I hope) she finds it adorable; but this is the first time I've allowed my rantifications an outlet into the blog, so it feels a little special somehow.  This will be a little less researched than my other entries, and a little more free-association.  You've been warned.

Today's topic: hardware vendors and their sycophantic adoration of Microsoft Windows.  Yes, I realize I'm a Microsoft shareholder, and you'd think that it would make the most sense for me to support the obligatory installation of Windows on every machine created, since doing so would increase my shareholder value.  But let's face it, they don't need me.

My birthday is coming up, and that seems like a good excuse to replace my aging and case-cracked Toshiba Satellite laptop.  It's a ponderous beast, weighing in at about 75lbs and boasting a clock speed of about 15Mhz.  It's so old that it sports stickers that say, "Designed for Windows XP (Windows Vista Capable)", and "Intel Celeron M inside".  That's really something to be proud of, right there.  Sometimes the power cord gets tangled and I have to unplug it to untangle it.  Depending on how many seconds it takes me to do this, the laptop might stay on, or it might go into what I call Dirt-Hibernation mode.  In this mode, it thinks it's hibernating, but it never comes out (making it more like a dirt-nap).  It's a fun and useful piece of technology, especially for testing the effectiveness of rage management techniques.

I've been considering replacing the (no exaggeration this time) 40GB 5400rpm laptop hard drive with a 100-160GB SSD, figuring that doing so would still give me benefits when I eventually replace the thing.  But SSDs aren't that cheap, either, and I hate the thought of buying more hard drive storage... didn't I just wipe 21 HDs so I could dispose of them? I think I did.  What I really want is a sexy new laptop, something lighter, faster, more powerful, with a holographic screen that projects out to a 40" 3D image that hangs in space and lets me interact with it via telepathy.  Failing that, maybe one of those HP Envy notebooks.

So after doing about an hour of research, I flopsied over to the HP Store to configure a notebook just to see what I could expect to pay for the closest (albeit very distant) approximation to awesomeness.  Hoofah, this thing is pricey:

  • Long string of i5-Qwhatever-the-hell processor - god, Intel, SERIOUSLY?
  • ATI Mobility graphics - my only choice
  • 6GB of memory - upgraded from 4GB
  • 500GB 7200 HD, because this was the cheapest option and SSD was both $525 (omg) and whiteboxed (so it sucks)
  • No office software at all
  • Cheapest battery available
  • Several lines of "options" which were the only "options" available, including the screen, the DVD drive, the webcam, the wireless card, and (yes seriously) the keyboard.
  • Microsoft Windows 7 Home Premium - cheapest option
  • Adobe Suck-It We Own You Shop 8 Premiere

Total price: $1300.

Now, I'm a Linux guy.  I run Ubuntu 64-bit on my desktop machine, and the current doorstop-I-mean-laptop has just had its Ubuntu replaced with Mint this morning.  At the office I run a real-time variant of Red Hat Enterprise, and the file server in the house is running FreeNAS (based on FreeBSD).  Why the HELL would I want Windows 7 on my new laptop?  Is it because I like ad-ware like Norton Trial Edition popping up every few minutes to tell me that since I chose the most vulnerable operating system on the planet, I should pay an expensive subscription to protect it?  Is it because I like bloat-ware like Microsoft Office that lets me do really complicated things like write text for the low-low cost of almost 500 dollars, and several GB of hard drive space, and several hundred MB of memory?  Or is it because I want to respond to the daily Adobe pop-ups telling me I need to upgrade Flash, Streak, and Fondle, because this computer belongs to Adobe, after all?

No thank you.

I build my own desktop PCs so that I can put exactly what I want INTO the machine, and exactly what I want ONTO the machine.  When I boot it up, it does what I tell it.  I'm not naive enough to think that it does ONLY what I tell it - even Ubuntu has marketing-related goals that are not completely in line with my own.  But the "partnering" level is low enough that I view it as an acceptable trade-off.

Let me get this clear in everyone's heads: Linux is like over-the-air PBS.  It's mostly ad-free, although it has a few "brought to you by"s.  It costs nothing to enjoy, but it's considered good form to donate time/money/experience to help others enjoy it too.  And it gives a different, somewhat less accessible, experience from Windows; but for some people that experience is far better than Windows'.  On the other hand, Windows is like Cable.  It costs money, it has lots of options that all cost more money, it has a LOT more commercials than PBS, and the cable goes out a lot more than the transmitting tower fails.  You can find the same level of programming on cable/Windows as on PBS/Linux, but you have to look harder through the gunk.  It's extremely accessible - you can surf for hours without asking yourself a single thought-provoking question - but some people actually like thought-provoking questions.  I don't know any people like that, but I hear they exist.  They probably vote Green Party or something.

Anyway, I prefer Linux, and this is what I install into my home-built desktop machines (unless the bintgoddess requests otherwise, obviously).  But a laptop is tougher to build.  To make it all work together seamlessly, to keep it light, and to keep it from overheating, a lot more engineering goes into it from the hardware integrators.  I can't go buy a bunch of laptop parts from NewEgg and end up with my perfect laptop, so that means I have to go to the car dealership - er, I mean, computer retail channels.  There, I assume the position and start sucking down the "partnering", the "up-sells", and the "value-adds", just like everyone else.  Ugh.

My first action with this laptop would be to wipe the hard drive of all the crap-ware, and to install a nice clean Linux variant (probably Mint, since that's what I'm playing with at the moment).  Of course that means if I ever need service, I'll need to reinstall the Redmond Mothership because, obviously, anyone using Linux must be crazy.  But let's face it - the probability of being able to get laptop hardware serviced WITHOUT losing the contents of the hard drive is about 0.00004% (this is an actual statistical figure based on 15 zillion studies, not an exaggeration).  And barring actual hardware failure, there's very little that an HP-authorized service technician can do (other than screw up my computer) that I can't do just as well.  On second thought, I can screw up the computer about as well as him, too.  You're not skiing hard enough if you don't fall, and you're not really using the computer if it successfully boots every time.

But on a $1300 laptop, WHY am I being forced to get Windows?  I know it isn't free - Microsoft is charging HP a super-low OEM price, and HP is wrapping a profit-generating higher price into the price of my laptop.  Accepting a laptop with this operating system on it feels to me like taking out a $100 bill and setting it on fire.  I don't like that feeling when I'm in a casino, so I play poker, and I don't like it when I'm configuring computer hardware. 

Let's be really clear here: I am being charged money for something that I actively do not want.  I do not want it so actively that I am willing to spend my own time and effort to remove the offending product, assuming risk of loss (via supportability) in the process.  What kind of reasonable consumer would enter into a transaction like this?  What kind of reasonable retailer would EXPECT a consumer to enter into a transaction like this?

Wasn't there a big lawsuit recently about hardware vendors being required to give rebates to consumers that chose not to have Windows pre-installed?

My coffee is running out and my rant is running down.  Let me close with the chat transcript from my Live Chat support session.  It's not that exciting, but I feel like I need to have something other than my own prose in here to liven things up.


11/07/2010 04:56:09AM Session Started with Agent (Rachel P.)
11/07/2010 04:56:09AM Mark: "Configuring an Envy 14 notebook"
11/07/2010 04:56:15AM Agent (Rachel P.): "Thank you for contacting the HP Home and Home Office Store Chat. My name is Rachel."
11/07/2010 04:56:20AM Mark: "Hi Rachel."
11/07/2010 04:56:37AM Agent (Rachel P.): "I'm sorry. Can you please elaborate on your question so that I may better assist you?"
11/07/2010 04:56:38AM Mark: "I'm planning to replace Windows with Linux on this machine. Is there any way I can avoid buying Windows?"
11/07/2010 04:57:32AM Agent (Rachel P.): "I understand that you want to take out the Windows 7 from the configuration on the HP Envy 14 notebook, right?"
11/07/2010 04:57:41AM Mark: "right"
11/07/2010 04:57:49AM Mark: "I intend to install Linux."
11/07/2010 04:58:02AM Agent (Rachel P.): "I am sorry, Mark, but there is no option for you to take out the OS."
11/07/2010 04:58:23AM Mark: "OK, thanks. I will look at other companys' notebook options, then."
11/07/2010 04:58:46AM Agent (Rachel P.): "Do you have any other questions that I can help you with? I want to make sure that I have completely addressed your concern today and are satisfied with my service."
11/07/2010 04:59:10AM Mark: "Well since I am no longer buying an HP notebook, I can't imagine what you could help me further with."
11/07/2010 04:59:20AM Agent (Rachel P.): "Since you don't need any further assistance, would it be okay if I close this chat?"
11/07/2010 04:59:26AM Mark: "yes, have a nice day"
11/07/2010 04:59:28AM Agent (Rachel P.): "Thank you once again for using HP Home & Home Office Store Chat. Please sign up for our award-winning e-newsletter which features the latest products and promotions for our store. Visit our website at: www.hpshopping.com/newsletter"
11/07/2010 04:59:29AM Session Ended

17 October 2010

A Too-Short Weekend

Some friends converged on Chicago for a couple of days of poker and fun this weekend.  Russ came from south Florida to brave the "nice February weather", Emmy sacrificed an important college football game in North Carolina, and Terry brought gifts to commemorate his soon-to-be-champion Oregon Ducks. 

Friday night I hosted the Welcome to Chicago evening, since I live so close to the airport.  Nat came in from Gurnee, bringing his own houseguest - Mike from Germany, who turned out to be a very solid poker player.  We played tournament style first (I came in 2nd to Terry), and then some cash.  Since all of us know each others' play styles so well, it often turns into an over-play contest when we play against each other.  Friday night was no exception, with my personally most embarrassing hand being one in which I bluffed with 8 high into Terry only to discover he had the hand I was pretending to have.  After blowing off an entire buy-in by trying to force the action while card-dead, I rebought and tightened up, able at the end to come back and finish slightly up for the night.

When the night was finally over, Nat and Mike took Terry home with them where he was staying, and Russ and Emmy stayed with us.  The next morning after a quick trip to Panera for some coffee and bagels and a heads-up game with Emmy while Russ got ready to go, we all met at Heaven on Seven for lunch.  We were all due to meet back at Nat's at 7pm for resumption of the night's poker festivities, and everyone was feeling a little iffy from the night before, so we decided to have a laid-back afternoon at my house.

What followed was the bloodiest heads-up shoot-out I think I've ever played in.

We had six people participating, so we drew straws to see who would play in the play-in games, and who would get byes and be able to buy straight in.  Terry and I squared off in one of the play-ins, and Emmy and Nat faced each other in the other.  The best thing I can say about the play-in is that at least by losing it the shoot-out cost me nothing.  Nat won the other a few minutes after Terry beat me, and Emmy and I found ourselves dealing for the next round.  There, Russ beat Terry and Nat made short work of Mike.  The final round was also over in a flash, with Russ taking home the win.  This was practically a replay of our last shoot-out in Atlantic City this spring: Terry beat me in a play-in round, and Russ won the whole enchilada.  At least this time I was smart enough not to put a side-bet on the round with Terry.

Total time for the entire shoot-out: 35 minutes.

Saturday night was an unqualified success.  Nat has a custom poker table in the basement of his new house, and between our out-of-town guests and local poker friends (Marc, James, and Scott all made it), we filled it to capacity.  Since Minnesotans Missy and Todd couldn't work out the logistics of a weekend in Chicago, Nat set up a video Skype call so that they (mostly Missy) could at least enjoy the conversations and atmosphere even though she couldn't play.  Again we started with a tournament (I squeaked past the bubble and finished 3rd to James and Scott), and then moved on to cash.

Nine-handed play encourages a tight style, so to generate a little more action we instituted a 7-2 meta-game.  The way this works is that whenever someone wins with 7-2 - usually with a bluff, obviously - they can show it and have everyone at the table pay them an agreed amount - in this case, $2.  This makes winning with 7-2 much more profitable than simply picking up the pot, especially at a 9-handed table.  As a result, when a player starts betting aggressively it is natural for his opponent(s) to speculate on whether he has a big hand like AA or instead might have 7-2 and be on a big bluff.  When a player folds to 7-2, humiliation ensues from everyone at the table who is annoyed that they have to pay the winner an extra $2.  It's good clean fun.

As I write this, Russ, Emmy, and Terry are scattering back to their respective corners of the country.  For me, at least, this was one of those great weekends that I was sorry to see end today when I dropped Russ and Emmy off at the airport.  I really enjoyed having them stay with us, and I was pleased to finally introduce them to the Bintgoddess and let her see why I count them among some of my closest friends.

12 October 2010

Rsync Magic

I do not pretend to be anything other than an rsync tourist.  But I have had need of its services on two occasions, today being the latest, and I found it frustrating how difficult it is to get simple and clear information on how to set up its filtering to get all the files you want and nothing else.  Both times I've needed it, I've had to do a lot of relearning and searching.

I won't be solving the world's rsync problems on this blog.  But if nothing else I'll have another page to find on the internet the next time I need rsync, and with any luck it will answer my questions.  So here are the two ways I've used rsync, and how I set it up.

Task #1: Back up certain files to the NAS
The McHouse Enterprise Computing Cluster includes a machine running FreeNAS where I store all of our backups, MP3s, ISO images, and other assorted stuff I or the bintgoddess might need in our constant quest for entertainment.  I use Bacula to do full hard drive backups of the Windows 7 laptop she uses at school, her Windows XP desktop, and my Ubuntu desktop.  This is great, but certain files need more frequent backups than this, such as my machine's home directory. 

To do this, first I enabled the rsync service in FreeNAS.  Within FreeNAS' configuration web page, I set up an rsync path called HildeMark for my home directory.  In the image below, I've cropped off the stuff I didn't change.

Settings for the home directory rsync path

Then on my machine, I added the following command to my crontab to run at 4:15pm Monday-Friday:
/usr/bin/rsync -aFx --delete /home/mark/ kinakuta::HildeMark

For space considerations, refer to the rsync manpage for the precise meanings of each of these parameters.  In a nutshell, however, the contents of HildeMark's physical location should look exactly like my home directory right after the transfer completes.

But then I noticed that I was copying a bunch of stuff I didn't want, like gigantic source trees from work - those are backed up at the office, no need for me to do it again here - and Firefox's cache, which likewise doesn't need backing up.  That's where the .rsync-filter file comes in.  In each directory traversed by rsync, you can optionally create a file called .rsync-filter containing exclusions of things that should not be backed up at or below the current level.  For example, my very simple ~/.mozillia/.rsync-filter excludes Firefox's cache from the backup:
exclude Cache/
Similarly the .rsync-filter in my ~/src directory excludes anything that is source-controlled, since the SVN server's storage is already backed up and that's the master copy.  I can adjust any directory's .rsync-filter without having to worry about whether my changes have unintended side-effects on some other directory - it only affects file selection within that directory sub-tree.

Task #2: Roll Out Updates to a Customer
I just started a new project at the office wherein I am writing library code to be immediately used by another developer.  For reasons upon which I cannot elaborate, this developer cannot simply be given SVN access to the full source code tree.  He gets headers and libraries only for the things he needs to build.  Everything else is held back.  Additionally, since he will be developing against library code that I am actively writing, I can't just let him have whatever file I just saved... I need to at least make sure it compiles before I give it to him.  Likewise, he needs to control when he updates his copy of my library so that he can reach a good stopping place in his own code before having the library change on him.

This guy is basically a customer, so I need a staging area where I place the files he is allowed to see.  I do this when it is appropriate, and then when he's ready he copies everything from that staging area to his own development machine.  Most times, a small subset of files - or a small portion of a file - have changed.

Again I started by setting up an rsync daemon, but this time I didn't have the luxury of using FreeNAS' administrative web page.  On my development workstation, I created the following configuration in /etc/rsync.config:
lock file = /var/run/rsync.lock
log file = /var/log/rsync.log

[snapshot]
path = /staging
uid = nobody
gid = nobody
read only = yes
list = yes
hosts allow = 172.0.0.99
This creates a visible path called "snapshot" with storage at /staging.  I made it read-only since there is no reason for him to upload to me, and gave his IP address access to it without him needing a password to my machine.  The rest is pretty boilerplate.

Next I started rsync in daemon-mode with the logical syntax of:  rsync --daemon

To copy into this location, I needed to reproduce my source tree but redact those things that he didn't need - namely unrelated modules and all C++ implementation files.  The paths to various headers should not change so that cascading #include directives continue to work nicely.  I also needed to take all the libraries scattered throughout my source tree and assemble them in a single directory to make it easier for him to link to them.  To do these two things, I wrote a little script:
#!/bin/bash
rsync --progress --stats --recursive --times --delete \
      --exclude-from=$HOME/rsync/filter.txt \

      $HOME/src/proj1/source/ /staging/source
find $HOME/src/proj1/source -name "*.a" -exec cp -p {} /staging/lib/ \;
The rsync command gives me progress and statistics, deleting any files from the target directory that I remove from my source directory, and filtering based on the rules in ~/rsync/filter.txt.  I'll get to that in a moment.

The find command returns all the files ending in ".a" under ~/src/proj1/source, which happen to be exactly the static libraries I want him to be able to link against.  Using find's -exec syntax, it copies each file to /staging/lib while preserving the modified date/time.  This is important, because otherwise when I run this script it will make it appear as though I changed all the libraries when maybe I only changed one or two.

And here's a representation of the filter.txt file with some details removed for confidentiality.
- **/.svn*
- CMakeFiles*
- /build
- /secret1
- /Libs/secretLib
- /secret2
+ /examples/example1/main.cpp
+ /Tools/tool1/*.cpp
+ /Tools/toolsuite1/*/*.cpp
+ **/
+ **/*.h
+ **/*.inl
- *
  • Leading forward-slashes (/) refer to the top of the source directory, not the top of the volume.  So "/build" really means "~/src/proj1/source/build".
  • "-" at the beginning of the line means "exclude stuff matching this pattern."
  • "+" at the beginning means "include stuff matching this pattern."
  • The "**" token means: "match against every subdirectory".  So "- **/.svn*" will exclude x/.svn-info, x/y/.svn-stuff, and x/y/z/.svn.
  • "- CMakeFiles*" excludes all files and directories starting with "CMakeFiles" - this is where a lot of the temporary build scripts go, so this line removes a ton of useless gunk.
  • The next four exclusion lines keep rsync from descending into the named directories.  It is free to descend into Libs, just not Libs/secretLib.
  • The next two lines explicitly add some C++ implementation files he's allowed to have and might find useful.  The third inclusion line adds C++ implementation files from all the directories within toolsuite1.
  • "+ **/" is a catch-all rule to say: descend into every directory from here if you haven't matched an exclusion rule yet.  It only matches directories, so it controls where files are taken from, not which files.
  • "+ **/*.h" and "+ **/*.inl" explicitly specify that all files ending in "*.h" and "*.inl" in all subdirectories (if not previously excluded) should get copied.
  • "- *" means "and nothing else".
Whew!  That's only half the job: getting the files from my work area to the staging area when I deem them ready for roll-out.  Thankfully the other half of the job is a single command, and much simpler.

On the other developer's computer, he executes the following to copy everything down from my staging area to his library area:
rsync --progress --delete --recursive dev-mark1::snapshot ~/src/markLib/
The dev-mark1::snapshot notation, which is in the form machine::path, is interesting.  The double-colon (::) indicates that his rsync client should attempt to connect to a remote rsync daemon running on dev-mark1, and then request files from its snapshot path.  Since I set snapshot up to point to my staging area, this gives him two directories under ~/src/markLib/: source/ and lib/.  Source contains a full source tree with only headers in it, and lib contains all the libraries I copied into it using find.

Now whenever I feel like sending out a mini-release, I run my script.  Whenever he wants to check for a mini-release, he runs his rsync command.  Rsync and find take care of the rest.  Voila!