Fixing a typo across multiple repos

Yesterday I found a typo in a pull request description while browsing another team’s project which I stumbled upon. I mentioned it to the author but it turned out that that part of the text came from the repository’s pull request template, which means every pull request will have this amusing but irritating mistake. I sent them a pull request, modifying the template, to fix the mistake at the source and avoid it in future, and thought that would be the end of it.

It turns out that template was written once and then copied across to new repos, which means this typo actually exists in almost all the pull requests in all of that team’s projects. Well that escalated quickly. This is the point where the average person probably says “OK whatever, it’s not worth it for something so small, there are too many repos, it’s just a small typo, never mind” and stop. A very determined person might actually start opening browser tabs and psyching themselves up to do pull requests. I open my terminal emulator and start writing a for loop. Continue reading

Use HOME as your GOPATH

How and why I normalised my Go paths and personal/local home paths.

Like many people, I have my own scripts and stuff in a bin directory in my home directory. Actually it’s a symlink to ~/.local/bin because I saw there was a ~/.local/share which some programs use to store user-specific things and I wanted to be consistent.

Then I saw some people have ~/bin and ~/src and I thought that looked like a Continue reading

Vim “fake fullscreen”: open split windows in a new tab

Since I use a lot of split windows in Vim, for example when exploring the git log or editing closely related files, a pattern I noticed is I often want to make one of the smaller windows full screen momentarily so I can read more at once without scrolling and then close it when I’m done. I made a really simple mapping to simulate this “full screen” idea:

:nnoremap <Leader>f :tabe %<CR>

This opens the current window’s buffer in a new tab (fake full screen 😁) and when I close it I’m back to tab one with my split windows.

To demonstrate, here’s a gif in which I inspect the git blame for a file, open a patch and then open it “full screen” in a new tab:

Vim fake fullscreen demo gif

Vim fake fullscreen demo gif

Browsing the git log isn’t the best example because fugitive’s blame window already has an O mapping which opens the patch in a tab instead of a split and the necessity for this would be clearer with bigger files like those I edit at work.

This is one of the few things I use tabs for since I’m mostly jumping through buffers. Hopefully it’s useful for you too!

Finding photos of a known size

Recently I did a friend a favour and installed Linux Mint on her laptop as she was a bit frustrated with Windows. Unfortunately I assumed she’d backed up everything before handing it over to me, so I re-partitioned the whole drive to ext4. She hadn’t.

On the bright side the computer was quite new and the only thing she wanted from the disk were some photos she’d taken. Well, that just made it my lucky day because there just happens to be a tool specifically for recovering photos (and a myriad of other filetypes) from disks that have been written over: TestDisk

Continue reading

Renaming USB Devices in Linux

Sometimes you want to change the name of a USB device, for example because it has no name or because it has a new purpose. I usually give my USB flash drives my own name so that if I lose them, people will know who to return them to.

Modern desktop environments make it easy to rename your device by simply clicking it and selecting ‘rename’ from the context menu. However, sometimes you might want to do this from the command line 😎 perhaps because you have no desktop environment, or your desktop environment does not allow you to easily rename your device, or because you feel you could do it faster this way. Continue reading

Checking Computer Specs With No Operating System

After my previous post about checking computer specs in Linux somebody asked an interesting question: how do you check your computer’s specifications if you don’t actually have any operating system to check them with?

In my opinion the easiest way to do this would be to download a disk image of a live CD for a lightweight Linux distribution, such as my favourite: ArchLinux. Once you’ve burned it to a disc you can put it in your computer and boot directly from the disc. ArchLinux is light and fast and will allow you to log in as root with command line access, where you will be able to run the commands I talked about in my other post to find your computer specs even for a computer with no OS or in other cases, for example where you don’t have permission to check with the current OS. If you’re not familiar with Linux don’t worry, follow the on-screen instructions and just type the commands I described. When you’re done checking you can turn off the computer and take out the CD and things will be just as they were before.

Checking Computer Specs in Linux

Note: automated script downloadable at the bottom of this post!

Something you always want to do on a computer, even if only once, is to check its hardware specifications, that is:

  • how much RAM do I have?
  • how much hard disk space do I have?
  • how “fast” is my CPU?
  • how much RAM does my graphics card have?

Of course most modern GNU/Linux desktop environments like Ubuntu usually come with some kind of graphical tool to find this information. GNOME’s System Monitor program should provide at least some of what you’re looking for. The information here is more for when you’re staring at a blinking cursor on a black screen trying to remember what the command was to show information about the CPU, RAM or Graphics Card.

This is the third time I’ve had to go on an internet search quest to remind myself how to do this in a Linux terminal. To save myself the trouble in the future, I’m writing down the commands here and if anyone else finds it useful then that’s great, and a second bird is figuratively killed!
Continue reading

A Game With No Pictures

You can look down on the idea of it all you want but command-line games have their place. Not only are there situations where you need them but in a way, not having any graphics sometimes allows them to focus on other aspects of gameplay that makes them better. I was installing a new operating system on my computer today but I messed up somewhere and ended up with no Desktop Environment. Imagine turning on your computer one day and where you usually get:

“Hi, welcome to your computer [insert lots of fancy graphics and stuff], please pick who you want to log in as and I’ll give you a desktop with buttons and icons that will show you programs in little windows and let you click on things to do stuff.”

you now instead get this: Continue reading