Blog
Make sure Git knows about case-sensitive changes to your file names
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 …
Attack of the bruised ego
Take feedback as objectively as possible. Don't be married to your ideas and code. Instead explore, learn, be curious and continuously grow by learning from those around you. Maintain clear, open cha…

How to debug a specific Gatsby package on build
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…
Use React hooks inside an MDX story in Storybook
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. …
How can I deploy a ClojureScript web app to Google Firebase with GitHub Actions?
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 famili…
How can I use Tailwind in my ClojureScript web app?
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…
How can I create a ClojureScript web app from scratch with Reagent and npm?
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 Replaceme…
How can I find deleted stuff in Git?
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 discarde…
A custom alias for a pretty Git log with a graph
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 summa…
Debugging gatsby-plugin-google-gtag for Google Analytics 4 with Gatsby
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. Prerequi…
Feature Development Lifecycle with minimum viable features
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 pedanti…
What I did to build a high performing and SEO happy Gatsby blog
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 possibl…
Emulating rendering options in Chrome DevTools
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 e…
How I got started with my first Gatsby source & remark plugin
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 wi…
Git aliases
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…
gatsby-remark-emoji
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 …
Setup macOS development environment
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 NodeJ…
Look, I have a MacBook Pro now
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 gir…
The Silver Searcher
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 l…
Creating a Clojure solution using IntelliJ
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 s…
Greet users with the message of the day
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 t…
Cisco ASA cheat sheet
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 capabi…
Getting started with Cisco Adaptive Security Virtual Appliance in AWS
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…
Installing Elasticsearch and Kibana
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 Elastic…
Migrate my search from Solr to Elasticsearch
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…
Uninstall an app from the terminal
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,…
SSH for Days
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 …
Set $JAVA_HOME in Linux
$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 …
Working With Git Remotes
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 com…
Create a symlink for hidden files
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 director…
Why I Create Atomic Commits In Git
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 ato…
How To Craft Your Changes Into Small Atomic Commits Using Git
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 shoul…
Using the tar Command in Linux
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. 😊 …
Checking Disk Usage in Linux
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 G…
A Service Has Gone Rogue. How Do I Manage It?
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 comm…
Setting up Solr on Nginx with Let's Encrypt
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…
Logging to Graylog in Clojure
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. …
Setting up my environment in Fedora - Installing apps
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 up…
Setting up my environment in Fedora - Customizing my shell
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 impr…
Setting up my environment in Fedora - Creating a boot disk
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 …
Setting up my environment in Fedora - Creating backups
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…
Setting up my environment in Fedora
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 use…
Datomic Cheat Sheet Series - Queries (Part 5) - Transactions
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 ot…
Datomic Cheat Sheet Series - Queries (Part 4) - Pull
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 t…
Datomic Cheat Sheet Series - Queries (Part 3) - Rules
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 …
Datomic Cheat Sheet Series - Queries (Part 2)
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, c…
Datomic Cheat Sheet Series - Queries (Part 1)
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 po…
Datomic Cheat Sheet Series - Getting Started
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 sch…
Behind the Scenes: My Blog
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 …
Clojure Buzzwords I am Learning
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 …
Learning Linux
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) wh…
An Iterative Approach to My Blog
I was leaving the corporate world behind and needed to rebrand. I had a hard deadline. I had a new job, a new domain and new hosting, I needed a new blog. I could have rebranded my old blog but I did…
A Trilogy About the Chrome DevTools in Many Parts
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 y…
Building a Monitoring Display with a Rock64
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 tu…
My Nomadic Lifestyle
My goal for the next two months is to maximize my learning time and try to keep my anxiety as low as possible by stripping out unnecessary concerns. I made some changes that ripped me outside of my c…
My First Week at CloudAfrica
Stay tuned if you are interested to know what I learned, did and achieved in the past week. Maybe something I did could be of interest to you. Only time will tell. Read on. Monday I started the week …
Sayōnara
I've been very quite. A year's worth of quiet to be exact. I'm sorry. I'm still here. I still plan on blogging, just a little differently now and maybe shorter posts. Writing is hard. Saying goodbye …
Defusing Stressful Emotions
Mark Twain said, "I am an old man and I have known a great many troubles, but most of them never happened." It’s unsustainable to experience many days feeling exhausted, uninspired and anxious. I bel…
Rewire your brain (Part 8) - Conclusion
Page 172 of the book Rewire: Changing Your Brain to Break Bad Habits, Overcome Addictions, Conquer Self-Destructive Behavior written by psychotherapist Richard O’Connor says that whatever we pay atte…
Rewire your brain (Part 7) - Our habits
Germany Kent says that it's a funny thing about life, once you begin to take note of the things you are grateful for, you begin to lose sight of the things that you lack. In the part 6, Neuroplastici…
Rewire your brain (Part 6) - Neuroplasticity
Lara Boyd challenges us by asking how do we learn? And why does some of us learn things more easily than others? In the part 5, The Satir Change Process Model, we looked at how the model can help tra…
Rewire your brain (Part 5) - The Satir Change Process Model
Virginia Satir says that we can learn something new anytime we believe we can. Therefore we can learn to cope with what we are dealing with by readjusting the way we think. In the part 4, Survival Ru…
Rewire your brain (Part 4) - Childhood survival rules
Virginia Satir says that you have learned what you have learned very well. It has helped you survive. In Part 3, Distress Tolerance, we learned how to "Distract. Relax. Cope." We identify negative co…
Rewire your brain (Part 3) - Distress tolerance
Oliver Goldsmith says that the mind is ever ingenious in making its own distress. In Part 2 we looked at how we can activate five neuro pathways in order to create new neural networks in the brain. T…
Rewire your brain (Part 2) - Activate neuro pathways
Dr. Hilary Stokes says that we have trillions of brain cells, resulting in thousands (if not millions) of strings of lights (chemical reactions) correlating with our habits in all areas of our life. …
Rewire your brain (Part 1) - Introduction
John Medina said, "what you do and learn in life physically changes what your brain looks like - it literally rewires it." You are learning something new everyday. Whether it be a new skill, new way …
Practice what you preach
"Your beliefs don't make you a better person, our behavior does." I have a far way to go on my journey. My journey of self-discovery and healing. It's a life-long journey and sometimes it's a real ba…
Who are you and where are you going?
Nathaniel Hawthorne says that happiness is a butterfly, which when pursued, is always just beyond your grasp, but which, if you will sit down quietly, may alight upon you. I've been plagued for years…
Know your limits
"Know your limits, know when to give, know when to demand, know when to say no, know when enough is enough" Face your fears, get out of your comfort-zone, do something that you won't normally do. Yes…
Change starts with you
Mahatma Gandhi says to start changing yourself if you want to change the life around you. "Change starts with you"... how cliché Clarice. Thanks for that one. Okay, I really feel I need to deep dive …
Words define your reality
"Words are free. It's how you use them, that may cost you." - KushandWizdom How often do you listen to yourself when you speak? Not just hear your own voice but actually listen to the words that you …
Discovering yourself
“Knowing yourself is the beginning of all wisdom.” ― Aristotle Sometimes I struggle to consciously understand my actions. This makes it hard for me to find out why I react the way I do in certain sit…
The fear behind the scenes
"The reason why we struggle with insecurity is because we compare our behind the scenes with everyone else's highlight reel," Steven Furtick Think of someone successful in the industry who you admire…
Rubyfuza 2017 Conference
I spoke at Rubyfuza 2017 in Cape Town about how Imposter Syndrome impacts my day-to-day decisions and confidence, affects growth by limiting opportunities and makes me feel unworthy. I wanted to shar…
The imposter within
“Did I do anything wrong today,” he said, “or has the world always been like this and I've been too wrapped up in myself to notice?” ― Douglas Adams, The Hitchhiker's Guide to the Galaxy Just over a …
Byte order mark
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…
Unicode displaying incorrectly
Problem We made content changes on an MVC view in a .NET application. The Unicode characters were displaying fine until the change was made which resulted in gibberish on the screen where the Unicode…
Contributing to the README
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 …
Deliberate downtime
"Do you really squeeze more productivity out of yourself by powering through your weariness?", Caroline Webb To make good decisions you need your mind to be fresh. If you keep grinding through tasks,…
Sustainable living
The aim is simple. I wish to boost my overall sense of wellbeing by living a more fulfilling life day-to-day. I decided it was time to consciously unpack why I feel overwhelmed: The city feels rushed…
How I got my article published
I am proud to announce that my article got published on A List Apart giving me the chance to share my career experiences with the community. My article — "Finding Opportunities in the Mistakes We Mak…
Code katas
A fun way to practice and familiarize yourself with development tools, workflows, patterns and practices. Wikipedia states that a code kata is an exercise in programming which helps a programmer hone…
Coping with unknown outcomes
"I am an old man and I have known a great many troubles, but most of them never happened." by Mark Twain As software developers we have a lot of things that build unnecessary stress and anxiety in ea…
A mindful day of happiness
Everything I did today was done with intent and slower than usual. I was mindful. Today I had complete control of my day and my emotions because I was mindful. I walked mindfully. I spoke mindfully. …
The rainbow in our storm sprint
Communication is essential to minimize stress and get the support a team needs to be successful. We are seven days into our two week sprint and our burndown is flat-lining. Until today, this sprint f…
Making red-tape allies
Having allies that are exposed to just as much red-tape as you can give you the confidence and guidance you need. Sometimes you have to tackle many obstacles to get something done at a corporate. Man…
Streamline operations communication
Get the support you need to make the product and operating the product a success. Teams cannot focus on sprint work when there are multiple communication channels filtering into the team at any given…
The ego barrier
Be the change you want to see even if it doesn't change anything right away. An ego is a person's sense of self-esteem or self-importance. It can be detrimental to a person and those around them if r…
What it means to be an expert
Accelerate your learning by sharing what you learn with others while you are learning it. Experts aren't people who know absolutely everything in their field of expertise. Take GPs for example, they …
Discovering fiddles
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 ar…
Some new HTML5 elements
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…
HTML5 structural semantics
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 requirem…
Design changes in HTML5
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 prese…
The horror behind design
Improve your craft, write the cleanest code you know how at that point in time, learn from your mistakes (and that of others) and always aim to improve. I think looking at the plumbing behind many de…
Simulating mobile devices in Chrome
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…
Branding your identity
It's important to know that having an engaging community presence is far more beneficial than experience alone. Think how the web has evolved. There are so many technologies that it is impossible to …
Coping with fears of public speaking
Fears sabotage our success and impede improvements we can make. It's terribly difficult to overcome them but all we can do is try. Take it one step at a time. At some time in your career, you may be …
5 Soft skills every developer should know about
"We only grow when we are doing things that makes us uncomfortable." by John Sonmez I have been following John Sonmez for a while now. He has personally guided and motivated me during the conception …
People do stupid sh*t
"If you don’t fail it’s because you did not risk enough, and if you didn’t risk enough it’s because you didn’t put your whole self out there." by Carlos Barrabes People do stupid things. It's guarant…
Reignite the passion
Do you remember how excited you were when you wrote your first program? It's easy to forget when you've been in the real-world for a long time. Sometimes we just need to reignite that passion that we…
Escaping the social comfort zone
"I think that we grow when we are outside our comfort zone. If it's not breaking you down, it's not building you up." quoted by Scott Hanselman The comfort zone. What a wonderful place. It's so safe …
Dealing with change in teams
It's sad when people leave because bonds are formed but we can't stay in the same environment and position forever. I had a bad experience. I once joined a team that had pressure from all angles. Fix…
People oriented software
The art of making software for people with people. Today the words "people oriented software" materialized in my mind. It's not a new (I Googled it) but it is new to me. As a software developer I nat…
The importance of Git history
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 m…
How this blog improved my productivity
Having a pet project has some powerful benefits. Do you have one? What benefits have you observed? I started this blog as a course. I decided to meticulously create the site from scratch keeping in m…
Problems with microservices
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…
Time is precious
When last did you just stop to smell a flower? Or take a peaceful walk without having to rush for something? Today I sat in standstill traffic. It took me an hour to get home. It's usually between 15…
Adjusting the corporate mindset
Just because it's always been done that way, doesn't mean it can't be changed. Personally there is nothing I can do about the way corporate work. There are a lot of people involved and possibly a ple…
Days that rush away
Are you busy but don't feel productive? I feel this way sometimes. It is exhausting. How can we find ways to feel fulfilled and accomplished at the end of the day? Rushed days leave me feeling exhaus…
Context-driven queries
Do people look confused when you talk to them? Only you can truly know what is going on inside your mind. Communicating with context and intent helps alleviate confusing discussions. Our minds are be…
Bonding with Testers
Do you form relationships with testers? Teaming up with testers from the beginning of a feature can positively impact the quality of the feature being developed. At work we often get trapped in our r…
Manage expectations
Do you keep business informed? Business won't know when things are not working out unless you tell them. It is surprising how much support we can get when we open honest channels of communication. Le…
The “Perfect” Illusion
Are you chasing after unicorns - perfect things that may not exist? Perfection is a subjective perspective. I dive into this "illusion" and how it has affected me. Media often creates a perception of…
You don't have to be a number
Do you feel like a number? Making a name for yourself in the software development community helps build street cred in the corporate world. When you join the corporate world, you become a number. At …
Welcome to my blog
My name is Clarice Bouwer. I have been a professional software developer since 2006 and I still feel like I have absolutely no idea what I am doing. Regardless, I learn some pretty cool stuff that I …