Picture of Michael Lee

How to create drop-down lists in Google Sheets

Written on April 14, 2021

Drop-down lists in Google Sheets are helpful to have because it can include a predetermined set of values.

This is helpful in scenarios where you might designate a cell to indicate a type of category or to communicate status for a line item.

Create a drop-down list

  1. Select a cell in Google Sheets where you want to create a drop-down list.
  2. Select Data > Data validation from the menu
  3. For the section that says Criteria select List of items from the drop-down.
    • Alternatively, you could select List from a range if you rather use existing cells to fill your list.
  4. In the field next to the drop-down where you selected List of items, enter the items you’d like in your list separated by a comma , and without spaces.
    • For example:
      • Todo,In Progress,Done
      • Small,Medium,Large
  5. Hit the Save button and you should now see a little down arrow in the bottom right hand corner of your cell.
    • Clicking on the arrow will show you the options of your drop-down.

Google can't tell me what to write about, so why don't you?

Written on April 11, 2021

That’s the hash of the git commit for this site from three weeks ago when I removed Google Analytics. You may be thinking, “🙄 NERD!”.

Hahaha…yeah, I know.

Removing Google Analytics was something I had been thinking about doing for a while. The reason being, it serves no value for my readers.

Yes, it told me which of my posts was the most popular month-over-month. Yes, it made me sad when overnight a year back, when Google cut my traffic in half. Yes, I had been eyeing traffic go back on the rise.

But for a while now, I’ve known that it doesn’t serve you, the reader any value.

Whether my traffic was on the rise or fall month-to-month, I’d still consistently publish a post a week.

Even though Google tells me, my most popular posts were about how semantic versioning works in npm dependency files or the post and video on how to resize panes in tmux, I’d still write about what interests me outside of those things instead of doubling down on them.

I can tell you, in removing Google Analytics it did give my site a speed boost according to Google. So, I guess we can credit Google for that value to you, dear reader.

According to Page Insights, my site got a boost in speed!

That “might” even boost my traffic, but in the past three weeks I’ve been without Google Analytics, I haven’t missed it at all.

It’s one less metric to fixate on and instead spend that energy on creating more posts and creating things you might find useful, dear reader.

So, how will I navigate what to create for this site you might ask…

Well, instead of Google telling me…

Why don’t I ask you?

Dear reader, whether you’ve been following my writing for a while or just stumbled onto this site for the first time, I’d love to hear what you’d like to read about.

While the skies aren’t the limit, here’s some topics that may interest you:

  • Marriage
  • Parenthood
  • Workflow automation
  • Career as a developer
  • Transitioning to a role as an IT manager after being a developer
  • The many jobs I’ve held before becoming a developer
  • Side projects – starting, maintaining, failing and sunsetting them
  • Being a second generation, Korean-American
  • Dropping out of college twice
  • Working remotely

All these and more are part of my story and I’d love to even cross-pollinate topics.

Dear reader, if any of these interests you, and you’d like for me to write more about a topic, hit me up on Twitter or send me an email and let me know.

“Will you ever add analytics back onto the site?” you might ask.

I may.

But before I do, I’d need a compelling reason to do so.

And if I do, it won’t be Google Analytics, but rather a service like Fathom.

Switch Wi-Fi networks from macOS Terminal

Written on April 7, 2021

macOS provides a command line interface called, networksetup which allows you to make all sorts of network configurations.

One of the configurations I’ve found helpful is switching Wi-Fi networks from the command line in Terminal.

To switch Wi-Fi networks using networksetup, you’ll use the option, -setairportnetwork. But before you can do that, you need to first find your Wi-Fi’s network interface.

Finding your Wi-Fi’s network interface

The quickest way to find your Wi-Fi’s network interface is to use another option for networksetup called -listallhardwareports.

Typing in,

networksetup -listallhardwareports

into Terminal should yield something like this,

Hardware Port: Wi-Fi
Device: en0

Hardware Port: Bluetooth PAN
Device: en4

Hardware Port: Thunderbolt 1
Device: en1

From this list, you might’ve already guessed, the interface for the Wi-Fi network is en0.

Your results may vary on your machine. Just look for the title, Hardware Port: Wi-Fi and that should be your Wi-Fi’s network interface.

Switching Wi-Fi network from the Terminal with networksetup

Now that you have your Wi-Fi’s network interface, you’ll plug it into the -setairportnetwork option like this,

networksetup -setairportnetwork en0 "Pizza Time" "PizzaN0mN0m!"

As you can see, the -setairportnetwork option accepts three values. The first two are required and the third is optional.

The first value is the network interface, which in the example above, I’ve set it to en0.

The next value where I’ve got, “Pizza Time” is the name of the network.

The last—and optional—value is the password for the network you’re trying to connect to.

Upon executing this command in Terminal, you should see the Wi-Fi icon in the top right hand corner of macOS flicker on and off as it attempts to switch networks.

If successful, you should see that you’re connect to the network you’ve passed to networksetup.

Validate current connected Wi-Fi network

You could also validate the current connected Wi-Fi network using networksetup by using the -getairportnetwork option.

To do this, you’ll want to use the option like this,

networksetup -getairportnetwork en0

Again, you’ll want to designate the network interface you’re checking for, which in my case is en0.

This should yield results like this,

Current Wi-Fi Network: Pizza Time

Practical application of connecting to a Wi-Fi network from Terminal

You might be wondering, “What is the practical application of trying to connect or change a Wi-Fi network from the Terminal?”.

And that’s a super valid question, that I honestly didn’t think I needed to know how to do.

But the reason why I had to figure it out is because I have a couple of wireless networks at my house. Depending on where I’m sitting at the house, the strength of the signal varies.

Working remotely, this means my Zoom call experiences could also vary based on which network I’m on.

I’m usually at my desk when I take Zoom calls, which means I know which network I always want to be connected to for the best call experience.

To do this, I use Keyboard Maestro to run a macro every single time Zoom gains focus.

The macro first checks to see if I’m on my preferred network.

If it isn’t Keyboard Maestro will run the networksetup command to switch networks. This is possible because one of Keyboard Maestro’s actions is to be able to run shell scripts which means it can run command line commands from within Keyboard Maestro.

Eight years

Written on April 4, 2021

On April 1, 2013, I published the first post for this version of my website.

At the time I wrote that post, I had shared about my desire to teach others—specifically in the topic of software development.

The reason for this was because at the time, I was still fresh in my career in software development and so that was where a lot of my focus was.

While the focus of this site might have been about software development in the beginning, I’ve definitely covered a lot of different topics.

I had struggled with this for a long time.

You see, I have been on the Internet for 20+ years now. And I remember in the beginning the Internet was a really fun, exciting place to be.

I remember sitting at my parents house at night wondering whether the modem would make a successful connection to the Internet, to be greeted by AOL’s, “You’ve got mail” message.

Let me tell you, listening to those dial tones and waiting to see if you’ll reach that greeting was something that got your heart racing.

Or at least it did for me at the time.

The Internet felt like a magical gateway where you can visit these foreign places around the world and connect with strangers outside of your neighborhood, your state, your continent.

But somewhere along the 20+ year journey to this moment now, I had heard many voices claim that I had to just focus on one thing and share about that one thing here on the Internet.

Cause if you do, the Internet would reward you for it. But the more I leaned into that mindset, the magic of the Internet started to fade away.

Instead of creating for the pure expression of life and sharing your own experience, creating became an unwinnable game of emotional slots.

Will my title resonate with Google?

Can I share and get likes and retweets on Twitter?

What should I write about to beat viewership over that person over there?

And I tried.

To stay focused. To play the game.

But what I realized in my 8 years of writing on this site is that life happens and it changes you.

You have seasons in your life and from those seasons, comes beautiful lessons that can’t and shouldn’t be encapsulated to one’s profession or career.

As I look to the future of this site, I think I’m finally at a place where I’m comfortable returning to creating for the sake of creating.

If what I create resonates with others, I think that’s great. But it isn’t the sole reason to create.

The purpose of creating is to express the different aspects of who I am—my identity.

So what will the site look like from here?

To be honest, I’m not sure.

Some of it will still be about software development and the world of information technology. But that…that will just be a sliver.

What I can say for sure is, I’ve made it 8 years now on this site. And with many more years, I look forward to sharing more of what I learn—that, I can stay committed to.

Sharing not for an algorithm or a “like” but authentically.

Efficient one-on-one agenda

Written on March 27, 2021

One-on-ones (1:1s) are a great way to keep your manager informed on your projects, ask for help on blockers and building rapport.

Depending on your manager’s management style, the structure of your 1:1s could vary. This is especially true when you’ve switched jobs and working with someone different.

But there are some traits that are likely similar with all managers. They are there to help you, they are busy and they should be informed of the work you’re doing.

Throughout my career, I’ve found that having an agenda helps maximize the efficiency of my 1:1s with managers.

In this post, I wanted to break down the template that I use when putting together my agenda for my 1:1s and explain how I use it to have efficient 1:1s.

Agenda template sections

The agenda template that I use has five sections. While it might sound like a lot of sections and you might conclude a lot of time is needed to cover all the information.

All my 1:1s are usually scheduled for only 30 minutes and I often have 5 minutes to spare. Which means I have enough time to provide the information that my manager needs and enough time to get what I need.

The five sections are,

  1. Discussion
  2. Goals/Rocks
  3. Manager’s section
  4. Highlight reel
  5. Made me think

And this is what the template looks like,

Agenda template

Section 1: Discussion

In discussion section, I have a point or two. This is where I put the most pressing things that I’d like to talk about.

I will share about any blockers I’m currently facing and need help with. Ask for life advice if I’m facing a mid-life crisis type moment, or discuss plans for upcoming paid time off (PTO).

Underneath each bullet point, I’ll usually add a sentence or two for context and then I’ll ask a question because I need something from my manager.

The key here, is to make sure you think about the outcome you seek and let that inform your question. The more concise you are with the outcome you need, the clearer your question should be to your manager.

Section 2: Goals/Rocks

This section, I share updates about my current goals. At my current company, we work in quarters or 3-month long projects called rocks taken from the book, Traction.

The purpose of this section is to give a quick overview of my progress and indicate whether I’m currently on-track to meet my commitments or off-track and I need some help.

To communicate the status and progress of these projects, I use a three-column table.

Rock table

In column 1, I have each goal listed.

Column 2, shares the status as on-track or off-track with a colored background. Green for on-track and red for off-track.

Column 3, is a bulleted list of the progress I’ve made since our last 1:1.

In choosing this format, my manager is able to quickly glance and see the progress of the rocks but also immediately know when her attention is needed.

Section 3: Manager’s section

This section is for my manager to share any talking points that they want to bring to my attention during our 1:1.

It’s just a blank section where it has my manager’s name and the word, section as a heading.

Section 4: Highlight reel

The idea behind the highlight reel is something I’ve picked up from my past co-workers. This section is a place where I celebrate the success of my team by sharing about the work we’ve done outside of major projects or to praise my co-workers contributions to my manager.

As for the name, I chose it because in a past life, I pursued a career in animation. In the animation industry, you send off your reel to prospective job openings. In the reel, you would highlight only the best of your past work in hope in showing your future colleagues your competence.

While this section is the lengthiest at times, it is the one section that brings me a lot of joy to fill out.

What it forces me to do is slow down and reflect on the work that’s been done on my team in the past week.

We use Jira at our company to keep track of work, and in filling out the highlight reel, I review all the tickets in the current sprint to share the really cool stuff my co-workers and I have completed.

I also get to see the work of my co-workers and so I call it out to my manager when I see something worth celebrating. The reason for this is my manager isn’t my co-workers’ manager. But my manager is a leader in the company and so I want to make sure they are aware of my co-worker’s valuable contributions.

This section is also made up of bullet points and what I like to do is link to the Jiras in which the work was tracked in. The reason for this is, my highlight reel only gives them a glance of the work. By linking to the Jira, should my manager decide to learn more, they can click on the link to get more context.

Section 5: Made me think

This last section is optional. I don’t always have it on my weekly 1:1 agendas. But when I do, it highlights either an aha moment or some productivity tip that I’ve uncovered about my workflow and I want to share it with my manager.

A recent aha moment I shared was how I observed that the perceived size of a problem and the effort of the solution can be disproportionate as long as the value is captured and the problem is solved for the person who has it.

Where I work, we all nerd out about productivity tips, so often when I find something that helped me improve my workflow, I’ll be sure to share it in this section. Like how I use the Eisenhower matrix with my personal task manager.

Here’s how I use my agenda

Now you know what sort of agenda that I use to have efficient 1:1s, I thought I’d share my workflow for how I use it to have efficient 1:1s.

Before the 1:1

I try to practice asynchronous communication at work as much as possible. And while 1:1s are synchronous, the agenda is not.

I put together the agenda a little more than 24 hours before my 1:1. So if I have my 1:1 on Friday, I’ll put together the agenda on Thursday morning.

I keep an empty template in Google Docs and when it’s time to create an agenda, I just make a copy and fill it out.

Then, I’ll email the agenda to my manager.

This is so that it gives my manager a chance to prepare for what we might be talking about during our 1:1.

It also gives her a chance to go through every section and provide answers asynchronously as comments.

The nice thing about using Google Docs is that I get an email notification when I’ve got comments in the agenda. This allows me to check in on her feedback ahead of our meeting and if I feel like I have sufficient feedback, I can offer our 1:1 time back.

During the 1:1

Since working at a remote company, all our meetings are via Zoom.

The way I like to hold our 1:1s is by sharing my screen and the agenda. That way both of us can see the agenda and I can guide our conversation.

As we’re talking, I’ll usually write down notes in the agenda.

The purpose in writing down notes is to make sure her and I are in agreement in what we spoke about but also to act as a reference for at a later time.

Being a dad of three—I’m lucky if I can remember what I ate for breakfast.

After the 1:1

After my 1:1 I usually leave 5-10 minutes afterwards on my calendar to wrap up the meeting. Once my manager and I hang up, I’ll usually review my agenda and notes and fill in any additional details I might’ve not recorded.

I’ll also take my agenda and figure out if I need to turn items into next steps either in Jira or my personal task management app.

Communicate to get what you need

While this agenda helps me and my manager to have efficient 1:1s. I don’t expect it to be a one size fits all sort of thing.

Your experience with your manager will likely be different than mine.

But I hope you do find things that you could take away and try in your meetings.

Remember, your manager is there to help you. The best way to get the help you need is to make sure you communicate with them in a concise manner.

Someone's one

Written on March 21, 2021

Has something you’ve seen or heard ever tug at your mind to reach out to someone you know because it reminds you of them?

You might not fully understand what you’ve seen or heard, but it reminds you of that one person.

You’re not sure how to approach that person to talk about the thing you’ve seen or heard. But you feel the need to reach out to them.

Don’t be afraid of being judged or saying the wrong thing.

Acknowledge to that person that you don’t understand what they might be going through in reaction to the thing you’ve seen or heard.

But let them know you see them. You’re there for them should they need your support.

That person might be processing things as well and might not have fully come to terms with the weight of what is going on. But simply saying you’re on their side and you see them might be just enough.

Because you might be the first or only one who’s reached out to them to say, “I’ve seen and heard what’s going on. And I thought of you. I’m struggling to find the right words, but I’m willing to be vulnerable with my struggles to simply be there in support of you”.

And to that person. That might be all they need to feel supported and to be seen. Because you were their one. You were the one person who reached out.

Be someone’s one.