RSSAmplifier

Blog

Tinacious Design Blog

A Software Engineering blog by Tina Holly, a Full Stack Software Developer from Canada 🇨🇦

blog.tinaciousdesign.comRSS feed ↗20 posts

Latest posts

Uninstalling a package installed with Go

Have you ever installed a package by using go install and wondered how to uninstall it? Go is really great in that respect. Go packages are a single binary and they’re installed based on how your Go tooling is set up. Provided we have ...

Open API (Part 3): Generating an OpenAPI spec file from code

Overview This is the 3rd article in a series of posts about working with Open API to create generated API clients and documentation websites. In the 1st post we went over what we can do with Open API spec files, e.g. generate API clients and documen...

Open API (Part 2): Handcrafted, bespoke, artisanal Open API specs: API contract-first

Overview This article is the 2nd in a series of blog posts that discuss using Open API to help with API documentation and API client code generation. In the previous article, we went over how we can generate documentation and API clients using existi...

Open API (Part 1): Generating API clients and documentation from an Open API spec

Overview This article starts a series of Open API-related blog posts. OpenAPI, previously known as Swagger (a name still in use today for many of its tools), is a suite of tools that generate documentation and networking clients for various programmi...

Android apps are reading your clipboard – here's how you can stop them

You've probably already seen the scary alert (that's possibly why you're here), but in case you haven't, it looks something like this: NewAppIJustDownloaded pasted from your clipboard Sometimes it h

PDF to PNG to PDF on macOS using ImageMagick

ImageMagick is an awesome command line tool for working with images. Convert PDF to PNG files with magick Convert a multi-page PDF file to PDFs with ImageMagick using the following command: magick density -300 input.pdf -resize 30% outdir/output.png ...

Simple Event Bus in Android using coroutines and flows

In this post I will describe a simple event bus pattern in Android that is implemented using coroutines and flows. Thanks to Kotlin, coroutines, and flows, this is a simple approach that requires very little code. What is an Event Bus? Event bus is a...

Covid Today Android app

Close to the beginning of the pandemic, I made a React app that displayed COVID-19 data per country. This is the Android version. Built in native Android with Kotlin, I developed it as an opportunity to build something with some newer Android API's ...

How I made my keyboard flash red when the build breaks on CI 🚨

I recently got a Steelseries keyboard. Other than that this keyboard was one of the only RGB keyboards I could find that was supported on Mac, it had an extra draw, which was that it was programmable. Steelseries offers their GameSense SDK which has...

Saving to photos in Android Q+ (Android 10+)

As of Android 10, file access permissions have changed. In a previous blog post Migrating from getExternalStoragePublicDirectory in Android 10 & 11, I moved from the legacy storage to a simpler intent-based approach that opened the native share sheet...

Migrating from get External Storage Public Directory in Android 10 & 11

Android 11 introduces breaking changes to working with files on Android. One of these breaking changes includes the deprecation of the following method: Environment .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) The Canned Rep...

Generate a Vue component using Plop

Plop is a handy tool for code generation. It uses Handlebars under the hood alongside some provided Handlebars helper functions. By using a code generation tool like plop, you can avoid writing tedious boilerplate code and be productive right away. ...

Use BEM for scalable and maintainable CSS

BEM CSS stands for Block Element Modifier, which is a CSS methodology to help you write maintainable CSS. Here's BEM's official website but keep reading for a brief overview. BEM Basics BEM takes a component-based approach to CSS development. It has ...

Building a macOS Touch Bar app using interprocess communication in Electron

In this post, I will go through the process of building a feature in a macOS desktop application that uses Electron. This feature will implement the native macOS Touch Bar API's. Feature we need to build I have a desktop application called TextDiffer...

Migrating my blog from WordPress to Hashnode

A step-by-step guide for migrating a blog from WordPress to Hashnode. Why did I switch from WordPress to Hashnode? Currently, my portfolio website and blog are on WordPress. It's been really great for search engine optimization, and the experience wi...

iTerm colour schemes

Introducing 2 iTerm colour schemes. These are based off of my Visual Studio Code theme. See the Download and installation instructions on Github.

ImageMagick Cheatsheet

An ImageMagick cheatsheet with some helpful commands for working with ImageMagick on the command line. This is a work in progress that will be periodically updated and is by no means a complete list. Resizing images Resize a single image: convert inp...

BuildConfig.DEBUG always returns false

If you see the error that BuildConfig.DEBUG always returns false in Android Studio, this is likely because you've imported another package's BuildConfig instead of your own. Follow the instructions below to fix it. About BuildConfig BuildConfig is a ...

Writing a simple Gulp plugin tutorial

In this simple Gulp plugin tutorial, I will be going through a plugin I wrote. The plugin is simple and transforms an input JSON file. Though Gulp was a great tool I fully leveraged for bundling front-end apps at its inception, I do not currently rec...

COVID-19 data by country

When the world gives you COVID-19, use the community-driven APIs it provides for COVID-19 data by country to make a tool to show data better? COVID-19 Today shows daily stats for the coronavirus. It's a web app built in React that displays COVID-19 d...