Stand With Ukraine. Stop Putin. Stop War.

Hello! Welcome to my humble web presence. I'm Mark Hamstra, 31 years young, wearer of many hats at modmore, resident of Leeuwarden, the Netherlands. Most of my time is spent building and maintaining awesome extras and tools at modmore, but I also love gaming, cooking, and my dogs. More about me.

This site is where I share thoughts, cool projects and other oddities related to MODX, xPDO and ExtJS. I also write about MODX regularly over at Sometimes I post three blogs in a week, sometimes there's nothing new here in a year. Read a random article.

Is the blog too long? Here's the summary.

All too often, people complain about the MODX documentation not being up to par, but far too little is being done about it. Even something as simple as reporting an error or missing information is vital – and something everyone can do. I'm going to challenge you to file 200 documentation bugs/request, and when we hit that milestone I will myself dedicate two full working days to fixing as many as I can.

What's wrong with the docs, and why does it matter?

Different people have different learning styles, and some need more handholding then others. There's also a ton of different aspects to MODX between the ins and outs of templating, the extensive API and on using the manager. Many of these are learned through trial and error, but not everyone has the time, resources or patience to learn then all. Documentation helps there. But in the past, developers have been far too busy to document it all – 2.2 marks a new era where most of new functionality was documented pre-launch – thanks guys!

That does leave a lot of older docs waiting for the same treatment though, and that's where you come in.

Found something wrong? Here's what you can do in 2 minutes.

  1. Go to and click the "New Issue" link in the left hand side or go straight to the new issue page. Note: you need to be logged in to the see the link in the left-hand side menu. If you don't see it, login with your account (button in the top right).
  2. Fill in the form you see. Give it a descriptive title, and make it actionable. For example, "Login snippet does not mention placeholders for tpls" is much more useful then "Login docs flawed omg".
    The actionable part means it has to be specific enough that it can be executed in a reasonable time frame. While the system settings aren't all in the docs, making an issue titled "System Settings docs incomplete" (I think that's actually in the tracker right now) really doesn't make it high in (my) priority list. It lacks the part in me where I can see what the user was looking for, and I really can't just add all settings there.. that'd take me two entire days at least.
  3. Hit "submit" and go back to doing what you were doing.

If you file a problem with the docs that is actionable, it may take you a few minutes to write it up - but the odds are pretty big someone else will spend more time to address the issue. The result of that may save others hours of time searching for the right information in the future. Your two minutes can have a huge impact.

I would like to challenge the MODX Community.

The challenge is really simple.

We've got 14 open issues (40 total) in the docs bug tracker right now. Let's make that at last 200.

And then what? What do I get out of it?

When we hit the 200, that's a nice to-do list and I will personally dedicate two full working days to fix as many of them as possible. I may not be able to get them all done in that time, but I hope others will join this initiative and pledge to spend a portion of their time contributing to the docs. This effort will hopefully have a significant impact on the quality and completeness of the documentation, and will benefit a lot of people and of course the MODX Project.

What's the catch?

Nothing. While I've got a pretty broad knowledge of every area in MODX, a lot of people don't share in that knowledge and I don't see the flaws in the docs that newcomers do anymore, but I am able to explain it if asked. I believe that we as a community can make the docs better, and I'm backing it up with two entire days of work myself. In case you like to put a price tag on stuff, you could consider that a donation worth € 1 142,40 (or $USD 1,464.27) in labour (including taxes) to the community.

So, are you in?

What do you say? Are we going to make this work? Will you, from now on, file every issue (small or big) in the documentation, in order to reach that 200 issue threshold? Or are you going to pledge alongside myself to spend a certain amount of time on the docs when we do? Let me & the community in the comments, and share this challenge with people who work with MODX to get the ball rolling..

Today I was shocked by a (re)tweet linking to an infographic on the anatomy of templates in wordpress (you can find it here), so I decided to spin my own version for templates in MODX. Without further ado, but with great thanks to Jay Gilmore for providing very valuable feedback and preventing me from infringing MODX copyright and trademarks, here it is:

MODX is a robust and flexible content management framework, but it's important to remember the basic anatomy of a template to make the most out of it. Let's have a look!

(You can click it to view the original sized one. Which is the same size if you're looking at this site from a proper computer, but may be easier to zoom in on from a mobile device of sorts).

That really sums it up, though I promise I'll do a proper tutorial on template best practices in the future :)

While I m not much of a reader, one of the lesser reasons I dropped out of uni, I recently ordered and read Ethan Marcotte s "Responsive Web Design", and I m glad I did.

For those that are unaware, the book is published by A Book Apart. They publish "brief books for people that make websites" – and that definitely describes this book as well. In only a few hours I 've went from cover to cover, which is a pretty impressive if you barely read those paper things anymore! ;-)

Just a note on the Title

While the title of the book specifically talks about Design, there s no actual designing involved in the book. You shouldn' t expect best practice UX studies on certain screen sizes.

What you should be ready for is a wealth of hands-on examples of using CSS for developing your responsive websites, many of Ethan s experiences and a shift of perspective from fixed width to fluid or hybrid development.

The Author: Ethan Marcotte

I didn' t know the author before reading the book (that's probably my own fault), but apparently he had given a presentation or two about this thing based on web standards and an ever evolving internet with more and more devices every single day. He coined it Responsive Web Design and wrapped it all up, after 2 years of study and application, in a book with no more than 140 pages.

His experience shines through in every example, explanation and anecdote, while not losing the relaxed yet witty type of writing.

Contents of the book

The book basically revolves around the design of a website to distinguish robots from real humans. This design contains many of the pitfalls that you are likely to encounter in your own responsive projects, from images flowing out of its container to what features are needed for mobile users, and it also talks you through a progressively enhanced image slider without the overhead when not supported.

It s chockful with CSS and markup examples, topped up with strategy and anecdotes and experiences. After reading this book thoroughly you are definitely ready to get started to changing your focus to responsive.


Definitely recommend getting the book, and reading through the next generation of web design practices.

There are times you will want to accept donations or payments on your MODX-powered sites. In my case I wanted to offer the possibility for users to donate towards one of my open source projects. So I whipped up a snippet to help me do that.

My requirements were simple.

  1. Customizable form to match layout
  2. Simple 2 (3) step procedure: type in amount, make donation, thank you.
  3. Ability to display a configurable "thank you" message
  4. Some kind of "posthooks" allowing you to (programmatically) do other stuff based on a donation. For example when people donate for HandyMan, I want to be able of creating a user account for them so they can access the HandyMan member only area (in the somewhat near future, that is). I don't need that for others, so it needs to configurable :)

After spending some time figuring out the PayPal API calls to use for these requirements it was finished pretty quickly, and the open source landing pages on this site now have one of those forms each.

How it's done (slightly technical)

The package (which I called mhPayPal as I needed a name to get started and didn't try to come up with something more fancy, open to suggestions in the comments!) consists of 2 snippets. One snippet, makeDonate, is used to display the form. It basically wraps a chunk which contains a FormIt call and the html for the form.

The second snippet, makeDonateHook, is registered as a posthook on FormIt which is triggered when the form is submitted. It takes some properties (via the FormIt call) and of course the amount and currency. It then uses a slightly modified version of this PHP PayPal class by Drew Johnston (which is the same one I used for SubscribeMe) to send a SetExpressCheckout API call (which prepares the token for the checkout) with the filled in and calculated data.

After redirecting to PayPal, and returning to the same page you were on when filling in the form, the makeDonate snippet will intercept the request and once again use the phpPayPal class to confirm the payment (DoExpressCheckoutPayment API), and to show the success message. Under the hood, there is data stored in the MODX cache to be able of matching data against the right token.

Does it work? Can I use it too?

Yes, and not yet!

You can see it in action on one of my open source pages (be aware that the forms are live though - I appreciate your donation :P). As I'm not entirely done with the package (need to implement requirement 4 still) I haven't yet wrapped it up for the general public, however it will probably pop up on my Github in the near future is available from Github and possibly in the MODX Extras Repository in the near future.

It's insanely easy to use (simply call the [[!makeDonate]] snippet in your template or content and, if you configured your PayPal credentials, you're done) and I think will be an extra value to those people and institutions that rely on donations and need a real easy solution for both visitors and developer.

Let me know in the comments if you have a project coming up this could be useful for. Perhaps you can also come up with a better name for the package while you're at it? :)

We're closing up 2011, of course cramming all the leftover work into one or two weeks, and with that I wish you Merry Christmas and a Happy HandyMan! Yes, you read that right and I (think) I spelled that right. Today - Christmas 2011, December 25th, 2011 - sees the release of HandyMan, the Mobile Manager for MODX all of you have been waiting for.

(At least - if I can drag myself away from all the Christmas celebrations for just a few minutes to upload the package to the Repository. This post was written a few days ago and I just told it to publish itself on December 25th cause, well, MODX can.)

Merry Christmas & Happy Holidays

Let's get this out of the way. 2011 was a great year for me personally, in which I dropped out of school and landed into this MODX world full of fascinating development projects, and the prospect of doing something I actually seem to like for a living! With over 25 clients in the first year of business I don't think I did too bad either!

I hope your year has been equally exciting, and that there's many interesting things on the shelve, waiting to be dusted off and executed. In memory of the one and only Steve Jobs, I hope we can make 2012 the best year yet

Merry Christmas & Happy Holidays!

Back to.. HandyMan!

Right - HandyMan. That rock-solid jQuery Mobile foundation, with some MODX love sprinkled on top. Or based on the time it took to get this ready for a public release - nearly nine months - a helluva lot MODX! HandyMan allows you to manage your MODX content using virtually any mobile device, including tablets, using a stripped down, mobile optimized UI.

For those who are unfamiliar with it, and don't understand what I'm so excited about - you should check out the following Promo video made by Jared Loman:

That probably told you very little new information.. but c'mon - it had to make you grin right? It's Christmas! :D If you really want more in depth information of what HandyMan is, head over to this eight minute screencast, also by the one and only Jared Loman

But hey.. why not just download the package, and get it up on your own site to start managing your content from a mobile device?

More information on HandyMan can be found on its dedicated site: MODX Mobile.


Somewhere in the Spring or Summer of this year I decided I wanted a new website. The old one, while functional, didn't quite speak to me anymore and the blog was simply tucked away too far to ever become a prominent part of the site.

A few different mockups followed, and eventually I found some people (Romain Tripault and YJ Tso most notably) willing to help me out with the whole process of getting a new proper design and get something launched. Now, December 2011, it's finally there.

What I wanted

  • Responsive website - Mobile is the future and I don't want to scare my visitors away by providing a bad user experience on other devices.
  • Automatically displaying related articles. Coincidentally I had a custom development client who wanted the same, which resulted in getRelated which is now powering the "related" widgets on the site.
  • Clean design. Fast, accessible. Syntax Highlighting to make code readable.
  • Much more focus on MODX related articles on the blog. Regularly posting fresh and interesting MODX content with visitor interactions through comments (perhaps a guest post someday?) will really thrive this site forward into the "MODX Vibe". (Read my take on the all new Articles plugin)
  • Better representation of the work I do and did for prior clients.
  • A demo site for some of the addons I developed.

Well, you're looking at the result!

I'll be finishing up the migration of the site over the next few days, including the comments that were left there on migrated posts and adjusting links to my site where-ever I can. Oh, and you may want to watch this space on December 25th 2011... to stay updated you could use my MODX 2.2 Dashboard Widget! :)

This website (and domain in general) will start housing many different sections in the next coming months, and the blog is only going to grow and grow - so come back some time! ;)

What do you think of the new design and in general - this website? Any requests on articles? Feel free to leave a comment (here, or on any article of course!) or to get in touch.