Introducing Surreal CMS 7

Written on

Last November was the 10 year mark for Surreal CMS, a content management service I created to manage static (and mostly static) websites.

Getting duplicate ids in an HTML document

Written on

I needed a way to identify all HTML elements with duplicate IDs. This is a seemingly simple task, but unfortunately, I didn't find anything out there that fit the bill.

A clever way to style the <mark> element

Written on

I was checking out the CashNotify app today and I noticed a beautiful style for highlighting text in their testimonials:

Opening a new window after an async operation

Written on

I was working on an OAuth implementation the other day and needed to open a third-party auth page in a new window.

Zipping multiple folders into separate zip files

Written on

Here's a bash script that will zip all folders in the current directory into separate .zip files:

Shoelace.style — A back to the basics CSS starter kit

Written on

I spent some time last week working on a free CSS boilerplate I'm calling Shoelace.css. It's kinda like Bootstrap, but a lot leaner and pure CSS. You don't need a preprocessor like Sass or Less to use it, but it's still highly customizable with CSS variables.

Downloading a list of URLs automatically

Written on

I recently needed to download a bunch of files from Amazon S3, but I didn't have direct access to the bucket — I only had a list of URLs.

Surreal CMS acquires PageLime

Written on

Nearly a decade ago, I launched my first SaaS application. It was a new take on content management — a hosted CMS that reads/writes directly to a web server and uses class attributes to define content regions.

Rebuilding your Spotlight index in macOS

Written on

I use Spotlight more than I like to admit, usually for launching apps. Recently, some of my apps and files stopped appearing — even ones I access frequently.

Thoughts on AMP

Written on

Some time ago, a user asked about Google AMP support. At the time, I didn't know much about AMP aside from it made pages load faster on mobile devices. It sounded neat.