My Summer Internship at Pinkston Digital

This summer, I got to intern at Pinkston Digital, and I couldn't have had a better experience. I was treated as part of the team, not just a Summer intern who would be leaving again in a few weeks, and I could tell that I was helping the other developers rather than getting in their way with my questions.

During my internship, I helped carry a website from project start to launch, do various work on sites that we maintain, transfer sites to a new hosting server, and other miscellaneous tasks.

Here are a few things I learned:

Modularity Really Does Make Your Work Easier

I hadn't really worked with modules before, and I was somewhat dubious about them at first - it felt like I had to write more code to include a module than it would take to, say, just write the <img> tag right there. But, as I worked with modules more and more over the course of my internship, I came to appreciate how much easier modules made using the same bit of HTML over and over again, not to mention how much easier they were to understand just by glancing at them. For example, I was told that we wanted to make all of the images on one of the sites we created to use the srcset attribute so that we can load larger images on retina displays. If I had done this manually, it probably would have taken me at least twice as long, and been a lot harder to maintain. Compare the HTML I might have had to write:

{% if img.getWidth() > 1440 %}
  {% set cropped = {width: 1440, height: 611, quality: 60} %}
{% else %}
  {% set cropped = null %}
{% endif %}

<img class="..." src="{{ img.getUrl(cropped) }}" alt="{% if img.alt|default %}{{ img.alt }}{% endif %}" title="{{ img.title }}">

versus including our little module:

{% include '_inc/modules/image' with { image: {
  css: '...',
  image: img,
  width: 1440,
  height: 611,
  quality: 60
}} %}

Now, imagine having to choose one of those and write it out twenty times. Even though the module has more code inside of its file, we don't have to deal with that when we include it, and it keeps our template files tidier and therefore easier to maintain. Not only that, but the module is easier to understand just by scanning it, thanks to the whitespace and simple names. In the plain HTML, our <img> tag gets cluttered up with a bunch of inline if statements which do not help you to scan it quickly.

Craft Is Wonderful

I had never heard of Craft CMS before I began working at Pinkston Digital, but it's now become my favorite pre-built CMS. One of the things that sets it apart is its use of Twig for the language you write in. Twig is a preprocessor for PHP that allows you to write in a different syntax than actual PHP, but it will get compiled into PHP when the code is run. Not only are Craft and Twig super easy to learn how to use (I'd say even easier than WordPress), but Twig feels more natural to me than writing in regular PHP. And, the way templates are set up is very easy to understand - blog/_entry.html is the template you're reading this post on right now. Isn't it easy to understand exactly what that file is for just by looking at its name and location?


I've always enjoyed being around people, but had a hard time with small talk and being able to carry a discussion with someone else for very long without a specific topic of conversation. Spending the summer with an entire office full of new people helped me improve my people skills dramatically, and gave me the opportunity to make new friends.

I've had a wonderful summer at Pinkston Digital, getting real-world development experience and meeting new people. I don't think I could have had a better time interning here, and I'm incredibly thankful for the opportunity they gave me