I first became familiar with Mark by using his ExpressionEngine add-on called Stash. He’s a developer with a bit of design chops as well. We took some time to get to know Mark better.
I love that your twitter bio starts with “I’m a dad of two beautiful boys”. Would you mind sharing with us a bit about your family?
I live with my beautiful partner Tracey in the colourful Hanover area of Brighton. We met 16 years ago when we both worked in London, and hatched a plan to escape to the seaside. Tracey works at the University of Sussex and I do my thing from my office in town, a short walk down the hill from our house.
We have two lovely boys. Our eldest Jacob has just started school; he’s fascinated by dinosaur bones and outer space, and we like to go fossil / alien hunting together. Samuel is 9 months old, has four teeth and is nearly walking; Sammy loves birds and being tickled!
Sammy & Jacob
Alien hunting sounds pretty fun. Has Jacob found anything in those expeditions?
He found a fossilised shark’s tooth and some unusual volcanic rock. No aliens yet though :) I’ve got him a metal detector for his 5th birthday next month so we can search for treasure too.
Well hopefully he won’t read this interview and know what’s coming next month!
Tell us a bit about Hallmark Design and your role there.
Hallmark was founded in London in 1989 by Adrian Newton with 2 other partners. It quickly established a reputation for excellence in brand identity, corporate literature and packaging, and landed some big clients, notably P&O, Boots and the BBC. I joined in 1996 as a junior designer and earned my chops designing packaging, branding, exhibitions and much more. It was an exciting time to be a graphic designer.
In 2005 we moved the office to Brighton and I became a partner with responsibility for leading our web design and development efforts. As well as the web my remit now includes mobile application and digital product development, and design / user experience strategy.
Fossil Hunting with Jacob
Wow! That sounds like an adventurous history for you and Hallmark. So how did ExpressionEngine get introduced into the picture?
Early on I realised we needed a way for our clients to update their content, and so I wrote our first in-house CMS. It was rudimentary and got the job done, but crucially it was useless at scaling up to meet client’s expectations as their requirements evolved. My next attempt was intended to be more of a framework for slotting modules in, but that was founded on was was essentially a poor anti-pattern and became a nightmare to maintain as the complexity increased.
At about this time open source content management systems were becoming popular and I experimented with them all before eventually finding a promising system called MODx. Using it was a revelation - template variables, snippets, chunks, the document tree, oh my - and it quickly became my tool of choice for bread-and-butter corporate websites. Around the same time I resolved to learn far more about programming and adopt a MVC framework for the more complex applications we were beginning to build. I found CodeIgniter and was seduced by the fantastic documentation, and quickly started building apps with it.
Inevitably I ended up pushing MODx (Evolution) well beyond the limits of it’s capabilities and decided the only viable approach would combine a modular MVC framework with a super-flexible client-friendly admin panel. I’d been aware of ExpressionEngine for ages and had tried the early beta but decided it wasn’t for me. I heard that EE2 would be built on CI and that was enough for me to look again. The alternatives were the 2.x iteration of MODx (Revolution), which I quickly gave up on (it’s an incredible piece of work, no doubt about it, but over-engineered); and Silverstripe, which I tried on a few sites but grew to dislike (the bugs generally, the ORM specifically).
So, ExpressionEngine. I gave it a shot on a biggish site and loved the way I could extend it so easily. It was strange getting used to the ‘bucket’ concept of organizing content, being used to the document tree paradigm, but it made sense on so many levels. As did so much else: template tags, fieldtypes, entries, categories, plugins, modules, extensions… I resolved to stick with it for a while. And here we are now, using it for most of our site builds.
Ah, the CodeIgniter seduction. I remember it well.
How long did you work with ExpressionEngine before you wrote your first add-on?
I started writing add-ons right away. I wrote a bunch of them for my first few EE sites in the period September 2009 - February 2010 and released some of them - such as Search_fields and Switchee.
That leads us to the latest ExpressionEngine hotness, Stash. Tell us a bit about how Stash started off. Was it a client project need?
I read a brilliant article about template partials by John D Wells. I’d been using a template library in CodeIgniter to do much the same thing, but never grasped that a similar approach was possible in EE. Like most people I had embedded a header and a footer into a template and ended up with multiple redundant templates repeating this same structure; the approach had also led to various parse order issues - such as passing an entry title from a channel entries tag in the body to the
<title> tag in the head - that inevitably required further nested embeds.
John set out an approach whereby blocks of content could be assigned to variables and be rendered in a wrapper template. This permits you to use a common layout template containing your markup and has the important benefit of separating the “view model” (data fetching and presentational logic) from the view (html). In practice this leads to much less duplication and makes templates far easier to update. It also means that the view template could be swapped out for another on the fly, which opens up all sorts of possibilities.
I was sold on the idea and set out to make a ‘partials’ add-on that did all the things I wanted. I happened to be starting work on a complex project at the time and the early Stash grew out of that project’s very demanding requirements.
It seems a number of EE devs were really inspired by John’s article. That’s great!
Stash has excellent reviews and comments on devot:ee and its popularity seems to be growing. Did you ever give any thought to making it a commercial add-on?
The template partials pattern is something of a paradigm shift for most EE devs and when I released Stash I knew that it would take time to sink in. I didn’t want price to be a barrier to adoption, so I made it free.
Stash has become a tool I rely on, and the feedback from the EE community has really helped to make it more robust and feature-rich than it would otherwise be. There have been some excellent contributions from brilliant devs such as Rob Sanchez and Justin Kimbrell. As I have gained so much from Stash being free and open source I feel it would be unfair to make Stash a commercial add-on.
I really respect that. An open source solution like Stash would only have the opportunity to grow like it has without the restraints of a commercial license.
How has support been for Stash? Has the paradigm shift led to much of the support requests being centered around simply understanding what the add-on does?
I receive about 5 support requests per day either through devot:ee, the github issue tracker, twitter and increasingly by email. Luckily I enjoy answering questions and often find that it helps to clarify best practice.
Many support requests are caused by misunderstandings around parse order. Low has put together these excellent resources explaining parse order:
It would be really great if everyone could study these and get to understand how the Template parser works. Of particular relevance to Stash is the direction that module and plugin tags are parsed. Understand that and you’re halfway there!
That’s great advice. Low has contributed some really helpful detail to developers in many contexts.
So how can someone new to Stash best learn what it can do and how to use it? Is your documentation the best starting point?
I’d suggest reading Adrienne’s article on EE Insider for a great introduction to Stash and it’s capabilities, before taking a closer look at the docs and the examples therein. The devot:ee support forum is becoming a useful resource for Stash techniques and code samples, and is the best place to go for help with any questions you might have.
So how about your other work at Hallmark? What does a typical day look like for you?
It’s busy! I usually work between 10 and 11 hours a day, but I’m really trying to cut that down to spend more time with my family. It’s easy to forget that work is only a means to an end, and we only have limited time on this beautiful planet to enjoy it. I was reminded of that recently when a friend of ours died suddenly; always prioritize the people you love.
After dropping my son at school I walk down the hill to my office and spend an hour or so dealing with emails, checking our various web servers and generally doing the boring admin stuff. After that I’ll dig into one of the projects we’re working on; These days I can’t always be involved in every project we undertake but I try to be involved in the planning and concept generation stage at least, where my experience is often needed to guide ideas in the right direction. Afternoons are either focussed on programming or pure design work, I find it best to do one or the other to avoid context shift. Early evenings I’m typically wrapping up the day’s work, maybe deploying a site or planning the next day’s tasks. Then home, switch the gadgets off, relax.
If you’re not the only one building sites at Hallmark, can you tell me a bit about the development team?
At the moment I’m the only in-house EE dev :-) We’ve been working with freelancers on many EE builds, notably Adam Khan (who lives nearby) and John Rogerson, both brilliant and experienced developers.
We’re still looking for a talented ExpressionEngine focussed web designer / developer to join us full time.
That’s great. How should interested EE-focused designers / developers get in touch with you guys?
Please send your résumé and some links or details of your best work to firstname.lastname@example.org
Mark & Jacob
Mark, I really appreciate your time during the interview. To close us out, is there anything you’d like to tell our readers? And how can they follow you on the web?
My pleasure. If you have any questions about my add-ons or just want to follow me, I’m @croxton on Twitter. Lastly, I’m a guest on the EE Podcast on October 4th where I’ll be talking some more about Stash and add-on development; be sure to listen in!
Make Some Noise