5 Years

Exactly five years ago today, on January 30, 2008, the very first copy of ProPhoto was sold. I dug through our database this morning to see who was the first purchaser, and was gratified to find out that Jacob Oldenkamp — the very first person to fork over their hard-earned dollars to buy this thing I created — is still running ProPhoto on his website. Thanks Jake! (By the way, if you have any interest in upgrading from P3 to P4, hit us up for a free copy, OK? Your money is no good here anymore.)

For those who are interested, below is a brief account of how ProPhoto started:

How it all began…

I would like to claim that I had it all planned out from the beginning, but the truth is far from it. In January of 2008, I was only a few months removed from resigning from my former job as a teaching and worship pastor. Not being able to find a normal job, I was nervously attempting to earn a living for my wife and 2 (at that time) kids by freelancing web development work and helping my wife out with her new photography business. When it came to web development, I really had no idea what I was doing, but I was faking it as best I could and learning as much as I could in the process. I did a few small websites for local businesses (a few are still up!) and in my spare time tried to build a professional-looking blog for my wife’s photography business.

She was using a free Blogger blog at the time, which was normal, but we wished she could have one of the cool new custom blogs that the very best and most successful photographers were beginning to have built. There was no way we were going to shell out $5,000 for a custom blog, so I started hacking around with WordPress trying to come up with something that fit the bill. I didn’t know anything about PHP at the time, but I managed to come up with something that we were pretty happy with at the time — It had a dynamic slideshow header, a prominent bio area, matched her logo and colors, and was single-column with the ability to display 900px wide images. It’s hard to believe now, but those things were very difficult to achieve for the average photographer back then. Here’s a screenshot of what her blog looked like:

It was only after building her website that the thought occurred to me that because I had built her site as a theme for WordPress, which was free and relatively easy to install, it could be modified to be used simply and inexpensively for other photographers ready to get a more professional-looking blog without breaking the bank. I even thought for a while I might give the theme away for free just for the SEO value of having a link pointing back to my freelance web-development company, NetRivet, and to my wife’s photography site. But, for a month or two, it was all just an idea in the back of my head, floating around with a couple other business ideas that I felt I didn’t have time to actually execute. If it wasn’t for a stroke of bad weather, I’m not sure if ProPhoto would have ever been created.

In late January 2008, I was working late at my “office” (really a desk in a local business incubator where I was doing most of my freelance work) when I tried to drive home in an awful ice storm and found my beloved Mazda B200 pickup was not up to the task. I called my wife and said I was going to crash somewhere at the office and come home the next day when the storm passed. Instead of going to bed (I couldn’t find a single comfortable spot to lie down anywhere) I ended up deciding to dust off the photography WordPress blog idea and work on it for a few hours. I ended up taking the theme I custom-created for my wife, and in a few hours made it more generic-looking, and set it up to support about 7-8 user customization options, all of which involved writing or editing the actual theme CSS file. After that was complete, I spend the rest of the night building out a simple website on which to sell the theme, recording my first-ever tutorial video explaining how to install and customize, and figuring out how to accept payment through PayPal and securely deliver the theme files through E-junkie. The website I built looked like this:

I finished all of this about 10am the next morning, having worked through the night. The next thing I did was jump on my wife’s account on OSP and posted in their website forum. I just explained in that forum post how I had made the theme for my wife, and adapted it for other photographers to use, and was experimenting with selling it on the website I had created. I still remember that it was literally less than 5 minutes after I pressed “publish” on that forum post that Jake Oldenkamp read it and purchased the first copy. That was a pretty cool moment for me, I remember being pretty excited that somebody had bought something I made (I was also pretty sleep deprived, which probably added to the buzz).

In hindsight, it was a pretty good sign that the first copy sold so quickly. Only two sold that first day, but sales started trickling in and growing steadily over the next few weeks. I never envisioned it would grow so much. I honestly hoped only to sell a few dozen copies at most and just take a little pressure off how many freelance web jobs I needed to find. Instead, within about two months I realized that I could probably make ProPhoto a full-time business. At that point I started dreaming up ProPhoto version 2, and slowly shutting down the rest of my web business (which really wasn’t much of a business at all).

The last five years have been a fun ride. Photographers seemed to really appreciate ProPhoto, and I kept racing to keep up with all of their feature requests. I hired my old friend Matt Dietsche to help with installations around a year later, he eventually came on full time. When Matt transitioned to doing support and then development, I hired my sister Janna to handle installations. As the years passed, we’ve added three more awesome full-time staff, Dan Lam, Steve Post, and Benjamin Tennant, and have been helped by numerous others. Just this past May we finally left the business incubator (we were using way more than our fair share and really no longer needed “incubating”) and moved into our own office in downtown Holland Michigan.

Thanks to everyone who has purchased ProPhoto over the last five years and helped us continually make it a better product. We have no plans of going anywhere or doing anything different anytime soon. Here’s to five more years!

P4 Auto-update details, build #1324

Today we’re pushing a free auto-update to ProPhoto4 for users on auto-upgrade-capable web hosts. In the past few weeks we’ve significantly refactored the behind-the-scenes code of the ProPhoto admin area in preparation for future changes. This particular update is meant to get everyone up to date with the latest changes and up to a totally stable build. You shouldn’t really notice any changes to your site or your admin area, except for maybe a slightly faster load on the ProPhoto customization pages. If you’re interested in all the details, see the changelog below.

-GOTCHA- If your host doesn’t do auto-updates, you can download the latest build from within your admin area under ProPhoto => Customize => Site Settings => Misc => ProPhoto Updates. Tutorial for updating from downloaded zip can be found here.-/-


  • re-write and refactor all admin javascript with unit-testing, AMD, and require.js
  • create build process for minifying and deploying admin javascript, for faster page loads
  • refactor all input and upload boxes, adding unit-testing
  • switch to .YAML input config files, built to .json for deployment
  • switch location of arrows on article prev/next links if alignment switched
  • fix gallery & grid placeholder edit button click failure since webkit removed support for event.layerX and event.layerY
  • fix some minor WordPress 3.5 layout and CSS glitches
  • fix a problem where mobile overlay grids were being set to width=0 when loading page via ajax from another single-article page
  • add mobile-specific text input for prev/next buttons as these need to be shorter
  • fix problem with mobile sites in certain scenarios having small extra white space added horizontally
  • fix bug with masthead slideshow set to randomize image where link-to URL for first uploaded masthead image is always used first, instead of the correct, randomized link-to URL
  • strip tags from WordPress pages/post titles when putting them into radio and select inputs, for those who put HTML in their post titles
  • don’t load all gallery images when we’re just creating previews for selecting and inserting – save time and memory and prevent timeout when users have tons of large galleries
  • allow translation of “images” text for gallery grid items

P4 Auto-update details, build #1289

Today we’re pushing a small free auto-update to ProPhoto4 for users on auto-upgrade-capable web hosts. This particular update is mostly to implement the strategy for dealing with the new media upload/insert functionality in WordPress 3.5 which outlined in my last blog post. Since WordPress 3.5 was released today, it’s time to push the promised auto-update.

Along with the compatibility issues for WordPress 3.5, there are also a handful of minor tweaks and bugfixes, as always. If you’re interested in all the details, see the changelog below.

-GOTCHA- If your host doesn’t do auto-updates, you can download the latest build from within your admin area under ProPhoto => Customize => Site Settings => Misc => ProPhoto Updates. Tutorial for updating from downloaded zip can be found here.-/-


  • increase menu ajax-content fetcher timeout to 10 seconds from five seconds, prevent loading errors on slow sites
  • catch Acer 1500 tablet as tablet, not mobile
  • add unit tests for ensuring that NrImgTag doesn’t strip valid HTML5 attributes “role” and “data-X”
  • workaround problem in IE8 where imgs inside anchors set to display:inline-block lose width
  • identify google Nexus 7 as tablet, not mobile
  • let body overflow with scrollbar on iframed grid admin page instead of using media-queries to control height
  • fix default values and css text input alignment for Advanced > Extra Bg Imgs option areas
  • Adding ‘$’ icon to paid starter designs in Manage Designs screen
  • only hide Jetpack plugin messages on ProPhoto customize screen, not everywhere
  • workaround rendering issue in Firefox, set max-width of links in bio columns to 100% so that imgs within also are constrained properly
  • put “last-post” class on last article, since on search results, posts and pages are mixed, and last might be page, not post
  • force thumbswrap to have a text-align:left, counteract whacky html in posts, like people wrapping placeholders in <center> tags
  • fix line-height bug with WordPress pages widget list when child of anchor img with line-height set to zero causing long links to overlap themselves
  • fix slideshow thumbnail alignment problem on rtl sites
  • don’t show primary nav menu alignment option if pptclassic selected
    also: fix problem with jquery 1.8.2 for menu alignment
  • Switched to dynamic default contact form subject line
  • rework ppFolders to use wp_upload_dir()
  • don’t display post published date on mobile if the user has selected “do not show post date”
  • identify kindle devices as tablets, not mobile
  • make suckerfish navs play nice with rtl
  • be careful that excerpted post img css doesn’t get applied outside of #content div, as it can screw up .article-content that gets ajax-loaded into nav receptacles
  • set heirarchical flag to false when asking for pages, to ensure we see child pages as well
  • don’t show mobile masthead modification options that weren’t getting used anyway
  • allow for spaces before/after html attribute equals signs in ppImgTag, since they are legal, but rare, but were breaking the html parser
  • fix rare JavaScript bug on foreign-language media-upload screen
  • prevent first/last lightbox overlay image from being downloadable in IE
  • mobile CSS tweaks, fix scrolling content area, normalize padding for footer elements
  • ensure that vertical widget link font settings don’t get overridden by css selectors that include ID, like “#bio a”
  • don’t use hard-coded prev/next text for mobile older/newer posts links – respect user input
  • switch from WordPress .button-primary/secondary to .pp-button-primary/secondary so we have more stability between versions and completely control the appearance of those buttons
  • only modify the posts per page returned by wp_query once when using grid excerpts, so as not to mess with recent posts widgets and other things that run the same filter
  • force use of old upload/insert button instead of WP 3.5 new media manager, until that feature stabilizes and we can better support it
  • don’t show comments at all on attachment pages, these tend to be sources of spam comments, for some reason
  • refine css for wp 3.5, ensure gallery buttons don’t appear until imgs uploaded
  • handful of Windows compat fixes for uploading font and design zips with new ppFolders methodology
  • fix non-appearance of “custom” option for masthead_display which enables the custom flash header upload
  • change add_menu_page() capability test from “edit_themes” to “edit_theme_options” because constant DISALLOW_FILE_EDIT can bork the former

Get a $30 rebate when you choose our recommended host, Hostpapa