Localghost
choose a theme

Everything I googled in a week as a senior software engineer

Sophie Koonin

Three years ago I wrote a post called Everything I googled in a week as a professional software engineer, and it clearly resonated with people, because it went pretty viral. It still gets most of the pageviews on this website.

Well, a lot has changed in three years: I got promoted and I'm now a senior engineer and lead the web engineering discipline at Monzo. But one thing hasn't changed: I still google a lot, every single day. Here's what I googled in a week, 2022 edition.

Obvious disclaimer: this is slightly edited as I've removed most of the non-work-related ones.

Some of these search terms might make you laugh and think "how did you not know that?". Well, there are several reasons you might not know something (choose all that apply):

  • you've never used it before
  • you've used it before but can't remember
  • it's changed since the last time you used it
  • you're tired
  • you're distracted
  • you're human

More than ever, we're constantly surrounded by new information. It's impossible to remember everything all of the time.

I hope this makes you feel a bit better if you ever feel bad that you have to google something "obvious".

Monday

slack channel bookmarks – trying to find some documentation on where to find channel bookmarks on mobile, as my friend couldn't find them.

carbonara – my manager made the very lofty claim in standup that his carbonara was the best, so I googled a picture to make a "carbonara king" emoji of him

directory tree cli - how to render a directory tree in a CLI

react-toastify - a useful notification library

anchor dataset - accessing data attributes in JS

mdn element dataset

waitfornextupdate - trying to remember if this testing-library function was just for hooks. (It is.)

The next few are a direct result of the fact that in JS you still can't automatically download a file in a cross-browser way without creating an anchor element. There's the downloads API, but Safari doesn't support it.

jest how to test detached elementsjest-dom can only see what's in the DOM under test, so if an element is detached from the DOM, it's not going to be able to test it. But this didn't immediately occur to me.

document.createElement('a')

document.createElement('a') detached

react-hook-form - we're trying to add this to some of our web properties, as they don't have any form management and react-hook-form is a really nice abstraction.

spread types may only be created from object types - I kept getting this error and I couldn't work out why, and it turns out we had an old version of react-hook-form installed in a different app (just monorepo things) which had different return types

react-hook-form "spread types may only be created from object types"

Tuesday

slack channel links in API

gilts – they were in the news and I didn't actually know what they were.

js accessing nested object key – I momentarily couldn't remember whether you could access nested object keys like myObj['key1.key2']. (you can't, because the entire string is interpreted as one key)

intensifies emoji maker – I went with MakeEmoji which has a pleasing number of options

modal accessibility – I was having a discussion with someone about why modals aren't accessible. It turns out there is some nuance to it, and that they aren't necessarily completely inaccessible, but they require a fair bit of work to make them accessible.

modal window accessibility

I hope you can feel the frustration in the next few search queries, in which I struggle with Storybook and then find that my problem isn't actually documented. I knew that there was a world in which you can write JSDoc comments above a component, and have them show up in Storybook docs, because we did that at my previous job. The docs don't seem to mention this at all, and it wasn't working for some reason. It turns out that it doesn't work with default export components, for some reason, but this isn't documented anywhere.

storybook docs markdown comments

storybook story description

storybook docs

storybook comments

storybook comment

storybook JSdoc

Wednesday

mark hoppus – I mentioned that I was trying to get blink-182 tickets (I failed) and we were debating how old they are now.

lofi girl – during retro we put music on while people are writing their Retrium tickets, and I thought this was the appropriate vibe.

apollo query oncompleted

useLazyQuery – trying to figure out if this returns the return value, or void. Turns out the latest version returns the return value, and the version we're on doesn't :(

sentry github

'RequestSessionStatus' is not exported from '@sentry/types' – this turned out to not be a problem with the Sentry lib, but actually a yarn.lock mismatch (just monorepo things).

Thursday

document.write – I knew this was deprecated, but I wanted to find something to back up my PR comment.

apollo server request size – Getting 412s from our apollo server and trying to figure out how to bump the max request size.

apollo-server-koa

apollo server request size site:stackoverflow.com - a useful tip for googling is that you can restrict searches to a particular site using the site: param.

mdn element dataset

open new window and set inner html – trying to find a suitable replacement for document.write for the person who requested it. We went for window.open() and myWindow.document.documentElement.innerHTML = myHtml.

mock clock golang – figuring out the best way to mock the time.Now() function in Go. There are various ways of doing it across our codebase, I wasn't sure which one was the most up-to-date way, but I figured it out eventually.

graphql server request entity too large – still trying to fix the apollo server request limit

doggo ipsum – my favourite ipsum generator.

apollo server body parser config

apollo server body parser config koa

koa - I finally realised we need to set the body parser config on the server itself, not the apollo-server wrapper.

koa request size

britney spears albums – trying to find as many Britney track titles as possible to cram into a pun-filled gratitude post for my colleague who helped us out.

ronseal – I like to google pictures of Ronseal and put them in PR descriptions when the title describes exactly what the PR does (i.e. it does what it says on the tin). I think I got this habit from b3ta back in the day.

Friday

read a symbolic link – I'm so shit at symbolic links lolol

npm service status

apollo async oncompleted

window.history – looking for the arguments for history.push.

I think the next few are particularly amusing given that I literally gave a conference talk on redux-saga in 2018, but it's been so long since I touched any code containing sagas that I completely forgot how they work:

saga execute non-saga function

saga execute non-redux function

redux-saga effects

More ipsum generators, because my colleagues enjoyed doggo ipsum:

cupcake ipsum

veggie ipsum – I love that I also googled this in the previous post as well, I promise it's a coincidence

ts-command-line-args - onto some CLI building now!

node.js interactive shell

node.js interactive shell select – I was looking for a CLI library that lets you select different options with the arrow keys. I found inquirer.js!

types/inquirer

ts-command-line-args

should you symlink from destination – I can never remember what order to do symlinks in

TS2464

next-images - checking that some of our plugins are still relevant.

nextjs document

react-hook-form radio buttons - sometimes you just need a good example. Turns out it was easier than I thought, and I just needed to forward a ref to our radio button component.

Looking back

You might say "well, you googled fewer things this week than you did that week in 2019!". For one thing, I have more meetings now than I did back then. I'm in a different team, working on different things.

It also depends from week to week what I'm working on; last week I spent a lot of time building data export in Go, and so my search history was full of frustrated queries like golang readseeker from buffer and create a file from string golang. (I still help out on backend tickets when it's needed.)

Some of the stuff I googled back then I can remember how to do without looking it up now, but some of it I definitely can't (e.g. I still can't get my brain to retain some more complex CSS grid things). For example, I'd 100% still have to google all of these from the last post:

whitespace regex

regex not letter

js date

grid minmax

There you have it – I still google loads of stuff. To finish, I'll leave you with what I said in the post from 2019:

What I'm trying to show with all this is that you can do something 100 times but still not remember how to do it off the top of your head. Never be ashamed of googling, even if it seems like the most basic thing you're looking up.