Welcome, Guest | Sign In

Submit - Cancel

What's With the Big Pause?

When I first decided to create an online blog I wanted to avoid a common pitfall of many other blogs: lack updates. While there were a few empty months in 2009, it feels like a did a good job with regular posts every week or so... Until the New Year rolled around. This is the first blog post in over six months.

Starting in mid-November a few things changed that really impacted my regular blogging. The first, and most obvious one, was winter. While I do enjoy winter adventuring, driving to the Upper Peninsula through the snow to come up with fresh content for the hiking side of my blog was something I decided to avoid. That, coupled with decrease daylight and other seasonal blues, dampened my motivation to write new hiking blogs.

Another problem that I ran into was a decrease in time. Not only did I start working later hours in November at my full-time job, but I started a large contract project that ate up any free time I normally reserved for my personal site development. My site was half rewritten at this time - I was starting to implement a model-view-controller framework (that was later scrapped for my current, very awesome framework) - and I was trying to concentrate on too many independent web project at the same time.

So, to sum that all up, I simply...

read more »

Web Development Goals

I've always been a bit of a goal- and task- orientated person. The only thing I enjoy more than making a long to do list at the beginning of a week is crossing the items off of the list one at a time. Now that I'm a 'real adult' with a full time job and puppy, I decided to create a list of goals to aim for over the next five years. Most of these goals are under the realm of self-improvement; financial security, physical fitness, etc. I wanted to post about some of the web development related goals, both to give readers an idea of where I'm expecting my web skills (and, directly, personal web sites) to head in the future and to place additional pressure on myself to continually progress on the goals.

Learn new programming languages

Over the last couple of years I've managed to teach myself most of what I know of xHTML, CSS, SQL, PHP, and Javascript. However, there are a few languages that I want to learn that I've dabbled in the past. I use some XML, mostly in the form of KML and RSS, but I don't know much about XSL and XSLT. I'd like to be able to create my own XML schemas and parsing templates to the point where I can create entire xHTML web sites using clean XML data. Another...

read more »

Tips on Personal Sites

Over the last six months or so, I've found myself spending a large amount of time working on personal websites. What is a personal site? Well, as a web developer I work on three broad categories of websites: fulltime-job websites that have to work within branding and technological constraints, freelance projects with some flexibility on design and implementation, and personal projects that I don't get paid for. They can range from blogs to resources, and there are a couple of things I'd like to keep in mind while I work on them.

There's still a client involved

And it's me! The website is a representation of me as opposed to a company or project. This is nice in some regards, as I have complete control over the design and implementation of the site, but can also lead to easier procrastination and more fickle design changes. I try to treat these types of projects like a paying one, setting up deadlines and some restrictions on how long to spend tinkering with the design and layout. While it's nice to launch the perfect website, sometimes its better just to tinker with it after its online.

Balance the promotion

No matter what kind of website I end up building, it's still a representation of me for the entire world to see. Depending on the site,...

read more »

Epic Hiking Adventures Plan

One of my fondest memories of my years in Houghton, MI is the waterfall project of 2008-2009. Even though it took an actual project to get me to explore the beautiful wilderness of the Upper Peninsula, I really looked forward to my hours of wandering through the woods. After the epic adventures of those months, living in Appleton, WI sometimes seems bland. Now that I have a job and regular hours, it seems like the right time to start a new project and enjoy the wild outdoors of the Upper Peninsula again.

When I started to plan out this new project I had several possibilities. I could go back to waterfalls, expanding the radius west to the Porcupine Mountains and south to Wisconsin border. Another option would be to switch to other geologic features, like mountain peaks or lakes, and create a sister site to my waterfalls one to document my visits. However, I decided that numerous hikes would end up being a hassle, especially since these types of projects involve dozens of sub-mile-long hikes and lots of driving in between. Instead, I decided to limit myself to twenty adventures over the course of a year, with each adventure taking approximately one day to complete. This will allow me to drive up on Friday night, explore on Saturday, then drive back down and rest on Sunday...

read more »

MVC CSS Stylesheets

While working on redoing my website using a custom model-view-controller framework I decided that it was a good time to do some extra cleanup. After all, cleaning up the backend only changes the content portion of the site. There's much more to websites - styles, behaviors, cache control - then the content. In the interest of cleaning up my website I decided to take my MVC framework to the next level and use it to create my stylesheets and Javascript in real-time.

The primary benefit of MVC frameworks is to simplify code logic and remove duplicate code. With all user requests being transferred through the same routes and controllers, it's easy to whip out extra html pages or make site-wide changes by editing a few lines. Common SQL functions, AJAX calls, and classes can be used across different pages and sites easily without duplication.

There's a lot of duplicated code in my assets. I use Erik Meyer's reset stylesheet, a global set of style rules, jQuery, similar lightboxes, etc across my different subdomains. I could include each asset as a separate file, but that setup would create an increasingly long list of http requests, which is bad for website optimization. My adventure map, for example, would need at least 5 Javascript assets: Google maps settings, jQuery,...

read more »

Using Headers for Caching

One of my main goals while redoing my website is to optimize my content, both on the frontend and backend. The frontend is something that I've always considered to be the most important in terms of a fast user experience - I'm not crunching enough data on the backend to worry about long processing delays for users. However, depending on the connection, I've noticed delays upwards of five seconds in between pages, which is completely unacceptable.

There's a few things that a web developer can do to speed up the frontend. Decreasing the number and lowering the size of the unique elements are two of the most obvious. If the user only has to download two small stylesheets instead of five, your site will appear faster. What I wanted to do was take this a step further; repeat visitors will not have to download any new stylesheets, scripts, or images. The only http request will be the xHTML content. This can be handled by using the built in caching components of the internet.

There are several different ways that website can cache information for users to view it easily, including on the user's computer or on a proxy server. That doesn't matter too much, as long as the header information passed between the user and the web server understands that there is a cached version...

read more »

Website Overhaul

It may be no surprise to any of my long-term visitors, but I've decided to perform a deep overhaul of my website. Based partly on my recent introduction to model-view-control frameworks and partly on research into web caching and optimization, I've spent a good chunk of time analyzing my current and future website functions in the hopes of streamlining the backend code and optimizing the frontend. There are several goals that I have in mind for this overhaul, most of which will stretch my current programming skills.

Model-View-Controller Setup

The idea behind this sort of programming is breaking everything up into separate, reusable objects. All requests to the website are directed to a primary router, which interprets the request and pulls a controller to handle the page. A controller is a set of instructions based on the page type (example: home page, blog post pages, etc) that sets variables for the final page. The controller may talk to a model, which is the 'logic' for the site (usually a database object), and pull additional content for the page. Finally, views are included and passed variables to display a unique page per URL.

The benefits for this system are numerous - once the system is setup, that is. One database model can handle all SQL commands...

read more »

Blog Updates and Comments

This blog was started in March of 2009 during a pivotal moment of my life. I had recently been fired from Michigan Tech, my first post-college job, and was using my free time to create a website to allow me to both market and develop myself professional. With the new site's blog I hoped to discuss web development, hiking, and personal stories in a manner that was both professional and helpful for other people.

Since its creation in March the blog has already had several major looks. I first planned for it to be part of my major website, with similar layout and designs used in the blog pages as my portfolio. After working with this for several months, I soon realized that this was restricted both the opportunities for the blog's development and affecting my search engine ranking. Starting in mid-July I broke my main site into subdomains, which eventually helped the page rank for each section and allowed me to expand both the front and back end of the blog. The current look for my blog was rolled out several weeks ago, and though I already have a more object-orientated view for the backend already, I've grown quite fond of the layout.

Since the latest blog design has been rolled out I've been able to develop a few different tools more customized for a blog then my...

read more »

A KML Sitemap

This post assumes basic understand of website structures and XML documents.

After finishing my adventure map (map.jacobemerick.com) a few weeks ago, I wanted to share the KML information online for people using Google Earth or Google Maps. A KML document is merely an XML document with special tags and data that is related to mapping - it includes latitudes, longitudes, and descriptions of geographical points. My adventure map parses KML documents to display the routes, photos, and points viewable on the map. However, in order to offer these KMLs in a way that search robots could view them, I had to do some modifications.

The first step was making sure that my KML documents were being read as KMLs. All of them are generated from a single PHP script, called processor.php, and I wanted to give them a content-type so that programs, including search robots, understood that it was a KML document. This was easy to add in my PHP document.

echo header('Content-type:Application/vnd.google-earth.kml+xml');

Since I have a large number of KML documents being generated by my script, I added this line in front of the document types that I wanted to be indexed and understood by programs. Even though...

read more »

Resetting to Subdomains

This post assumes some intermediate understanding of using .htaccess files, mod rewrite, and website structure.

After several months of launching my main website, I took a good hard look at my traffic and Google ranking. I soon noticed some major problems with the way the site was structured and how Google was treating my content that would only increase with time. In order to strengthen my rank, and better divide my website's content into manageable entities, I decided to utilize subdomains.

Previously, my website was divided up by simple folders, and the URLs reflected this. My waterfall site was under jacobemerick.com/waterfalls, and my blog under jacobemerick.com/blog. However, search engines still see all of this under one domain, and this started to create a very large and diverse range of content types under jacobemerick.com. My page rank was suffering simply because I had everything from web development blog posts to waterfall photo and information under a single domain. Also, as I would like to continue to diversify the services offered by my site beyond the current four sub-sites (blog, portfolio, map, and waterfalls), this problem would increase over time.

A subdomain is simply an extra word in the domain name that separates it from the main domain....

read more »