Recently I’ve been working on some custom development work for a few Shopify eCommerce sites. My work so far has included plugin apps and theme development.
On the theme development side, Shopify only exposes the front-end view code (HTML, SCSS, and JS) in the theme templates, enhanced with a templating language they call Liquid. The Liquid templating language seems exactly like Twig, which I’ve used countless times in the WordPress theme MVC framework I use. So the transition to Shopify theme development was pretty smooth.
On the one hand, keeping theme development exclusive to front-end code makes a lot of sense from a programming standpoint. It keeps the views ignorant to back-end controller implementation, which is something I strive for in my WordPress theme MVC setup. On the other hand, it can make any extra functionality initially more difficult to implement. In WordPress theme development, it’s almost too easy to add things like content filters, meta fields, and new taxonomies. In Shopify, that sort of functionality is relegated to plugin app development, which can help organize code and pays off in the long-term. Overall I think Shopify takes the right approach to theme development.
On the plugin app development side, Shopify provides a robust API for any functionality additions or modifications you might want to make. A standard Shopify instance is locked down on the hosting they provide, so all apps have to run on your own external server. The app has to either provide its own UI on its own domain that the Shopify admin links out to, or hook into Shopify’s Embedded App SDK to display in a frame within the admin.
I’m wrapping up work on two embedded Shopify apps built in PHP. The first provides extra admin fields to products, so admins can control some custom functionality for product pages. The goal is to provide something like an Advanced Custom Field experience to the Shopify admin. For now, the fields are configured by a developer through a JSON file, so the client admin doesn’t have to bother with creating and implementing fields. I’m using it to create product fields for custom warning messages and minimum order quantities. The second app integrates Shopify orders with Amazon S3 storage. The use-case for the client is to have customers upload images with a customized order, and store those images in an S3 bucket. Right now the app uses Shopify’s CDN as temporary storage for the image as the customer completes the order, and then hooks into Amazon’s PHP SDK to upload the image to the S3 bucket.
I’ve really enjoyed working in Shopify so far. I like the strong separation between back-end functionality and templating. It’s been a nice refresher from the many WordPress projects I’ve had lately.
My Experience With an HCI Master’s Degree
Several months ago I decided to change degrees in my master’s program at DePaul from Human-Computer Interaction to Software Engineering. I had already done over a year of coursework in the HCI program, and I really enjoyed the research and data analysis aspects of what I learned in those classes. As I progressed into the more advanced classes though, there was a significant shift from doing research and analysis, to learning about design elements and prototyping tools. I felt that this focus on design was not applicable to my current career, or what I see my career ever becoming. That feeling prompted me to look into other master’s programs at DePaul, and ultimately change to a Software Engineering degree. Luckily I didn’t have to sacrifice any of my HCI credits, they all applied to the Software Engineering degree electives. So far, it’s been really rewarding to see my programming work experience pay off in my education, and to supplement my daily work with new programming concepts I’ve been reading and studying in this degree program.
Holland State Park Illustration
This is a piece I did as a gift for my family that lives in western Michigan. There are countless beautiful beaches on the Michigan west coast, but Holland State Park has always been special for my family. I practically grew up on this beach, watching the sailboats go by. Besides the subject, I like this piece for the many different textures I was able to capture.
The Web in Developing Nations
Lately, my writing efforts have been entirely focused on my master’s degree in Human-Computer Interaction, so I thought I could at least post some of that work here for the time being.
I recently wrote a research paper about web usability in developing nations. I love discussions around web performance, so I was particularly interested in this topic. In the context of the class, I wasn’t able to dive as deep into the technical aspects as I would have liked, but I’m pretty happy with out it turned out overall. Here is a quick intro to the paper:
The internet is widely available and reliable for those of us in developed countries like the United States and most of the European Union. We have fast, highly accessible networks, ever more powerful technology to access these networks, and relatively good education systems to help us use them. But people in less developed areas of the world can have a significantly different, and often more challenging experience accessing the web. What are the problems people in these developing countries face in regards to web accessibility and usability? How can a better interaction with the web help improve the lives of these people? As designers, developers, and analysts, what can we do to improve this interaction, and why do we even care in the first place?
I’ve had some time to reflect on my work from the past few months, so I’d like to write about a couple of projects and some insights I’ve gained from them.
One of the organizations I work for is going through a major overhaul on its eCommerce platform. We are moving inventory to a new warehouse, changing shipping policies, adding new products, and working towards simplifying our customers’ experience. My role so far has been to rework our SQL databases to conform to our new data structures, rewrite the back-end (PHP) logic associated with those tables, and rework our store website’s custom admin panel. It’s been a lot of work, but I’ve really enjoyed the chance to stretch out my SQL knowledge.
Data structures seem to be a common thread between my work projects lately. My work involves different ways of organizing data, like JSON, SQL, and associative arrays, and how to communicate that data around different programming frameworks. It’s always satisfying when all the different parts of a system fit together nicely and churn out exactly what you expect.
Shawnee Forest Creek Bed
My dad, brother and I spent a couple days backpacking through the Shawnee Forest on the River-to-River trail a few years ago. It was a very hot summer, so a lot of the small creeks normally running through the park had completely dried up. We came across one such creek bed around mid day, and stopped for a meal break. I recently did this sketch of the area in graphite.