all: revert social tags experiments [staging]

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
Harsh Shandilya 2021-02-09 13:03:24 +05:30
parent b5eae97bf3
commit f70530b626
114 changed files with 50 additions and 51 deletions

View File

@ -13,12 +13,11 @@ ignoreErrors = ["error-remote-getjson"]
subtitle = "Android developer, Kotlin fanatic and wannabe Rustacean"
keywords = "homepage, blog, android, kotlin, rust"
twitterUsername = "@msf_jarvis"
socialImage = "android-chrome-512x512.png"
socialImage = "android-chrome-512x512.webp"
mainSections = ["posts"]
mode = "light"
utterancesRepo = "msfjarvis/msfjarvis.dev"
utterancesTheme = "github-light"
twitterCardType = "summary"
[[menu.main]]
identifier = "about"

View File

@ -5,7 +5,7 @@ description = "Optimize social media exposure with the right metadata for your s
slug = "adding-social-metadata-to-your-hugo-sites"
tags = ["hugo", "webdev", "static sites"]
title = "Adding social metadata to your Hugo sites"
socialImage = "uploads/hugo_metadata_social.png"
socialImage = "uploads/hugo_metadata_social.webp"
+++
Metadata is data (information) about data.
@ -16,9 +16,9 @@ This metadata can be used by browsers (how to display content or reload page), s
Here's how your website will look like on Twitter with and without metadata.
![No metadata](/uploads/hugo_metadata_no_meta.png)
![No metadata](/uploads/hugo_metadata_no_meta.webp)
![Correct metadata](/uploads/hugo_metadata_correct_meta.png)
![Correct metadata](/uploads/hugo_metadata_correct_meta.webp)
You be the judge of what you like better :)
@ -38,7 +38,7 @@ After coming across [this list](https://github.com/budparr/awesome-hugo#theme-co
<meta name="og:description" content="Optimize social media exposure with the right metadata for your site" />
<meta name="twitter:description" content="Optimize social media exposure with the right metadata for your site" />
<meta name="twitter:url" content="https://msfjarvis.dev/posts/adding-social-metadata-to-your-hugo-sites/" />
<meta name="twitter:image:src" content="android-chrome-512x512.png" />
<meta name="twitter:image:src" content="android-chrome-512x512.webp" />
```
- `og:type` - Allowed values are specified at the OpenGraph protocol's documentation [here](https://ogp.me/#types). I use `website` to reflect the content I serve.

View File

@ -3,7 +3,7 @@ categories = ["aps"]
date = 2020-07-23
description = "Long form release notes for the Android Password Store v1.10.1 patch release"
slug = "aps-1.10.1-release"
socialImage = "uploads/aps_banner.png"
socialImage = "uploads/aps_banner.webp"
tags = ["relnotes", "oss", "android-password-store"]
title = "Android Password Store 1.10.1 patch release"
+++

View File

@ -3,7 +3,7 @@ categories = ["aps"]
date = 2020-07-30
description = "Long form release notes for the Android Password Store v1.10.2 patch release"
slug = "aps-1.10.2-release"
socialImage = "uploads/aps_banner.png"
socialImage = "uploads/aps_banner.webp"
tags = ["relnotes", "oss", "android-password-store"]
title = "Android Password Store 1.10.2 patch release"
+++

View File

@ -3,7 +3,7 @@ categories = ["aps"]
date = 2020-08-18
description = "Long form release notes for the Android Password Store August release"
slug = "aps-august-release"
socialImage = "uploads/aps_banner.png"
socialImage = "uploads/aps_banner.webp"
tags = ["relnotes", "oss", "android-password-store"]
title = "Android Password Store August release"
+++
@ -16,7 +16,7 @@ Continuing this new tradition, here are the detailed release notes for the [v1.1
Previously you'd have to set the URL to your repository across multiple fields like username, server, repository name and what not. Annoying! These things make sense to us as developers, but users should not have to be dealing with all that complexity when all they want to do is enter a single URL. We've received numerous bug reports over time as a result of people misunderstanding and ultimately misconfiguring things when exposed to this hellscape. Thanks to some *amazing* work from Fabian, we now have a single URL field for users to fill into.
![Single URL field in repository information](/uploads/aps-august-release-single-url-field.png)
![Single URL field in repository information](/uploads/aps-august-release-single-url-field.webp)
## Custom branch support
@ -26,7 +26,7 @@ A long-requested feature ([from 2017](https://msfjarvis.dev/aps/issue/298)!) has
We made a number of UI improvements in this area for the last series, and for this release the original contributor [glowinthedark](https://github.com/glowinthedark) has returned to add the ability to append extra symbols and numbers to the password. Sometimes you'll see sites that require that each password have at least 1 symbol and 1 number to agree with some arbitrary logic's idea of a 'secure' password, and while it can be done manually, automatic is just better :)
![XkPasswd generator with the new symbol/number append option](/uploads/aps-august-release-xkpasswd.png)
![XkPasswd generator with the new symbol/number append option](/uploads/aps-august-release-xkpasswd.webp)
To add 1 symbol and 1 number to the end of a password, input `sd` and press generate. Each instance of `s` means one symbol, and `d` means one digit. Together these can be put together in any order and in any amount to create passwords conforming to any arbitrary snake-oil check. Remember, in passwords, length is king!
@ -34,7 +34,7 @@ To add 1 symbol and 1 number to the end of a password, input `sd` and press gene
In the last major release we added support for [per-directory keys](/posts/aps-july-release/#proper-support-for-per-directory-keys). Building upon this, we now have support for also setting the key for a subdirectory when creating it.
![Create folder dialog but key selection checkbox](/uploads/aps-august-release-subdir-key-support.png)
![Create folder dialog but key selection checkbox](/uploads/aps-august-release-subdir-key-support.webp)
When selected, you will be prompted to select a key from OpenKeychain that will then be written into `your-new-directory/.gpg-id` which makes it compatible with all `pass` compliant apps.
@ -44,7 +44,7 @@ When selected, you will be prompted to select a key from OpenKeychain that will
Many, many people reported being unable to edit/create passwords and the app abruptly crashing. This is pretty bad UX, and we've now fixed it. Users will be prompted to install OpenKeychain and once you install and return to Password Store, the app will pick up from where you left and continue the operation. Pretty neat, even if I say so myself :)
![OpenKeychain installation prompt](/uploads/aps-august-release-missing-openkeychain.png)
![OpenKeychain installation prompt](/uploads/aps-august-release-missing-openkeychain.webp)
## External storage fixes

View File

@ -3,7 +3,7 @@ categories = ["aps"]
date = 2020-07-22
description = "Long form release notes for the Android Password Store July release"
slug = "aps-july-release"
socialImage = "uploads/aps_banner.png"
socialImage = "uploads/aps_banner.webp"
tags = ["relnotes", "oss", "android-password-store"]
title = "Android Password Store July release"
toc = true
@ -65,7 +65,7 @@ We've been aggressively refactoring the codebase to use modern APIs like [Activi
Right off the bat, you will notice a brand new icon for Password Store. This was created for us by [Radek Błędowski](https://twitter.com/RKBDI), go check him out!
![New icon](/uploads/aps_banner.png)
![New icon](/uploads/aps_banner.webp)
To complement the new icon, we've also updated our color scheme to better suit this new branding.

View File

@ -3,7 +3,7 @@ categories = ["aps"]
date = 2020-10-22
description = "Long form release notes for the Android Password Store October release"
slug = "aps-october-release"
socialImage = "uploads/aps_banner.png"
socialImage = "uploads/aps_banner.webp"
tags = ["relnotes", "oss", "android-password-store"]
title = "Android Password Store October release"
toc = true
@ -17,7 +17,7 @@ We're back with yet another release! As I tweeted [earlier this month](https://t
Creating a new store from the app previously created an unusable store, because we never configured a GPG key in the `.gpg-id` file. This has now been remedied in two ways: empty `.gpg-id` files are correctly handled as invalid and included in our quickfix solution, and creating a new store will now request you to select a key and then write it into the `.gpg-id` file. Here's what the key selection screen looks like:
![GPG key selection screen from the APS October release](/uploads/aps-october-release-gpg-key-selection.png)
![GPG key selection screen from the APS October release](/uploads/aps-october-release-gpg-key-selection.webp)
### Allow configuring an HTTPS proxy
@ -32,7 +32,7 @@ Before we close the gates on our regularly scheduled releases, our focus has bee
Due to multiple bugs, this feature has been rolled back in [v1.13.1](https://github.com/android-password-store/Android-Password-Store/releases/tag/v1.13.1).
<!--![App launch screen showing the repository being synced](/uploads/aps-october-release-syncing-repository.png)-->
<!--![App launch screen showing the repository being synced](/uploads/aps-october-release-syncing-repository.webp)-->
## Fixes

View File

@ -3,7 +3,7 @@ categories = ["aps"]
date = 2020-09-21
description = "Long form release notes for the Android Password Store September release"
slug = "aps-september-release"
socialImage = "uploads/aps_banner.png"
socialImage = "uploads/aps_banner.webp"
tags = ["relnotes", "oss", "android-password-store"]
title = "Android Password Store September release"
toc = true

View File

@ -4,7 +4,7 @@ date = 2020-02-05
description = "GitHub Actions paired with GitHub Pages provides an excellent CD platform for a status page. Here's how I used it to create mine."
devLink = "https://dev.to/msfjarvis/creating-a-continuously-deploying-static-statuspage-with-github-3ol2"
slug = "creating-a-continuously-deploying-static-statuspage-with-github"
socialImage = "uploads/statuspage_social.png"
socialImage = "uploads/statuspage_social.webp"
tags = ["webdev", "github actions", "github pages"]
title = "Creating a continuously deploying static statuspage with GitHub"
+++
@ -19,15 +19,15 @@ For hobbyist projects without any real budget (like this site and the couple oth
- First thing that you want to do is to setup the `CNAME` record that will let GitHub Pages service your status page to a subdomain of your website. Head to your domain registrar (Cloudflare for me) and add a CNAME record for `<your github username>.github.io`
![CNAME record for status.msfjarvis.dev at Cloudflare](/uploads/statuspage_cname_record.png)
![CNAME record for status.msfjarvis.dev at Cloudflare](/uploads/statuspage_cname_record.webp)
- Next, create a GitHub repository that will hold the Actions workflow for generating your status page as well as the actual status page itself. This repo can be private, as the generated sites are always publicly available.
![GitHub repository for our status page](/uploads/statuspage_github_repo.png)
![GitHub repository for our status page](/uploads/statuspage_github_repo.webp)
- Clone this empty repository. Now create a file with the name of `CNAME` and enter your custom domain into it. This lets GitHub Pages know where to redirect users if they ever access the site through your `.github.io` subdomain. Commit this file.
![CNAME file in repository](/uploads/statuspage_cname_file.png)
![CNAME file in repository](/uploads/statuspage_cname_file.webp)
- A quick glance at the static_status README will inform you about the `config` file that it uses to configure itself, and status_hostname_list.txt which has a list of all services it needs to check. `config` is easy to understand and modify, so I'll skip it (you can diff [mine](https://github.com/msfjarvis/status.msfjarvis.dev/blob/master/config) with upstream and use the changes to educate yourself should the need arise). This part should be very straightforward, though I did encounter a problem where using `ping` as the detection mechanism caused sites to falsely report as down. Switching to `curl` resolved the issue.

View File

@ -4,7 +4,7 @@ date = 2020-01-20
description = "Dagger is universally intimidating to beginners and I want to change it."
devLink = "https://dev.to/msfjarvis/dagger-the-easy-way-part-1-3l7b"
slug = "dagger-the-easy-way--part-1"
socialImage = "uploads/dagger_made_easy_social.png"
socialImage = "uploads/dagger_made_easy_social.webp"
tags = ["android", "dagger", "tutorial"]
title = "Dagger the easy way - Part 1"
+++

View File

@ -4,7 +4,7 @@ date = 2020-03-06
description = "Let's extend the \"scope\" of these tutorials :)"
devLink = "https://dev.to/msfjarvis/dagger-the-easy-way-part-2-4p4m"
slug = "dagger-the-easy-way--part-2"
socialImage = "uploads/dagger_made_easy_social.png"
socialImage = "uploads/dagger_made_easy_social.webp"
tags = ["android", "dagger", "tutorial"]
title = "Dagger the easy way - Part 2"
+++

View File

@ -3,7 +3,7 @@ categories = ["hugo"]
date = 2019-12-04
description = "GitHub Actions are awesome! Learn how to use it for continuous delivery of your static sites."
slug = "deploying-hugo-sites-with-github-actions"
socialImage = "uploads/actions_social.png"
socialImage = "uploads/actions_social.webp"
tags = ["hugo", "github actions", "static sites"]
title = "Deploying Hugo sites with GitHub Actions"
+++

View File

@ -3,7 +3,7 @@ categories = ["webdev"]
date = 2020-05-08
description = "Everybody probably understands how Cloudflare proxies A/AAAA records, but how it proxies CNAME records is also pretty interesting. Let's dive into how that happens and why it can often break other products that need you to set CNAME records."
slug = "how-cloudflare-proxies-cname-records"
socialImage = "uploads/cf_proxy_social.png"
socialImage = "uploads/cf_proxy_social.webp"
tags = ["cloudflare"]
title = "How Cloudflare proxies CNAME records"
+++

View File

@ -3,7 +3,7 @@ categories = ["kotlin"]
date = 2020-12-22
description = "Kotlin 1.4.30 is poised to improve on multiple pain points with inline classes, making them more generally useful. Let's look at these changes!"
slug = "improvements-to-inline-classes-in-kotlin-1-4-30"
socialImage = "/uploads/kotlin_social.png"
socialImage = "/uploads/kotlin_social.webp"
tags = ["kotlin", "inline classes"]
title = "Improvements to inline classes in Kotlin 1.4.30"
+++

View File

@ -4,7 +4,7 @@ date = 2020-01-20
description = "Adding additional comment backends to Hugo is actually rather simple!"
devLink = "https://dev.to/msfjarvis/integrating-comments-in-hugo-sites-with-commento-136f"
slug = "integrating-comments-in-hugo-sites-with-commento"
socialImage = "uploads/commento_social.png"
socialImage = "uploads/commento_social.webp"
tags = ["hugo", "static sites", "comments", "commento.io"]
title = "Integrating comments in Hugo sites with commento"
+++

View File

@ -3,7 +3,7 @@ categories = ["linux"]
date = 2020-07-17
description = "Getting a USB Bluetooth dongle to function properly on Linux proved to be somewhat of a trip, which I'm documenting here."
slug = "making-a-bluetooth-adapter-work-on-linux"
socialImage = "uploads/bluetooth_social.png"
socialImage = "uploads/bluetooth_social.webp"
tags = ["bluetooth", "linux", "bt-audio"]
title = "Making a Bluetooth adapter work on Linux"
+++

View File

@ -3,7 +3,7 @@ categories = ["kotlin", "android"]
date = 2020-12-21
description = "Moshi is a fast and powerful JSON parsing library for the JVM and Android. Today we look into manually parsing JSON to and from Java/Kotlin classes"
slug = "manually-parsing-json-with-moshi"
socialImage = "/uploads/moshi_social.png"
socialImage = "/uploads/moshi_social.webp"
tags = ["moshi", "json parsing", "android", "kotlin"]
title = "Manually parsing JSON with Moshi"
toc = true

View File

@ -4,7 +4,7 @@ date = 2020-01-11
description = "Dagger is not the easiest tool to get on board with but it's almost worth the effort. Here's the story of my journey to not hating Dagger."
devLink = "https://dev.to/msfjarvis/my-dagger-story-2go0"
slug = "my-dagger-story"
socialImage = "uploads/dagger_story_social.png"
socialImage = "uploads/dagger_story_social.webp"
tags = ["android", "dagger"]
title = "My Dagger Story"
+++

View File

@ -4,7 +4,7 @@ date = 2019-11-21
description = "GitHub recently rolled out Packages to the general public, allowing the entire develop-test-deploy pipeline to get centralized at GitHub. Learn how to use it to publish your Android library packages."
devLink = "https://dev.to/msfjarvis/publishing-an-android-library-to-github-packages-1l74"
slug = "publishing-an-android-library-to-github-packages"
socialImage = "uploads/github_packages_social.png"
socialImage = "uploads/github_packages_social.webp"
tags = ["android", "gradle", "github", "packaging"]
title = "Publishing an Android library to GitHub Packages"
+++
@ -274,6 +274,6 @@ That's it! Once you push to GitHub, you'll see the [action running](https://gith
The requirement to authenticate for packages is a significant problem with GitHub Packages' adoption, giving an edge to solutions like [JitPack](https://jitpack.io) which handle the entire process automagically. As mentioned earlier, I did contact GitHub support about it and got this back.
![GitHub support reply about authentication requirement for packages](/uploads/github_packages_support_response.png)
![GitHub support reply about authentication requirement for packages](/uploads/github_packages_support_response.webp)
My interpretation of this is quite simply that **it's gonna take a while**. I hope not :)

View File

@ -4,7 +4,7 @@ date = 2019-12-17
description = "Analytics platforms are often overwhelming and a privacy nightmare -- here's how to bring analytics to the backend with very simple tooling"
devLink = "https://dev.to/msfjarvis/server-side-analytics-with-goaccess-pg8"
slug = "serverside-stats-with-goaccess"
socialImage = "uploads/goaccess_social.png"
socialImage = "uploads/goaccess_social.webp"
tags = ["caddyserver", "goaccess", "analytics"]
title = "Server-side analytics with Goaccess"
+++
@ -22,7 +22,7 @@ Goaccess is an **open-source**, **real-time** web log analyzer. In other words,
To create a compelling analytics experience, we'll need to use Goaccess' `--real-time-html` option, that creates an HTML report, and an accompanying `WebSocket` server that will dispatch a request to update the page data every time goaccess parses updated logs. When we're done, the result will look similar to [stats.msfjarvis.dev](https://stats.msfjarvis.dev), which shows statistics for my blog. Here's a peek at Goaccess' terminal visualizer, to get an idea about the datasets you can expect from the web version.
![Goaccess in the terminal](/uploads/goaccess_terminal.png)
![Goaccess in the terminal](/uploads/goaccess_terminal.webp)
Goaccess supports most common webserver log formats, and [some more](https://goaccess.io/man#options) with the option to provide your own format if you're using custom solutions. I'm using `VCOMMON`, as that is the default log format of my webserver of choice, [Caddy](https://caddyserver.com). Here's the command executed by the systemd unit that I use for goaccess. I'll explain every option in a bit.

View File

@ -3,7 +3,7 @@ categories = ["rust", "dev"]
date = 2020-07-05
description = "Rust programs are pretty fast on their own, but you can slightly augment their performance with some simple tricks."
slug = "simple-tricks-for-faster-rust-programs"
socialImage = "uploads/cuddlyferris.png"
socialImage = "uploads/cuddlyferris.webp"
tags = ["rust", "dev", "perf"]
title = "Simple tricks for faster Rust programs"
+++

View File

@ -3,7 +3,7 @@ categories = ["news"]
date = 2020-02-09
description = "The Viscerion experiment that started more than a year ago is now coming to an end. Here's what's happening."
slug = "sunsetting-viscerion"
socialImage = "uploads/viscerion_social.png"
socialImage = "uploads/viscerion_social.webp"
tags = ["personal"]
title = "Sunsetting Viscerion"
+++

View File

@ -4,7 +4,7 @@ date = 2019-09-20
description = "Kotlin's been great for me -- and millions others, as evident by its explosive growth. Long-time Java developers may feel hesitant to give it a shot. This series aims to smoothen this transition, letting people know what benefits they might reap from Kotlin, and what differences should they be careful about."
devLink = "https://dev.to/msfjarvis/teachingkotlin-kotlin-for-android-java-developers-1fo3"
slug = "teaching-kotlin--kotlin-for-android-java-developers"
socialImage = "uploads/teachingkotlin_social.png"
socialImage = "uploads/teachingkotlin_social.webp"
tags = ["teachingkotlin", "android", "kotlin"]
title = "#TeachingKotlin - Kotlin for Android Java developers"
+++

View File

@ -6,7 +6,7 @@ slug = "teaching-kotlin--classes-and-objects"
tags = ["android", "teachingkotlin", "kotlin"]
title = "#TeachingKotlin Part 1 - Classes and Objects and everything in between"
devLink = "https://dev.to/msfjarvis/teachingkotlin-part-1-classes-and-objects-and-everything-in-between-5bn0"
socialImage = "uploads/teachingkotlin_social.png"
socialImage = "uploads/teachingkotlin_social.webp"
+++
Classes in Kotlin closely mimic their Java counterparts in implementation, with some crucial changes that I will attempt to outline here.

View File

@ -4,7 +4,7 @@ date = 2019-09-30
description = "The second post in #TeachingKotlin series, this post goes over Kotlin's variables and their attributes, like visibility and getters/setters."
devLink = "https://dev.to/msfjarvis/teachingkotlin-part-2-variables-2api"
slug = "teaching-kotlin--variables"
socialImage = "uploads/teachingkotlin_social.png"
socialImage = "uploads/teachingkotlin_social.webp"
tags = ["android", "teachingkotlin", "kotlin"]
title = "#TeachingKotlin Part 2 - Variables"
+++

View File

@ -4,7 +4,7 @@ date = 2019-12-16
description = "Part 3 of #TeachingKotlin covers some subtle differences between Kotlin and Java that might affect your codebases as you start migrating to or writing new code in Kotlin."
devLink = "https://dev.to/msfjarvis/teachingkotlin-part-3-caveats-coming-from-java-2e1k"
slug = "teachingkotlin-part-3--caveats-coming-from-java"
socialImage = "uploads/teachingkotlin_social.png"
socialImage = "uploads/teachingkotlin_social.webp"
tags = ["android", "teachingkotlin", "kotlin"]
title = "#TeachingKotlin Part 3 - Caveats coming from Java"
+++

View File

@ -3,7 +3,7 @@ categories = ["github-actions"]
date = 2021-01-02T00:00:00Z
description = "GitHub Actions is a power CI/CD platform that can do a lot more than your traditional CI systems. Here's some tips to get you started with exploring its true potential."
slug = "github-actions-tips-tricks"
socialImage = "/uploads/actions_social.png"
socialImage = "/uploads/actions_social.webp"
tags = ["tips and tricks", "github actions", "schedules", "jobs", "workflows"]
title = "Tips and Tricks for GitHub Actions"
+++
@ -133,7 +133,7 @@ Tags are moving qualifiers, and can be [force pushed at any moment](https://juli
To get the commit hash for a specific tag, head to the Releases page of the repository, then click the short SHA1 hash below the tag name and copy the full hash from the URL.
![A tag along with its commit hash](/uploads/actions_tips_tricks_commit_hash.png)
![A tag along with its commit hash](/uploads/actions_tips_tricks_commit_hash.webp)
> {{< sub "Here, the commit hash is feb985e. Ideally, you want to click that link and copy the full hash from the URL" >}}

View File

@ -4,7 +4,7 @@ date = 2020-11-21T00:00:00Z
description = "Building libraries is hard, and keeping track of your public API surface harder. Kotlin 1.4's explicit API mode tries to make the latter not be difficult anymore."
draft = true
slug = "tips-for-building-kotlin-libraries"
socialImage = "/uploads/kotlin_social.png"
socialImage = "/uploads/kotlin_social.webp"
tags = ["android", "kotlin", "libraries"]
title = "Tips and tricks for building libraries in Kotlin"

View File

@ -5,7 +5,7 @@ description = "Rust is an amazing systems language that is on an explosive rise
devLink = "https://dev.to/msfjarvis/tools-for-effective-rust-development-3mb4"
title = "Tools for effective Rust development"
slug = "tools-for-effective-rust-development"
socialImage = "uploads/rust_social.png"
socialImage = "uploads/rust_social.webp"
tags = ["dev", "rust"]
+++

View File

@ -3,7 +3,7 @@ categories = ["tools-of-the-trade"]
date = 2020-08-04
description = "In the first post in the new 'Tools of the trade' series, we talk about direnv."
slug = "tools-of-the-trade-direnv"
socialImage = "uploads/tools-of-the-trade-direnv.png"
socialImage = "uploads/tools-of-the-trade-direnv.webp"
tags = ["direnv", "cli-tools", "tools-of-the-trade"]
title = "Tools of the trade: direnv"
+++

View File

@ -3,7 +3,7 @@ categories = ["tools-of-the-trade"]
date = 2020-08-18
description = "Probably the final post of this series? Let's talk about fd!"
slug = "tools-of-the-trade-fd"
socialImage = "uploads/tools-of-the-trade-fd.png"
socialImage = "uploads/tools-of-the-trade-fd.webp"
tags = ["fd", "cli-tools", "tools-of-the-trade"]
title = "Tools of the trade: fd"
+++

View File

@ -3,7 +3,7 @@ categories = ["tools-of-the-trade"]
date = 2020-08-10
description = "Continuing this series, let's talk about fzf."
slug = "tools-of-the-trade-fzf"
socialImage = "uploads/tools-of-the-trade-fzf.png"
socialImage = "uploads/tools-of-the-trade-fzf.webp"
tags = ["fzf", "cli-tools", "tools-of-the-trade"]
title = "Tools of the trade: fzf"
+++

View File

@ -3,7 +3,7 @@ categories = ["tools-of-the-trade"]
date = 2020-09-02
description = "Bringing this series back on popular demand, we're here to talk about SDKMAN!"
slug = "tools-of-the-trade-sdkman"
socialImage = "uploads/tools-of-the-trade-sdkman.png"
socialImage = "uploads/tools-of-the-trade-sdkman.webp"
tags = ["sdkman", "cli-tools", "tools-of-the-trade"]
title = "Tools of the trade: SDKMAN!"
+++

View File

@ -4,7 +4,7 @@ date = 2020-07-23
description = "(Mostly) everybody agrees that Android upgrades are good, but how very crucial they are to security and privacy often gets overlooked. Let's dig into that."
devLink = "https://dev.to/msfjarvis/why-upgrade-android-557f"
slug = "why-upgrade-android"
socialImage = "uploads/why_upgrade_android_social.png"
socialImage = "uploads/why_upgrade_android_social.webp"
tags = ["android", "updates", "security", "privacy"]
title = "Why upgrade Android?"
toc = true

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 697 B

BIN
static/favicon-16x16.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

BIN
static/favicon-32x32.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 462 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 465 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Some files were not shown because too many files have changed in this diff Show More