Add a JSON API to Any Static Site Generator
Static site generators output HTML, but they can output JSON too. Here is how to add a JSON API to your Hugo site, and why the technique works with any SSG.

I am a Developer who does web good and likes to do other stuff good too.
Written on April 23, 2026
Static site generators output HTML, but they can output JSON too. Here is how to add a JSON API to your Hugo site, and why the technique works with any SSG.
Written on January 5, 2026
The Zed editor is one of the more interesting new projects in a long while. The only problem is I use PHP and Zed sucks at PHP. One thing that sucks is Xdebug support. I finally got Xdebug working with the help of Claude. Notice, however, that I didn't say Claude got Xdebug working.
Written on December 16, 2019
Thirteen essential episodes of Star Trek: The Original Series, picked and ordered by a coworker who knows his Trek. A curated list for introducing your kids to the franchise.
Written on March 30, 2018
I played the Edward Gorey inspired card game Gloom the other day. The game and mechanics are fun, but if the dark humor of the game isn't for you then try these rules on a standard 52 card deck.
Written on February 20, 2018
Contributing to Drupal allows us to ensure Drupal remains the best and most flexible general purpose Content Management System. Contributing to Drupal is the job of the Drupal Community.
Written on February 15, 2018
This is an export of my session from DrupalCon Baltimore 2017. This is here for posterity. The least effort possible was put into transcribing it from presentation format to a web page.
Written on April 23, 2017
For the majority of people who will be switching from Fahrenheit to Celsius, this is all you need to know.
Written on November 21, 2016
I need to know what to study, not that I am bored or have lots of time. I just need a new tool in my belt.
Written on October 24, 2016
I should continue my series on Machine Generated text or Composer or Drupal, but this just looks like too much fun. WebVR with AFrame.
Written on September 30, 2016
With everyone's kids being so smart it is a wonder that we don't have machine generated children's book already. This sounds like an oversight to me because computers are already raising our kids.
Written on August 16, 2016
A Hello World style introduction to Composer.
Written on May 27, 2016
Using git-flow as a workflow for semantic versioning. This is a circular dependency that is good.
Written on March 28, 2016
Explore a bit of field fetching with Drupal 8
Written on January 20, 2016
How to work with case sensitive files on a file system that is case insensitive
Written on December 22, 2015
Why do we need a new game system? Because everything made today does too much.
Written on November 11, 2015
EntityFieldQueries are one of the most useful things in Drupal 7, using tags we can get around some of the limitations of using them.
Written on October 25, 2015
Without adding any non-Github pages approved plugins, build a RESTfull api for your blog by adding a json endpoint.
Written on October 9, 2015
I reflect on what I have seen at ElixirConf 2015, what does this mean for Drupal, and Why use Elixir or Phoenix instead of Drupal or Jekyll.
Written on September 22, 2015
With Drupal 8 on the horizon, it is tempting to write off Drupal 7. Don’t. The module ecosystem for Drupal 7 is mature, battle-tested, and – for site builders specifically – more powerful than ever. What follows is my curated list of the modules that let a site builder with some front-end skill create complicated sites with little to no custom module code.
Drupal 8 is nearly out making Drupal 7 look like it isn’t an appealing choice. However, Drupal 7 is still a contender for the conveniences in site-building crown. The module ecosystem for Drupal 7 is mature and, specifically for site builders, it is a very exciting time for Drupal 7.
Written on September 10, 2015
Style can be passed as a parameter to the console.log function.
Written on July 26, 2015
As you might remember in my post on replacing Jekyll with Gulp (and my post on Jekyll). YAML will be a large part of getting this working.
First am trying to use npm-yaml. Simple installation, npm install --save-dev npm-yaml. And it works great with the _config file that holds general site information. So I try it with the html.
gulp.task('test-index', function() {
var config = gulp.src('./index.html')
.pipe(yaml({ space: 2 }))
.pipe(gulp.dest('./gulp-dist/'))
})
With that I get a big fat …
Written on June 15, 2015
Jekyll solved my blog problem: it is fast to set up, free to host, and I actually write content on it instead of endlessly rebuilding the platform. But now I am wondering if I even need Jekyll, or if I can replace it with Gulp and cut out the Ruby dependency entirely.
One of the first “Content Management Systems” I ever wrote was a perl script that took flat text files and wrapped templates around them and gave me html. I cobbled this thing together and thought, huh, it worked. At the time everything was changing and I hardly ever wrote content. So a script that did this wasn’t extremely useful to me. It was more of an academic experience – especially because, at the time, I wasn’t a professional web developer.
Written on June 10, 2015
Did you know that EntityFieldQueries can have subqueries? They can.
Written on May 19, 2015
In this post Frank walks through the basics of setting up Jenkins to run on Ubuntu. This is a simple step by step with links to more information.
Written on May 18, 2015
I have been in LA again for DrupalCon. To my surprise this was not the first year of a DrupalCon Stabbing.
I lived in Long Beach for around 7 years. Every time I had some regular obligation. I did my due diligence and checked to see if I could take public transit to wherever I was going, whenever I need to go there. Be it school, or work, or church. I was never able to find a reasonable commute on public transportation. Every time I found a 20 mile commute would lead to a 3 hour and 5 transfer bus route. It was simply a fact that nowhere that I needed to go was a place the bus wanted to take me.
Written on May 4, 2015
Sometimes the best solution is to do something hacky. I am not saying this is the best way to make Drupal forms autosubmit. I am only saying that this is one way.
Written on January 27, 2015
Are you fed up with the offerings of Drupal, Wordpress, and other big CMSs? Then maybe a return to roots is in order. Let's look at Jekyll
Written on November 15, 2014
Did you know that 3D is possible on the web with WEBGL? You did? Oh, well, go checkout Three.js then.
Written on May 6, 2014
Over the course of my career I have worked on more than a fair share of higher-education sites. When dealing with a universities website there are many challenges. One of the biggest challenges is in dealing with the accessibility standards. I am writing about WCAG. The WCAG, or Web Content Accessibility Guidelines, is a detailed list for how accessibility should be done on the web.
I might write about the problems with WCAG at some point, but this article is about strictly an incompatibility between what the designer/UX people want and what the WCAG says about “READ MORE” links. Specifically WCAG 2.0 SC 2.4.4. This states that any link needs to have context.
Written on January 24, 2014
At SandCamp I gave a talk on utilizing front end design paradigms and how they can be used with Drupal. In this talk I focused on SMACSS, however, there are many more out there such as DRY, BEM, and OOCSS. For more information, checkout my blog post on the subject of the multitude of css paradigms.
Utilizing Front End CSS Design Paradigms In Drupal Talk from SandCamp 2014
Written on November 26, 2013
Sometimes you need a form to submit itself. A select list changes, the page reloads with new options, no extra clicks required. Drupal’s Form API has an #ajax handler for this, but it can be overkill when all you want is a simple page reload on change. Here is a lighter approach.
If you are unfamiliar with building forms in Drupal, please view Patrick’s post on the various options for building forms in Drupal. I will be focusing on forms built with Drupal’s Form API (or fapi).
Written on November 21, 2013
Front End CSS Design Paradigms have been a very hot topic lately and many people are attempting to solve the problem of large CSS rule sets that are difficult to maintain. With all the new options it might be difficult to decide where you should focus your attention. Here is a little overview of some of the more popular options.
OOCSS has several principles that it is built upon.
Written on October 6, 2013
Some general thoughts on the how and why of Graceful Degradation and Progressive Enhancement. No tutorials here, more philosophical than functional