Writing
Technological developments are only useful if they can be understood and implemented by others. That's why I really enjoy lending my technical knowledge to writing blog posts and explainers for all sorts of technology companies and publications.
Would you like me to write for your publication? Send me an email and let's chat.
Featured Writing
Developer Advocate Content for Airplane [Airplane.dev]
As part of my role at Airplane, I create a wide range of content, ranging from tutorials about how to use the product to more technical, developer-specific topics that appeal to Airplane's audience.
Some of my favorite pieces:
- Make Stripe webhooks more useful using AI - A cool demo of how just a bit of AI (hosted on Airplane) can make your sales workflows much more effective
- Leverage Langchain with Airplane for AI-driven workflows - Half case study from one of our customers saving tens of hours per month with Airplane, half technical tutorial on how you can do the same.
- How to build a KPI dashboard - A technical tutorial on how to combine Fathom Analytics, Stripe and Helpscout data all on one Airplane dashboard
Complete Guide to WordPress Transients [Automattic]
In the WordPress ecosystem, transients are a part of the codebase that’s rarely talked about. But depending on what type of code you’re writing in your plugins and themes, transients can be a powerful aid in making your code more performant...This article will explain what transients are, how they work in WordPress, and how you can start implementing them in your codebase to make your themes and plugins more performant.
How HTML focus works in rich text editors [Tiny (creators of TinyMCE)]
Rich text editors are a commonly requested feature among the users of data-driven applications...It’s this level of functionality that’s being increasingly expected by end users, and leaves developers with a choice: buy an off-the-shelf library or tool, try to build their own rich text editor from scratch, or buy third-party components (like a rich text editor) and customize/code additional requirements in house.
The Canary Deployment Strategy and When to Use It [Earthly]
As you’re building your application, you want to ensure that your customers have a bug-free user experience as much as possible...However, even with development environments that mimic your production environment, you can never be completely sure that your deployment will be bug-free. This is where canary deployment comes in.
Everything Else
Understanding malware and botnets and how to protect your site [Fingerprint]
A botnet is a collection of computers that have been infected with similar malware. Once infected, they can all be controlled remotely and used to infect or disrupt other machines. This article takes a look at the history behind malware and botnets, discusses their impact, and shares how you can protect your website from their effects.
Comparing Ansible, Terraform, Chef, Salt, and Puppet for cloud-native applications [Redpanda]
Ansible, Terraform, Chef, Salt, and Puppet are all tools that facilitate this automatic configuration and orchestration. Of course, each has slightly different capabilities and a slightly different syntax for handling infrastructure provisioning. Let’s take a look at some of the benefits and drawbacks of these IaC solutions to help you decide which one to adopt.
Buy vs. build: The pros and cons of creating your data grid component [Handsontable]
If your company is frequently building software projects, you will run across the ever-present “build vs. buy” decision time and again. Should you create a feature yourself or use a third-party tool that accomplishes the same goal without investing your own time and resources?
What goes into building a successful remote culture? [Andela]
For organizations looking to hire more remote workers while retaining their existing employees and helping their teams stay productive and happy, cultivating a remote culture is essential. In this article, we’ll look at how you can develop a remote culture at your company that makes your employees feel empowered and part of the team, even if separated by physical distance.
Implementing React Native Notifications (Top 3 Ways) [Courier]
A push notification is a message displayed on the user's phone that's triggered by something that happened in an application, even if it wasn't being actively used at the time..When building applications with React Native, there are a few different ways to implement push notifications. This article examines some of the most popular methods to ensure your application is sending timely and relevant push notifications to users.
Eliminating Render Blocking Resources to Speed Up WordPress [Automattic]
Render-blocking resources often cause issues for developers who are trying to optimize the performance of their sites. It’s important to evaluate how many render-blocking resources you’re loading to keep initial page loading times fast as well as to reduce the amount of data sent by your site. This article examines several ways to eliminate render-blocking resources on your website so that you can ensure that it loads as quickly as possible.
What is the Query Monitor Plugin? [WP Mayor]
With Query Monitor, not only do you get a nice, clean interface to browse this information, you get all of it out of the box, without having to modify your codebase, allowing you to very quickly start debugging issues and figure out what portion of your codebase needs to be modified.
Set Up WooCommerce Notifications (Top Plugins + Setup Guide) [Courier]
If you've ever looked into setting up an online store, you've likely heard of WooCommerce, an e-commerce solution built on top of WordPress that helps store owners maintain complete control over their store while still being able to focus on running their business...In this roundup, you'll take a look at some of the most popular plugins and extensions to set up customer notifications in WooCommerce. You'll also dive into how you can implement them in your e-commerce store to better communicate with your customers today.
What goes into building a successful remote culture? [Andela]
As more and more companies are allowing employees to work remotely, these employers are finding that maintaining a company culture with a remote workforce is challenging...In this article, we’ll look at how you can develop a remote culture at your company that makes your employees feel empowered and part of the team, even if separated by physical distance.
Scalable WordPress Hosting for Developers [Automattic]
WordPress powers forty-three percent of all websites, supporting everything from small hobby sites to major sites such as Rolling Stone, TechCrunch, and even The White House. However, if you want to scale to accommodate millions of hits a month, you need to choose your hosting wisely...In this article, you’ll take a look at the importance of scalable hosting, as well as how to ensure that your sites are as highly available, secure, and performant as possible.
An Introduction to the WordPress REST API [WP Mayor]
The WordPress REST API is a way for other pieces of code to access and manipulate information about your WordPress site.
Software engineering demands continuous improvement [Treno]
To stay effective, software engineering teams should constantly search for ways to improve how they build, test, and deploy software. That continuous improvement process helps teams ensure better collaboration, more efficient workflows, and faster time to market...This article will explain the importance of continuous improvement practices to software engineering teams.
Definitive Guide to Escalation Policies, Paths, and Levels [Lightstep]
In any organization, it’s crucial to have a plan in place for unexpected problems. A proper incident management plan explains how to determine that an incident is taking place, who in the organization to contact for help, and what steps are needed to quickly investigate and resolve the problem.
The Process of Major Incident Management [Lightstep]
The major incident management process (also referred to as just incident management in some organizations) is a series of steps and procedures that organizations put in place to help them handle major incidents...Having a well-defined process for managing major incidents is critical for ensuring that these incidents are resolved as quickly and effectively as possible.
How to Correctly Set Up File Permissions in WordPress [WP Mayor]
If you've ever run into mysterious errors installing plugins, updating themes or uploading images to your WordPress site, file permissions might be the problem.
Incident Management Best Practices [Lightstep]
No matter how well architected your application is or how robust the infrastructure supporting your code is, there will be times when things go wrong...In this article...you’ll learn how to define an incident, team roles, and responsibilities, as well as how to ensure resource access, key performance indicator (KPI) monitoring, and incident management resolution. You’ll also learn about some tools that can help you better manage incidents when they do arise so that you and your team can efficiently solve whatever problem you’re experiencing.
Laravel Logging: Tutorial and Best Practices [ContainIQ]
In any application, a developer needs to be able to see what’s going on while the application is in use to debug issues as they arise and to identify opportunities for improvement...In this article, you’ll look at how to implement logging in the popular PHP framework Laravel...After learning about how Laravel helps developers manage their logs, you’ll take a look at some best practices and specific tooling that you need to debug Laravel applications
Why Will Python 2.7 Never Die? [Rookout]
Python is a programming language originally developed in the late 1980s...Python 3 was released in 2008. However, it has not proven as successful as its older sibling. Community adoption has been much slower due to the many backwards-incompatible changes between Python 3 and Python 2.7...In this article, we’ll look at some of the reasons why Python 3 has struggled to achieve widespread adoption and why Python 2.7 will likely be around in some form for a very long time.
When and When Not to Use Headless WordPress [WP Mayor]
Headless WordPress has been gaining more and more interest from developers and hosting companies alike, especially over the last few months. In this article, we'll take a look at when headless WordPress is a good fit and when it's not.
How to select and highlight text in rich text editors [Tiny (creators of TinyMCE)]
As the web has evolved, users expect to have a rich text editing experience in their everyday web applications, that’s exactly like the ones they’re used to in Medium, WordPress, and Twitter...However, these functions can be fraught with complications on the developer’s end...In this article, we'll take a look at some of the ways text editors implement highlighting and selection functionality, as well as how tools like TinyMCE enable your application to have a sophisticated text editor without spending a ton of time on building one from scratch.
Chef vs. Docker for Builds and Deployments [Earthly]
Docker and Chef are two popular tools in the development world and are used extensively in build and deployment pipelines. However, even though they are used in similar contexts, the two are very different tools...The difference between the two lies in the way they approach the build and deploy pipeline. In this article, you’ll take a deeper look at each tool and learn how to use them effectively.
Monorepos - The Good, Bad, and Ugly [Last9]
A monorepo is a single version control repository that holds all the code, configuration files, and components required for your project (including services like search) and it’s how most projects start. However, as a project grows, there is debate as to whether the project's code should be split into multiple repositories...In this article, you'll look at when having a monorepo is useful and explore the good, the bad, and the ugly in relation to the impact monorepos have on engineering culture.
Build Conversation Intelligence Applications with AWS Lambda and Google Cloud Functions [symbl.ai]
Given our ability to order pizza with a voice command or play Jeopardy at home simply by talking out loud, the next generation of applications are here and they are voice-enabled...Because these applications can fluctuate in the amount of backend processing needed at any given time, it’s important that servers can run the application code to scale...In this article, you’ll take a look at how to leverage serverless technologies and make sure your application is always available and ready for your users.
Internal Developer Platforms: Why They Matter & How To Build Them [Loft]
As your organization grows, deploying your software and maintaining all related systems can become more complex. This complexity, along with the desire to own the infrastructure stack without needing workarounds for off-the-shelf tools, drives many teams to implement an internal developer platform (IDP). An IDP allows software developers to complete tasks previously handled by the operations team, despite having little to no operations experience...This article will look at some of the factors that teams should consider before building an IDP. It will also explain how to get started if you decide that having an IDP would be beneficial to your team.
Using Stakeholder Meetings to Align Your Product Team [Status Hero]
Designing and shipping even a relatively basic product can involve many stakeholders, including members of your organization and potential customers. All of these stakeholders have opinions about how the product should be built, what sorts of features it should have, and when those features need to be completed...This article will take a look at how to use stakeholder meetings to achieve consensus among your team members, so that your project stays on time and on budget and you’re able to achieve success.
Let’s talk about role management - planning user roles for your application [Cerbos]
When building a web application with authenticated users, it’s important to define which users can perform which actions...In this article, we’ll dig into how to best set up your user roles. You’ll also learn how to ensure these roles are granular enough and how to think about changing user roles over time. Finally, we’ll briefly touch on the benefits of delegating role management to Cerbos so you can focus on your application logic.
The Case for Granular Permissions [Cerbos]
When it comes to implementing access control in your application, the scheme you decide to use can either make authorization easy to manage as your application and user base grows, or it can really paint you into a corner. There are two commonly used authorization patterns, and choosing the correct one for the application you’re building is crucially important.
Project Management With GitHub [Status Hero]
When people think of GitHub, they think of a global, collaborative platform for developers to store and share their code. And—especially in the early days—that’s what it was. Nowadays GitHub offers more, including a fully-fledged project management solution...These tools, especially when augmented by third-party tools that add additional features on top, allow you to run your project right where your code lives—all in one interface.
5 Most Common API Errors and How to Fix Them [Lightrun]
As software got more complex, more and more software projects rely on API integrations to run...However, the risk with API development lies in the interaction with code you didn’t write—and usually cannot see—that needs debugging. This makes error identification critical, so you don’t waste development time trying to fix the wrong problems...In this article, we’ll explain how you can spot these errors in your own code, fix them, and get back on track.
Improving GitHub Security: Best Practices for Teams [Backhub]
GitHub is a tool central to many developers’ workflows, especially those who work in teams and large organizations...However, when so much of a team’s productivity and performance is riding on one tool, it’s important that only the intended team members have access to it...In this article, we’ll look at how to manage access control, create a security policy for your project, make sure your repository and metadata are backed up, and implement a recovery plan in the event that access is compromised.
How to Backup a Single File from GitLab [Backhub]
Normally, when you want to inspect the code that’s part of a Git repository, you clone the repository down to your local environment and open the entire project in your text editor. However, sometimes all you really want to look at is one particular file to help evaluate whether you want to explore the project further. In this case, it doesn’t make sense to clone the entire project. Luckily, if the project you’re considering is hosted on GitLab, there are more than a few ways to download a single file instead of the entire project. Let’s take a look at these three approaches.
Open Source vs Commercial Authentication Providers [FusionAuth]
When it comes to building any web or mobile application, authentication is one of those areas where you generally don’t want to take on the risk yourself. Third-party authentication providers have made this their entire business and dedicate lots of time and money to make sure their solutions are performant, easy to use, and most of all, secure...Let’s take a more in-depth look at the pros and cons of open-source and commercial authentication providers.
The Value of Trying Your Authentication Provider Before You Commit [FusionAuth]
Sometimes, despite a salesperson overcoming all your concerns or a landing page perfectly crafted to speak your language in every bullet point, there’s a lingering fear that the product you’re looking at just might not be what you’re looking for. Everyone has experienced buyer’s remorse at some point in their life, and most people I know don’t want to go through it again. So what’s the only way to know if you’ll truly love a product? Trying it risk-free at no monetary cost to you.
Too Big for Shopify and Too Fast for Salesforce [Fabric]
In an increasingly crowded market, it’s essential that your business stands out by offering an online store that performs well and meets your customers’ needs. When looking for an e-commerce platform to achieve this, two options that appear are Shopify and Salesforce Commerce Cloud (previously Demandware). In this post, we’ll direct the limitations of Shopify and Salesforce and present some modern alternatives.
How to Backup a Single File From a GitHub Repository [Backhub]
The last time I had ten GitHub tabs open trying to evaluate which JavaScript library to use for a particular project, I wanted to grab one of the example files and pull it down to my local machine. It would be convenient to make a few edits and make sure it was actually compatible with how I needed to use it...[In this article] you’ll learn how to back up a single file using SVN, DownGit, and the GitZip Chrome extension.
Best DevOps Blogs [Draft.dev]
DevOps is a term that has become more and more popular in job postings and with those looking to break into the industry, especially over the past few years...Because it’s a term that spans many different jobs and means something different to each organization, there has been a lot written about DevOps. I scored these blogs based on writing quality, consistency, longevity, technical depth, and usefulness. Based on those criteria, here are 30 of the best DevOps blogs I could find.
The Risk in Managing Your Own Backups [Backhub]
Backups are critical to every technology business, but they can be challenging to manage effectively. There’s a reason that entire companies have been created to provide backup services...In this article, you’ll learn about some of the kinds of backups you should consider having....[and] you’ll see some of the pros and cons associated with managing your own backups or relying on a third-party provider.
Making the Case for Backups: Convincing Your Team That Backups Matter [Backhub]
In this piece, we look at how to decide what types of backup you need, how they will impact cost, and how you can show non-technical team members the importance of having backups. We’ll look at several cases where backups would have mitigated significant technical risk along the way.