Sandro Turriate

Coder, cook, explorer

Using a datalist for typeahead with htmx

Implement typeahead using the HTML datalist element with a little help from htmx.
AKA ActiveSearch.

How to fix failed XHR/Fetch requests in Safari

If you're seeing errors in the Network panel like "The resource was requested insecurely." or "An error occurred trying to load the resource." originating from XHR/Fetch requests that work most of the time, you may be suffering from a window.stop bug.

How to view commits by author in tig

Instead of starting tig and grepping for an author, start tig with the --author option.

Hanging pictures with a non-slip adjustable knot

The best non-slip adjustable knot I've found for hanging pictures with slippery monofilament wire.

Modern Javascript: Everything you missed over the last 10 years

JavaScript has come a long way since I knew it as the “D” in DHTML. For anyone like me, who’s been reluctant to use the latest syntax that could require polyfills or a transpiler, I’ve written this cheatsheet to get you caught up on all the goodness that’s widely supported in modern browsers.

How to pinch-to-zoom and 2 finger pan a Fabric.js canvas

If you want to support the pinch-to-zoom gesture, and two-finger panning while using a trackpad on a webpage, you only need to check for one special property on the wheel event.

How to add a Fabric.js object to a Fabric.js group

When adding an existing Fabric.js object to a group be sure to remove the object from the canvas before adding it to the group. Otherwise, the original object will still be draggable and will muck up the group.

Delicious Dairy-Free Eggnog

Delicious dairy-free eggnog is simple. Just substitute the cream with coconut cream and the milk with oat milk.

Advanced Gmail search to help you organize your inbox.

By using Gmail’s advanced search operators, I created a query to help me unsubscribe from unwanted emails and tidy up my inbox.

Zero downtime deployments with Docker, Caddy Server, and Bash.

An overview of performing zero downtime deployments with docker, fiber, caddy, and a shell script.

Making SQLite faster in Go

The most popular way of using sqlite in Go happens to also be the slowest when using it in a concurrent application like a web app. Roll your own connection pool to speed things up.

3 reasons to use Fiber over Gin

  1. Fiber has a superior router, better suited for REST endpoints.
  2. Built on top of Go's extremely fast fasthttp web library, faster than the standard library.
  3. Extremely responsive dev team.

The ideal CodeMirror setup

Check out these CodeMirror options for the ideal setup.

My own static site generator

How I built my own static site generator for the relaunch of turriate.com which blurs the lines between dynamic and static.

Responsive CSS grid with fixed width items

How to set up grid items to be a fixed width, responsive, and center-aligned. See how to do it yourself.

How to generate a signed Rails session cookie

Bypass the sign-in process by sending a signed session cookie in the HTTP headers.

Testing Twitter OAuth with real data

Ensure that your application’s Twitter integration works by having your test suite actually sign in every so often.

The jungle is greener on the other side

Montañita wouldn’t have me over the Christmas holiday so I moved up the road to Ayampe.

Finally reached Ecuador’s coast

After a week delay in Cuenca, I've finally reached the first destination of my surf trip - Montañita, Ecuador.

Here’s to taking the next 10 months off

My life as a Rocketeer has ended and my life as an active, traveling hacker has begun.

Silencing a Forked Process

How to provide the concurrency of a forked process without spamming the parent process’ stdout.

Moving off Webby to Nanoc

After a long survey of Ruby's static website generators I've finally settled on Nanoc.

Bookmarklets not chiclets

Chatting about bookmarklets with Refresh Jacksonville - Pecha Kucha Style.