Visual Intrigue is the home for my photography. Based out of Seattle, I travel the Pacific Northwest taking photos and I share some of my best work on this website. My interest in photography started with a recommendation of a co-worker, Bruce Kinkead to learn photography on a Pentax k1000, a very simple film camera with match needle exposure. The Pentax K1000 is a film camera, but provided a great platform to learn the basics of photography including understanding the principles of light and how to control it through the use of aperture, ISO, and the shutter. From this simple platform, my passion for landscape photography evolved and continues to evolve with every new adventure. I hope you enjoy this site.
After several years of supporting popular websites such as Stuck In Customs which is using the ever popular Wordpress blogging platform, I really became annoyed at the effort the poor, ofen underpaid, developers put forth altering Wordpress in ways that I felt were cumbersome to maintain. The story was the same, over and over again, spending hours to implement features Wordpress simply was not good at usually resulting in kludgy implementations of code. The problem was further compounded by the notion by key decision makers that believed Wordpress was the best solution for everything ranging from e-commerce, content management to just about anything you can think of. From a code architecture perspective, the imfamous Wordpress "loop" is just a bad design in general and without lots of caching easily consumes all the memory and cpu on a server. Even today, my professional opinion is that Stuck In Customs loads slow and requires a lot of extra work to make it fast despite using several layers of caching including Cloudflare, a popular website caching service. Not to mention that any Wordpress site these days might as well just paint a target on them that says "hack me". Lastly, just about every Wordpress site out there looks the same using cookie cutter recipe that while arguably has been successful for a lot of people, is not the entire solution. For example, I will pick on poor Stuck In Customs which uses SmugMug for portfolio management because guess what, Wordpress is not good at rendering imagery for photographers. I dont know about you, but personally photography is about portraying your your art in the best possible light and quite frankly I am not convinced Wordpress is the best solution.
The Visual Intrigue website started off as a platform to post my photography as well as stay up to date on technology. I started this project using Drupal with a Postgresql database backend and quickly realized that I was spending more of my efforts modifying Drupal to support features that I could of quickly built on my own, similar to my experiences with Wordpress. What I needed was a toolkit, with good libaries. I already knew Python and I was becoming fairly disgruntled with the direction of PHP so Python-Flask was a natural choice. I felt that Django was overkill and I really wanted use a NoSQL backend to help reduce the number of queries to a database to optimize performance, so MongoDB was a natural choice. Lastly, Python-Flask fits well in microservices architectures, whereas Django is a fairly monolithic application. With Python-Flask I could separate out parts of the site into services to make the code base easier to maintain and the release cycle faster. Futhermore efforts in performance optimization were easier due to the modular nature of micro-services architecture.
I continue to iterate on the Visual Intrigue code base. In a short amount of time put together a highly functional photography site. Sure there are problems here and there, but the good news is that they are fixable. I am not constrained to some one elses' code that just plain does not work. Some things I plan on working on in the future include an image rendering engine using optimized go-lang and VIPS similar to 500px, and implement at database tier caching layer based on memcache to speed up query performnace, which is already fast, but not fast enough for me!
You can find the project on github.com.