All things Technical

VS Code extensions that I use every day

Estimated 2 minute read

I use numerous VS Code extensions to increase productivity and make life easier as a developer and blogger. Here are some of them: Theme Atom One Dark Theme is based on Atom's One Dark theme. It is the best rated One Dark theme port in the marketpla…

How to read Node.js environment variables

Estimated 2 minute read

Running a Node app is simple. Sometimes you want to add environment variables that either contain sensitive information or are contextual to the environment you want to run your app on. You can set them the moment the process is started. Imagine hav…

Hack to fix Gatsby image process from stalling

Estimated 1 minute read

Build stuck at running jobs (image transformation) GitHub #34051

How to show filenames in code snippets in Gatsby in Markdown

Estimated 1 minute read

With the gatsby-remark-code-titles plugin. Custom title gets injected and then needs to be styled. Example from docs: Usage This plugin will parse the Markdown AST, pluck the title, and then “clean” the code snippet language for further processing. …

Utility to fix npm dependencies

Estimated 1 minute read

There is a utility called npm-check that offers the ability to interactively update outdated, incorrect or unused dependencies: Take a look at the switches. It offers way more than just that. Usage Switches Switch Description -u, --update Interactiv…

Why you will see the error 'Loading chunk \d+ failed'

Estimated 1 minute read

I know of the following reasons why chunks cannot be downloaded: Network errors Inspect the network in the browser dev tools to find out more information about the errors. Resources not found They don't exist in the correct directory (output > publi…

How to run a single Clojure test from the terminal using Leiningen

Estimated 1 minute read

You may want to target and run a specific test or set of tests when testing your code so that you don't keep executing the entire suite each time you make changes to specific tests. This creates a faster feedback loop for you to build and fix code. …

Edit your web page content directly in Chrome

Estimated 1 minute read

Executing in the browser console will let you click and type anywhere you want on your page. This is helpful if you want to experiment with text directly on the page instead of in the DOM.

How to unmap a var from a Clojure namespace

Estimated 1 minute read

I was working with a multimethod that I needed to redefine in my REPL and came across this doc. There is an entry that states if you are in the REPL and need to redefine then you will need to unmap the var because defmulti won't allow you to redef. …

How to minify CSS files via CopyWebpackPlugin for Webpack5

Estimated 1 minute read

Goal Emit minified vendor-based CSS files on build. Dependencies Elaborate I have a few unminified vendor CSS files that I simply want to minify and copy to an output directory. These files were not being transformed by terser probably due to the ch…

Make sure Git knows about case-sensitive changes to your file names

Estimated 1 minute read

It's only peculiar if you don't understand it and for a while, I didn't understand it. It builds locally but then can't resolve component on Netlify. It started with me migrating my blog from Gatsby 3 to 4. I had neglected my blog for months so my e…

How to debug a specific Gatsby package on build

Estimated 1 minute read

Originally posted on dev.to I got an error and needed to get verbose logs for a particular package during a Gatsby build. I came across this issue on GitHub with reference to a DEBUG env var that can be set to get better logs.

How to debug a specific Gatsby package on build

Estimated 1 minute read

I got an error and needed to get verbose logs for a particular package during a Gatsby build. I came across this issue on GitHub with reference to a DEBUG env var that can be set to get better logs.

How to write stdout both to the terminal and a file

Estimated 1 minute read

Below I use the tee command to write the output of an script to both to the terminal and to a log file.

How to sort your package.json dependencies

Estimated 1 minute read

is short hand for and . "example" is just the name of a package. You can use it verbatim because it will most likely not be in your package.json. Your packages are sorted by running npm remove even if the package "example" doesn't exist. Thanks to …

Name CSS Split Chunks using MiniCssExtractPlugin

Estimated 1 minute read

React: 17.0.2 Webpack: 5.67.0 Webpack CLI: 4.9.1 mini-css-extract-plugin 2.5.3 Snippet Objective Bust the cache for CSS files that are emitted on build using Webpack 5 with Split Chunks. Set up one or more CSS files inside a React component. A sing…

How to recover a file from another branch in Git

Estimated 1 minute read

Where branch can be any ref including a branch name, tag, HEAD. Thanks to this Stack Overflow reference.

How to see the contents of stashed changes in Git

Estimated 1 minute read

Where is the indexed location of the item in the stash. Find all items in the stash using: https://stackoverflow.com/questions/3573623/is-it-possible-to-preview-stash-contents-in-git https://stackoverflow.com/questions/10725729/see-whats-in-a-stas…

How to kill processes running on localhost (macOS)

Estimated 2 minute read

Motivation Sometimes a process, like a web server or running Clojure REPL, closes unexpectedly but the port is never released. I'd need to find that process and kill it so that I can rightfully claim my port back. Find the process It will return som…

How to find text anywhere in your Git repository from the very beginning

Estimated 1 minute read

Stack Overflow - Search all of Git history for a string Stack Overflow - How to grep Git commit diffs or contents for a certain word

Why you will see the error 'Loading chunk \d+ failed'

Estimated 1 minute read

This includes cases where the file has been renamed. More Stack Overflow: , show all commits including merges

How to use a different email address in Git in sub directories

Estimated 1 minute read

I want to override my personal email address I use for Git with my work email address in my work directory without manually changing it each time.

How to search through all files in your web application in Google Chrome

Estimated 1 minute read

I am running Version 97.0.4692.71 (Official Build) (arm64) to date. Why? Use this feature to find text in any resource served by the web server. It's handy for searching for things where the location is sometimes uncertain. How There are two ways I …

How to reference a local Webpack npm package

Estimated 1 minute read

With the help of this question and answer from Stack Overflow: Install the local npm package using the file path. Check node_modules to see the installed package. (or depending on the requirements) && (in this example the package exists in the pare…

Use React hooks inside an MDX story in Storybook

Estimated 1 minute read

Originally posted on dev.to A story captures the rendered state of a UI component. Developers write multiple stories per component that describe all the “interesting” states a component can support. MDX is a standard file format that combines Markdo…

How can I deploy a ClojureScript web app to Google Firebase with GitHub Actions?

Estimated 2 minute read

The goal of this guide is to show you how to deploy a ClojureScript web app to Google Firebase Hosting with GitHub Action deploys. There are a few assumptions and they are that you are already familiar with the basics of ClojureScript Firebase GitHu…

How can I use Tailwind in my ClojureScript web app?

Estimated 7 minute read

The goal of this guide is to create a ClojureScript web application with Clojure CLI and integrate with Tailwind CSS. If you are looking to create a shadow-cljs project then you can follow this guide by Jacek Schae. There are a few assumptions and t…

How can I create a ClojureScript web app from scratch with Reagent and npm?

Estimated 8 minute read

The goal of this guide is to create a basic Reagent ClojureScript web app from scratch using the Clojure CLI tools. We are going to bundle our JavaScript using Webpack, have HMR (Hot Module Replacement - reload components while coding) using Figwhee…

How can I find deleted stuff in Git?

Estimated 7 minute read

I was working on an about module a few months ago. I wasn't satisfied with it so I deleted it with all its related files 😬 Now I need to recover parts of this data that I had so conveniently discarded. 🤦‍♀️ I can't remember the exact location of the fi…

A custom alias for a pretty Git log with a graph

Estimated 3 minute read

I have added a git alias for by editing the global config so that it is not localized to a specific git repository. I added the following below the section 👇 will now print a pretty colored summarized log with a graph to indicate branching and m…

Debugging gatsby-plugin-google-gtag for Google Analytics 4 with Gatsby

Estimated 5 minute read

In this article I will cover how I installed and configured the plugin, added my custom track event, tried to test it and it didn't work so I went through a checklist of debugging the thing. Prerequisites I assume that you are already familiar with …

Feature Development Lifecycle with minimum viable features

Estimated 7 minute read

Successful features are in small bite-sized chunks that are released iteratively and regularly through the Feature Development Lifecycle. I just rewrote my blog. It took a while because I was pedantic about getting numerous features live. I think I …

What I did to build a high performing and SEO happy Gatsby blog

Estimated 7 minute read

As much as I want an attractive blog, I prefer a blog that is more discoverable and outperforms others. That makes the eye-candy totally worth it and I feel great knowing that I do the best I possibly can to make - what I hope to be - a great experi…

Emulating rendering options in Chrome DevTools

Estimated 3 minute read

I wrote an article about Simulating mobile devices in Chrome way back in 2016. I decided to extend it with this article where I cover different rendering options that can be emulated from simple to extreme accessibility features. Let's dive right in…

How I got started with my first Gatsby source & remark plugin

Estimated 3 minute read

I created my first npm package - EVER! 🎉 It's a Gatsby source and transformer remark plugin called gatsby-remark-interactive-gifs. What that means is that it both extends the Gatsby GraphQL schema with what I call interactive gif data and it transla…

Git aliases

Estimated 1 minute read

You can create Git aliases for long or repetitive commands which map to short cuts. This can make your workflow more efficient as it decreases the number of keystrokes involved. You create your alias using the Git config command which updates the Gi…

gatsby-remark-emoji

Estimated 1 minute read

I use this plugin for emojis on my website. The reference to all possible emojis are hidden here. The current emojis include the following. You can reference an emoji by surrounding the keyword with colons such as :emoji-key: 💯 A better, more accura…

Setup macOS development environment

Estimated 9 minute read

Note: I am running macOS Mojave on a 2.8 GHz Intel Core i7 with 16 GB 2133 MHz LPDDR3 RAM. I am setting up my environment to write some awesome Clojure code. This environment is for Clojure and NodeJS development using the Spacemacs configuration wi…

Look, I have a MacBook Pro now

Estimated 1 minute read

Hooray, I now have a new MacBook Pro! I never thought the day would come where that would happen. I've always been a Microsoft junkie, hacking away at daddy's computer as a young girl while other girls were having sleep overs and pillow fights and w…

The Silver Searcher

Estimated 2 minute read

The utility was designed to replace 99% of the uses of grep. As stated in the man page Ack searches the named input FILEs (or standard input if no files are named, or the file name - is given) for lines containing a match to the given PATTERN . By …

Creating a Clojure solution using IntelliJ

Estimated 2 minute read

I am creating a simple Clojure web app and API. In this post I explore how to create each with the command and what references I need to use. I plan to work on a monolith IntelliJ and git solution so that I don't need to maintain multiple projects …

Greet users with the message of the day

Estimated 1 minute read

The message of the day is known as motd. It's used to send a message to users after logging into a shell, commonly used on hosts. You can generate ASCII art and paste it into the motd file to spice things up. I found that patorjk.com offers a nice w…

Cisco ASA cheat sheet

Estimated 3 minute read

Cisco Adaptive Security Appliancy is known as the Cisco ASA. It is used to protect networks and data centres. It offers firewall, VPN and facilitates dynamic routing amongst other features and capabilities. It runs on Linux using a single Executable…

Getting started with Cisco Adaptive Security Virtual Appliance in AWS

Estimated 5 minute read

I work with NATs and ACLs on Cisco ASA (Adaptive Security Appliance) in the terminal. I want a sandbox environment for me to go bonkers. I couldn't find an image from Cisco to download and install so I chose to go shopping on the AWS Marketplace. I …

Migrate my search from Solr to Elasticsearch

Estimated 6 minute read

An NRT (near-realtime) search platform. It's about a one second delay from the time a document is indexed until it is searchable. I have been using Solr for my search but have been wanting to migrate to Elasticsearch for experience in this technolog…

Installing Elasticsearch and Kibana

Estimated 6 minute read

An NRT (near-realtime) search platform. It's about a one second delay from the time a document is indexed until it is searchable. Elasticsearch Installation There are a lot of ways to install Elasticsearch and on many different platforms. Pick your …

Uninstall an app from the terminal

Estimated 1 minute read

I installed an application. It misbehaved. I wanted to try out a time tracking app. It should let me track reminders and record activity spent in meetings, out-of-office and on tasks I am working on, etc. I need to be able to interact with it in the…

SSH for Days

Estimated 3 minute read

Mosh - the mobile shell. This remote terminal let's you roam with intermittent connectivity without breaking your SSH tunnel. The package must be installed on both the client and server and does not need to be run as a super user. It replaces intera…

Set $JAVA_HOME in Linux

Estimated 1 minute read

$JAVA_HOME an environment variable. It is the root path of the JRE or JDK which some applications and services use to access Java. I know that Java is installed but its not in the path , the output is empty. Configure for single user Open the shell…

Working With Git Remotes

Estimated 4 minute read

I have a repository with two remotes. origin is my personal repository and bitbucket is by BitBucket repository. The nugget of this post is to push to both branches in one command. The git remote command lets you create, view, and delete connections…

Create a symlink for hidden files

Estimated 1 minute read

I want to create a symlink for all hidden files excluding the hidden directories. I want to put my configuration files in my home directory into version control. I need to exclude the hidden directories because they contain binaries and what not. Us…

Why I Create Atomic Commits In Git

Estimated 3 minute read

I wrote about crafting changes into small atomic commits using Git. It looked like there was some confusion. I want to share what I understand about atomic and monolithic commits and why I create atomic commits in Git. I got a question in Reddit by …

How To Craft Your Changes Into Small Atomic Commits Using Git

Estimated 8 minute read

Small, atomic commits makes it easier for code reviews, browsing the history and reverting changes. Life happens and commits can touch more lines and files than I want but the changes committed should be distinct. "Don't mix your apples with your to…

Using the tar Command in Linux

Estimated 10 minute read

I used to right-click on a zipped file and manage the archive using the GUI. Gone are those days. Now I mainly work with tar files and need a cheat sheet to remember the commands for the terminal. 😊 You can find that at the end of this post. This po…

Checking Disk Usage in Linux

Estimated 12 minute read

I had to find out much free space was available on a file system on a Linux server. Now getting this information on the GUI is simple - a few clicks, modals and stuff, but the server doesn't have a GUI so it's off to the terminal I go 😋 The other sc…

A Service Has Gone Rogue. How Do I Manage It?

Estimated 3 minute read

Once I installed a development service on port 3000 and I forgot about it. When I ran my project I couldn't start it because the port was in use. Baffled. 😕 This post forms part of a sequence of command line references that I will be writing where I…

Setting up Solr on Nginx with Let's Encrypt

Estimated 15 minute read

I want to enable search on my blog. I started looking into different solutions. I started with ElasticSearch but came across too many issues to get it setup that I paused on that and moved on to Solr. I fully intend on working with ElasticSearch and…

Logging to Graylog in Clojure

Estimated 2 minute read

It's simple. I wanted to log to Graylog from my Clojure application. I banged my head numerous times trying to figure out how and why it did't want to work. Here's what I did to complete my mission. Graylog Go to System > Inputs > Gelf UDP / TCP > L…

Setting up my environment in Fedora - Installing apps

Estimated 6 minute read

I had to re-install so I documented my process. In this post, I focus on the installation of my most used apps. Get ready is Dandified YUM, a -based distribution package manager. To speed up the upgrade download times, try using fastest mirror. Ap…

Setting up my environment in Fedora - Customizing my shell

Estimated 5 minute read

I had to re-install so I documented my process. In this post, I focus on configuring my shell for a personalized experience. Install Oh My Zsh zsh is an interactive shell with many features that improve the command line experience. Oh My Zsh is a ve…

Setting up my environment in Fedora - Creating a boot disk

Estimated 1 minute read

I had to re-install so I documented my process. In this post, I focus on getting a Fedora 28 live media installation ready on a USB boot disk so that I can begin the installation process. Note: I am using a Lenovo Ideapad 330. When the logo appears …

Setting up my environment in Fedora - Creating backups

Estimated 3 minute read

I had to re-install so I documented my process. In this post, I focus on getting my data backed up so that I can restore it after the installation. Whatever isn't in git gets archived. This is mainly my home directory. I want it backed up to my VM a…

Setting up my environment in Fedora

Estimated 3 minute read

I needed to format my HDD because ... reasons. 😁 For a change, I decided to play around with Fedora instead of Ubuntu. The installation was painless and the user experience is much like what I am used to. I had a few hiccups on this journey mainly d…

Datomic Cheat Sheet Series - Queries (Part 5) - Transactions

Estimated 4 minute read

In this post I work through transactions. The example queries are grabbed from the Datomic Docs. If you want to get started with Datomic, check out the first post in the series. If you want to see other queries, then check out part 1 and part 2. If …

Datomic Cheat Sheet Series - Queries (Part 4) - Pull

Estimated 3 minute read

In this post I work through pull expressions using the Datomic MusicBrainz sample database. The example queries are grabbed from the Datomic Docs. If you want to get started with Datomic, check out the first post in the series. If you want to see ot…

Datomic Cheat Sheet Series - Queries (Part 3) - Rules

Estimated 2 minute read

In this post I work through the creation of rules using the Datomic MusicBrainz sample database. The example queries are grabbed from the Datomic Docs and the Datomic mbrainz sample GitHub pages. If you want to get started with Datomic, check out th…

Datomic Cheat Sheet Series - Queries (Part 2)

Estimated 8 minute read

In this post I work through more querying capabilities using the Datomic MusicBrainz sample database. The example queries are grabbed from the Datomic Docs. If you want to get started with Datomic, check out the first post in the series. If you want…

Datomic Cheat Sheet Series - Queries (Part 1)

Estimated 4 minute read

In this post I work through querying the Datomic MusicBrainz sample database. The example queries are grabbed from the Datomic Docs. If you want to get started with Datomic, check out the previous post in the series. Relationship diagram Create a n…

Datomic Cheat Sheet Series - Getting Started

Estimated 6 minute read

Get started with the essentials of Datomic from installing Datomic, running a transactor, working with the Datomic console, running the Datomic REPL, creating and restoring a database, creating a schema and furnishing it with data. The goal of this …

Behind the Scenes: My Blog

Estimated 3 minute read

I developed corporate programmer using a Ruby-based static-site generator called Jekyll. It transforms Markdown, Liquid, HTML and CSS to a static website so that no is database required. While I was planning to leave the corporate world, I started r…

Clojure Buzzwords I am Learning

Estimated 15 minute read

When I first started with Clojure, my mind was foggy and filled with a swarm of buzzwords. There were tools, plugins, libraries, patterns and frameworks with names that were all new to me. This is a blog post of all the buzzwords that I am learning.…

Learning Linux

Estimated 6 minute read

I have used Windows for over twenty years. Oh my goodness that's a long bloody time. Now I've joined the Linux world. It's thrilling. I'm loving it, learning, sharing (and as always - documenting) what I love and learn. Ubuntu's APT (Advanced Packag…

A Trilogy About the Chrome DevTools in Many Parts

Estimated 5 minute read

Don't take your knowledge for granted. Share it. Someone could learn something new. It also helps you remember it. Keep a record of what you learn in a blog, memo or even a paperback book. Whatever you choose, jot it down and help your future self a…

Building a Monitoring Display with a Rock64

Estimated 9 minute read

There is a page that we want to monitor. It has a lot of valuable information on it and fits nicely on a 4K screen. A ROCK64 device will power this display. The use case is simple: when the device turns on, the user must log in automatically. A brow…

Byte order mark

Estimated 9 minute read

The byte order mark or BOM is an invisible Unicode magic number that can be found at the beginning of a text stream. We recently changed static HTML on a web page and all Unicode characters displayed incorrectly. This was caused by the missing byte …

#40
Byte order mark

Contributing to the README

Estimated 4 minute read

When someone new works on your repository, make sure it is easy to get setup. Imagine if we didn't have any documentation; if we all adopted the mindset of "I already know this, let others figure it out on their own." No more books. No more Wikipedi…

#38
Contributing to the README

Discovering fiddles

Estimated 5 minute read

If you are new to fiddles, it's an online code playground that let's you quickly experiment, visualize results and share code without having to start up an IDE, editor or server of some sort. They are generally free and include features such as synt…

#26
Discovering fiddles

Some new HTML5 elements

Estimated 4 minute read

The HTML5 specification has introduced more elements to aid us with semantic markup. I've discussed some of the design changes as well as the introduction of structural elements. Note: There are many books, articles, wikis and posts relating to thes…

#25
Some new HTML5 elements

HTML5 structural semantics

Estimated 6 minute read

In 2005 Google sampled (link since removed) over a billion documents. This highlighted popular class names, elements, attributes and other related metadata. The data surfaced many structural requirements related to 's with classes of , , , etc. As …

#24
HTML5 structural semantics

Design changes in HTML5

Estimated 5 minute read

Elements, attributes, and attribute values are semantic according to the HTML5 Specification. These definitions allow HTML processors, such as Web browsers, screen readers or search engines, to present and use documents and applications in a wide va…

#23
Design changes in HTML5

Simulating mobile devices in Chrome

Estimated 6 minute read

Edited on Friday, 27 August 2021. Discover the simulation power behind the Device Mode feature in Google Chrome. Chrome DevTools has a feature called Device Mode since Chrome 49. This feature extends some previous features by allowing you to simulat…

The importance of Git history

Estimated 6 minute read

Version control is like time travel for source code. If commits are monolithic and the messages suck... what exactly are you going back to? I use Git at work and in my personal playground. It gives me the confidence I need to explore options and exp…

Problems with microservices

Estimated 4 minute read

After an interesting debate, I decided to explore some of the problems that teams may face with microservices architecture. Trying to decipher a monolithic app is a real pain. Changing it is scary. I don't always trust the test suites attached to co…

#10
Problems with microservices
We use essential cookies to make our site work. With your consent, we may also use non-essential cookies to improve user experience and analyze website traffic. By clicking 'Accept', you agree to our website's cookie use as described in our Privacy Policy.