Posts

Tempor est exercitation ad qui pariatur quis adipisicing aliquip nisi ea consequat ipsum occaecat. Nostrud consequat ullamco laboris fugiat esse esse adipisicing velit laborum ipsum incididunt ut enim. Dolor pariatur nulla quis fugiat dolore excepteur. Aliquip ad quis aliqua enim do consequat.

Nix Zellij

A quick blog post on using nix with Zellij.

Where I can’t get my favourite Tmux configuration going, I often turn to Zellij. Zellij is a great alternative to Tmux and offers some cool elements, which I may revisit in a future blog post. For now, I just want to outline how to perform a similar layout configuration to the Tmux one I recently wrote.

You can amend the configuration used to setup the screen however you wish. Just amend the dev.kdl script to realign your screen layout however you want.

Nix Tmux

A quick blog post on using nix with Tmux.

Tmux is one of my favourite tools. Recently I have been playing with Go Networking which often requires multiple terminals. Fortunately Tmux is great for this experience, but I often want to have a pre-defined setup.

Enter Nix and Tmux to manage the environment effortlessly. You can amend the configuration used to setup the screen however you wish. Just amend the dev.tmux script to realign your screen layout however you want.

Python Workout 2nd Ed

Review: Python Workout 2nd Edition

Python Workout 2nd Edition

Python Workout 2nd Ed 2nd Edition. Python Workout, Second Edition: 200 ten-minute exercises by Reuven Lerner

My rating: 4 of 5 stars

Acing the CKA Exam 2nd Edition

Review: Acing the CKA Exam 2nd Edition

Acing the CKA Exam 2nd Edition

Acing CKA 2nd Ed 2nd Edition. Acing the Certified Kubernetes Administrator Exam by Chad Crowell

My rating: 5 of 5 stars

Nix Unattended

Tired of wrestling with complex dependencies and environment setups on your virtual machines? Or perhaps you’re constantly updating those Packer scripts? If so, this guide is for you! By combining Nix with unattended installation methods, you can save significant time and effort, making your VM provisioning process smoother and more consistent.

This approach is especially powerful when used with cloud platforms like Google Compute Engine (GCE), which offers incredible flexibility and scalability for your virtual machine needs. Imagine a marriage made in heaven: GCE’s raw power paired with Nix’s robust, reproducible environment management.

Nix and MacOS Sequoia

How to restore a Nix environment on MacOS 15 Sequoia.

In the blog post Getting started with Nix Package Manager we covered how to install Nix. A quick follow up on that post to discuss how to update a Mac post a system upgrade.

The upgrade will likely wipe out your Nix settings, so a reinstall is a quick way to get up and running. I dont persist installations using Nix, so I can always can wipe my installation. If you persist software using Nix, you will want to add an additional step to remove software prior to the system update.

Git Pre-Commit Hook

The following blog post illustrates how to use pre-commit hooks in a git workflow.

Pre-commit is a simple method for running abitrary commands prior to a Git commit. It allows automation of checks, such as code formatting, linting, security audits, and more, ensuring code quality and consistency. Hooks are typically scripts that pre-commit runs. A pre-commit hook, specifically, runs before each commit.

Catching issues early reduces debugging time and prevents broken code from entering the codebase. Use pre-commit hooks to enforce standards, improves collaboration, and maintains a cleaner repository history. Running a bash script via a pre-commit hook allows custom checks tailored to the specific project needs in a simple and reproducible manner.

Artifact Registry IAM

Artifact Registry is replacing Container Registry. If you want to access your Artifact Registry, there are couple of things to know. In this blog post, learn how to make a registry public or provide specific users with access.

To get started we will build a demo container and make this available for upload/download using Artifact Registry. This tutorial will guide you through the process of setting up a public Docker container registry using Google Cloud Artifact Registry. By making your registry public, anyone with internet access is allowed to pull your container images.

Nix Firebase

A quick blog post on using nix with Firebase.

Getting Firebase to work with Nix just requires a few package to get going 😂 If you have worked with Firebase, you know setting up the environment can be royal pain. Never fear, Nix can help with getting you ready to start developing locally.

Firebase provides a fantastic suite of tools for building modern web and mobile applications. Nix enhances this by providing a declarative and reproducible way to manage your deployment pipeline. Use Nix to define your Firebase project dependencies, configuration files, and deployment scripts, ensuring that your applications are always deployed in a consistent and reliable manner. This combination simplifies the process of managing complex Firebase projects and ensures that your applications are always deployed in a predictable and reproducible way.

Nix Golang

A quick blog post on using nix with Go.

Wait go isnt your jam 🤯, then swap out Go package with your favourite language 😂

Nix-Shell is my favourite part of Nix. Using Nix-Shell, you can temporarily install packages, but keep that new machine feel.

Go excels at building fast, efficient applications. Nix excels at managing complex dependencies and environments. When used together, they provide a robust and predictable development workflow. Nix allows you to create isolated Go environments, preventing version conflicts and simplifying dependency management. This ensures that your Go projects are always built and deployed in a consistent and reliable manner, regardless of the target platform.

Using Patch

Overview

While revising for some Kubernetes exams, I realised I havent done a blog post on some useful commands.

The third blog post covers the patch command. For alot of situations patch can be a more straightforward approach to updating similar files. If you are not familiar with patch, it takes the ouput from a diff and adds it to a file. Typically you would use something like sed for a lot of in file manipulation.

Using diff

Overview

While revising for some Kubernetes exams, I realised I havent done a blog post on some useful commands.

The second blog post covers the diff command.

The diff command in Linux is a powerful utility used to compare files line by line. It identifies the differences between two files and outputs these changes in a format that can be used to patch one file to become identical to the other. It is a fundamental tool for software development, system administration, and document management where tracking changes is important.

Using heredoc

Overview

While revising for some Kubernetes exams, I realised I havent done a blog post on some useful commands.

The first blog post covers the heredoc command.

Heredoc (Here Document) is a way to pass multiple lines of input to a command. It allows you to redirect input from a string literal within your script, instead of from a file or standard input.

The basic syntax involves using << followed by a delimiter. Everything following the << until the delimiter is encountered again on a line by itself is treated as input to the command. Heredocs are useful for creating multi-line strings, embedding configuration files within scripts, and automating interactions with command-line tools.

Access Firebase site id

Introduction

A short blog post to outline how to access the site identifier associated with a Firebase project.

Access Site Identifier

  1. Accessing a list of sites

    To access a list of sites you can use the following command

    firebase hosting:sites:list
    
  2. The above command also supports exporting the list as json

    firebase hosting:sites:list --json
    

    In the above the defaultUrl value represents the fully qualified site identifier

Access a specific Site Id

The firebase deploy command for hosting requires the site id to be specified.

Host a static website

Introduction

The Hosting a static website blog post walks through the essentials of running a website from a Google Cloud Storage bucket.

In general just remember that the bucket name needs to be globally unique.

ProTip: prefix the bucket name with the Google project identifier e.g. myawesomeproject-bucket

In this post, I show you how to add a landing page to a Google Cloud Storage bucket. If you just need a quick and easy website (e.g. not concerned about domains, SSL etc), this is a really simple option.

Git worktree

The following blog post illustrates how to use worktree in a git workflow.

A Git worktree allows you to check out multiple branches or commits at the same time. Each worktree is a separate working directory linked to the same repository. This is useful for working on multiple features concurrently, reviewing pull requests without stashing your changes, or experimenting without affecting your main working directory.

Once the worktree is declared, the typical cycle of Add, Commit, Push are then used to sync staging to a repository.

Nix Package Manager Housekeeping

How to clean up a Nix environment on (Debian Bookworm).

In the blog post Getting started with Nix Package Manager we covered how to install Nix. A quick follow up on that post to discuss how to clean up the environment.

The more you use Nix, the more relevant this post will be. So I separated out the details for the time you need to quickly remove the cache on your machine.

Google Cloud Professional Cloud Database Engineer Exam

Google Cloud Professional Cloud Datbase Engineer Certification (Mar 2024)

Disclaimer: Non official content, errors and omissions excepted

Pre Exam Notes

  • Kryterion Sentinel software (Windows/Mac) installation requires administrator rights
  • Kyterion system check - do this at least a day before to be on the safe side
  • Identification taken using your phone
  • No breaks during two hour exam
  • Do the practice exam to build some confidence
  • (Try and) get a good nights sleep before the exam
  • The exam is multiple choice, so work out the wrong answers first!!

Post Exam Notes

  • Online Kryterion exams still suck - Admin permissions for the entire machine, seriously?
  • Confirmation of the exam result was one day (also came on a weekend)!!
  • Swag stock is still limited, but better stock in general
  • Swag is by geographic region (i.e. Europe, India, Everywhere else)
  • In 2024 we finally get feedback, but only if you fail (Grrr!)
  • 50 Questions

Google Cloud do not indicate the pass mark for the exam, but I would assume its somewhere greater than 70%.

Google Cloud Professional Workspace Administrator Exam

Google Cloud Professional Cloud Workspace Administrator Certification (Mar 2024)

Disclaimer: Non official content, errors and omissions excepted

Pre Exam Notes

  • Kryterion Sentinel software (Windows/Mac) installation requires administrator rights
  • Kyterion system check - do this at least a day before to be on the safe side
  • Identification taken using your phone
  • No breaks during two hour exam
  • Do the practice exam to build some confidence
  • (Try and) get a good nights sleep before the exam
  • The exam is multiple choice, so work out the wrong answers first!!

Post Exam Notes

  • Online Kryterion exams still suck - Admin permissions for the entire machine, seriously?
  • Confirmation of the exam result was one day (also came on a weekend)!!
  • Swag stock is still limited, but better stock in general
  • Swag is by geographic region (i.e. Europe, India, Everywhere else)
  • In 2024 we finally get feedback, but only if you fail (Grrr!)
  • 50 Questions

Google Cloud do not indicate the pass mark for the exam, but I would assume its somewhere greater than 70%.

Getting started with Nix Package Manager

How to use Nix on (Debian Bookworm).

What is Nix Package Manager?

“Nix builds packages in isolation from each other. This ensures that they are reproducible and don’t have undeclared dependencies, so if a package works on one machine, it will also work on another.”

It may surprise you but Nix also has over 80K packages available.

Installation

The Nix site gives a clear overview of how to install, so refer to that to add it to your system. I use Nix on ChromeOS, Linux (Debian) and MacOS.

Node Firestore Import

A quick aide memoir on how to import data from a CSV formatted files into Firestore. If you have used the Pet Theory lab, this should be familar, but if not here is the code.

The general idea is to create a csv and import it directly into Cloud Firestore. To do this, the code will read the csv, then connect to Firestore and add a new collection containing the csv records.

Node Fake Data

A quick guide on generating test data. If you have used the Pet Theory lab, this should be familar, but if not here is the code.

The general idea is to create a csv based on made up dataset. To do this, use the Fakerjs package and write the output as csv records.

If you have not worked with Fakerjs before, this is a nice short cut to get to grips with the Firestore API.

Plan to succeed with certifications in 2024

2024 Aspirational Certifications

Overview

So currently I have a number of Certifications that will need to be renewed in 2023. Rather than procrastinate about which to take I actually put some thought into this time around.

Check out the main article over on Medium Link

What certifications do you plan to take in 2024 and why?

Remote JSON with Dart

JSON (JavaScript Object Notation) is a lightweight data-interchange format that is widely used for transmitting data between a server and a web application (or mobile app). In Flutter (and Dart), handling JSON involves encoding Dart objects into JSON strings (serialization) and decoding JSON strings into Dart objects (deserialization). Flutter provides built-in libraries like dart:convert to facilitate these operations. Understanding how to effectively handle JSON is crucial for building Flutter apps that interact with APIs or need to store/retrieve structured data. The process generally includes fetching JSON data from a network resource (like an API endpoint), parsing the JSON data into Dart objects (often custom classes), manipulating that data within your app, and optionally converting Dart objects back to JSON for sending data to a server.

CSV delimiter and JOIN

Convert Complex CSV with custom delimiter.

jq is like sed for JSON data - you can use it to slice and filter and map and transform structured data with the same ease that sed, awk, grep and friends let you play with text.

In a previous post I covered the task of converting JSON to CSV.

If you have a situation where the data contains commas, then the following post might be of some use. I will assume you are starting from a Spreadsheet (I am using Google Sheets JOIN, but if you are using Excel use the TextJoin command).

Google Cloud Professional Cloud Network Engineer Exam

Google Cloud Professional Cloud Network Engineer Certification (November 2023)

Overview of the exam covered in this medium article

Best of luck!

Local JSON with Dart

Using Dart to process JSON can seem a complicated choice at first. There are a couple of things to be aware of when processing JSON. To build our understanding I will be taking a manual approach to hand crank through a JSON file. Obviously you shouldnt do this in the real world, but this is meant to be an educational post :-) In the following blog post I assume you already have the Flutter environment setup. If you dont have an environment handy you can use dartpad.dev or similar to practice.

Convert CSV to JSON with JQ

Convert CSV to JSON with JQ.

jq is like sed for JSON data - you can use it to slice and filter and map and transform structured data with the same ease that sed, awk, grep and friends let you play with text.

In a previous post I covered the task of converting JSON to CSV.

Recently I realised that I never covered the opposite transaction i.e. CSV to JSON. So here is the missing piece to that puzzle. If you are working with data systems transformation can be a major hassle. I highly recommend using an existing tooling where appropriate. Taking the well worn path can make life much easier.

Merge multiple JSON files with JQ

Merging JSON files with JQ.

jq is like sed for JSON data - you can use it to slice and filter and map and transform structured data with the same ease that sed, awk, grep and friends let you play with text.

If you have multiple JSON files that you want to combine, it can be tempting to write a program to perform this task. However, did you know that our old friend jq can do this without too much hassle.

Google Cloud Professional Cloud Security Engineer Exam

Google Cloud Professional Cloud Security Engineer Certification (Oct 2023)

Disclaimer: Non official content, errors and omissions excepted

Pre Exam Notes

  • Kryterion Sentinel software (Windows/Mac) installation requires administrator rights
  • Kyterion system check - do this at least a day before to be on the safe side
  • No breaks during two hour exam
  • Do the practice exam to build some confidence
  • (Try and) get a good nights sleep before the exam
  • The exam is multiple choice, so work out the wrong answers first!!

Post Exam Notes

  • Online Kryterion exams still suck - Admin permissions for the entire machine, seriously?
  • Waiting for confirmation of the exam result is now 10 days!!
  • Swag stock limitations
  • Still no feedback beyond pass/fail (Grrr!)
  • 45 Questions

Google Cloud do not indicate the pass mark for the exam, but I would assume its somewhere greater than 70%.

Imagemagick Fuzz Transparent

A quick tutorial on using Imagemagick to remove a background colour from images. The image file format needs to support transparency e.g. PNG.

NOTE: JPG doesnt support transparency, so it would be necessary to convert the file.

There is also this method Imagemagick transparency I find the option below to be a bit more flexible.

Remove background color

  1. Set the input file
input="old-white.png"
  1. Set the output file
output="new-image.png"
  1. Set the background color to remove
background_color="white"
  1. Set the background to transparent and remove the colour white
convert $input -fuzz 5% -transparent $background_color $output 

In the above example the input image has a white background. Amend the percentage as required.

Google Cloud Storage CORS

Introduction

When working with Google Cloud Storage as a backend, you will probably need to amend the CORS setting at some point. CORS stands for Cross Origin Resource Sharing and is invoked from your browser as a security access feature. Typically the HTTP-header will indicate which origin is permitted to be accessed. If you want to work with the web and specifically image files, adding a CORS setting will save you time.

Google Cloud Storage Metadata

Introduction

If you are using a Google Cloud Storage bucket for application development you may want to use this handy tip. When working with data, you can turn off the cache-control option. If you want to test things like temporary JSON or image files, this setting is super useful.

Amend the bucket metadata

Google Cloud Storage provides a number of metadata key/value pairs. One useful setting is the Cache-Control. The default option is to have cache enabled. If you plan to use temporary data, it might be advisable to amend the setting as follows:

Google Cloud Professional Cloud Developer 2023

Google Cloud Professional Cloud Developer Certification (Feb 2023)

An overview of taking the Google Cloud Professional Cloud Developer Exam.

Blog Post

Rich Rose Professional Cloud Developer Feb 2023

:inline

Training Material

The material I used to get ready for the exam.

Source Type Description Rating
Google Cloud Docs Docs Very detailed 4/5
Google Cloud Platform YouTube Treasure trove of informative sessions - very helpful 4/5
Awesome GCP Certification Links Good list of materials and sources 4/5

Best of luck!

Google Cloud Professional Cloud Architect 2023

Professional Cloud Architect Certification (Feb 2023)

An overview of taking the Google Cloud Professional Cloud Architect Exam.

Blog Post

Rich Rose Professional Cloud Architect Exam Feb 2023

:inline

Training Material

Source Type Description Rating
ACloudGuru formally Linux Academy Course Exam specific content, good practice questions 4/5
Coursera Course Cloud Architecture with Google Cloud 3/5
Pluralsight Course Cloud Architecture with Google Cloud 3/5
Create and Manage Cloud Resources Hands On Labs Good hands on content for architect exam 4/5
Set up and configure a cloud environment in Google Cloud Hands On Labs Good content 4/5
Deploy and manage cloud environment with Google Cloud Hands On Labs Good content 4/5
Google Cloud Docs Docs Very detailed 4/5
Google Cloud Platform YouTube Next sessions - very helpful 4/5
Official Professional Cloud Architect Book Very detailed overview of exam syllabus 4/5
Professional Cloud Architect Book Very detailed overview of exam syllabus 4/5
Awesome GCP Certification Links Good list of materials and sources 4/5

Best of luck!

Flutter and Dart Cookbook

Overview


Flutter and Dart Cookbook

The cookbook shows you how to:

  • Write effective Dart code by using variables and data structures
  • Build applications with Flutter by exploring widgets and data handling
  • Understand cloud provider solutions and learn how to integrate them with Flutter
  • Manage data through APIs using Google Cloud Serverless
  • Work with Firebase solutions such as Authentication and the Cloud Firestore database
  • Build web applications that also work with mobile and desktop platforms

Book Information


Google Cloud Professional Data Engineer 2023

Google Cloud Professional Data Engineer Certification (Jan 2023)

An overview of taking the Google Cloud Professional Data Engineer Exam.

Blog Post

Rich Rose Professional Cloud Data Engineer Jan 2023

:inline

Training Material

The material I used to get ready for the exam.

Source Type Description Rating
ACloudGuru Course Exam specific content, good practice questions 4/5
Coursera Course Data Engineering, Big Data and Machine Learning 3/5
Pluralsight Course Data Engineering, Big Data and Machine Learning 3/5
Perform Foundational Data, ML and AI tasks in Google Cloud Hands On Labs Good content 4/5
Engineer Data in Google Cloud Hands On Labs Good content 3.5/5
Google Cloud Docs Docs Very detailed 4/5
Google Cloud Platform YouTube Treasure trove of informative sessions - very helpful 4/5
Professional Data Engineer Book Very detailed overview of exam syllabus 4/5
Awesome GCP Certification Links Good list of materials and sources 4/5

Best of luck!

Plan to succeed with certifications in 2023

2023 Aspirational Certifications

Overview

So currently I have a number of Certifications that will need to be renewed in 2023. Rather than procrastinate about which to take I actually put some thought into this time around.

In the new year, I will begin the preparation for my 2023 year of study. I typically take four cloud based certifications a year. On top of that I also take numerous other courses, but that is for another discussion. So the question is which certs should I take? The internet has a strong opinion on which will be most beneficial, however the answer is not so simple.

Google Cloud Professional Cloud Security Engineer

Google Cloud Professional Cloud Security Engineer Certification

Overview

If you work with Google Cloud then you really should be looking at taking the Google Cloud Professional Cloud Security Engineer certification. You will join an exclusive group of fellow professionals.

Rich Rose Certified Professional Cloud Security Engineer:inline

The exciting part is you will learn a valuable skill set and you would have begun the immensely rewarding journey to invest in your future self.
Warning the exam is not meant to be comprehensive, so understand that the exam is just a measuring tool. Answering the multiple choice questions in the exam doesn’t make you an expert. It does offer some validation that you have learned a common base of knowledge.

Pdftk merge

“PDFtk - The PDF Toolkit. PDFtk is a simple tool for doing everyday things with PDF documents. It comes in three flavors: PDFtk Free, PDFtk Pro, and our original command-line tool PDFtk Server.”

In a prior blog post, the PDFTK utility was installed.

Working with PDF can often produce multiple files that would be easier to manage if they were combined. Learn how to use the utility to merge mutliple files into a PDF.

Tmux and Cloudshell

Tmux is a terminal multiplexer, which is a fancy way of saying it give you the ability to run multi terminals. Google Cloud Cloudshell uses the default Tmux configuration which makes me not want to use it.

Tmux with default settings:inline

However help is at hand. You can update the settings and this post covers how to make those changes. Cloudshell is meant to be a lite developer environment so I will only add some essential productivity changes.

Webm to Gif ChromeOS

ChromeOS Screenshot

ChromeOS added a cool feature to allow videos as well as images to be taken from the desktop.

Tell me more about this ChromeOS:inline

The cool part of this feature is you can choose which part of the screen to snapshot. If you are a blogger, this makes you life much simpler and is a welcome addition. The output by default is Webm, however in this blog post I demonstrate how to convert to gif.

Install Xpra

Overview

Xpra is an open-source multi-platform persistent remote display server and client for forwarding applications and desktop screens.

The Xpra homepage provides the following overview:

It gives you remote access to individual applications or full desktops. On X11, it is also known as screen for X11: it allows you to run programs, usually on a remote host, direct their display to your local machine, and then to disconnect from these programs and reconnect from the same or another machine, without losing any state. It can also be used to forward full desktops, from X11 servers, MS Windows, or Mac OS X.

Cloud Run Regex

Cloud Run Regex

Normally when someone mentions regex its time to make a swift exit. Since I was working on a new project featuring Cloud Run I needed to face my fears. This is my story.

I can’t do this:inline

Regex for the masses

Cloud Run has a defined url signature which is common across all deployments. If you need to check that this signature is valid, regex is a nice approach to perform this action.

Terminal in ChromeOS

ChromeOS Terminal

The default terminal in ChromeOs was making some of my applications look less than their best. For example Pass is one of the main applications that I use on a regular basis. When using this software the border that was meant to be shown as lines is actually displaying garbage characters.

The Pass application with incorrect terminal settings:inline

The above image merges the smooth lines with the horrible replacement characters. Seeing this on a daily basis was causing me stress!!

Codeceptjs Initialisation

Introduction

Recently I have been tasked with the job of testing lots of web based applications. Historically this has been a manual effort, so to begin the new year I looked at how this might be automated. Having looked at a number of options, I remembered a really cool piece of technology I used for web-scraping.

Codeceptjs is very handy automation tool for web browsers. It includes helpers for WebDriver, Puppeteer and Playwright. The following is a quick intro to get you going.

Cobra Command Line using Go

The Go programming language is an open source project to make programmers more productive. In the following blog post I assume you already have the Go environment setup. Previously we have created a Hello World application. The next step is to create a command line application. The example below covers the basics of using Cobra

Go Installation

  1. Confirm Go is installed
go version

If it is not installed check out a previous post to install Go in Linux

Google Cloud Professional Cloud Network Engineer Exam

Google Cloud Professional Cloud Network Engineer Certification (September 2021)

Disclaimer: Non official content, errors and omissions excepted

Pre Exam Notes

  • Kryterion Sentinel software (Windows/Mac) installation requires administrator rights
  • Kyterion system check - do this at least a day before to be on the safe side
  • No breaks during two hour exam
  • Do the practice exam to build some confidence
  • (Try and) get a good nights sleep before the exam
  • The exam is multiple choice, so work out the wrong answers first!!

Post Exam Notes

  • Online Kryterion exams still suck - Admin permissions for the entire machine, seriously?
  • Waiting for confirmation of the exam result is now 10 days!!
  • Swag continues to be “Out of stock”
  • Still no feedback beyond pass/fail (Grrr!)
  • 50 Questions

Google Cloud do not indicate the pass mark for the exam, but I would assume its somewhere greater than 70%.

Setting up ChromeOS Minikube

Recently while playing with some development tools, I was surprised to see Minikube now runs on ChromeOS. Minikube allows for a scaled down Kubernetes cluster running directly on your host machine. Kubernetes is a container orchestrator. Put simply it enables the “simplified” running of containers. In this blog post learn how to set up ChromeOS to run minikube using KVM without Developer Mode.

Enhancing Cloudshell on Google Cloud

Cloud Shell is super useful and features a lot of tools. However out of the box the general setup doesnt match my local machine. If you want to use tmux or vim in your environment, this blog post is for you. The following is a quick summary of changes made to update Cloud Shell to be a bit more like my own machine.

Software Stack

My default software stack is based on the following applications

Fish on Cloudshell

Fish is described as a smart and user-friendly command shell. As you would expect it works on Linux and is super useful to get that optimized experience. The blog post covers installation on GCP Cloud Shell I would expect the installation process to be similar on any Linux based machine.

If you want to use oh-my-bash, read a previous post on using Cloud Shell with oh-my-bash

NGINX reverse proxy

An Nginx reverse proxy enables client requests to be forwarded on to a backend server. In this scenario the backend server provides responses to the client. A setup like this can be useful in a number of situations where Nginx is used to control the processing. It is also a nice security setup as the Nginx acts as a gateway and only passes traffic based on appropriate content on to the backend server.

oh-my-bash on Cloudshell

If you work at the command line with Git this ones for you! Most of my time is spent at the Linux command line. My tool of choice is always “oh-my-bash” as it just works across all my machines. However if you are using a Cloud Provider environment, you probably dont want to spend time setting up another environmment.

Installation

  1. Open Cloud Shell
  2. Install the oh-my-bash package
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh)"

If you are interested in a more exotic configuration, read a previous post on installing oh-my-bash

Setting up ChromeOS Virtual Machine

ChromeOS can create multiple virtual machines to run various software. Creating a new virtual machine allows for software to be tested without ruining your existing setup. It is also great for running programs in an isolated fashion. In this blog post learn how to Create a new virtual machine in ChromeOS.

Asus Chromebox 2 CN62 codename: Guado:inline

Introduction

  • Create a virtual machine
  • Create a Ubuntu container
  • Create a user account
  • Setup SSH

Create a virtual machine

  1. In a browser press CTRL+ALT+T to open the Chrome OS developer shell (i.e. chrome-untrusted://crosh)
  2. Create a new VM
vmc start sandbox
  1. Create a new profile A profile enable the default settings to be altered.
lxc profile copy default custom-profile
  1. Update the profile setting
lxc profile set minikube-profile security.nesting true
lxc profile set minikube-profile security.priviledged false

Create a Ubuntu container

LXC supports a number of images in the following section Ubuntu is used. To see a list of available images:

AppSheet Apps

Recently a colleague created a spreadsheet but was unaware of the power lurking underneath. Google Sheets include a very comprehensive toolset that can be used to extend functionality.

Overview

In this blog post learn how to access a Google Sheets document to extend functionality. To get started there are a couple of things to know.

  • You dont need to know how to program to extend Google Sheets
  • Spreadsheets have security built into them, so you need to be an authorised user to access them

For the purposes of this blog, the following actions are required:

Google Cloud Professional Cloud Security Engineer Exam

Google Cloud Professional Cloud Security Engineer Certification (June 2021)

Disclaimer: Non official content, errors and omissions excepted

Pre Exam Notes

  • Kryterion Sentinel software (Windows/Mac) installation requires administrator rights
  • Kyterion system check - do this at least a day before to be on the safe side
  • No breaks during two hour exam
  • Do the practice exam to build some confidence
  • (Try and) get a good nights sleep before the exam
  • The exam is multiple choice, so work out the wrong answers first!!

Post Exam Notes

  • Online Kryterion exams still suck - Admin permissions for the entire machine, seriously?
  • Waiting for confirmation of the exam result is now 10 days!!
  • Swag continues to be “Out of stock”
  • Still no feedback beyond pass/fail (Grrr!)
  • 50 Questions

Google Cloud do not indicate the pass mark for the exam, but I would assume its somewhere greater than 70%.

Node Rest API

A REST API is super useful and can present a simple way to efficiently access information. This blog post is dedicated to the folks who want to create an API. It seems like a lot of folks are in this boat by the amount of comments over on sites like Reddit. Lets get started by building a GET/POST API in Node.js.

Requirements:

  • Node.js installation
  • Linux based environment
  • Internet access
  • GitHub (Optional) - code is stored there if you get stuck

Overview

In this blog post learn how to make a local REST API that response to both GET and POST requests. The following content can also be applied to a serverless environment. If you need to learn how to apply this to Google Cloud, I highly recommend reading Chapter 8 of my book Hands-On Serverless with Google Cloud.

A Free Virtual machine

Introduction

Did you know the lovely providers of cloud have a free tier? Have you wanted to take advantage but not sure where to start?

Free stuff - do go on:inline

If you are not familiar with the Free Tier offerings it can be worth your time to take a look. Below are the main cloud providers you may have heard of:

Overview

In this blog post learn how to create a virtual machine on Google Cloud. Once the machine is created add a simple application and run it from your free virtual machine. For the purposes of demonstration I will stick with the Free Tier. Feel free to update the machine specification to your own requirement once you are comfortable with the build process.

Setting up Brunch ChromeOS

Introduction

At present there a few methods to run ChromeOS on a device. If you have a Chromebook or Chromebox, the experience will be based on the official ChromeOS image provided by Google. For those without access to this type of device, there are other options. In this blog post learn how to use Brunch as one of those options.

NOTE: Brunch is an unofficial product, so use with caution.

Why ChromeOS?

Why ChromeOS may offer more than you thought?

ChromeOS is one of the worst best-kept secrets in technology. Google describes ChromeOS as a speedy, simple and secure operating system.

Tell me more:inline

ChromeOS focuses on simplicity, think using a browser - but full supported by a full blown operating system. It also includes features that are more compelling than tech reviewers would have you believe.

If you have ever watched a technology reviewer scoff at a ChromeOS device featuring high-end specs. Unsure whether ChromeOS is a good fit for your requirements. Or have been told that ChromeOS cannot do any “real” work. This article is for you.

Git rename branch

The following blog post covers how to rename the default branch in GitHub. If you have wondered how to do this task it is basically two discrete steps.

    1. Rename the default branch
    1. Update the local clone

Once complete the branch will be available and response as the default.

Rename Default branch

The default branch configuration can be changed from the GitHub interface. From the GitHub interface select the repo to update

Install X2Go

Overview

x2Go enables you to access a remote machine over SSH. The wiki entry provides the following overview:

“X2Go enables you to access a graphical desktop of a computer over a low bandwidth (or high bandwidth) connection. X2Go is a Remote Desktop solution, which some vendors vaguely call Remote Control. This is not to be confused with Microsoft Remote Desktop Connection, which is a competing Remote Desktop solution and protocol. With X2Go, you mainly access Linux computers. The Linux computer you are accessing is the X2Go Server. (There are ways to connect to a Windows computer as well; some of them are only available with the Linux X2Go Client.)”

Web Cors Proxy

Introduction

Cross-Origin Resource sharing (CORS) is a server setting that can be quite annoying. In general CORS is a great idea as it provides enhanced security by specifying which ORIGIN is valid.

If you are a developer that controls the front and backend of an application, good news. Review the following Stackoverflow article on Cross-origin resource sharing.

However, if you are the frontend developer, unfortunately a fix may be in the hands of others to resolve. As I have come across this issue a number of times recently, I wanted to outline how to bypass this issue.

Imagemagick Transparent

A quick tutorial on using Imagemagick to remove a background colour from images. The image file format needs to support transparency e.g. PNG.

NOTE: JPG doesnt support transparency, so it would be necessary to convert the file.

Remove background color

  1. Set the input file
input="old-white.png"
  1. Set the output file
output="new-image.png"
  1. Set the background color to remove
background_color="white"
  1. Set the background to transparent and remove the colour white
convert $input -transparent $background_color $output 

In the above the input image has a white background. Use Imagemagick to remove the white from the input image. The resulting image is written to the output file.

Imagemagick Shadow

A quick tutorial on using Imagemagick to add a background shadow to images. For the best result, ensure the original image has a transparent background. It is also useful to observe consistent sizes for the images.

Add a shadow

  1. Set the name of the input image - for example
input="old.png"
  1. Set the name of the output image - for example
output="new.png"
  1. Use the input image and create the output image with a shadow
convert -page +4+4 $input -alpha set \( +clone -background navy -shadow 60x8+8+8 \) +swap -background none -mosaic $output 

Imagemagick Resize

A quick tutorial on using Imagemagick to resize images. Imagemagick provides a couple of options that are worth considering.

  • Resize with constraints (i.e. maintain the aspect ratio)
  • Resize without constraints

Intelligent Resize

  1. Resize an image and adhere to the aspect ratio of the original image
convert old.png -resize 700x700  new.png

Simple Resize

In this example explicitly set the size of the image to 700x700.

  1. Resize an image and ignore the aspect ratio of the original image
convert old.png -resize 700x700!  new.png

Install Node

Node.js Installation

The Node.js programming language is an open source project to make programmers more productive.

Node.js is flexible and easy to learn. Its wide adoption is primarily down to the universal nature of the language. If you have a web browsers such as Google Chrome, it comes with a very rudamentary development environment as part of dev tools. The web is already available everywhere, so why not learn the language of the web? JavaScript is very quick to learn. If you want to move beyond that to topics such as Node.js, and Express, JavaScript is an ideal language. In most cases, having this language in your arsenal will be very useful to build quite powerful applications.

Hugo site automation with Cloud Build

Introduction

In this post I collate the blog posts on building static sites with Hugo and Cloud Build for easier reference. At the beginning of the process, I wanted to experiment with using Hugo. As time progressed I found it to be an awesome piece of software. In addition I also wanted to utilise Cloud Build to automate the very manual process of blog deployment.

Cloud Storage

  1. Create a (multi-region) Cloud Storage Bucket
  2. Add permissions for website to the bucket

Blog Creation

  1. Create a static site using Hugo.
  2. Add the static site to source version control e.g. GitHub

Cloud Build

  1. Create a Hugo image
  2. Link Cloud Build to the static site under source version control
  3. Create a cloudbuild.yaml configuration for Cloud Build
  4. Add the yaml configuration to the source control
  5. Create a Cloud Build trigger to reference the cloudbuild.yaml

Blogging

  1. Add Blog entries to source version control
  2. Site will automatically deploy based on the Cloud Build trigger configuration

References

It may be helpful to read the prior blog posts on Hugo, Containers and automation on Google Cloud:

Convert JSON to CSV with JQ

Convert JSON to CSV with JQ.

jq is like sed for JSON data - you can use it to slice and filter and map and transform structured data with the same ease that sed, awk, grep and friends let you play with text.

Being able to move between different file format is quite a common task, so I was delighted to find a quick and easy method for JSON/CSV. In the following blog post learn how to use jq to transform JSON data into the CSV format. Once the data is in CSV format, it should be a simple matter to import into other applications (e.g. databases, spreadsheets, etc).

Getting started with Pack + Buildpacks

How to use Buildpacks on ChromeOS (Debian Buster).

What is a buildpack?

“A buildpack is something you’ve probably leveraged without knowing, as they’re currently being used in many cloud platforms. A buildpack’s job is to gather everything your app needs to build and run, and it often does this job quickly and quietly. That said, while buildpacks are often a behind-the-scenes detail, they are at the heart of transforming your source code into a runnable app image.”

Google Cloud Professional Cloud Architect

Google Cloud Professional Cloud Architect Certification (Jan 2021)

Disclaimer: Non official content, errors and omissions excepted

Exam Knowledge Areas

:inline

Pre Exam Notes

  • Kryterion Sentinel software (Windows/Mac) installation requires administrator rights
  • Kyterion system check - do this at least a day before to be on the safe side
  • No breaks during two hour exam
  • Do the practice exam to build some confidence
  • (Try and) get a good nights sleep before the exam
  • The exam is multiple choice, so work out the wrong answers first!!

Post Exam Notes

  • Pretty comprehensive overview of Google Cloud.
  • Exam is much clearer than the one taken a couple of years ago.
  • Case Study questions were at the end of the exam - hopefully this is the same for everyone?
  • Still no feedback beyond pass/fail (Grrr!)
  • 50 Questions

Google Cloud do not indicate the pass mark for the exam, but I would assume its somewhere greater than 70%.

Setting up a Custom Domain on GCP

Introduction

If you want to host a static site e.g. blog or website, there are plenty of great options available. One option is to host your content in a storage bucket. Another option is to use Firebase hosting. Recently I watched a couple of YouTube videos that walk through the process of setting up a site.

Using a Custom Domain with Google Cloud and Cloudflare

Inspired by the above videos, I decided to give it a try and migrate my very old Wordpress blog to Google Cloud.

Google Cloud Professional Data Engineer

Google Cloud Professional Data Engineer Certification (Jan 2021)

Disclaimer: Non official content, errors and omissions excepted

Exam Knowledge Areas

:inline

Pre Exam Notes

  • Kryterion Sentinel software (Windows/Mac) installation requires administrator rights
  • Kyterion system check - do this at least a day before to be on the safe side
  • No breaks during two hour exam
  • Do the practice exam to build some confidence
  • (Try and) get a good nights sleep before the exam
  • The exam is multiple choice, so work out the wrong answers first!!

Post Exam Notes

  • Pretty comprehensive overview of using data on Google Cloud.
  • Lots of questions on handling data - generally quite thought provoking
  • Some complexity in the questions, but most written to be clear
  • Still no feedback beyond pass/fail
  • 50 Questions
  • A couple of stinker permission questions - ProTip, read the question backwards

General list of topics that are potentially covered based on the exam criteria:

Deploying a Hugo Blog with Cloud Build

Introduction

Build, test, and deploy on the Google Cloud serverless CI/CD platform. Cloud Build scales up and scales down in response to load with no need to pre-provision servers or pay in advance for additional capacity. Pay only for what you use.

In this blog post, Cloud Build is used for the automation of Hugo builds. The Hugo automation works in isolation so this technique can be repeated for pretty much any deployment. Therefore, while I use Hugo in the example, feel free to substitute any binary as part of the workflow.

Pdftk Installation

“PDFtk - The PDF Toolkit. PDFtk is a simple tool for doing everyday things with PDF documents. It comes in three flavors: PDFtk Free, PDFtk Pro, and our original command-line tool PDFtk Server.”

In this blog post learn how to install PDFTK used to edit PDF.

  1. Install PDFTK on debian
sudo apt install pdftk
  1. Create a directory for the conversion to take place e.g. $HOME/temp/convert
mkdir -p ~/temp/convert

Use a conversion folder to store pdf input/output content.

Pdftk watermark removal

“PDFtk - The PDF Toolkit. PDFtk is a simple tool for doing everyday things with PDF documents. It comes in three flavors: PDFtk Free, PDFtk Pro, and our original command-line tool PDFtk Server.”

In a prior blog post, the PDFTK utility was installed. Now use the utility to remove a watermark from a PDF.

  1. Get the PDF with a watermark and copy it to the directory created e.g.
cp watermark.pdf ~/temp/convert
  1. Move to the convert directory
cd ~/temp/convert
  1. Uncompress the PDF
pdftk watermark.pdf output uncompress.pdf uncompress
  1. Use the SED utility to remove the watermark text e.g. replace WATERMARKTEXT with the text in your PDF. Ensure the text used is exactly that same as that identified in the PDF.
sed -e "s/WATERMARKTEXT/ /" uncompress.pdf > sanwatermark.pdf
  1. Open the new sanwatermark.pdf file with a PDF reader and confirm the watermark has been removed.

Setting up tmux

Introduction

Tmux is a terminal multiplexer. It lets you switch easily between several programs in one terminal, detach them (they keep running in the background) and reattach them to a different terminal. If you work at the command line, manage multiple machines or work in the Cloud you will definitely want to investigate using a terminal multiplexer. I have found Tmux to be incredibly useful for a wide variety of usecases e.g. Kubernetes, SSH sessions and general development.

Build a container image with Cloud Build

Introduction

If you want to build a container image there are lots of options available. Docker, Buildpacks and Cloud Build provides a very convienient way to manage builds. In this blog post, we will use Cloud Build to create an image based on a configuration.

Google Cloud Project

Definitely check out Free Tier to try Google Cloud products. Cloud Build is included in the free tier. To use Cloud Build ensure:

  • The Cloud Build API (i.e. cloudbuild.googleapis.com) is enabled

Cloud Build 101

Cloud Build is a serverless automation tool available on Google Cloud. Its purpose is to remove the toil associated with building software. To do this, Cloud Build uses containers to define custom workflows for build, test and deploy stages. In addition it works seamlessly with the Google Cloud products and also plays nicely with source control solutions such as GitHub.

Blogging with Hugo

Introduction

Blogging is a really good way to make notes on the things you have learned over the years. Previously I used Wordpress to capture my notes but I found it quite cumbersome.

More recently I became aware of Hugo and decided to give it a try (spoilers this site is the result). Hugo is a really amazing piece of software that enables you to generate a static site. A static site is perfect for a blog, and quickly getting up and running with a local site can be done in a matter of minutes.

Creating a Static website in Google Cloud Storage

Introduction

The Hosting a static website blog post walks through the essentials of running a website from a Google Cloud Storage bucket.

In general just remember that the bucket name needs to be globally unique.

ProTip: prefix the bucket name with the Google project identifier e.g. myawesomeproject-bucket

In this post, I show you how to add a landing page to a Google Cloud Storage bucket. If you just need a quick and easy website (e.g. not concerned about domains, SSL etc), this is a really simple option.

Setting up a landing page

Introduction

A landing page is just a simple webpage that typically has a background image and some information. Here are some examples to get you started.

Lets use the free template onepagelove.com/download/me as an example page to get up and running.

Working with the example Landing Page

As you might expect the most of the work has been done for you. A live preview shows what the template looks like. If you do not like what you see, keep searching the templates. If you do like what you see …

Hello World in Go

The Go programming language is an open source project to make programmers more productive. In the following blog post I assume you already have the Go environment setup. To get started with Go is just a matter of adding some code. The example below covers a basic “Hello World”.

Go Installation

  1. Confirm Go is installed
go version

If it is not installed check out a previous post to install Go in Linux

Compiling Vim

Vim is a highly configurable text editor built to make creating and changing any kind of text very efficient. It is included as “vi” with most UNIX systems and with Apple OS X.”

This tutorial covers the steps required to compile Vim from source with Python support (i.e. python3.x). If you use ChromeOS or a Linux distribution, it may not necessarily have access to the latest build of the application. To get past this issue, compiling from source provides the best approach. Learn how to build Vim, so understand how to enable example packages needed for plugins based on Python.

Install Go

The Go programming language is an open source project to make programmers more productive. Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It’s a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language.

Install Oh my bash

Oh My Bash is a delightful community-driven framework for managing your bash configuration, and an auto-update tool so that makes it easy to keep up with the latest updates from the community.

At the end of this blog post, your command line should look similar to the image below:

:inline

In the image:

  • Blue: indicates a non git based directory/subdirectory
  • Green: indicates a git based directory in sync with the remote
  • Orange: indicates a git based directory with changes to be applied

Bash Configuration

  1. Configure Zsh/Bash shell with user based themes to make the command line visually appealing.

Install system fonts

  1. Fonts can be downloaded from here - follow example below to install them on host (install.sh)

Setting up Vim

Vim is a highly configurable text editor built to make creating and changing any kind of text very efficient. It is included as “vi” with most UNIX systems and with Apple OS X.”

This tutorial covers the steps required to setup Vim (including Python 3.x support).

Installation Guide

There are lots of really excellent tutorials on setting up Vim for the first time. Personally I dont use most of the features, so have been steadily reducing the number of plugins I use.

RPi Kubernetes

RPI Kubernetes

A quick overview of how to build a Raspberry Pi Cluster using Linux.

Bill of materials

  • Raspberry Pi (Minimum x 2) - recommend RPi v4
  • MicroSDHC Card (Minimum capacity 8GB)
  • USB Charging Cable (Same number as RPi devices)
  • Machine to create an RPi Disk Image

Which disk image?

The 64bit Ubuntu image is currently my preferred choice as it just works! Raspberry Buster image comes in multiple flavors.

RPi Base Image

RPI Create Image

Debian installation on RPI

A quick overview of how to build a image.

Bill of materials

  • Raspberry Pi x 1
  • MicroSDHC Card (Minimum 8GB)
  • USB Charging Cable (Same amount as RPi)
  • Machine to creating a RPi Disk Image

Create the Disk Image

  • Download a Raspberry PI image e.g. Raspbian Debian Image
  • Take the Memory Card and install an operating system.
  1. Download either torrent or the zip file to your machine Note: the location where the file is being downloaded

Project 3: Udacity Racer

Module 3: Asynchronous Programming in JavaScript

The last module in the Nanodegree introduces asynchronous programming in JavaScript.

Project Link: UdaciRacer Repo

  • Pros: Interesting project, good example of starter asynchronous code
  • Cons: Very short project

Asynchronous Programming with JavaScript

The modules in this section of the Nanodegree cover the following topics:

  • Introduction to Asynchronous Programming
  • Synchronous Concepts and Asynchronous Callbacks
  • Sequence Events - Promises
  • Sequence Events - Async/Await
  • Project: UdaciRacer Simulator

In the final project of the course, you create a motor racing game. The project udacity racer is a short programming task as already written for you.

Project 2: Mars Rover

Module 2: Functional Programming

The second project involves working with APIs to access Nasa Mars Rover data.

Project Link: Mars Rover Repo

  • Pros: Very enjoyable and educational project
  • Cons: Content is long and I didn’t really feel engaged until I started working on the project.

Functional Programming

Learn Functional programming

  • Course Introduction: Functional Programming
  • Introduction to Functional Programming
  • Functional JavaScript Syntax
  • Functional Programming in JavaScript
  • Going Further with Functional JavaScript
  • Project: Mars Dashboard

In this second module you learn Functional programming. Again, there is a lot of course material. The training content isnt very interactive, and there is a lot to go through. However, the material is a decent overview of Functional programming and also provides some good links to continue researching into the subject matter.

Certified Kubernetes Administrator (CKA) Exam

Certified Kubernetes administrator (sep 2020)

disclaimer: non official content, errors and omissions excepted

Tldr;

  • 2 hours in duration
  • 20 questions
  • Kubernetes revision is v1.19
  • Pass mark is 66%
  • Cost is $300 dollars and includes one free retake
  • CNCF Exam guide - Five domains covered in the exam

Things to know

Pre Exam Notes

  • Chrome based extension monitors exam machine - Works on any machine supporting Chrome!!
  • Require a decent camera to take an image of identification
  • Do the system check a couple of day before the exam
  • No breaks during two hour exam
  • (Try and) get a good nights sleep before the exam
  • The exam is based on hands on lab exercises!
  • Highly recommend you know how to use Vim
  • Highly recommend you know some Linux commands
  • Buy an exam voucher on Black Friday, valid for a year

Post Exam Notes

  • Pretty comprehensive overview of Kubernetes v1.19.
  • Exam requires you to understand Kubernetes concepts
  • The 2 hours will go really fast - practice speed as well as accuracy
  • Can request feedback on exam result - Well done CNCF!!
  • Exam results sent after 48 hours

Exam Preparation

I used the Certified Kubernetes Administrator (CKA) with practice tests on Udemy by Mumshad Mannambeth. Actually I got both the CKA and CKAD as I plan to do both exams at a bargain price of £11.99 each. Meanwhile I read the excellent Kubernetes in Action by Marko Luksa. It’s a really well written book and covers more than enough to get you through the exam material. Finally I used my collection of Raspberry Pis to make two 3 node clusters - one for installation configuration and the other for workloads. I was also going to do the LA course as I already have a subscription but ended up not using that.

Serverless Days 2020

The following blog post shows the presentation made for the Serverless Days 2020 in Warsaw.

Sorry, your browser doesn't support embedded videos.

In the presentation given, I speak about using Google Cloud to perform serverless tasks with a local application. The demonstration includes an application that calls a backend Cloud Function. Specifically I am using Googleapis for translation of text entered by the application user.

Project 1: Dinosaurs

Module 1: Object Orientated JavaScript

The first project involves building an infographic based on Dinosaurs.

Project Link: Dinosaurs Infographic Repo

  • Pros: Enjoyable project, nice development project
  • Cons: Training content is quite dull and the quizzes lacked quality control

Object Oriented JavaScript

The modules in this section of the Nanodegree cover the following topics:

  • Objects in Depth
  • Functions at Runtime
  • Classes and Objects
  • Object-Oriented Design Patterns
  • Project: Dinosaurs

In the first module you learn the basics of JavaScript and how to build a simple application. The project demonstrates how to work with the Document Object Model using JavaScript. In the exercises the base code is provided and you are required to update it. In the module end project you are asked to dynamically build the infographic by updating the DOM.

Intermediate Javascript Developer (Nanodegree)

Learn Intermediate JavaScript

The goal of the Intermediate JavaScript Nanodegree program is to prepare students for roles in web development, server-side application development, and desktop development that require a more advanced set of JavaScript skills. This program will also prepare students with the skills required to use JavaScript frameworks like React, Angular, and Vue.

Pre Course

  • Estimated Duration: 3 months
  • 3 Modules
  • 3 Projects

Post Course

The projects are definitely the best part of this Nanodegree. Project submissions are usually marked really quickly within 24 hours. The project reviewers will try to be helpful with their comments. However if you have to resubmit, your next reviewer may be more particular about your submission.

Certified Kubernetes Administrator (CKA)

Certified Kubernetes Administrator (CKA)

Overview

Instructor: Mumshad Mannambeth

Awesome content - really comprehensive overview of Kubernetes administration. Training labs are fantastic and provide the student with the skills needed to pass the exam.

Type Duration Rating
Course 18 hours 5/5

Highly recommended.

Exam Outline

Section 1: Cluster Architecture, Installation Configuration - 25%

Understanding
Manage role based access control
Use kubeadm to install a basic cluster
Manage a highly-available kubernetes cluster
Provision underlying infrastructure to deploy a kubernetes cluster
Perform a version upgrade on a kubernetes cluster using kubeadm
Implement etcd backup and restore

Section 2: Services and Networking - 20%

Understanding
Understand host networking configuration on the cluster nodes
Understand connectivity between pods
Understand ClusterIP, NodePort, LoadBalancer service types and endpoints
Know how to use ingress controllers and ingress resources
Know how to configure and use CoreDNS
Choose an appropriate container network interface plugin

Section 3: Troubleshooting - 30%

Understanding
Evaluate cluster and node logging
Understand how to monitor applications
Manage container stdout & stderr logs
Troubleshoot application failure
Troubleshooting cluster component failure
Troubleshoot networking

Section 4: Workloads and Scheduling - 15%

Understanding
Understanding deployments and how to perform rolling update and rollbacks
Use ConfigMaps and Secrets to configure applications
Know how to scale applications
Understand primitives used to create robust, self-healing application deployments
Understand how resource limits can affect Pod scheduling
Awareness of manifest management and common templating tools

Section 5: Storage - 10%

Understanding
Understand storage classes, persistent volumes
Understand volume mode, access modes and reclaim policies for volumes
Understand persistent volume claims primitive
Know how to configure applications with persistent storage

Hands-On Serverless with Google Cloud

Overview


Hands On Serverless with Google Cloud

The book shows you how to use Google Cloud’s serverless platform. Become familiar with the following products:

Serverless Product Description Use case
App Engine Fully managed serverless platform Developing and hosting web applications at scale
Cloud Functions Scalable pay as you go functions Functions as a Service (FaaS) with zero server management
Cloud Run Fully managed compute platform Deploy and scale container application quickly and securely

Book Information


  • Author: Rich Rose
  • Publication Date: 2020
  • Publisher: OReilly
  • Repo Link: HOS

Training: Google Cloud Professional Cloud Security Engineer

Google Cloud Professional Cloud Security Engineer Certification

A Professional Cloud Security Engineer enables organizations to design and implement a secure infrastructure on Google Cloud Platform. Through an understanding of security best practices and industry security requirements, this individual designs, develops, and manages a secure infrastructure leveraging Google security technologies. The Cloud Security Professional should be proficient in all aspects of Cloud Security including managing identity and access management, defining organizational structure and policies, using Google technologies to provide data protection, configuring network security defenses, collecting and analyzing Google Cloud Platform logs, managing incident responses, and an understanding of regulatory concerns.

Install Pass

Overview

Pass is a commandline tool to manage encrypted passwords.

“Pass makes managing individual password files extremely easy. All passwords live in ~/.password-store, and pass provides some nice commands for adding, editing, generating, and retrieving passwords. It is a very short and simple shell script. It’s capable of temporarily putting passwords on your clipboard and tracking password changes using git.

With pass, each password lives inside of a gpg encrypted file whose filename is the title of the website or resource that requires the password. These encrypted files may be organized into meaningful folder hierarchies, copied from computer to computer, and, in general, manipulated using standard command line file management utilities.”

Life long learning

Life long learning

Over the past two years, I have dedicated much of my spare time to learning about new technologies such as Android, Data Science and various Cloud Technologies. During this period, I have used a number of online providers such as Udacity, Coursera, and Udemy to name a few.

Given the interest in the media regarding these organisations, I thought I would feedback my thoughts on the online courses provided by Udacity. If you are looking to get into many of the latest technologies, Udacity offers a fantastic range of online courses. For example, if you are interested in learning to develop mobile applications (either for Android or iOS) then there is a course for that. I highly recommend the Android nanodegree which has helped me gain both confidence and experience in Android development. Taught by Udacity and Google engineers, it is a fun and educational experience.

Adventures in Python: Transposing data

Introduction

I deal with data all the time. One of my pet peeves is Excel spreadsheets in which the person responsible for creating it has built it in such a way that you cannot pivot the information without restructuring the content. So to remedy this situation I created a quick and dirty tool to perform a specific task (transposing CSV files).

The tool is named Hydra, as every time I see a spreadsheet like this, I immediately freeze while my mind drifts off to consider how much time I will need to waste reformatting the information. Honestly, this task is really dull and I wanted a simple tool to do this, so I did not have to do it over and over again.

Quick Class Diagram

As someone who likes to write computer programs (and as a visual person), I do like to have a nice diagram accompany my programs, as per the example below:

:inline

Graphviz

sudo apt-get update
sudo apt-get install graphviz
1     # User class
2     User
3     
4     # User members
5      nick
6      numberCompleted
7      email
8      permission
9     
10    # User methods
11     recordPassword()
12    
13    Forum
14    # Forum members4546384823500609
15     number
16    
17    # Forum methods
18     ForumPrivate
19     accessPermission
20
21    Message
22    # Message members
23     title
24    
25    # Relationships
26    1 User * messages
27    1 forum has many messages
1    # Relationships
2    User -> messages
3    forum -> messages
4    User -> Telephone
5    Telephone <- User