Microformatting the Resume

When a computer script crawls across the web looking for information (like Google's search robot) they need to do a lot of thinking to figure out what information is located on a web page. After all, web pages are written by humans for humans, with the data and information contained in our complex, contextual language. Web developers can help a script understand their site with robots.txt, xml feeds, and designated syntax (like using h1 tags for headers), and more recently, microformats.

The best way a script can understand text is by tagging it. This is how some xml formats work - you wrap the title with a <title> tag, set relative priority with a <priority> tag, etc. However, xhtml and older html formats only let you wrap normal web pages with standard tags, like p (paragraph), h1 - h6 (headers), etc. Microformats uses attributes of tags (like class names) to help computers understand what the content of a page is instead of the actual tags.

I recently dove into microformats with my resume, located on my ...

read more »

Abstracting the Resume

Recoding all of my subdomains to follow a model-view-controller framework has been a really interesting process. I've had the opportunity to experiment with different design patterns and techniques, especially in the realm of data handling and content delivery. Abstracting out my resume is a great example of how I'm handling my data in a way that provides necessary functionality at the moment while staying flexible enough for future rewrites.

Until recently my resume was written inline with html tags, merely included into different web pages as needed. This was a bad solution - every time I wanted to change a piece of it I had to wade through html tags. I couldn't place any dynamic content in my resume or reuse it in non-html formats. A cleaner solution was needed.

My first step was to divide up my resume into pieces. I have five main categories: objective, job history, skills, achievements, and education. The objective is a single line of text while the other four categories are lists. Some of these lists are lines of text while ...

read more »

Jake Meets a Bear (and Cub)

A few weeks ago, on an early morning hike in the Upper Peninsula, I met a bear cub and his mother. I've seen a lot of wildlife while wandering through the woods up there, including wolves, porcupines, and more grouse than I care to count, but this was the first bear I've seen outside of the car or zoo. Needless to say, this was a pretty intense experience.

Bear and Cub on Southern Blind 35 Hills

Bear and Cub on Southern Blind 35 Hills

I was circling back on a loop that took me down Blind 35 near Big Bay and up some of the southern hills (a hike that I'll cover at a later time). My main goal was to get a sweeping view of the Huron Mountain Club and the mouth of Salmon Trout River, which I finally obtained on a rocky outcropping a few hundred yards from the road. I could see down to Conway Point and over at the bumps of the Keweenaw far off in the distance. Tired from the climb, I sat down after taking some pictures and rested in the waking sun.

Looking northwest from southern Blind 35 Hills

Looking northwest from southern Blind 35 Hills

After a few minutes I noticed some movement a few dozen feet below me. The ...

read more »

Cookout Mountain and the Hidden Falls

There is a small mountain and tiny lake located on the western end of the Trap Hills right off of M-64. A blazed trail leads up from the road to the mountain, passing near the lake, before it heads south to the North Country Trail. Known by locals as Cookout Mountain and Weidman Lake, this area first drew my attention during a winter waterfalling adventure.

Snow covered Weidman Lake

Snow covered Weidman Lake

Starting in a muggy mid-morning summer day, I climbed the trail from the road and soon came to a tiny trickle of a creek. White rectangles nailed on the trees continued across the creek and up the next hill, but I turned away from this path and started heading upstream. The undergrowth was not particularly thick, but the creek had a most annoying twisting route within a tiny valley that forced me to repeatedly cross stagnant pools of water and mossy rocks. Attempting to cut straight paths parallel to the creek quickly led me astray, as it was difficult to make it out the creek's path from more than ten feet away. so I continued upstream along and ...

read more »

My Lifestream

As a web developer interested in creating a web presence I'm constantly looking for new projects to add to and inhance my websites. Some of these (like this blog) require a fair degree of committment to create new content, while others (like my about page) is a simple static page. I've always kept my eye on my social networks as a potential source of content for a new site, and the recent launch of my lifestream (lifestream site) fits my needs very nicely.

There's numerous examples of web developers using this technique on their sites. An obvious one is a display of a personal twitter feed on a page, usually on the home page or blog, as both a constant source of content and a way to collect possible followers. I've seen some more advanced uses too, including github activity.

I decided to do something a bit more ambitious with my lifestream. The concept of a 'lifestream' is a compilation of time-ordered online activity ( ...

read more »

Thoughts on Data Abstraction

Something that I've been working on a lot with both my work and personal web programming is data abstraction. The opportunity to work with several different handmade php frameworks has given me different ideas on what an effective data abstraction system should have. Without formal education, though, this post will be only based on my hands-on experience with the functionality I find myself using without true design patterns.

Data abstraction is a fancy word for treating the data as a separate entity from your web application logic. Web sites usually store their data in databases, using customized queries to pull information for their code to output and manipulate information. It doesn't matter what type of database or language you're working with; data abstraction can be employed whenever there is interaction with data (this post will be approaching this from a rough PHP - MySQL angle). Complex sites often have numerous queries scattered throughout the web site, and one needs to have intimate knowledge of the database structure during the ...

read more »