It's been a while since I wrote about any coding here. Most of my coding lately has been done at my job, and while it has been interesting, it's not for public consumption. However, I started a fun little project last weekend and finished it this weekend: adding tail-call optimization (TCO) to emacs lisp.
If you're not familiar with TCO, it's not too complicated. Most programming language interpreters (including the CPU) use a stack to keep track of the local variables in a function. When a new function is called, its arguments are pushed on the stack before the call and read from the stack. When the function returns, the arguments are removed from the stack and the old local variables are available just as they were before. However, in the case where the result of the function call is being returned unmodified, this is somewhat wasteful: the old local variables are not going to be used any more so we could just put the arguments on the stack where the old variables were. We can then just jump into the new function.
Using this technique, multiple tail-calls won't grow the stack, and tail-recursive functions (that is, functions that only recurse when they are about to return) become a good alternative to loops. This is heavily used in Scheme, where tail-call elimination is part of the standard. Note that the reason this is an optimization isn't speed of execution; it's more about the amount of memory that is used.
Until recently, TCO was not possible at all in emacs lisp. This is
because, until recently, all of emacs lisp was dynamically scoped.
Dynamic scoping essentially means that local variables shadow global
variables in functions that are called while the local variables are
in scope. So if you have global variable
a and function
something that depends on
a, then you can change the behavior of
b when you call it from
c by setting the value of
This rule, while unconventional, can be quite useful in configuring
the behavior of the editor. Anyway, dynamic scoping means that
before any function returns, all the bound local variables must be
unbound so that they no longer affect other functions. This means
that a function call is almost never followed by a return.
However, emacs 24 added the option to compile files using lexical scope (the more common scoping rule that you are probably already familiar with if you've gotten this far). There is no need to explicitly unbind variables before a return in lexical scope because local variables aren't bound. Thus we can do TCO on these functions. In short, this is what I added.
The first thing to decide was where to add the TCO code. Since emacs byte-code doesn't have the ability to jump into a function, I quickly decided that I needed to modify the byte-code interpreter instead. This means going into the C guts of emacs.
The first thing I did was to follow the path that a call to a
lexically-bound function would make from the byte-code interpreter.
I added all this code plus a
goto statement in case the operation
that followed the call was a
return. It wasn't a whole lot of
code, so I was feeling fairly good about things.
The first problem with this approach is that the emacs stack could
be a different size from what was needed by the calling function.
Since the stack is allocated by
alloca (which allocates on the
processor's stack), and because there is only one
return from the
byte-code interpreter, I thought I would be fine changing the
alloca to a combination of
free. Strangely, when I
went to recompile the emacs lisp files, I kept getting errors. This
left me fairly befuddled.
I finally figured it out when I realized the garbage collector was
looking at the processor's stack to find variables that are in use.
Thus to work properly, the emacs stack must be allocated on the
processor's stack. That meant I had to go back to
modify the garbage collector – something I was not likely to do
correctly). Since the (emacs) stack size could change, the memory
allocated for it would also need to change. I needed something that
let me blow away part of the (CPU) stack –
goto keeps the stack
In my spelunking in the emacs C code, I had seen functions
longjmp used to implement emacs's exception mechanism. I had
never used these functions before (and with good reason – if you
goto creates spaghetti code, these functions are much
worse), but it seemed like they might do what I want. That is, when
longjmp, you get the effect of a
goto, but the
processor's stack is restored to the state that it was when you were
at the place that jumped to. So by using a
longjmp within the
function, I could allocate the emacs stack on the processor's stack
and still do TCO without growing the amount of memory used for each
By the way, I also learned more about the
volatile keyword than I
wanted to know, including this beauty:
funargs = *(volatile Lisp_Object *) &funargs;
That means (as far as I understand it) "put this in memory right now".
Benefits / Limitations
There is an obvious benefit from this work: people can now write tail-recursive functions and not worry about the the size of the input causing the function to stop working. It does, however, have some limitations. It
- only works for lexically-bound functions,
- only works for byte-compiled functions, and
- could cause problems with debugging.
I've gone through the reasons for the first two, and the third should be well known to people who are familiar with TCO. The main reason is that since the function call can't add to the memory usage, it must also not add information about itself to the list of function calls displayed in a backtrace.
I am going to test this for a while longer before I release it. However, I think it's really going to work, and it will allow an entirely different style of programming in emacs lisp. That's pretty exciting for me.
The last post was getting a bit long, so I split it into two. When I left off, I had just finished the last big mountain pass on the hike.
The Yosemite Valley is a truly amazing place. There are massively high waterfalls all around, as well as giant stone walls. Half Dome is like a giant rock that has been stuck in the earth and then split down the middle. But there are roads to the Valley, and it is a famous place to go. So it is full of people.
I hung out and set up camp with the new group that I was joining. I had met all of them earlier in my hike, but I had done quite a bit of hiking with Liz and Skinny D. So we caught up and I learned how people were doing. Garby was now known as No-Knees due to a glissading SNAFU where the snow rubbed the skin on his knees right off. He had also crossed Evolution Creek at a place where the water was up to his neck. Raven and Lovebird were ahead, but maybe catchable.
The next day, Skinny D told us that she had gotten an offer of a ride around the next few sections where the water was supposed to be really high. We tried to talk her out of it, but she had pretty much decided. It put a damper on my enjoyment of the rest of the day because I quite liked having her around. We did our final bit of shopping and took the bus back up to the trail.
We slept that evening essentially where the trail crosses the road. We bade Skinny D goodbye and good luck the next day and then set off toward the rivers that we had heard so much about.
The first was the Tuolumne River. We had to cross it twice, but there were bridges. However, much of the bridges were underwater. There was a huge waterfall followed by a pool that had so much water in it that it looked like the ocean. It was a good sign that the amount of water in this section was going to be dreadful.
After that came Return Creek. Two experienced hikers had already written a note to the PCT mailing list saying that they couldn't make it past Return Creek, so we were ready to turn around there if we needed to. When we got there, we found water three or four feet deep that was moving like a waterfall. I knew that there was no way that we would cross it there, so I started walking downstream. About a mile away from the trail crossing, I found a place that looked okay to cross. I got the group (along with Bert and Ernie, who had shown up while I was scouting) and together we went to the crossing. Bert and Ernie actually found a log jam a little way past the crossing that I had found, so we took that. In the end, we didn't even get our shoes wet in Return Creek.
We had to bushwhack back to the trail and when we got back, it started raining. We walked a few miles more and then got to Matterhorn Creek. The rain had filled the creek by the time we got there, but we were wet anyway, so we tried to cross. That wasn't a good idea. We looked for the shallowest part of the creek and all got in together, forming a square. The idea was that we would move across the creek by rotating. I started out as the upstream side of the square. The current swept me right off my feet and we had to go straight back to the bank. So in a sense, our scheme worked. We tried to cross, found it impossible, and turned back in an orderly manner. We camped on the side of the creek.
The next morning the creek was down by about a foot and we crossed easily at the trail. We climbed Benson Pass and then descended to Piute Creek. This was another wide, deep, and slow-moving creek. It was also very near the lake that it flowed into, so it seemed like we were walking through it forever.
After that, up and over another big hill. On the other side, we entered Kerrick canyon. The map also claims that Kerrick canyon is a difficult ford, and boy did it ever look true. The water was raging beneath us as we traversed the snow-covered hill. I got out my ice axe, thinking that if I slipped, sliding down into the water below would be pretty bad. We finally got to the end of the canyon and the terrain flattened out. The water was still moving fast and we knew that we would need an alternate way to cross. We found a tree that had fallen across the river. It was smaller than most logs we had used to that point, and it still had nubs of branches sticking up, which made walking across it harder, and it was also partially submerged. In short, it wasn't great, but it was all we had. Luckily, we all made it across without falling in.
A couple miles later was yet another ford. Deep and slow-moving, if we had crossed at the trail, our feet would not have hit the bottom. Instead of doing that, we went upstream a bit and found a nice place that only went up to our bellies.
Next, we came to another ford at Falls Creek. It was starting to get late in the day, so we hoped to get across it and make camp. Unfortunately, it would have been another swimming situation, and that just isn't my style. As we got closer to the creek, we knew we were walking on the trail because we came to a bridge between the creek and the lake that adjoins it. However, we had been walking with water up to our knees for minutes! To warm up, we climbed out of the water and onto floating ice. The whole thing was crazy.
After seeing the amount of water at the trail crossing, we decided to go upstream the next morning. It worked out pretty well until we got to a tributary. Maybe it would be more accurate to call it a series of waterfalls all joined together in a giant maze. Crossing it was like a video game. First we took a log about halfway. Then up a little. Across the main channel behind a big rock. Then down a little, followed by some rock-hopping to the other side. Finding this sequence took about an hour (you obviously don't get the option of restarting the video game if something goes wrong, so you want to get it right on the first try), and by the end, we were so cold that we had to sit in the sun for half an hour to warm ourselves.
Of course, we had just crossed the tributary. Another group had caught up with us as we crossed the tributary, and because they followed our route, they didn't spend as much time in the water, so they went ahead to look for a way to cross Falls Creek as we warmed up. Eventually, we saw an arrow in the snow that they had drawn and found a nice section of the creek that was only about three feet deep the whole way across. The bottom was slippery, but we made it.
That was the last of the major fords. We still had wet feet for the next few days, but it started to feel like regular hiking and not some demented water park once again. A few miles after Falls Creek was mile 1000. We posed for a nice picture.
(From left to right: K-Bomb, Spice Rack, [someone whose name I forget], me, Funyan, Liz, and Meow-Meow.)
Sonora Pass to Tahoe
Liz's boyfriend's parents live near Sonora Pass, so our goal was to get there the next day. In the morning, we climbed to a ridge, and then the rest of the day (until the very end) was walking along that ridge. I guess I was happy to get past the difficult fords, because I took a lot of pictures.
(Left to right: Liz, Meow-Meow, and Funyan)
We glissaded down from the ridge, losing about 500 feet of elevation in a matter of minutes, and then hitched down to town. We met up with Liz's boyfriend, and I spent a comfy night on his parents' couch after the usual shower-shop-eat cycle.
We spent most of the next day in town as well, and went up to the pass only in time to make camp right at the road. The next morning, we went over ten thousand feet for the last time. The snow was starting to diminish, and we were glad for every step on dirt. Our mileage started increasing as well. We completed the 90 miles between Sonora Pass and Echo Lake in four days. Once we were at Echo Lake, Liz had some family in the area, and we stayed with them. We went into the town of South Lake Tahoe, and finally got rid of our bear canisters and ice axes.
I go out on my own again into Northern California.
After my jaunt in Oregon, where I had only hiked 50 miles in about 10 days, I was eager to get back to the trail. My mom, sister, and I all piled into a car in central Oregon and began a road trip back to central California.
Mammoth and broken SPOT
Before we got back to the trail, we stopped in Mammoth. My SPOT device (essentially a GPS beacon) had stopped working before I had entered the Sierra, and I (but especially my mom) was eager for me to get a replacement. The company graciously sent one to the post office in Mammoth. When I got there, however, I was informed that it had been sent back. In all the time that I had been hiking, this is the one major black mark against the post office. In fact, I try to come to the defense of the USPO as much as possible – the vast majority of post offices in the rural US are extremely well run and many serve as hubs of their community. However, this time they let me down. So I was going into the mountains again without my beacon.
Back into the mountains
I had left the trail at Independence, so that is where I went to rejoin it. It's an amazing drive from the desert in the valley at Independence to the alpine climate at the mountains. My mom and sister were interested in the hiking I was doing, so they followed me up until we got to snow, and then they turned back (and completed their day with a baseball game in San Francisco).
I met a few people on the way up to the pass, and eventually caught up with Sly. We went together over Kearsarge Pass and, despite the light starting to fade, we went over Glen Pass as well. There was rather fun log crossing between two lakes, and then Sly kind of took off. He was certainly more acclimatized to the altitude than me and the week that I took off probably didn't help me either. I found a campsite and put my hammock up above some snow.
The next day I was not planning to go far, and at least that much went as planned. Right from the start, I had to cross a creek. Without the practice that I would later acquire, and all by myself, I didn't really know what to do. I dilly-dallied around a bit, changed into camp shoes, and finally did what I should have done in the first place: just crossed. I was spending a lot of time looking for the trail, but I could tell that I was going in the correct general direction because there was a river that I was following down hill.
Eventually, I came to a tributary and was stuck once again. The tributary was mainly shallow, but had a main channel about three or four feet wide that just seemed impassible. I went up and down it, looking for a place to cross. I must have spent an hour looking for a place where the main channel was a little shallower. Once again, though, I simply crossed where the creek crossed the trail. The water came up to my mid-thigh and I later learned that people had fallen in this creek and lost poles and things. I was getting a little freaked-out at this point, because I was on the wrong side of a roaring river and the map didn't show any bridge. Also, I had only gone a few miles and it was getting toward lunch time.
I continued on down the hill until I did come to a bridge. I was extremely glad to see it, since it was just below the confluence of two rivers that could hardly have been more full. I could really see that water was going to be the problem this section. I had lunch and then started up hill. There was a pass ahead, and I was fairly sure that I wouldn't make it that evening, but I was hoping to get as high as possible. I was still pretty tired, though, and only made it a few more miles before camping on the side of a hill.
More passes and a new group
As I was cooking dinner sitting on the trail, a group of people came by. I had been hoping to find some more people so that we could all look out for each other in the rivers. I asked if they would be okay with me tagging along and they said yes. They were going to walk a bit farther that evening, so I would have to catch up with them the next day. The cast of characters that I would be hanging out with for the next couple of weeks would be Ninja, Drop-n-Roll, K-bomb, and Roadrunner.
The next morning I got up early to try to catch up with them. Pinchot pass was ahead, so that meant that I was both climbing around 2000 feet in three miles and trying to catch up. I saw the group as they went over the pass, but I must have still been a half mile behind. Pinchot Pass was not too hard and before long I was over it. However, I was still pretty far behind and trying to catch up. At some point I lost the group's footprints and it was just me and my map. There were a couple of creeks that were pretty scary at the time, but turned out not to be too hard relatively speaking, but eventually I came out of the forest and found the group sitting and having lunch. We decided to go over Mather Pass that afternoon. I had heard Mather referred to as "Mather-fucker" the day before, so I was a little worried, but staying with the group that I had just caught was the priority.
We climbed another 2000 feet to Mather. It didn't look too bad. The most worrying aspect was that a few hundred feet below the pass was a lake with thin ice, so a fall would make you really cold. The trail officially went to the right around the lake, but there were footprints in the snow going to the left, so we followed those. We went straight up and eventually found ourselves on some rocks. These were actually much worse than the snow since there wasn't a real path on them. Ice axes also don't work on rock. While most of the rest of the group found a high route, I took the lower route. This allowed me to get back on the snow quicker, and I overtook them on the way to the pass. At the pass itself, the snow was corniced, meaning that wind had blown over the pass so it looked like a cresting wave coming towards us. I heard that it actually avalanched later in the season; I'm glad I wasn't there for that. In all, Mather was probably my second-least favorite pass.
We descended from Mather toward the Palisade Lakes. We had hoped to make it down to dry land, but the sun went down too quickly. The rest of the group slept on a big rock, while I was able to find two trees that had somehow gotten their roots through the rock. They were probably the only two trees that I could have used for hamocking for a couple of miles, so I felt pretty lucky to have a comfortable place to sleep.
The next day was quite long. We started by descending the so-called "Golden Staircase". Without snow, it's a beautiful set of stone steps next to a pretty creek. With snow, the steps are a bit harder to navigate. We left the snow again at the bottom and walked along Palisade Creek. At the bottom we got to 8000 feet of elevation. Our destination was Muir Pass at 12000 feet. There's not much to say about the rest of that day. It was beautiful but not particularly challenging. The pass had an obvious route up which was safe, and then at the top of the pass was Muir hut.
Muir hut is a stone structure built in the memory of John Muir. It's officially for hikers stranded because of weather and not supposed to be used for overnight stays, but the sun was going down and there was nothing but soft (i.e. hard-to-walk-on) snow for miles, so we stayed there.
The next morning, the snow was firm again, so we made good time. We were walking toward Evolution Creek, which the maps warn "can be a difficult ford". When we got there, it was up above my belly-button. It was quite cold, but it wasn't the raging cataracts that I had seen the previous few days, so I just did it. The five of us sat and ate lunch on the side of the river and dried our clothes. As we were eating, we saw a deer swim across the creek.
After Evolution Creek, the next really interesting crossing was a couple of days (and passes) later at Bear Creek. That did have both very high water and very fast water. We really should have crossed it as a group, but instead we chose to do it one at a time. At one point my foot slipped and I put my hand down on the bottom, but I was able to recover quickly enough that I didn't get swept away. Ninja was the last to cross Bear Creek and had the most trouble. The three guys (K-bomb, Roadrunner, and myself) got back in the water and made a little phalanx so that she could be shielded at least a little bit from the oncoming water. I was glad when we were across.
We had been thinking about stopping in at Vermillion Valley Ranch (VVR) the next day for some rest and supplies, but knew that it would be expensive if we did. We were running out of food and supplies and Mammoth was only a couple of days away. When we got there, we decided that we could make it to Mammoth. Almost as soon as we passed the cutoff trail for VVR, we ran into Mono Creek. We would have to cross it three times. The first time, we found a log. That's never really fun, but at least we stayed dry. The following time, we were in up to our thighs. Our final crossing was through what essentially a waterfall. The trail was well-made so that the crossing was not too dangerous, but it sure was impressive.
The following day, I left lunch a bit earlier than the rest of the group and got lost at least three times. It was getting dark by the time I found their campsite. It rained that night and snowed the next morning, but we were going to town, so we all felt pretty good.
We got lost on the side of a hill and started going up and down looking for the trail. A hiker from a different group finally found us and even threw us all a mini Snickers bar as we made it to the trail. We followed him all the way to the bus that took us Mammoth.
We spent two nights in Mammoth, even renting a cabin for the second night. I had an infection, so I went to the hospital to get it taken care of. Thankfully I had gotten insurance before leaving, so it didn't completely bankrupt me.
When we hit the trail again, we were well-rested and had another member of our group: Moccasin. He had been in Florida looking after his father for around a month, so he was not acclimatized to the altitude. Our first day back, we didn't go very far and he did okay, but the second day he had real trouble. We ate lunch at the top of Donohue Pass and his altitude sickness made him unable to eat for about two hours. Eventually he told us to go on without him and that he would catch up. We didn't want to, but we finally did. We had crossed paths with another group (Liz, Skinny D, Meow-Meow, and Funyan), which I would later join. They caught up with Moccasin and would give us a hard time about leaving him alone, and they were probably right. In any case, he made it down from the pass okay, and we all made camp in Lyell Canyon. We were going into Yosemite Valley the next day, excited about another taste of civilization after so short a time.
Yosemite, and even harder river crossings.
I just got back from a few days in the mountains hiking with my mom and sister, so I thought I would write a bit more of my rememberances from last year.
Leaving Kennedy Meadows
After a couple of nights in Kennedy Meadows, I was ready to get back on the trail. There was a group leaving a couple hours before I would be ready, so I checked and made sure that they would be okay with me tagging along. I really didn't want to do the mountains alone.
Before long, I left and hiked five or ten miles before I caught the group. The group consisted of Buffalo, Pyrite, Chinchilla, Zombiefeet, Ryan, and Sue. The first day, we didn't see any snow, but that would not last long. Our packs were much heavier than usual, since we had bear canisters to keep our food safe, and ice axes to keep our bodies safe.
We made our way into the mountains. The group was larger than I was used to, and so we hiked a bit slower than I normally did. Getting consensus that we would start hiking againg after breaks was difficult. I started to get antsy. There were some upsides to the size of the group, though. Pyrite knew how to use an ice axe and gave us all a quick lesson. When we hit snow on the second day, we were able to find our way relatively quickly.
On the second day, our group got even bigger, as we were joined by the French Team, a husband and wife duo from – you guessed it -- France.
My attitude toward snow upon leaving Kennedy Meadows was that I didn't think it would be much of a problem. After all, as a Canadian, I walk on snow 4 or 5 months of the year. I hadn't anticipated two things. First, it is nearly impossible to find the trail when everything around is covered by snow, and second, a high amount of snow means a high amount of snowmelt. The second consideration would come later, but by our third day in the Sierra, we were very glad that the French Team had a GPS.
Early on the fourth day, we came to Chicken Spring Lake. The maps list it as a water source. This is what it looked like to us.
We started to learn how to "boot-ski". On slopes that are steep enough, you can let your shoes slip and then you start sliding down the slope. As long as the slope isn't too steep, you can go for quite a while and have a lot of fun. It also broke up the hiking a little bit, which was becoming a bit of a trudge. The snow was packed quite firm, but even the firmest snow is harder to walk on than dirt.
By the end of our fifth day, we got to Crabtree Meadows. I had been hoping to climb Mount Whitney (the highest mountain in the contintal US), and to do so we would need to take a side-trail. However, I had to balance that with my need to stay with a group. I was quite liking the group that I was with, and one by one, they decided not to attempt the climb. It was a hard decision, but I gave up on the idea of climbing Whitney as part of my PCT hike. With the benefit of hindsight, I am pretty sure that it was the right decision. The miles ahead were among the hardest I had ever hiked and I was nearly out of food. If I had needed to hurry, things could have gone terribly wrong.
The next day was all about getting close to Forester Pass. The consensus from hikers who had done the trail in previous years was that it was best to do the passes in the morning, before the snow got slushy. So we wanted to get close to the pass (the highest point on the trail) in order to do that.
The hiking was starting to get spectacular. Everything was covered in snow and there were giant mountains all around. We only made it about 8 miles that day, but they were 8 hard-fought miles. Our large group found the last cluster of trees with snowless patches to camp in, and we ate a slightly early supper and turned in.
The weather was great the next morning, and we started out with great moods. This picture of Pyrite and Chinchilla walking toward Forester Pass is one of my favorites:
Eventually we got to the real climb before the pass. Unfortunately, I don't have any pictures that do it justice. It started off with a few hundred feet of what seemed like climbing straight up. There were steps in the snow that someone had made the day before, so I used those. I also had my ice axe out just in case I slipped or the snow gave way. At the top of the steps were some rocks. This was the actual trail, with switchbacks. The rocks were icy because the snow had melted the day before and frozen during the night. It was not fun climbing up them, but once I was up I was glad to be on the switchbacks.
The gladness didn't last very long. The switchbacks abruptly ended, crossed by a chute of icy snow. It was even more vertical than the steps we had just climbed, and as a bonus there were jagged rocks at the bottom. Any slip would give you almost no chance of saving yourself. To top it off, the snow was so hard and icy that the ice axe wouldn't go in. There were steps carved across the chute, but they seemed to have been carved by a giant. To say that I was scared when I was crossing them would be a massive understatement. It's not something that I want to do again. (It would have been much less scary if we had crossed in the afternoon when the snow was slushy, but that's something we didn't know at the time.)
Once I crossed the chute of death, it was just a few more switchbacks on terra firma before I got to the top. I had to sit down and hold my knees to get rid of the adrenaline that was flowing. The rest of the group caught up about five minutes later, and we celebrated being at the highest point of the hike.
We started our descent from the pass and very soon got to do our first glissading. Glissading is a fancy word for sitting on your bum and sliding. It's a ton of fun.
We descended more than 3000 feet and then started climbing again. Our next day would take us into town, so we wanted to get as close as possible. We camped near Bullfrog Lake, and because campsites were so scarce, I camped quite a distance from the rest of the group.
I awoke the next morning having decided that I was sick of the snow. It was causing us to hike too slowly and get too tired. I just wanted out. I started hiking without the group and got a little off trail. I did, however, get a picture of this fellow, who I think is a pine marten. He was quite curious about me.
I ended up a good distance above the trail and eventually saw the rest of the group pass below me. It was somewhat embarassing to climb down and catch up with them, but I was still glad to see them. We got to Kearsarge Pass without much incident, but the snow seemed treacherous again on the other side. We had to descend a long way from the pass to get to the road, and it was after noon by the time we got there. Eventually, we got a ride into the small town of Independence.
Off to Oregon
As I said, I had decided to get out of the snow. My strategy was to get to Oregon, where my mom and sister would be vacationing and then have them drive me back to Independence after a couple of weeks. I was joined on this road trip by Zombiefeet and Ryan, who had planned to end their hike at Independence and who needed to get to Washington for a wedding.
Getting to Oregon was a bit difficult logistically. The first thing we did was hitch up to Mammoth Lakes. It wasn't an easy hitch, but eventually a BMW driven by a single lady pulled over and gave all three of us a ride. It even turned out that we had grown up in the same city, so we had something to talk about.
From Mammoth, we were able to rent a car. It's kind of strange driving after a month and a half of walking, but nevertheless I drove most of the way to Ashland, Oregon. I said my goodbyes to Zombiefeet and Ryan, handed them the keys, and was on my own again.
Out of Ashland, I was happy to be on snow-free trail once more.
I was cursing my luck the same day when I came to a large patch of snow. It was easily crossed, though, and then the path was bare for a while longer. The next day had a climb, and the higher I went, the snowier it got. When I finally got to the top, it was as snowy as it had been in California. I was on my own without a GPS and I got lost. By this time, I was pretty used to the sensation of being lost, and knew that as long as I went down the mountain in the correct general direction I would be fine.
And that was the case. I slept on it, and found some snowmobile paths the next day. I followed them to a larger road and came out nearly on the trail. Later that day, I would come to so-called lava fields. Obviously, this isn't the molten rock of the movies, but it's the rocks that formed after cooling off. It's not too much fun to walk on because the rocks are awkwardly sized and shift constantly under your feet.
As you can see from that picture, I was coming to another mountain with plenty of snow. Since the whole point of coming to Oregon was to get out of the snow, I didn't feel like going into it. I called off my plan to keep hiking in Oregon and took a week off at my grandparents' house with my mom and sister.
We drive back to Independence and I start hiking again. The rivers become harder to cross and I get lost some more.
Tehachapi to Walker Pass
We left Tehachapi fairly late in the morning and both Garby and I were tired, so we walked fairly slowly. It was already pretty late by the time we got to the start of Section F. Section F starts with a long climb, and I for one was really glad to get to the top. Once we were at the top, the wind mostly stopped, which was another relief. However, it was easy to see from the trees that the wind blew at the top too:
We didn't go much farther that day. We found a saddle out of the wind and set up camp. There was a freak snowstorm the next morning. It created an interesting juxtaposition: snow and cacti:
The snow only lasted long enough to make things cold and wet. Soon enough, the heat was back. Unfortunately, I am somewhat blanking on the exact places that I camped during this time. I seem to be missing a day. Judging from the dates on my pictures, the snow day was May 29. I forget where I camped that night.
The next day must have been more interesting though. The bulk of it was spent on a rather tedious trudge across a desert-y landscape, but toward the end of the day we had gained some elevation and found ourselves amongst the Joshua Trees.
I sat and ate supper in the shade of a couple at around 4:00 and then hiked in the dusk, when it got a little cooler. When I got to my destination (Bird Spring Pass), there was a cache of cool water, but only Joshua Trees on which to hang my hammock. It felt a little wrong to do so, but it was actually a decent base.
The next day was one of my favorite kinds. It began with a nice long climb, it was followed by a long mostly-flat section mostly in the woods, and ended with a descent. At the end of the descent was Walker Pass, which has a campground and had trail magic that day. I got some pizza and drinks and waited for Garby, who I had hiked past the previous day. When he caught up, I asked whether he wanted to climb the next hill that evening or just stay at the campground. I must admit that I was happy that he chose the latter.
Walker Pass to Kennedy Meadows
The following day also began with a climb, but was supposed to end with a climb as well. Garby and I ate a longish lunch at a stream near the base of the climb and we discussed where we would camp. After lunch, I let him go ahead of me as I normally do, but when I got to the place that I thought would be the campsite, I saw neither hide nor hair of him. Thinking that I had perhaps misread the map, I kept going. After an hour, I was sure that I had gone too far, but there was no turning back at that point. I found a thicket of brushy trees and hung my hammock for the night, hoping that Garby wouldn't think that I had ditched him.
The mountains were pulling me in the next day. All my pictures from the day are terrible because they are of the mountains in the distance. (Except maybe this one, which is terrible only because the snake is so unimpressive:)
It was a decent day of hiking. There was a burned area, which wasn't so nice, but I also saw a huge golden eagle, and then walked along the Kern river for a while, both of which were very nice. I made it to Kennedy Meadows – mile 700 – by late afternoon.
Kennedy Meadows is the last stop for hikers before the big mountains: The Sierra Nevada. I had known when I started my journey that I would be getting there somewhat early, considering that 2011 had been one of the highest snow years on record. I knew that I should take a few days and try to wait for it to melt. I ended up taking one.
Garby, Lovebird, and Raven all showed up on my zero-day. Garby was worryingly late – he had gotten sick again and was not able to keep food down very well. In the end, he took a couple of weeks off from the trail and came back feeling better and made quite a name for himself in the Sierras. Kennedy Meadows was the last place that I saw him on the trail. It turned out that we passed somewhat close to each other a couple more times, but I found out later that he got off the trail near the California/Oregon border with foot problems.
The highlight of my zero-day was going to an alpaca farm with the rest of the gang. I purchased an alpaca hat there that I wore for the rest of the trail (including some really cold nights in the mountains, where I was extremely glad to have it). We hung out the rest of the day and even watched the movie Old School projected onto a big screen outdoors after it got dark. It was a great day.
Into the mountains, and more snow than I thought possible. Hiking with a large group. Defying death to get to the trail's highest point.
After my zero at Hiker Heaven, I started on my way into the fifth section of the trail, which is notable for containing about twenty miles of actual desert. Before this, everything that had seemed like a desert was actually chaparral. The map, usually shaded with green and brown, was completely white. But I am getting ahead of myself.
Agua Dulce to the edge of the Mojave
It is customary for PCT hikers to leave Hiker Heaven and then hike directly to the Anderson's, which is about 23 miles away. Having just spent a very nice zero day at Hiker Heaven, I didn't feel any need to do that. I was walking by myself and feeling good. I had let Garby leave a little earlier than me, and knowing his speed, I was fairly confident that he would be ahead of me all day. Some days you just want to walk alone. I reached the road to the Anderson's in the early afternoon and decided to keep going. Just past the road, I found a dead horny toad and took a picture of it:
I walked five or six more miles that evening before finding a nice grove of trees with a small clearing inside for my hammock. There was even a nice little stream nearby. I did not catch up to Garby and was not sure if I would catch him again on the hike.
I was up early the next morning and walked about 100 yards when I came upon Garby packing up his campsite. To me, it was a pretty good indication that we were really good hiking partners. After nearly thirty miles of hiking, we had independently decided to call it a day within a distance that could be sprinted in 10 seconds.
We passed the 500-mile marker that afternoon (though it was quite a distance past where the maps indicated that it should be).
The trail also became more wooded and shaded, which was nice because the weather was pretty hot.
And some of the trees had absolutely huge pine cones. They were heavy too. I kicked one, thinking that it would have the same papery weight that I am used to pine cones having, and nearly hurt my foot.
Eventually, though, we descended from the forested ridge toward the desert. A few miles before the desert actually starts, there is some private property with no camping allowed. Garby and I decided to camp as close to that property line as possible and to get an early start the next morning.
As we agreed, Garby and I got up at 3:30 in the morning and started walking toward the desert. The moon was just past full, but it was not quite bright enough that we did not need our headlamps. I had night-hiked before, and did not really like it. This time was a little better, but I still stumbled more than I would have liked. However, I knew that this was the best way to beat the heat of the desert.
We got to the LA aqueduct just after daybreak. We filled our water containers to their capacity there and then started walking in a straight line. The trail follows the aqueduct (which is mostly buried after your first encounter with it) across most of the desert.
It has a round top, which is slightly annoying to walk on, but it is better than sand.
It's fairly hard to describe walking in the desert and make it seem exciting. Nothing happens suddenly, like it can in the mountains. It is all very gradual. Eventually you notice that it's gotten really oppressively hot. Your water gets hot. You want to sit down, but there's no point, because there's no shade anywhere. It'd just be a waste of time. So you keep walking. Eventually we came to a bridge that was about 2 feet off the ground, and I sat for about ten minutes in the meager amount of shade that it offered.
Past the bridge, we walked on a road for a while. We probably saw ten white trucks driving on the road, and no other vehicles. Clearly, this was a place where the only practical conveyance was a white truck.
It was only noon by the time we reached our destination. This was a small stream with a bridge over it, a spigot with cool water, and a small piece of corrugated tin on the other side of the bridge acting as a generator of shade. We put down our mats and tried to get some sleep. By this time, I was not feeling very well and did not eat much for supper that afternoon.
Tehachapi Wind Farm and Sickness
The next morning, we were up at 2:30 and repeated our night-hiking stunt from the morning before. As we walked up the hill out of the desert, we hit an enormous head wind. So we were walking up hill and into the wind – not a pleasant experience. On top of this, I was still not feeling well, so this part of the hike does not stick out as one of my favorite.
We got lost a couple of times in the dark. The trail follows an ill-defined network of roads that aren't really roads, and it was quite easy to get on the wrong one. Eventually we found a campsite (with people still sleeping in it), so we knew we were on the right path. It was also hard not to feel a little smug, knowing that we had already walked about 10 miles and were passing people who were not yet awake.
As we walked on, the wind was a near-constant annoyance. However, we would see that it had a real use. We walked straight into one of the largest wind farms in the world.
By early afternoon, we had made it to a road, and I was beat. It was not our destination, but the combination of not feeling well and the early rising of the previous days killed my energy. Garby caught up with me, and together we decided to hitch into town. We needed to go to the post office, and as soon as that business was taken care of, we got a hotel room and turned the air conditioner on.
It turned out that Garby had caught whatever it was that I had. It seemed like he still ate as much as usual, but he threw it up shortly thereafter. I managed to moderate my eating so that I wouldn't throw up, but it was easy to decide that we needed to recuperate a little, so we took another zero.
The nice lady who had given us a ride from the post office to the hotel had also given us her phone number and told us to call if we needed anything. Neither of us felt like hitching out of town, so we took her up on it. I think she was a bit surprised to hear from us again, but she was game. On our way out of town, she took us past a friend's farm where a bison had just given birth.
After plenty of ooh-ing and aah-ing, we got back to the trail and started hiking again.
We walked through the remainder of the wind farm and across a highway, and we left the section. Of all the hiking that I did, that might have been my least favorite section. It was constantly hot (though I actually got somewhat lucky with the weather – others had it much hotter than I did), and both I and my hiking partner got sick. The first two days weren't bad, but the last two certainly made up for that.
I may combine the next section with half of the following one so that I get to the start of the Sierras. I'm as excited to write about my experience in the Sierras as I was to get to them.
Section C ended with a couple of rainy days before a night at a Best Western at Cajon Pass. It was a restful night, and before long we were on the trail again.
Cajon Pass to Wrightwood
Most passes on the trail are higher than the trail around them, but Cajon Pass is the opposite. So we had another day of climbing ahead of us. This day was more than 5000 feet over about 22 miles. So not very steep, but still a grind.
As I went higher, the landscape changed from desert and chaparral to more of a forest. It also became clear that we were reaching elevations where it could snow if there was any precipitation.
Given that we had had bad weather over the past couple of days, this was a real concern. The picture above has clouds in it, and I was monitoring them all day. The plan for the day was to end near a trail going to the town of Wrightwood and then to spend the next day in Wrightwood. If bad weather hit, we would go into Wrightwood that night.
What happened was a bit more complicated than that. When we got to the top of the hill, the weather wasn't great. The wind was blowing fiercely, and it was cold and cloudy, but there was no precipitation. Morevover, we were at a campground with an outhouse that all the campers could pile into if the weather got truly awful. Even though the outhouse didn't smell great, we would do it if we had to.
We didn't have to, but I awoke the next morning to freezing rain. On the trail, I'm generally an early riser, so I was out of camp before the others that were camping at the site with me. Even though the trail to town was behind us, I decided to hike to the road that was about five miles ahead of us. I guess I was in a bit of a masochistic mood.
As I walked down the trail, ice balls as big as cantaloupes fell from the trees around me. The freezing rain was accompanied by a strong wind, and it felt like someone was sandblasting my face.
After a while, the trail was covered by snow and ice, and staying on it became more difficult. At one point, I kept going straight after it had turned and ended up at a ski hill. There was a nearby maintenance shed, and I stood in its wind shadow to warm up a bit and read my maps. I was near the trail, so I got back on it. After another half mile or so, I was still at the ski hill, but I found a warming shed. The ski hill was closed for the season, but the heater in the shed still worked, so I had a chance to warm up for real.
At that point, I knew I had two options. I could either try to stay on the trail, or I could go down the ski run that I was sitting at the top of. It is a truism that if you go down a ski run, you will eventually find a road at the end, so I knew that would work. As I said, I was having trouble staying on trail, so it was an attractive option. Looking back on it, going down the ski run would probably have been smarter, but I decided to try to stay on the trail.
I did get slightly lost a couple more times, but eventually I found my way to the road. As I descended, the weather got better (just rain and not freezing rain), but I was still pretty cold and wet by the time I got there.
Unbeknownst to me, the road was closed in the direction that traffic would be coming towards town, so hitching was really hard. Since I was cold and wet, I decided to keep moving, and walk towards town. A few miles down the road there was an intersection which meant that finally there would be traffic in the correct direction on the road, so I got a hitch the rest of the way.
I had a nice time in Wrightwood, where I stayed in a room with Holden and (Head)Banger. We went out for Mexican food at a place that advertised 5 cent margaritas with your meal. Of course, only the first was 5 cents, but Holden didn't realize that. Or perhaps he didn't want to realize it because it was his birthday. In any case, he had quite a few of them, and it was a pretty fun night.
After a large pancake breakfast, I got a ride back to the trail. The first half of the day was flat and easy, and then I got to Mount Baden-Powell. Initially, it was easy too, though steeper than most of the trail we had encountered so far, and then I got to the snow. Even that didn't seem too bad – someone had gone up it on skis, so the trail was easy to follow. I met another hiker on the way up (I can't for the life of me remember his trail name), and we decided to stick together going up the mountain.
Near the top of the mountain, the PCT turns and traverses the face of the mountain, and another trail keeps going to the top. Traverses are scarier to me than ridge walking, so we took the trail to the top.
Now here is where things get funny. As you can see in the picture above, there was quite a fog that day. So, following footsteps rather than our compasses, we went down the wrong ridge. In the picture below, we were supposed to follow the red line, but we followed the orange one instead.
knew that we were lost. What we didn't know was just how lost we were. We started scouting around for the trail, going back to places where we had last seen footprints, and following animal paths to dead ends. By the time we got our compasses out, we were off the map, but it didn't matter. It was clear that we were going the wrong direction.
Before we figured out exactly what had happened, Garby happened upon us. He had gone down the path to Wrightwood rather than the road, so he had been a few hours behind us all day. He had seen our footprints and assumed that we were going the right way. So now there were three of us that were lost.
Once Garby showed up, though, we figured out what had happened pretty quickly. It was clear that we would have to walk all the way back up Mount Baden-Powell, and go down the correct ridge. By this time, however, the sun was setting, so we needed to camp. It was a new experience for me, camping while lost. It was not particularly pleasant. I remember getting up during the night and seeing that the fog had cleared. The moon was bright, and I could see the ridge that we needed to walk down.
We were all up early the next morning, partly because we wanted to be back on the trail and officially un-lost, and partly because we were all almost out of water. We hiked back up the mountain and down the correct ridge to a beautiful spring, with water coming out of the side of the mountain.
Let me take a quick diversion here to talk about the process of hiking, rather than the journey. On the AT I resisted technology for a long time. On the PCT, however, I started the trail with an mp3 player. I would charge and refill it with podcasts every chance that I got. Some people hate any technology on the trail (except all the technologically-advanced stuff that they carry on their back, but I digress even further), but I think that listening to podcasts really helped me cement the experience in my brain. I have trail memories triggered by my favorite podcasts all the time.
I can picture exactly where I was when I was listening to the guys on The Bugle make fun of the hype surrounding the royal wedding. And now, whenever they mention it, I picture that place. When I was going up the hill out of Cajon Pass, I was listening to an interview on Fresh Air with a couple who filmed lions. On the way down Mount Baden-Powell, I was listening to Tig Notaro on Jordan, Jesse, Go. I heard Tig on another podcast the other day and immediately thought of the whole experience. Even more than a year later, these are completely vivid memories, and I think the fact that I was making mental connections between what I was listening to and the place that I was hiking through helped that.
So anyway to distill it to two words: podcasts good. Just always have one earbud out if you are walking in a place that could have snakes.
Frog Detour and Station Fire Burn area
The next couple of days are a bit of a blur (though I could tell you what I listened to). It was a beautiful area, but perhaps the slightly traumatic experience of getting so lost pushed the memories out of my head.
One thing that does stick out is a long road walk to detour around the habitat of an endangered species of frog. I later heard that horseback riders are likely more damaging to the frogs' habitat than hikers, so I would have been fine going through the detour, but I did the detour in any case.
The day after the frog-detour day, the trail went through the burn zone of the Station Fire. An act of arson, this fire had been so bad that it burned down the ranger station. They were rebuilding at the time that we were there, which is a good thing to see, but a burn zone is a pretty sad thing for me.
In the last section, I mentioned that there was a funny story with Boris and LoL. Around the frog detour, just past Mount Baden-Powell, LoL went into the bushes to go to the bathroom and Boris passed him without LoL knowing it. Boris was in the zone, moving fast, and even though he and LoL had been hiking together, he didn't wait around for LoL. With his head down, he even missed a turn and went a little way on a wrong path before realizing it and bushwhacking down to the correct path.
After half a day of not seeing his buddy, LoL got concerned. Assuming that Boris was behind him, LoL decided to wait for Boris. When he got word from hikers behind him that they had seen a place where a hillside had been torn up and it looked like someone had fallen down the mountain, LoL had all the reason he needed to panic and call in search and rescue. They sent a team to the place where the possible fall had been seen, but found no Boris. They had sheriffs go to all the campgrounds in the area and yell his name (one of them woke me up).
Boris was at the same campground as Garby, about 10 miles ahead of me, and had no idea that so much was going on in his honor. When he found out, he was mightily embarrassed, and that's how he got his trail name of Overdrive. My theory is that he didn't want to be associated with the name that the sheriffs had been yelling.
Vasquez Rocks and Hiker Heaven
It had been an eventful section, and there were two last treats. The first was the Vasquez Rocks. Huge weather-worn rocks sticking out of the desert, they epitomize what I think of as a western scene. For good reason, it turns out. They have been used in quite a lot of movies and TV shows that want to have a "Western" location.
It is quite a touristy location, to the extent that they even have placards along the path identifying the flora. I was a bit surprised to see that they even had one identifying poison oak. I would think that it would be easier to remove the poison oak than to put up a sign saying what it is, but I guess that shows what I know.
Just past the Vasquez Rocks is a hostel appropriately named Hiker Heaven. It's run by the Saufleys, who are a great couple who happen to have a large yard and love hikers. I took a zero there, and got a ride to an outfitter near LA where I got a couple of things that I had been needing.
Into the real desert. Night-hiking to avoid the sun. Going by another wind farm. Feeling sick.
A bit of news
This blog has been pretty quiet lately, because I recently moved from Calgary to sunny California. I took a job with Starview in San Jose, and I'm living nearby in Sunnyvale. Things are going really well with the job, and I've been working hard so that I can make an impact right out of the gate. Of course, that cuts down on the time that I have for writing blogs. So that's what I've been up to. On with the story of the hike.
Cabazon to Big Bear
Section B ends in an ugly way under an interstate highway overpass. It's sandy, and that's hard to walk on. By the time we got there, it was already after noon, and mighty hot. A wall of clouds loomed, but it was easy to disregard them, considering that we were still in what could easily be considered desert. The clouds were to one side and Palm Springs was on the other. We were moving closer to Palm Springs, so there was no way it was going to rain. (Have you guessed that it's going to rain yet?)
As we walked, we came nearer to a wind farm, the first of two that we would walk past on our hike. It is a little hard to imagine how large the turbines are when you just see them fleetingly as you drive past, but when you walk near them, you get the full experience. They aren't messing around. There is a little man-made oasis near a maintenance truck by the wind farm where there is shade and refreshments, so we took a break and tended to our feet for a while before we started moving again.
A little after we left, it started raining. At first it was a relief. We had been walking under completely blue skies in Southern California for around two weeks, and the variety was nice. However, I had been expecting the blue skies and had not packed any rain gear for this part of the journey (I sent it all to the beginning of the Sierras). So after a while, even my fleece was getting waterlogged. Our plan upon leaving the oasis had been to try to get to a fish hatchery that was about a half a mile off-trail. Since it would clearly be the only shelter for miles, it became a must.
I had been hiking in the vicinity of Garby, Raven, and Lovebird all day, and we met up near where we thought the junction with the fish-hatchery trail would be. In fact, I thought that we were at the junction because I was misreading the map. In my defense, it's pretty hard to read a map through a plastic bag in a hard rain, but that doesn't change the fact that I was misreading the map. I was lucky that Raven was more persuasive than me, and convinced us to go on until we actually found the junction.
Eventually we made it to the fish hatchery, where there was shelter (a gazebo-like structure for tourists to picnic under). We had gone over 27 miles on the day – more than 1% of the trail. I quickly set up my hammock between two beams of the gazebo, but the setup wasn't optimal, and the wind kept waking me up throughout the night by flapping the tarp.
The next day was almost completely uphill. The rain was gone and it was hot once again. I got an early start, but that only gets you so much.
We walked up the basin formed by a creek for almost the whole day. By the end of the day, we had climbed around 5000 feet. It was cold at night at that altitude and there were pine trees. We ran into some fun people at the camp site, most notably Love it or Leave it (abbreviated LoL) and Hercules. Hercules will show up again much later in the story, but we will meet LoL and his friend Boris (aka Overdrive) again much sooner.
After our long climb, Garby and I kept the next day nice and easy, setting ourselves up for a nearo into the town of Big Bear. We found a nice camp at around 3 and then just rested for the remainder of the day. We even made a camp fire. Unfortunately, Lovebird had shin splints, so he and Raven hitched in to Big Bear by an alternate road before our camp. We would see them in town, but it was the last I would hike with them for quite a while.
On the Appalachian Trail, you can tell that you are having a good day if you can do "12 by 12". That is, 12 miles by noon. Garby and I had 9 miles to go to get to the road into Big Bear the next day and we made it by 9 o'clock. 9 by 9 is so much better than 12 by 12 that I was pretty impressed, but perhaps it's one of those things that doesn't really translate.
Anyway, we spent the day in Big Bear. It's a very spread-out town, which makes it bad for hikers, so I won't say too much about it. (Other than to note that it has the smallest ski hill I think I've ever seen. Seriously, there must be sand dunes that are bigger.)
Big Bear to Cajon Pass
Following our day in Big Bear, we must have walked for a while, but I don't remember it at all. So I'll skip it. The day after that, we made one of our biggest mistakes on the trail. A section of the trail was closed due to a rock slide, and an alternate route was given. We took the alternate.
At first, it didn't look too bad. It was mostly on dirt roads, but there wasn't any traffic. However, we soon turned off the dirt road onto off-road-vehicle roads. It was a Friday, and the off-roaders were out in force. There were vehicles of all shapes and sizes from dirt bikes to Hummers. Every 20 minutes or so, there would be a procession of them. The passengers would hold up their fingers indicating how many more were coming, which is thoughtful, but also disheartening. "Really, there are 7 more of you jerks disrupting my day?"
We ate lunch by a little creek and I got some water out of it, upstream of its crossing with the road. It was a good thing that I did, because as we were eating lunch, three Jeeps came to the creek. We sat and watched as they crossed and re-crossed the creek 4 or 5 times, a different passenger getting out and taking video of the crossing each time. It was maddening.
We later heard that if we had not taken the alternate, the trail would have been beautiful and the rock slide not too bad. Also, Deep Creek, which is where the trail went, is a natural hot spring that is clothing-optional. The day that we missed it, there was a rumored nude photo shoot there. Now of course this is a only trail rumor, so who knows if it's true, but it sure sounds like the kind of thing that I would have liked to have verified for myself. For science, of course.
Anyway, by the end of the long day, we finished the alternate route and were back on the trail. We met an older lady, and being a bit dumb, I didn't realize who she was until she was already gone. Her name is Mother Goose, and she is an a true trail legend. She is still going strong – according to her trail journal, she is hiking the PCT again this year. I set up my hammock in some scrubby trees on a hillside and it rained again at night.
It kept raining the next morning, and I got as colder as the day went on. My strategy in situations like that is generally to push on and keep moving so that I generate body heat. That day, however, it was really bad. It just never let up. Eventually I met up with Garby at an underpass where we found some shelter from the rain. I tried to tear open a pack of crackers, but my fingers were so cold that they had lost the strength required even for that. Out of the rain, we warmed up again, and eventually found the courage to hike on.
It didn't rain much longer that day, and before long we were drying our tarps in the sun. The terrain also became more deserty again, which was heartening. I was really tired of rain by that point. I had not expected it or packed for it. Even when you're ready for it, cold rain isn't much fun, but when you're not ready for it, it's downright awful.
Anyway, in the afternoon, we walked by some very windy cliffs to Cajon Pass. It sounds nice, but it's really a McDonald's and a Best Western at a highway rest stop. I got my customary chocolate shake, and a room at the Best Western. I was tired from the long days and walking in the rain, so I slept deeply.
Snow and ice. Getting really lost. Finally getting back to normal weather and having to take a "frog detour". Boris and LoL get up to some shenanigans that keep people up at night. Finally, we meet some of the nicest trail angels around.
Warner Springs to Idyllwild
Leaving Warner Springs, my feet were getting tired. I had started with shoes that had almost no padding (the Merrell Trail Glove), and it was turning out that they were too minimal for the task at hand. They were fine for forests, but the rocky desert that I was walking on was not forgiving enough. I had ordered some of my favorite trail runners to be sent to a cafe that was a couple of days away, though, so I was keen to get there.
The first day out of Warner Springs, I met up with the group of three ladies that I met the day before Warner Springs. We made it to a water tank by the early afternoon and then sat and shot the breeze during the really hot part of the day. Annie's blisters were still really bad, but she had gotten epsom salts in town, and she spent quite a while soaking her feet in a plastic bag.
We eventually hiked on, but it was starting to get dark quickly.
Eventually we got to a spot with some flat areas where tents could be set up. Unfortunately for me, there were no trees where I could hang my hammock, so I had to "cowboy camp". It's a pretty common thing to do, especially on the PCT, where there is very little rain. Basically, it is camping without any shelter. I put the tarp of my hammock down and my mat and sleeping back on top of it. The bugs were pretty bad (I kept Annie awake by slapping at mosquitoes), and the ground was a lot less comfortable than my hammock, but I made it through the night. Thankfully, it was one of the very few times that I was forced to sleep on the ground during the whole trip.
The next day was, for me, a big day. I wanted to get to the cafe as quickly as possible to get my shoes. We started early, but before long it was hot again. Raven, Lovebird, and Garby, who had all left Warner Springs a bit after I had, caught and passed me. Eventually we all met at a water cache and again tried to wait out the sun.
I found that I couldn't wait. New shoes were just too close and too tantalizing. It was really hot, but they would have cold drinks at the cafe. I walked on, up and down hills, and across dirt roads with no trail magic until I finally got to the top of a hill where I could see the road with the cafe. I could see Annie ahead of me, and I knew that she would have no trouble getting a ride. I was also really excited about the cafe. So I started running down the hill towards the road.
Annie really had no trouble getting the ride – I think someone stopped before she had enough put out her thumb, so I was on my own. Before long Raven and Lovebird showed up and the three of us got a ride together. After a short ride, we were at Paradise Valley Cafe.
Paradise Valley Cafe really is a paradise, especially for thru-hikers. First, it has one of the best waitresses I have ever seen. She was a marvel of efficiency, giving us ice water as soon as we came in and refilling our drinks well before they ran dry. She was even reading hiking books in an effort to connect better with her clientele. It also has really good burgers (of course I got the veggie patty), and is in a really beautiful location. What made me the happiest, though, was my new shoes. After 150 miles of shoes with no padding at all, they felt like walking on cushions.
Eventually we had to leave paradise. It was late, and there was a little trail behind the cafe back to the PCT, so I walked down that until I found a couple of trees where I could hang my hammock. All the trees were too big or too far apart until I got nearly all the way to the trail. Even then, I had to be very creative to make the hammock work.
I was up early the next day and moving a lot faster. We were heading into the San Jacinto mountains, and the elevation gain meant that we would get some respite from the heat. Down below was the desert and Palm Springs, and I was glad not to be there.
I slept on the side of a mountain that night, and the next morning came to some snow-covered trail. At that point, it was still enough of a novelty that I took a picture.
Later that day I made it down a steep side trail to Idyllwild, and met up with the rest of the crew. We had a Mexican feast and listened to some really good live music until "hiker midnight" (9 PM).
Up early the next day to hike back up the side trail. We had more snow ahead of us, and the dreaded Fuller Ridge. People had been hyping Fuller Ridge for at least 50 miles, and as with most things in life, it didn't live up to the hype.
Though I'm writing about it now with some bravado, I must admit that I was glad to be with a group. Even better was having Lovebird and Raven in the group, who are from the Yukon and have a lot of experience hiking on snow. Garby showed me how to shorten one hiking pole while walking on the side of a ridge, but all in all Fuller Ridge really wasn't that bad. The most difficult thing was navigating on the snow. We had a good idea of where we were on the map, and using some intuition and my altimeter watch, we were able to stay at the right elevation. When we walked over the wilderness sign that was buried almost to its top in the snow, we knew we were at the right place.
We ended the day at a trailhead whose elevation was not much different from the top of the ridge. It had already been raining a bit during the day, and it continued into the night. Because of the elevation, it froze over night and I awoke to find a thin layer of ice covering my hammock's tarp. Since my new shoes were frozen, I wore my old ones for a while that morning as we started our descent.
The descent from Fuller Ridge is kind of amazing. The factoid on the map states that it's 4.3 miles in a straight line but 15.2 miles on the trail. It's just one switchback after another. It's a little boring, but we made quick work of it. We got to the bottom by noon. We had lost about 7000 feet of elevation in the morning and were in the boiling heat of the sun once more.
Some editing will be in order if I ever want to finish writing about this hike. I remember it all so vividly, though, and I enjoy reliving the details. Anyway, we will go past a wind farm and get caught in the rain. We will miss some of the best sights on the trail because we stupidly followed the law and took a marked detour. And a Best Western will never have seemed so good after a tough day with some more rain.
Most of my time this week was spent traveling and in meetings, but I did have a chance to work on the Clojurescript macro system that I have been working on.
Things didn't start too well for the system, since it would not run
the simplest of tests written for it in the Clojurescript testing
system. My test was a macro that would take a positive integer,
recursively decrease it until it was zero, and then output the
zero. (Clearly not the smartest macro in the world – it was just
meant to test recursion.) However, I kept getting errors saying
that the system didn't know how to test equality among numbers.
This seemed strange until I realized that the
extend-type call for
numbers wasn't getting executed because it wasn't expanded into a
def. (I had been executing all
def calls, which defined all
functions and variables, but nothing else.)
So I briefly flirted with executing a bunch of other special forms,
deftype, but I could see that this would make
things pretty unwieldy, and that the compiler would be doing a lot
of confusing things, for example trying to execute a
set! that was
buried deep inside a function without being able to know anything
about the locals that it was being set to.
That was clearly the way of madness, so I eventually decided to execute every special form that was at the top level. This worked really well, and the tests started passing.
I also added tests to make sure that the namespaces work as
expected. You can
require macros from other namespaces
just like other functions.
What's not there (yet)
So far I have not added the
&form variables to macros.
I expect that it will be necessary to add them at some point (and
honestly not too hard). I know they are extremely useful in some
projects like core.match, but that project has already been ported
to Clojurescript (via Clojure macros), so it might make more sense
to leave the large macros that need those facilities to Clojure.
Backquoted forms don't work as nicely as in Clojure. The reason is that we are using Clojure's reader, which qualifies backquoted symbols with their full namespace. Unfortunately, it doesn't know anything about Clojurescript namespaces, so expect to need to qualify symbols inside backquotes. This is an area where true reader macros inside Clojure would be really helpful, but we have to live with what we have.
One step closer
… to Clojure in Clojure. Clojurescript already has a reader and a compiler that can compile most of itself. The reader isn't totally complete – it doesn't have backquote working yet for example – but it is close. It recently got persistent vectors and persistent hash-maps. With macros added, all that's left for Clojure in Clojure is to finish up the reader and get rid of the calls to Java.
This blog is powered by ikiwiki.