In this blog post, we’re implementing a no-JavaScript guestbook system for statically-generated websites with built-in spam protection . That’s right: no JavaScript involved. Just good old HTTP and HTML working together… with a bit of Netlify magic. The solution I’m presenting here is specific to Netlify and Jekyll, but I’m pretty sure you could port this to other service/tool combinations.…
On July 1st, 2013, Google shut down Google Reader forever. On that day, I understood that my personal data was at the mercy of a company that might just shut down access to it whenever business incentives lined up. My digital life almost entirely used to be stored within Google services: emails, personal files, to do lists, photos, RSS subscriptions, contacts, passwords, music playlists, apps,…
The following was tested with a Canon EOS 6D and a ThinkPad X220 running Debian 10 Buster on Linux Kernel 4.19.0-9-amd64. Your mileage may vary depending on your particular configuration, but I expect this to work on a wide range of Canon DSLRs and other Linux distributions. 1. Install and set up dependencies First, we need to install a few packages. $ sudo apt-get install gphoto2…
This post originally appeared on the Shopify Engineering blog on December 10, 2020. I co-wrote it with my colleague Celso Dantas, Staff Developer at Shopify. In the previous post about Shopify's new storefront rendering engine , we described how we went about the rewrite process and smoothly transitioned to serve storefront requests with the new implementation. As a follow-up and based on readers’…
A relative of mine called a few months ago: “Hey, I have a grain dryer that I’d like to monitor from my phone. Is that something you could set up in time for harvest season?” I have no idea how grain dryers work, especially not Internet-enabled grain dryers — because of course that’s a thing — but I figured I’d give it a shot anyway. For context, a grain dryer is literally a combination of a huge…
👉 Looking for actionables and screenshots? Scroll to the bottom of this post. I opened my smartphone’s “screen time” app for the first time recently and was somewhat troubled to discover that on a particular day a few weeks ago: I unlocked my phone 64 times; I used my phone for over 3 hours; I received 145 different notifications (!). My first thoughts upon seeing these numbers: how much of this…
A fair share of my waking hours involves communicating with other people on GitHub to make sure we’re solving the right problems, and that we’re solving them the right way. As a result, I receive many email notifications about various things that happen on there: direct requests to review a particular piece of code , feedback on pull requests I’ve opened , pull requests merged by their authors ,…
This post originally appeared on the Shopify Engineering blog on August 20, 2020. In January 2019, we set out to rewrite the critical software that powers all online storefronts on Shopify’s platform to offer the fastest online shopping experience possible, entirely from scratch and without downtime. The Storefront Renderer is a server-side application that loads a Shopify merchant's storefront…
I noticed something odd today while working on two different Ruby codebases. This simple line of Ruby behaved differently in both applications: "luck" . casecmp ( "L`auguste" ) Executing "luck".casecmp("L`auguste") in application A returned -1 , while executing it in application B returned 1 . “Did the alphabet change at some point and I didn’t get the memo?”, I thought. Aside String#casecmp is a…
By the end of this article, you’ll have a new tool in your toolbox to help newcomers quickly discover how your software project works, while reducing the time you explicitly spend introducing new folks to your project. Ramping up on a new software project is hard , both for the person ramping up and for the team that supports this person’s onboarding process. It’s especially worse when multiple…
Eager to try the demo of the template? 👉 digital-garden-jekyll-template.netlify.app Digital gardens and public note-taking spaces are all the rage these days , as they’re a great way to foster an environment where ideas mesh together and others can take inspiration from. You can set up a digital garden of your own in a few minutes, and have your own personal corner of the Internet where you’ll…
Update (2020-05-18) : I’ve since switched to a more powerful desktop computer for my photography business. I still use the X220 as a dedicated machine to connect with Zwift, a social cycling app. 🚴 Update (2021-01-17) : … and I’m back on the X220 full-time! I sold the desktop computer mentioned above. I much prefer the X220’s portability compared to the desktop’s raw power. My personal machine is…
I noticed something noteworthy a few weeks ago. It seems that if I sleep a little less than what is usually recommended, say approximately 6 hours instead of the usual 7-9 hours, I will find it easier to get started on tasks and keep the ball rolling throughout the day. In other words, sleeping less makes me more productive. To be clear, this observation does not fit in the overall picture painted…
One day, when I was in elementary school (mid-2000s), I decided I would create a personal website to share games, news, and other cool tidbits of my life with my friends and family. I also wanted it to be password protected so that only my friends would see it, and to prevent big bad internet strangers from seeing private information (oh how times have changed). However, I didn’t know anything…
TL;DR: Never plug USB keys you find laying around in your computer. They may contain malware that silently deploys as you plug it in, stealing sensitive information and downloading viruses in the background. For those of you who may know me, I’m the kind of guy who runs Linux on his computer full-time (except for the occasional music production or video editing session). This means no Windows…
That's what I thought when I saw "KodekPL" as the author of a commit in my repo... A commit I had just pushed myself seconds before. But why KodekPL and not someone else? Who is this guy? I’m willing to bet you play Minecraft. A lot of Minecraft. Enough to warrant the need of creating a server. Perhaps one day you downloaded Spigot. “Wait a second here, why are we talking about Minecraft? I’m…