Snowy Drive Down the Peshekee Grade

Katie and I woke up at a small Ishpeming motel to find the ground covered in snow. This was more than a little surprising, as it was the second week of May, but the Upper Peninsula likes to misbehave in the late spring. We packed up the car with Logan and headed west on US-41 towards the Peshekee Grade to find the remains of the Iron Range & Huron Bay Railroad.

Straight portion of the old grade

Straight portion of the old grade

During the turn of the century, when the Champion-area iron was first discovered, an ambitious plan was made to build a 36 mile-long railroad to Huron Bay, MI. The track would go through the Huron Mountains and involved deep rock cuts, woodland trestles, a huge ore dock, and a dangerously steep northern grade. Because of the grade and the poor quality of work it was torn up, never to be used. $2.2 million was spent with only vague remnants of the grandiose plan.

We turned north on the Huron Bay-Peshekee Grade Road, which follows the railroad's route fairly close (at least the southern portion of it). The first section of the ...

read more »

Eastern Cliff of Clark Creek Valley

Cliffs have quickly become one of my more recent hiking interests. Like mountains, they offer some excellent views of the area, and the sharp relief can make for some interesting routes and rock outcroppings. Good cliffs are hard to find in the Upper Peninsula, thanks to the millennia of erosion gnawing down on the terrain. An unexpected ally can help keep the steep rock face from getting buried by its own sedimentation - flowing water.

Cliffs of Eastern Clark Creek Valley

Cliffs of Eastern Clark Creek Valley

A river or a creek flowing at the base of a cliff can wash away any sort of debris that is eroded off of a cliff. I've already seen a number of examples: downstream of the McClure Basin (Dead River), southeastern edge of Mulligan Plains (Mulligan Creek), and the deep gorge near Cliff Lake (Cliff River). Mulligan Plains is the most interesting; with steep slopes stretching along the entire eastern wall, it is only the southern half, with Mulligan Creek flowing at the base, that the cliff's steep rock face is exposed. Today I was hoping to find another exposed cliff ...

read more »

Beginner Web Developer Mistakes

With my introduction into web development coming from a static html/css direction, I've had to overcome several bad coding habits over the years. Most of these started with poor assumptions about the way websites worked. It took a crash course in php programming and a few hard bumps before realizing how wrong my first websites really were. Here are a few of those assumptions and how I built on them to increase my programming skills.

Each URL relates to a unique file on a web server

If you're only used to working with static html files than this assumption is largely true. Every different URL that a user visits on a web page is in reference to a different file on the server. Without any type of scripting, the file is merely a chunck of html and can only be changed by a webmaster physically manipulating the document. My first dynamic website used php include commands to pull a fixed header and footer for all of my pages, allowing me to make global site changes from a single file. When I finally started to learn more about php variables ...

read more »

Revisiting the Database Class

Several months ago I wrote a blog post describing how to create a database class that would wrap the native php mysqli connection. You can read that post here. Since that post was written I've learned a lot about proper php classes and realized that I made several mistakes in that blog post that I'd like to revisit.

Singleton

The database class that I wrote constructs a new read/write connection whenever it is instantiated. However, there is nothing unique about this connection - it remains the same no matter how many different instances you have of this class. There should be only one instance of this class in this case. If you have several different connections (say, a different user for each of your databases or schemas) then you'd have to look at passing connection information into the class through a factory class, but this case requires a singleton.

A singleton class is fairly simple to make. By making the __construct method private and ...

read more »