Backcountry Binaries

Climb Mountains & Automate Things

Category: Thoughts

Permits and Preparation

Backpacking and dayhiking have blown up. Seeing so many people exploring the outdoors is fantastic! However, the huge popularity of a few specific locations or trails makes visiting them a challenge. I’ve gathered a bunch of information on some big name parks and trails below to hopefully make visiting a possibility for anyone interested! This post got way longer than I intended, so i’ve added the following table of contents.

Zion NP Wonderland Trail Half Dome Mt. Saint Helens
Havasupai Rae Lakes Loop Teton Crest Trail John Muir Trail
The Enchantments Mt. Whitney Coyote Buttes Kalalau

Zion National Park

Zion National Park in Utah requires a permit for any overnight trips, as well as any hikes through The Narrows, The Subway, and Left Fork. Permits must be picked up at a ranger station in person no earlier than the day before the hike.

The fees associated with Zion vary based on group size (Prices in USD):

  • 1-2 People: $15
  • 3-7 People: $20
  • 8-12 People: $25

There are a few ways to secure permits for Zion:

3 Months in Advance
Lottery Reservations
Last Minute Reservations (2-7 days in advance)
Walk Up Permits
Zion Express Membership

Wonderland Trail

Mount Rainier NP is home to the Wonderland Trail, a 93 mile long trail encircling the massive mountain.
Unfortunately, due to the massive number of requests received for full circuit Wonderland Trail permits, the NPS has stopped accepting advanced reservations, opting to only accept walkups for this trail. This is new as of 2016, so if you’ve been before, or are planning to visit, get there at least a day or two early!

Half Dome

Half Dome is a name that most outdoorsfolk will know. Located in Yosemite, Half Dome is one of the most popular outdoors activities in the park. Generally, the “cable route” is available from late May through October/early November. The park issues 300 permits per day, 75% of which (225) are reservable in advance in the preason lottery, March 1-31. Your maximum group size is 6 for these permits.

Alternatively, pick up one of the remaining 75 Wilderness Permits and include a route on Half Dome in your reservation.

Mount Saint Helens

Mount Saint Helens, located in Southern Washington State, requires a permit from the USDA. Permits can be purchased online with a minimum of 24hr advance – don’t wait until the day of to purchase!

Permits are limited for Mount Saint Helens depending on peak season or not with the following limits:
April 1st – May 14th: 500 persons/day
May 15th – October 31st: 100 persons/day

For both, permits are required and go on sale on February 1st at 9am.

Mount Whitney

Mount Whitney is on the eastern boundary of Sequoia & Kings Canyon NP. Permits are required, including day hikes.

Permits for Mt. Whitney are initially distributed via lottery, held February 1 – March 15. After April 1st, any permit times that haven’t already been reserved/permitted are available for sale online, first come, first served.

The last chance to snag a permit for the year takes place on May 1, when any unclaimed permits from the first round and cancelled and made available for purchase.

Get more information on the Mt. Whitney lottery and processes on the Forest Service’s website.

Enchantments

The Enchantments are another beautiful area in the Pacific Northwest. High alpine lakes, incredible fishing opportunities and scenic hikes draw thousands of people every year. Permits are required for all overnight trips. Meaning, if you’d like to day hike through the area, you can do so without worry!

As of 2016, the permit season in The Enchantments has been extended by 6 weeks. Now, in order to stay the night, you’ll need a permit from May 15th – October 31st.

The permit lottery opens on February 15th and runs through March 2nd and takes place on recreation.gov. Check out the Forest Service’s Website for more information.

Havasupai

Located on the Havasupai Indian Reservation within the Grand Canyon, there are are many beautiful waterfalls. and good hiking!

You must have a permit to hike, even for day hikes. The total cost for a single person is $85 (+tax) for one night. Permits go on sale on February 1 each year, you’ll need one at least a week in advance, and they must be reserved via phone (9am – 5pm) during the week.

More information can be found on the Havasupai tribe’s website and reservations can be requested at 928-448-2121.

Rae Lakes Loop

Another hard-to-get permit in the Sierras, Rae Lakes loop is 41.4 miles long, and gains 5035′ of elevation from the trailhead to Glen Pass. In late spring to early summer, there may be unavoidable high water fords required. There are a few unique restrictions on this particular loop:

  • Bear cannisters must be carried by all hikers
  • Camping only at designated campsites
  • Two night maximum in Paradise Valley
  • Two night maximum at Charlotte Lake
  • Two night maximum at Kearsarge Lakes
  • One night per lake in Rae Lakes
  • No camping at Bullfrog Lake
  • No fires over 10,000′
  • No pets allowed

If you’re looking to hike during the quota season of May 25th – September 22, you’ll need to acquire your permit at least two weeks in advance using this PDF.

More information is available on the NPS website.

Teton Crest Trail

Located, as one would expect, within Grand Teton National Park, the Teton Crest Trail permits are available for reservation between early January through mid-May.

Sending in an application via Fax will typically yield the fastest results, as only one third of available permits are available for early reservation. After those permits have been reserved, the remainder are available for walk-ups up to a day early.

John Muir Trail

The John Muir Trail is, unsurprisingly, challenging to get a permit for. Totaling 210 miles in length, the popularity of the trail has exploded since 2002, tripling in usage.

Permits headed southbound from Happy Isles and Lyell Canyon need to be applied for 24 weeks in advance. Sending in your permit via fax is recommended. Apply early, as the NPS reports that the vast majority of these permits are declined.

Alternatively, you can request a different trailhead along the route, such as Glacier Point or Tuolumne Meadow, which helps ease the daily quota limitations.

Lastly, you can try for a walkup — these permits are open for the taking at 11am the day before you intend to hit the trail.

Coyote Buttes

Coyote Buttes is one of the hardest day hike permits to obtain.

The buttes are in the southwestern sandstone hills of northern Arizona and southern Utah, within the Paria Canyon-Vermillion Cliffs Wilderness. No overnight hiking is allowed in either the northern or southern portions of the buttes, due to lack of water and supplies.

Daily, only 10 permits are available via lottery, four months in advance. The other 10 permits are walk-up only, the day prior to your day hikes, at the Staircase-Escalante Visitors Center.

Kalalau

The Kalalau Trail totals 11 miles along the Na Pali Coastline on Kauai island in Hawaii.

Camping is only allowed at Hanakoa and Kalalau, and permits are absolutely required – not having one will get you cited, followed by a mandatory court appearance!

Permits run $20 per person, per day and can be sold out as early as a year in advance. They can be applied for through the DLNR website.

Additional details can be found on the Kalalau Trail website.

Automating Audit Additions

…With alliteration.

Hey there and thanks for reading. Today I wanted to talk about a few recent additions I made to one of the SQL schemas I run! I was tired of manually adding a LastWriteTime and LastModifiedBy column to each table as they were created in the database, so naturally, I wanted to automate it.

This is a two part process, and it might be a little hacky but it works well enough in development and staging databases. I’ll need to see what the overhead is like in production, but I don’t anticipate any issues.

First up, we need a stored procedure to add 2 columns to a table. Nice and easy:

USE Development;
GO

ALTER PROCEDURE AddAuditColumns
@TableName VARCHAR(MAX)

AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql VARCHAR(MAX)
BEGIN
SET @sql = 'ALTER TABLE ' + @TableName + 'ADD LastWriteTime smalldatetime NOT NULL DEFAULT GETDATE()'
-- Change to NOW() for MySQL instead of SQLServer
EXEC(@sql)

SET @sql = 'ALTER TABLE ' + @TableName + 'ADD LastModifiedBy VARCHAR(60) NULL'
-- For purposes of the demo i'll allow null values
EXEC(@sql)
END
END

All of the code in this demo is available on my github page.

Cool, so that’s the easy part, you can execute that by passing any table in your schema to it and it’ll add the columns. LastWriteTime will have a default value of the time of execution or row addition. LastModifiedBy has no default due to how we use it, but you could set it to a value if you so choose.

The next part was a bit more challenging to figure out, I needed to parse event data from the CREATE_TABLE event and determine how to get the name parameter passed to it.

Event data is captured in a trigger by assigning EVENTDATA() to an XML variable. The data comes in a pretty easy to consume XML structure (i’ve formatted this one to make it look pretty, it’s normally displayed without whitespace or linebreaks).

The below event data is captured from the simple line:
CREATE TABLE MyTable (Integer int);

<EVENT_INSTANCE>
    	<EventType>CREATE_TABLE</EventType>
    	<PostTime>2015-09-22T15:40:15.827</PostTime>
    	<SPID>53</SPID>
    	<ServerName>SQLDEV01</ServerName>
    	<LoginName>Domain\Colin</LoginName>
    	<UserName>dbo</UserName>
    	<DatabaseName>Development</DatabaseName>
    	<SchemaName>dbo</SchemaName>
    	<ObjectName>MyTable</ObjectName>
    	<ObjectType>TABLE</ObjectType>
    	<TSQLCommand>
        		<SetOptions ANSI_NULLS="ON" ANSI_NULL_DEFAULT="ON" ANSI_PADDING="        ON" QUOTED_IDENTIFIER="ON" ENCRYPTED="FALSE" />
        		<CommandText>CREATE TABLE MyTable (Integer int);</CommandText>
    	</TSQLCommand>
</EVENT_INSTANCE>

As you can see, we have a lot to work with in this data set. In this example, we’re going to be particularly interested in the <ObjectName> object, since that contains the table name that we’ll want to pass to our stored procedure. Let’s create a trigger to do just that!

Use Development;
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TRIGGER [TRIG_ADD_AUDIT_ON_TABLE_CREATE] ON DATABASE
	FOR CREATE_TABLE

AS
BEGIN
	DECLARE @data XML
	DECLARE @tablename varchar(max)

	SET @data = EVENTDATA()
	SET @tablename = CONVERT(varchar(max), @data.value('(/EVENT_INSTANCE/ObjectName)[1]','nvarchar(100)'))
	EXEC AddAuditColumns(@tablename)
END

GO

SET ANSI_NULLS OFF
GO

SET QUOTED_IDENTIFIER OFF
GO

ENABLE TRIGGER [TRIG_ADD_AUDIT_ON_TABLE_CREATE] ON DATABASE
GO

That trigger above will snag the EVENTDATA() from the CREATE_TABLE event and add the columns defined in the stored procedure. This is a very extensible way to add columns on create and the best I could come up with on the fly.

Worth noting! If you want to enable this audit creation on the entire schema, you’ll need to modify the Trigger create a little bit, change:

ON DATABASE
to
ON SCHEMA

If there’s feedback or issues with the above scripts i’d love to see some pull requests on Github or just leave a comment.