Will Clarke

Hello, I’m Will 👋😃

I’m a software engineer based in the UK.






Here are some of the things I’ve written about tech:



Learn to use the shell!

It's worth spending time to get to grips with the command line. shell bash tech

cp works different in BSD and Linux

"cp -R a/ b/" will do different things on each OS. linux bsd shell

Perfect is the enemy of the good

Most of the time, something is better than nothing. Don’t overanalyze. efficiency tech

Teams should be tiny

Ignore the two-pizza rule at your peril! Most people really like pizza… teamwork efficiency

Communicate Effectively

"Soft skills" are majorly undervalued, especially in the tech world communication teamwork documentation writing tips

Look for the big picture

Take a step back. It’s worth it. perspective efficiency

Simplicity is somehow still underrated

Keep It Simple, Stupid. tech simplicity perspective

AWS S3 has insane durability

99.999999999% is a lot of nines… aws s3

UUID collisions investigated with lisp

There are 2^128 different UUIDs. What about UUIDs sharing the same prefix? emacs lisp uuid

How to share private GPG keys securely

GPG is a fantasitc way to encrypt & decrypt key. But transferring private keys can be tricky. gpg security

AI is gonna change everything. Obviously

GTP3 is a scarily-good language model to create human-like text. ai future

Pulseaudio playing up? Try deleting ~/.config/pulse

Pulseaudio is an amazing piece of software that sits in between the linux driver and applications. It stopped working for me… but an easy fix was to delete its config directory. linux desktop audio

Function Composition is super cool

Function composition is kind of important - especially in functional languages. haskell fp

Force a script to run as root (sudo)

You can add one line to any shell script to force the script to run as root. unix bash

Trying to get Go modules to play ball with private repos?

Go modules can be tricky to set up with private repos. Here are two tips that may help it work! golang

Ask stupid questions

Ask ask ask. Keep on asking questions. communication teamwork

Enjoy it!

Life’s short. Do something fun. It’s not all about money or status. life

Document EVERYTHING!!!

Being a software engineer is more about communicating than it is about writing code. What does the code do? How does it do it? Why does it do it? We need to give other people - and our future selves - cheat sheets so they don’t have to spend the 3 hours you jsut spent understanding it all. documentation communication teamwork

How to find rows which don’t exist in a table

I was recently stumped for a while trying to find rows that didn’t exist in my SQL table… sql db

Get things done > tech used

It can be easy to get distracted by shiny new things. To obsess over development flows. But what does that achieve if you never acutally do anything? product tech

Defaults are good. Try them out!

Instead of spending hours grooming your .vimrc, perhaps take a while to appreciate the defaults. They’re there for a reason! And once you get used to them, every computer’s going to be easy to use… not just your fabulous unique one. tips unix

Boring product names FTW

Sure, fancy product names are fun… but they can also be confusing. product tech

Cron is cool

cron lets you schedule jobs in the future. It’s pretty good at that. unix shell bash

Automate Repetitive Tasks

Don’t spend time doing manual stuff. Get computers to do it! automation unix

Maybe try vim

It’s not for everyone, but if you spend a decent chunk of your life in front of a text editor, it probably makes sense to at least play around with vim… vim editor

We should all know git

Version Control’s a total game-changer. We should use it for everything. No more saving things with unique file names - eg. important-thing-VERSION-4.doc git

jq is a cool tool

jq lets you effortlessly transform JSON on the fly. It’s well worth getting used to it & there are some powerful things you can do with it, like mapping… it’s not just about filtering. bash unix

My favourite Ruby books

ruby books

Vim Folds

Folds in Vim allow you to see summaries of code. I don’t use them as much as I should. vim tips editor

Git Diff for files

git diff –name-only commit1 commit2 git

View Last Vim Commands

“Spoiler Alert - : then Ctrl-P” vim commands editor

Vim Text Objects

Text objects are powerful & efficient ways of transforming data in vim. vim editor

Save time with Bash & !!

bash zsh shell tips

Ruby - Hash#fetch

ruby hash

Vim - Ctrl-R in Insert Mode

Ctrl-R inserts text based on your current vim context. Eg. filename, last command, last search, etc… vim tips editor

Vim Movement

hjkl are just the tip of the iceberg vim tips editor

Hide files from Git Index

git update-index –assume-unchanged git tips

Git Log

git log has loads of funky ways of displaying the current state of git. –online and –graph are my faves” git tips

The Object#try method in Rails

rails ruby tips

The Holy Grail of Vim Commands

vim tips editor

Random Vim Shortcuts

These are very random. I do like ggg?G a lot though! vim tips unix editor

Vim Registers

Vim registers are a way to have unique clipboards in different places. vim tips editor

Suspend Vim

Spoiler Alert - Ctrl-Z and then fg to resume vim shell unix

Return a Boolean in Ruby

“Spoiler Alert: !! can cooerce a non-boolean variable into a variable.” ruby tips

Create a Free Twitter Bot - hosted on Heroku

Heroku’s a site that gives you free servers to make cool stuff on. You can host twitter bots on there to enrich the interwebs. ruby heroku

Twitter Apps Authentication - without another mobile number

For all the 733T hackers out there who want to make a twitter bot, I’ve got you covered <3 ruby api

UNIX Shell For Dummies

The UNIX philosophy of composing small stuff together is kinda amazingly powerful. It’s worth understanding the basics. shell unix bash

UNIX Permissions for no0bs

Why chmod +x? What does it all mean? How does it work? What are those magic numbers like 777? unix shell bash

Real Defaults With Hashes

Ruby hashes have a gotcha that the uninitiated should be aware of. ruby tips

My CV… in pure Ruby

I don’t know why I wasted my time doing this. cv ruby

Dealing With DNS

DNS can be scary. It can be confusing. But it doesn’t have to be! It’s important. Here’s a primer to get you up and running.. dns heroku ip networking

Clever Vim Commands & Keybindings

Getting good at vim involves making every key-stroke as efficient as possible. You need to master keybindings in order to do this. vim editor unix

Getting Started With Jekyll

Jekyll’s a fancy static site generator that’s really easy to use. ruby blog

Remove file from Git (after committing)

git tips unix

A Quick Introduction to IP Addresses

Networking can be complex. The Internet Protocol is a foundational layer of how the internet works. It’s worth vaguely understanding what’s going on. networking dns ip

Writing Files Through Shell

bash shell unix

Trying Vim

Vim has an infamously steep learning curve. It’s worth diving in. Here’s how to start.. vim editor unix

Setting Up Rspec

rspec’s the go-to way to test Ruby apps. It’s easy to set up with Rails. ruby rspec tdd

The Python Challenge

python

Sublime Text Snippets

One way to work faster is to have predefined snippets or blocks of code help you with repetitive typing. editor

Show Vim Mappings

“Vim has a helpful command to show all your mappings: :map” vim unix editor