Reading List for Software Engineers

As a sofware engineer, no matter how experienced, there’s always things we can learn from others. Some have more expertise in specific technologies, others have more experience in the “soft skills”. I’d like to think we can learn from the more experienced among us by learning what worked from them and adapting it for our own careers.

On that thought I’ve put together an incomplete list of blog posts that I’ve come across that may be useful. I hope to keep this updated with more as I go along

Software Engineering

Being Glue

https://noidea.dog/glue

How to be a Tech Influencer

https://lethain.com/tech-influencer/

How to ask Good Questions

https://jvns.ca/blog/good-questions/

Salary Negotiation

https://www.kalzumeus.com/2012/01/23/salary-negotiation/

You are not Google

https://blog.bradfieldcs.com/you-are-not-google-84912cf44afb

Code Review Pyramid

https://www.morling.dev/blog/the-code-review-pyramid/?utm_source=programmingdigest&utm_medium=email&utm_campaign=471

Refactoring

https://refactoring.guru/design-patterns

Don’t Call Yourself a Programmer

https://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/

Developers mentoring other developers

https://blog.pragmaticengineer.com/developers-mentoring-other-developers/

Equity 101 for Software Engineers at Big Tech and Startups

https://blog.pragmaticengineer.com/equity-for-software-engineers/

Technical

Indexes in PostgreSQl

https://blog.mastermind.dev/indexes-in-postgresql

How to find more (Blog List)

Here’s a bunch of blogs that are worth reading

https://jvns.ca/blog/

https://www.kalzumeus.com/

https://www.joelonsoftware.com/

Bonus: Blog Search Engine

If you know what topic you’re after or you want to just browse a long list of blogs then this site is really helpful

https://blogsurf.io/

October 27, 2021 · 1 min

Hello World

I’ve started this short blog after trying and failing to start a writing “habit” many times before. The reason I want to write at all in the first place is to actually learn about anything you need to put your knowledge into good use. Its all well and good reading countless books and articles but you really need to write to take anything away from those. Writing also improves how you communicate, an invaluable skill in our remote asynchronous world.

My goal is to learn and explore a wide range of topics. I, like many people, have no real idea what my true interests or passions are. Fair enough I kind of am interested in a few things like finance, sports and business on top of my day job as a software engineer. However none of these things I can truly point to and say that is the thing I love learning about. This blog will be an exploration of all of those things plus more, going wherever my interests take me week to week.

There won’t be any formal process to selecting what I should research each week, rather it will be whatever I have learned or come across recently that I think I can write something about.

I hope as the weeks go on my writing will improve and I learn a great deal about the topics I research.

September 26, 2021 · 2 min

Backing up and restoring etcd

So here I’m going to go through backing up etcd on a kubernetes cluster.

The reason I’ve done this before is for the Kubernetes Certified Administrator (CKA) exam where you would need to know how to do this. In managed clusters like GKE then you probably will never need to interact with etcd.

There’s a few steps involved in Backup:

  1. save the snapshot Restore:
  2. stop all cluster components
  3. restore the snapshot
  4. restart all cluster components

Setup

The first thing you’ll want to do before all this is ssh onto the master node of the cluster. The master node is where things like etcd are configured.

We’re going to be using etcdctl to back up etcd in this tutorial. You can make sure it’s installed by running etcdctl version. This will return the etcdctl version and the API version which should be the same. If this command does not work then you can either install etcdctl or even see if etcd is even running on the cluster by seeing if there’s any etcd pods running

Authentication

Another thing you may need to do before continuing on is you may need to authenticate with the cluster. If you find the etcdctl commands hanging or not completing then this is probably the reason. One way of authenticating is by passing in the certs used for etcd. These are usually stored on the master node and you can find the location by looking at the etcd.yaml file. So for example

> cat /etc/kubernetes/manifests/etcd.yaml

...
spec:
  containers:
  - command:
    - etcd
  
Read Full Post...
April 3, 2021 · 3 min

Manually loading an Apparmor profile to Kubernetes

The aim of this doc is, as the title suggests, to load an apparmor profile to a Kubernetes node and see that it is loaded. What it is not is an explainer of AppArmor or how to create profiles. For that there are a few resources at the bottom which will be more useful.

Install the tools

I’m using the AppArmor utils to manipulate AppArmor here. First thing you will want to do is open a shell on the kubernetes node. An important thing to note here is if there are multiple nodes on your cluster then you will have to do this individually for each node so it is easiest to scale your cluster down to a single node if possible. Opening the shell is different depending on where you cluster is, I’m using GKE on Google’s cloud so I use this command to connect.

gcloud beta compute ssh --zone "<zone>" "<node_name>" --project "<project_name>"

The tools themselves are installed using the following command.

apt-get update && apt-get install -y apparmor apparmor-utils

Note: An important thing to note is this node is running ubuntu. You can use the toolbox command if it is available to use apt-get below.

Check it is working using the following which will list the profiles that already exist on the node. You may need root access using sudo su

aa-status

Setting up the Profile

AppArmor profiles are stored in the /etc/apparmor.d directory so cd into that folder and create a new file. I am using the name k8s-apparmor-deny-write. As the name suggests the profile will block all writes to

Read Full Post...
December 7, 2020 · 3 min