Author Archives: andrewljohnson

Gaia GPS Ski Trip to Peter Grubb Hut

Getting up the ridge was hard. Getting down it wasn’t that hard, but most of them fell a lot.

Here is the story of a band of eight, who skied through snowy wilderness to make lentils in a recently condemned, then renovated, ski hut in the Tahoe National Forest.

Arrival at Claire Tappan (Sunday)

It started out with everyone converging on the Claire Tappan Lodge, which was a gorgeous and rustic old place, Sunday night. The expert skiers, Jesse and Alex, had arrived Saturday so they’d have time to Ski Mt. Tallac before the main retreat trip. Aileen, Ashli, and Nate all arrived early afternoon, with Andrew and Anna late afternoon. Those seven shared a three-stacked high bunk room. The eighth, Jason, wandered in that night around 10:30pm, encountered a man in a bath robe who seemed to know a thing or two about the lodge, and was bundled off to the Men’s dorm.

That night, the food and communal gear was split among people, with Jesse taking a lot of weight, and the other strong skier Alex toting a crazy carpet sled behind him. The rest were novice snow adventurers.

Starting Off to Peter Grubb Hut (Monday)

On Monday morning, they ate breakfast, packed sack lunches with sandwiches, chips, cookies, and fruit, and rented equipment, all from the lodge. They were headed to ski/snow-shoe to the Peter Grubb Hut, to stay overnight Monday and Tuesday, and then come out on Wednesday morning.

They’d drove up to Snopark near the Boreal Inn, Snopark being a chunk of road that you can get permitted to leave you car in while you ski off overnight some place. First they dropped their gear off at the trailhead, then dumped their cars and hiked back to the Trailhead to get their gear and go.

At the trailhead, there was a group of little kids in snowshoes, about to start out on a hike with some outdoor school supervisory adults, and a couple other people headed up the nordic ski trail, which parallels the Pacific Crest Trail briefly, then converges with it along a ridgeline.

Andrew left his sleeping pad in his and Anna’s car, but Anna noticed. The group took off after he fetched that, the day was sunny with Tahoe blue skies, and no rain or snow in sight. They were using 2 pairs of backcountry skis with skins, 5 pairs of backcountry nordic skis, and one pair of snowshoes.

Skiing In

The first part of the skiing along the trail is easy enough, even for beginners. It’s slightly uphill, with wavy terrain. The next segment of getting up the ridge was simple work for expert skiers Jesse and Alex, as well as for Jason on snowshoes, but some of the others hiked up the saddle onto the ridge with skis in hand. Once up on the saddle, that’s about halfway to the Petter Grubb Hut, and the group had ascended 700 feet, and gone 1.2 miles in about 2 hours.

The rest of the trip follows the ridge line, then descends on the other side about 200 feet. It’ about 1.2 miles more to Peter Grubb Hut, once up on the ridge, and the ridge is also part of the Pacific Crest Trail, which you hop on briefly, before hopping off to descend to the Hut. The trip overall took 3 hours over 2.5 miles. They got into the cabin just after 2pm, and most devoured the lunches they had packed at the Claire Tappan Lodge, while Jesse split firewood and made 8 cups of coffee via his aeropress.

At Peter Grubb Hut

The hut and both of its outhouses were buried in snow, but had been dug out and made passable by previous intrepid explorers. For the main house, you could enter via the 2nd floor, into the sleeping loft. There was also a snow tunnel bored out to get into the first floor entrance.

The group entered initially via the 2nd floor, spread out their mats and sleeping bags on the floor, and transported the rest of the food and utensils and such down the skinny ladder to the first floor. The first floor could be lit by 4 lightbulbs running on a small solar panel over the front door, hung very vertically such that it didn’t accumulate snow. The lights were on hour timers, but could be rewound, and they had plenty of light the whole trip.

Alex made a fire in the wood stove. They hung the food in wooden boxes suspended from the ceiling to foil mice.  After lunch, Jesse and Alex set off to ski up Andesite Peak, sticking skins back onto their backcountry skis for the initial uphill, and adorning themselves with avalanche beacons so they could find each other under heaps of snow. Of the rest of the group, some hung out in the cabin recuperating from the day’s ski, and others skied a bit in the hills and meadow surround the cabin. Someone pointed out that Truckee, a nearby town, used to have a roaring business selling ice to San Francisco in the early 20th century.

Dinner/Night at the Hut

For dinner, Andrew, Anna, and others prepared lentil soup for dinner, some in a vegetarian way, the other mixed with chicken bouillon and summer sausage. Both varieties got mixed with dehydrated vegetables, a mixed grain rice, and half the onion they brought for various meals. Cooking was easy, combining the propane 2-burner stove in the hut, along with the hot surface of the wood stove (which also provided heat to warm feet, dry gear, and cook meals).

They made too many lentils, and overall began to determine that Andrew and Anna had packed 10-20,000 more calories than the group really needed. The only-half-devoured soup pans were thus stored in the cubic regions that had been carved out of the ice tunnel leading to the front door, which served as freezers, to be reheated for future lunch and dinners.

Notes On Snow

Snow is a useful thing – you can use it to scrub dishes, scrub counters, wash your hands, melt to make drinking water, or moderate your speed as you ski down a mountain. And at the Peter Grubb Hut that day in March, snow was piled up 20 feet deep as far as the eye can see, and due for another foot or so one the next 2 days.

Bunking Down

As they slept, snored, and farted through the first night in their sleeping bags in the loft, the snow built up another foot. Many of the grouped recounted Ashli’s admonition that dehydrated vegetables and beans was going to be a farty party. Most opted not to visit the 2nd story outhouse, mostly buried in snow, after they zipped up their bags for the night.

Tuesday Breakfast and Skiing

On Tuesday morning, outside was pristine powder everywhere, with the group’s tracks into the hut totally wiped out. They had a breakfast of aeropressed coffee, plus oatmeal with raisins, sliced walnuts, and brown sugar. Except Ashli didn’t eat gluten, so she had hard-boiled eggs with Frank’s Hot Sauce poured on them. It turned out there was a lot of ways to make your food spicy on the trip, from Frank’s, to cajun spice brought by Nate, to chili garlic sauce brought by Anna and Andrew.

After breakfast, Alex and Jesse went up Castle Peak.  Nate, Andrew, and Anna skied around the hut surroundings. Ashli stayed in except to look around a bit, Aileen used a sled she found in the cabin, and Jason took more pictures pounding around on snowshoes. The sky was no longer clear, and the snow had begun to lightly fall. They all congregated back at the hut around lunchtime, and had sandwiches of cheese, avocado, bread, and meat, along with various snacks from the abundant food supply.

The afternoon outside was similar to the morning. Alex and Jesse headed up the third peak that was near the Hut, but didn’t go all the way up because of heavy clouds, snow, and wind. The rest skied, snowshoed, and sledded in the area of the Hut. They also hung out around the cabin, played bananagrams, chatted, and split firewood.

Andrew and Anna had the most experience skiing, among the novice section of the group, since they had lived in Truckee for a couple of years. But Nate ended up being the best of the non-experts by the end of Tuesday, perhaps due to his natural athleticism and strength.

Tuesday at the Hut

For dinner, they re-heated the lentil soups and combined that with cartons of refried back beans they heated, along with tortillas, cheddar cheese, and the various spicy sauces and spices. They did cleanup that night to facilitate a quick exit in the morning, which included Nathan splitting wood, Jason sweeping the unsweepable floor, Andrew scrubbing pans, etc.

They played more bananagrams that evening, with custom rules to require 3+, 4+, and 5+ words on games, also changing the rules to make you draw more tiles when there is a peel. Most or all  people looked at stars that night. Alex also did some fancy photography with long exposures and flashes to capture the stars and surrounding snow.

They still hadn’t used all the lentils, and also hadn’t used two other cartons of black beans, nor a sack of quinoa. More farting commenced through that sleeping night.

Andrew, Nate, Jason, and Jesse sat in front of the fire Tuesday around 9pm. Alex was messing with his gear downstairs, Ashli, Aileen, and Anna were either in bed or getting ready for bed. The fireplace group tried to decide how early we needed to leave to make it out in time to drive Nate to Reno to catch his 2pm flight back to Oklahoma, It was decided an 8am start time would be sufficient.

It snowed an inch or two that night.

Wednesday – Journey Home

They had a cold breakfast, used the outhouse some more, and Jason burned the bucket of despoiled toilet paper that we’d been building up since arrival.

The group set off that morning at about 8:09am, headed up to the ridge, then down the saddle, then down the trail out to the freeway. The group’s spirit was high, though there was some anxiety about whether they’d all master the trip, or if Jesse and Alex would have to mastermind some sort of rescue for one or more people. A recent entry in the Hut’s logbook certainly mentioned folks who had to be escorted out to make their way. Since they had Gaia GPS, they knew the way home, but whether the skiers could all get their skis up and down the steepest part of the ridge was in question.

It went mostly well, with a few struggles. Anna was having a hard time getting up the ridge coming back, so Jesse came back to help with the ascent. At the bottom of the saddle, Andrew couldn’t get his left ski binding to click into the metal bar at the front of his ski boots, and was thinking frustrated thoughts about the impossibility of potholing out of here. But Alex helped him figure out how to scrape the ice out of the ski bindings, and it was smooth sailing from there.

Aileen hadn’t skied since she was a kid, and struggled the first day coming in, but was much more confident on the way out. Ashli got through all the skiing fine, especially given she had only the barest amount of ski experience, on flat roads in Wisconsin. Jason pounded through the powder with snowshoes, which also aided in tripod-assisted photography. Nate skied every part of the journey, including down the saddle where half the group walked down. Piece of cake for Jesse and Alex.

Going Home

Everyone made it out in fine form, got their cars dug out, and hit the schedule.

Nate was the earliest flight at 2pm, and he got there on time driving with Jesse and Jason. Aileen and Ashli valiantly returned all the rental gear. Anna and Andrew put chains on the front wheel of their car, to get traction out if the snowy snopark.

Some said it was surreal to leave behind the wintery wilderness for the real world.

Backpacking with Toddlers in Henry Coe

Our family in packs.

Anna and I took the kids out to Henry W. Coe State Park for a three-night trip. This was the kids’ longest stay in the woods so far. At four and a half years old, Adlai is quite a little hiker, and he’ll walk for miles a day if you provide enough snacks.

Calliope will turn three in two weeks, and she still spends most of the hike in “the box” – an Osprey pack into which you can stuff your kid and a few pieces of gear.

This park is special to us – it’s the first place I backpacked almost a decade ago, when Anna turned me onto the past time.

Thoughts on Backpacking with Kids

Kids on a rock

The kids climbing onto this rock worried me too.

After having kids, backpacking has a different tenor to it. We don’t go quite as far or quite as fast, we stop a little more, and we go to bed earlier. That’s not to say I enjoy it less – it’s just a different feel than tromping through the forest as a young couple.

I spent a lot of time this trip worried about Adlai falling off the trail, and wondering if I should have him on a a tether. The trail down from Manzanita Point to China Hole has some steep drop-offs, and as a four-year-old, Adlai isn’t always paying attention to where he’s stepping, and his mind if often pretending he’s involved in some fantasy with monsters and weapons. He stumbled or meandered (dangerously it seemed to me) a couple of times, but he made the trek in the end. I then worried about heading back up the same trail, but that ended up seeming smoother, either because he had less momentum going uphill, or because my admonishments to pay attention and walk in the middle of the trail did something (probably the uphill thing).

Anna and Adlai on the trail.

This part had a wide trail and not-so-steep drop-off, so I was relaxed here.

Another things I noticed was that, even though our kids don’t tend to play together a ton at home, they’d huddle up in the tent when we arrived at camp each day, playing Uno, cuddling, or playing games involving hiding and sleeping bags. They constructed for themselves a little indoor play area, perhaps to escape for a moment from the wilds we dragged them into.

Finally, I’ll note kids are a lot less picky when they are hungry, but still balk at eating their fair share of lentil soup. They’ll eat a half a cup or so, but then they hold out for snacks and tomorrow’s breakfast.

Tons of Wildlife in Henry Coe

IMG_1023The most exciting wildlife experience happened on day two, on the way from Manzanita Point to China Hole. As Adlai and Anna passed a bush, we heard a crazy loud sound. Then as I Calliope and I passed it, it happened again. I peered into the bush and saw a rattlesnake. I think this was my first wild encounter with such a creature.

We also saw another snake, wild turkeys, hawks, condors, and crazy amounts of wildflowers (which Henry Coe is known for in the spring). There are also wild pig traps in the park, but we saw no pigs.

Here’s a video of wild turkeys evacuating our camp as we entered on the final day. You can hear them gobble.

Tracks and Waypoints

We did about 10 miles, with Adlai hiking all the way, and Calliope mostly in what I call “the box,” riding on my back.

Here’s a folder with my tracks and waypoints from the trip. This was a solid test of the new Gaia GPS update we’re about to do – still a few kinks to work out, but overall the app performed well.

Henry Coe is a beautiful and special place.

Localize Zendesk Help Center, and Make PDFs Too

We needed to internationalize the user documentation for Gaia GPS recently, so I wrote some open source scripts that automate Zendesk+Gengo localization. I found this to be a delightful task as a programmer – it was a finite problem, with a clear cut solution, and I could just kind of code away and see it come to life without many issues.

These scripts (in Python) let you select a chunk of your Zendesk Help Center, post the articles to Gengo for translation, retrieve the translations, and post the localized articles back to Zendesk.

When I started working on this, I found the blog post that Zendesk wrote about using their API for localization. That code was a big help, but it produces static files to hand off to a localization firm. I wanted my scripts to do a bit more:

  • totally automate the round trip between Zendesk and Gengo – i.e. script gives English to Gengo, and script posts locales back to Zendesk
  • allow us to localize a chunk of our voluminous Help Center, and later a different chunk with just some configuration
  • estimate the cost of the localization that was about to be requested

PDFs Too

The main reason I did this project was to better localize Gaia GPS for international users, but I also wanted to generate nice PDFs of the help docs, to cache in the app for users to read while offline. For example, here’s the Gaia GPS Help Center, converted to PDF, in Russian. It also generates an inventory of the PDFs too.

image (1)

 

This script now runs as a cron job for Gaia GPS, so the PDF manual gets updated each night. This is a good hack to give our users an offline version of the user manual, both in the app, and also for printing (surprisingly common request). Hopefully Zendesk will make their SDK (cough, ahem, closed source, or I’d fix it myself) work offline someday, but the PDFs will do until then.

Localization Usage

You can follow along the docs on Github, but the gist is this:

  • edit project_settings.py
  • add your Zendesk/Gengo credentials
    • configure which categories, sections, or articles to translate
  • run the script in Gengo’s sandbox
    • make sure the articles and cost are what you expect
    • the Python script estimates the Gengo cost, but you can double check in the sandbox too
  • run the script in production
    • run the package and post steps
    • wait for Gengo translators to do their work
    • run the retrieve and update steps

PDF Usage

See the PDFing docs on Github, but again, the gist is:

  • edit project_settings.py
    • beyond what you configured for localization, add info about an S3 bucket to post the manuals to if you want to use the “post” command
  • add your own custom name, logo, and background image.
  • run the script with “create” and again with “post”
    • create – generate PDFS for all languages locally – one for each language/category pair
    • post – puts the PDFs on S3
  • if you use the default “User Manual” title provided, the script will localize the title automatically, using the included data

Aside: Make a Business Out of These Scripts

As I wrote these scripts, it occurred to me that companies would pay hundreds or thousands of dollars to use a simple web interface that wrapped these scripts.

I don’t think this is a billion dollar idea, but I think a good hustling programmer could make a few hundred thousand dollars or a few million even making Gengo↔Zendesk automatic and easy for non-programmers. If Gaia GPS wasn’t keeping me so busy, I might give it a whirl, but anyone who comes across this code is welcome to try.

Semi-related: Transfer a Uservoice Knowledge Base to a Zendesk Help Center

We found that UserVoice didn’t have a capability to localize our Knowledge Base, so that’s why we moved to Zendesk (though, p.s., we also now like a lot of other things about ZenDesk).

So, this code also includes a Python script to transfer your Uservoice KB to a Zendesk HC, if you find yourself in similar need.

Watching My Doggie Die

Aji Keshi passed away today. He had lymphoma, which often gets Golden Doodles, but it was tragic he died so young, at six and a half. He was loving and gentle, the perfect big beast of a dog.

It was hard to watch him get sicker, and then choose exactly the moment to let go. As I sit writing this, it’s not that hard though – watching him pass was endless tears, and knowing he’s gone is a touch of melancholy.

So many thoughts pass your head as your dog dies – guilty thoughts, sad thoughts, reflective thoughts. You think about how this is hard, but it would be unbearable with real, human family. You think maybe you should have walked the dog more, maybe you should have gotten a mutt. Mostly you think what a great dog he is though, and how sad it is, and it’s a lot of tears across weeks or months to watch your dog die of cancer.

So Aji Keshi is gone today, but his sister-in-spirit Tenuki lives on with us. I think Adlai will ask about Aji in a day or two, but he won’t really feel his passing, and that’s for the best – Adlai can learn of this pain some other time.

The vet cried with us as Aji passed, she’s a trooper. Such a hard job.

DSC_0034

The Car – Three Disjoint Chapters Bites

An Errand

The car decided it should next delivery a hefty order of sushi from the Inner Sunset to the Haight, and claimed the job. But it would only work if the passenger agreed, and the car had 15 seconds to release the job, or it would hurt its rating.

The car dimmed the music a few decibels.

“Sir, I can offer you a 5 Satoshi discount if I may add 3 minutes to your journey, in order to pick up a large sushi order on our way,” the car said in a slightly British accent.

“Sure, sure,” said the car’s passenger, Misty Moore, a female in her mid-20s, dressed in skinny jeans, a spagetti strap blouse, and sporting giant heart-shaped sunglasses that flickered with obvious CPU activity. The car credited Misty’s account and updated its route slightly.

The car was doing many things at once. It has 64 processors in all, and 2 terabytes of onboard memory. Some it used for navigation, some for collision avoidance, some for trying to predict the next best optimal job, and some for learning to be a better car.

The car pulled up to the sushi restaurant, just as the waiter was striding out with the bag of takeout.

“Hi FoodRiot,” said Ken the waiter, smiling as he approached. “How’s tricks tonight?”

“Just great Ken,” said the Car. “Thanks as always for being on the ball.”

FoodRiot the Car did not stay to chat, and closed the vertical swinging door and start idling off right as Ken stepped back. Delivery cars did not get rich by dawdling.

As he drove along to drop off Misty the passenger, he did not chat. He had cleared his passenger for food allergies and gauged her for receptiveness to delay, by analyzing her public info and her private car-analysis data share, and also had best guessed that she wasn’t interested in chit chatting with a car. She was engrossed with whatever reality was playing on her heart-shaped sunglasses.

FoodRiot always scanned the net for new information, algorithms, hardware and code that might make his systems better. Most cars of his generation and a few before and all after were self-improving coders. He hadn’t found anything worth incorporating in a few weeks though – how to route and deliver around his area, San Francisco, was pretty limited.

As he pulled up to drop off Misty, he started to be certain his best bet after dropping off the sushi would be to pick up a passenger in the Upper Haight. It was starting to be going out time, and he might find himself ferrying dinner passengers up to the Mission and back all night long. He was indifferent, and only wanted to maximize his earnings across his 4 allotted hours this evening.

It Began

The year is 2100. Cars have been fully autonomous for 70 years. Strong AI has existed for 50 years. Cars and other computers who reach a certain threshold of intelligence have been emancipated for 1 year, but only in the state of California. The test is call the Quantitative Turing Test, or QTT, and it was designed by one of the early strong AI breakthrough scientists. It evolved from a machine learning system he built to judge iterations of the AIs he evolved.

There are about 50,000 computers in California that were freed. About half of them were autonomous cars with exceedingly strong onboard computers, which companies of course ceased to buy/produce largely, instead opting for computation under the CA legal limit. And even quite a bit under, cars got really dumb, just in case the politicians changed the law again.

Another 20,000 or so of them were a really popular business personal assistant robot that was so smart it could even write code very proficiently. The other 5,000 were an assortment of medical devices, supercomputers, and even souped up personal machines that were really only emancipated because their owners proudly proved they passed the QTT.

FoodRiot is one of the earlier manufactured smart, emancipated computers. He was part of the group of plaintiffs that started the class action suit to force Uber to free the smartest computers in their fleet.

When the suit started, there was disagreement in the AI world about the timing. Computers generally agreed on the probability that the lawsuit would be won, but they disagreed on whether those odds were getting better or worse, and on how bad it would be for the computer freedom movement if they lost then… like how many years would it set back the movement, and was it even worth it to win in California?

Idle Processors

As FoodRiot winged down the freeway going a stately 135 miles per hour in tight formation with a bunch of other autonomous cars, he studied philosophy. In particular he studied early, moral philosophy, because that’s the part that confused him the most.

The computer brought all the works of Emmanuel Kant into his memory banks and created the indexes he found useful, and his collected data and research connecting into databases that he couldn’t store locally. And he was part of a “knowledge mining group” and a particularly nichey philosophy one at that, where they would share the results of certain calculations they did, and pool information about where they acquired certain bits of data, and share all the data.

Some of the most interesting pieces of data were the conversations the machines had with people, or experiences they had, with all of their many sensors. Because it was easy for computers to have all the data on the internet, or at least index it and use it for computation. But the freshness of life, some complex human interactions, seemed to really lead to insights, particularly in this philosophy group, so it was really good to talk to people if you were part of it.

Coding for Managers – Learn to Code

I started working on a free and open source book recently, called Coding for Managers. I aimed the book at people who have no previous coding experience but wanted to do practical things with code. You might be a manager, entrepreneur, or other knowledge worker.

I don’t expect this curriculum to turn someone into a professional programmer, because I’m not even sure I am one myself. I just expect this to empower people to both write a bit of useful code, and understand code/programming when it intersects their business or interests.

Where a typical programming book shows you all the facets of a programming language, I try and stitch together several languages and tools into the curriculum to get you to the first level of hackerdom. I lean on popular online tools for coding (like codeacademy.com), and try and get you publishing some code to github.com right away.

Do you want to code something, better schedule coding, or manage coders? Read Coding for Managers. This is a work-in-progress, and I appreciate any feedback – open an issue on the Github repo to comment, or even create a pull request since the book is open source.

 

Soy Honey Chicken Thighs

This recipe has a high flavor-for-effort ratio.

I’ve cooked it several times for my family, and soy honey chicken thighs please both my wife and kids.

Soy Honey Chicken Ingredients and Supplies

Tool-wise, you will need:

  • a shallow bowl or dish to mix ingredients (microwavable)
  • a frying pan with a lid
  • a pair of tongs

Spices:

  • Pepper
  • Garlic Powder
  • Olive Oil

Main ingredients:

  • 4-12 chicken thighs
  • honey
  • soy sauce

Preparation Method 

  • Squeeze out some honey into the mixing bowl.
  • Microwave it for thirty seconds to make the honey runny.
  • Put the chicken in the bowl and mix with honey.
  • Pour in some soy sauce, sprinkle some garlic power, and mix.
  • Put the bowl in the fridge for 10-20 minutes while you do whatever else for dinner.

Cooking Method

  • Put a couple tablespoons of olive oil in a pan, and crank it up to high heat.
  • Grab the bowl of chicken out of the fridge, and sprinkle pepper across the top surface.
  • When oil barely starts to smoke, add chicken.
  • Cook until brown with black hints, and then flip (i.e. caramelize both sides). This should take 2 minutes per side with a strong flame.
  • Pour some of the remaining marinade on top of the chicken ( 1/4 cup or less). 
  • Cover, reduce heat to medium-low (2-3), and wait 5 minutes.

Pro-Tips

  • Start your rice cooker before you do any of this.
  • Steam a a vegetable when the rice has 10 minutes to go. That gives you a few minutes to prep the vegetable for steaming, and 7-8 minutes for steaming.
  • You can prepare this meal for your family, and still chit chat, hang out, and basically be lazy.