Publications
Books, articles, and other publications I've written over the years.
Manning
- The Jamstack Book Book — with Raymond Camden
O'Reilly Media
- Operating Continuously Book — with Edith Harbaugh, Cody DeArkland
- Static Site Generators - Modern Tools for Static Website Development Book
- Working with Static Sites Book — with Raymond Camden
CSS Tricks
AWS Blog
Heavybit Blog
Developer Tech
Computerworld AU
Bejamas Blog
Snipcart Blog
Netlify Blog
StepZen Blog
- What You Need to Know About GraphQL Directives
- Turning a REST API into GraphQL Using StepZen
- Creating a Developer Portfolio using Next.js, GraphQL, DEV and GitHub
- Learn To Love Your Jamstack BFF
- Exploring JavaScript Client Libraries for GraphQL
- GraphQL and the Jamstack
- Building Your First GraphQL API Using StepZen
- Consuming GraphQL in Plain JavaScript
- How to Write GraphQL Queries
Stackbit Blog
- Own Your Content, Broaden Your Audience
- A Complete Guide to Netlify Forms
- Adding a Mailing List to Your Gatsby Site
- Adding Search to Your Gatsby Site
- Getting Started with Next.js for Jamstack Development
- 4 Tips to Improve Your Stackbit Gatsby Site
- 4 New Tools to Watch in the Jamstack Ecosystem
- What is Markdown and Why Does it Matter to the Jamstack?
- Understanding Content Modeling in a Headless World
- What the Heck are Content Slugs and How Do I Use Them?
- Advanced Hugo Template Tips and Tricks
- Managing Content Relationships in Git-based Headless CMS
- Building Documentation Sites with the JAMstack
- How to Choose Your Static Site Generator
- Best Practices for Working with the JAMstack and an API-based CMS
- Build Your First Sourcebit Plugin
- Getting Started with Ecommerce and the JAMstack
- Data-driven JAMstack with Sourcebit
- 3 Strategies for Migrating from Wordpress to JAMstack
- Build Your Own JAMstack API with Netlify Functions and Zapier Webhooks, Part 2
- Build Your Own JAMstack API with Netlify Functions and Zapier Webhooks, Part 1
- Creating a JAMstack Site with Open Authoring Using Netlify CMS
- 15 JAMstack Resources You Need as a Web Developer
- Gating Content in JAMstack Sites
The Practical Developer
Telerik Developer Network
- Building a Conversational Bot with JavaScript and Node.js
- Can Google's Guetzli JPEG Encoder Help Solve Web Page Bloat?
- A Guide to Browser Scroll Animations
- Alexa, Can I Use?
- Your Open Source Project is Considered Harmful
- Is left-pad Indicative of a Fragile JavaScript Ecosystem? — with TJ VanToll, Cody Lindley
- What I Learned from Working in Failed Platforms
- Creating Node.js Command Line Utilities to Improve Your Workflow
- Spying on James Bond with Node.js
- Defining a New Breed of Cross-Platform Mobile Apps — with TJ VanToll
- Lazy Loading Images on the Web
- Static Site or CMS?
- Battle of the Free Code Editors
- What's Wrong with the Web?
- Practical Web Audio
- Getting Started with Jekyll
- Adding Audio to Web Apps
- 3 Useful Tools for Local Web Development & Testing
- Can AngularJS Maintain Its Dominance?
- Static Site Engine Battle Royale
Progress Blog
Kinvey Blog
Angular Attack
Mobile Business Insights (IBM)
- Making sense of the mobile development ecosystem – Part 1: The mobile web
- Making sense of the mobile development ecosystem – Part 2: Hybrid apps and hybrid/native apps
- Making sense of the mobile development ecosystem — Part 3: JavaScript native, cross-compiled and native apps
- Making sense of the mobile development ecosystem — Part 4: Which mobile option should you choose?
SD Times
Developer.com
Business Solutions
Sitepoint
O'Reilly Radar
Digital Thirst
The Modern Web (formerly Flippin' Awesome)
- Original Founder, Publisher, Weekly Roundup Contributor (founder)
- Rethinking DOM Traversal
- Paralyzed by Choice in Front-end Development
- Creating Sound with the Web Audio API and Oscillators
- Building a Successful Content Site
- CSS for Beginners with Dreamweaver
- Topic Undefined – Episode 7 (podcast)
- Using CSS Regions in Responsive Designs
- 2014 – What Web Developers Will Need to Know
- 2013 – The Year in Web Development
- Topic Undefined – Episode 6 (podcast)
- Topic Undefined – Episode 5 (podcast)
- Stop Focusing on Tools
- Retro Game Music using Web Audio and Band.js
- Topic Undefined – Episode 3 (podcast)
- DOM Traversal and Manipulation with Voyeur
- Topic Undefined – Episode 2 (podcast)
- Topic Undefined – Episode 1 (podcast)
- Drawing and Animating with Two.js and Illustrator
- Quick and Easy Local and Device Web App Testing
- Create Your First Mobile App with PhoneGap Build – Using the Notification API
- Create Your First Mobile App with PhoneGap Build – Using the Storage API
- Create Your First Mobile App with PhoneGap Build – Adding Pages with jQuery Mobile
- Create Your First Mobile App with PhoneGap Build – Adding jQuery Mobile
- Create Your First Mobile App with PhoneGap Build – Connecting to an API
- Create Your First Mobile App with PhoneGap Build – Using PhoneGap Build
- Create Your First Mobile App with PhoneGap Build – Setup
Adobe Inspire
InfoQ
- Axel Rauschmayer on ECMAScript 6 and the Future of JavaScript
- A Change in Leadership for Node.js
- Neal Ford on Giving Technical Presentations
- Andrew Betts on Developing for Mobile with HTML5
- Tom Dale on Ember and JavaScript Frameworks
- Google Announces Chrome Apps Improved Offline Capabilities & Mac Support
- Current Trends in NoSQL - Q&A with Peter Bell
- CodeCube Offers Shareable, Runnable Code Samples
- Backbone 1.1.0 Released, Includes Potential Incompatibility with 1.0
Adobe Edge
- Advanced Android development with Flex "Hero" and Flash Builder "Burrito"
- Create Android apps with Flex "Hero" and Flash Builder "Burrito"
- Getting Started with Adobe AIR for Android
- Object relational mapping in ColdFusion 9 and ColdFusion Builder
- Tutorial: Build an Adobe AIR application using JavaScript
- A guide to Adobe developer groups and resources online
- A beginner's guide to the Mate framework for Adobe Flex
- Build a personal productivity application with Adobe AIR
- Comparing Adobe Flex and Ajax Development Models
- Add dynamic content to your site with RSS and ColdFusion
Adobe Developer Connection
- Node.js command-line tools for front-end development
- HTML, CSS and JavaScript code editing with Edge Code
- Browser testing across devices with Adobe Edge Inspect
- Pseudo-classical object-oriented programming in JavaScript with Minion
- Metablog Monthly throughout 2011
- Creating Self-updating ColdFusion Builder Beta Extensions
Onward Search Blog
Kendo UI Blog
Flex Authority
- Hello Mate! A Beginner's Guide to the Mate Flex Framework (Vol. 1 Issue 1)
Fusion Authority Quarterly Update
- Getting to Know Mr. Wizard (Vol. 2, Issue 4)
- What's Hot? What's Not? - What new ColdFusion 8 tags or features do you find indispensable, and why? (Vol. 2, Issue 3)
- Cairngorm Crystallized: Examining the Cairngorm Microarchitecture from a Workflow Perspective (Vol. 2, Issue 2)