Picture of Michael Lee

Seo Taiji reunion

Written on May 24, 2022

When you hear the word K-pop, it’s likely that the first group that pops into your mind is BTS or Psy.

Both of which has broken into the global music industry with much popularity.

For me, the earliest memories of K-pop was listening to a group called Seo Taiji and Boys on cassette tape back in the early 90s — a group that helped define K-pop.

Their song, 난 알아요 (“I Know”, in English) was so different from what I had ever listened to and it was catchy. Not to mention, seeing them on music shows with their dance moves were both entertaining and captivating.

I recently discovered the K-pop Throwback playlist on Apply Music a couple of weeks back.

Seo Taiji and Boys as well as many 90s K-pop groups in which I grew up listening to were on the list.

While listening to, “I Know”, I did a Wikipedia search on Seo Taiji and Boys, curious to learn more about the group I that had listened to growing up.

To my surprise, their career as a group was short-lived — only four years.

I then learned that in an interview in 2014, Seo Taiji was reluctant to put on a reunion performance.

The biggest obstacle is that in the past, we put on really beautiful performances, which fans remember, but if we get back together now, I worry we might disappoint, so I am not confident. I lack more and more confidence as I get older. I don’t think I’d be able to dance as fiercely as I had in the past.

Seo Taiji is an entertainer and his biggest blocker to doing a reunion was worries about his inabilities to entertain the audience and give the fans a great experience. He then goes on to point out that age is an inhibitor because he won’t be able to dance as fiercely as in his youth.

Going down the Internet rabbit hole that all too commonly opens up when you’re in Wikipedia, I did a quick search in Youtube for Seo Taiji and Youtube returned “Seo Taiji 25th anniversary with BTS” — an anniversary concert that took place in 2017.

Watching parts of the video, I thought it was super clever how Seo Taiji had overcome the issues with age he spoke about just three years earlier to the concert, by letting a much younger, just as industry-defining group, BTS do the heavy lifting.

In the original Seo Taiji and Boys group, the Boys were Yang Hyun-suk and Lee Juno, which provided vocals and dancing. In the anniversary special, BTS provides the vocals and dancing in place of the Boys.

In many segments of the concert, you see the younger, BTS members doing the more complex dance routines, while Seo Taiji — who was 45 years old at the time of the concert — is seen doing more subtle moves in the background and providing vocals.

As someone who is nearing their 40s, I can definitely relate to the physical limitations that age brings, so I can understand Seo Taiji’s hesitation back in 2014.

But it’s cool to see that he was still able to throw an anniversary concert that shared the spotlight with a much younger group and accomplished in overcoming his worries of not being able to entertain his fans.

Seeing the camera pan many times during the concert to a very large and entertained crowd, I think he accomplished in entertaining his fans and overcoming his fears.

I was definitely entertained.

Mindful Slack status messages

Written on May 19, 2022

Communication is key in any organization.

In a distributed (remote) company, it’s even more important.

Slack has become one of the essential tools for remote work.

While Slack is good for synchronous communication, it is also good for asynchronous communication. Especially in the form of status messages.

Status messages can be an effective way to communicate when your co-worker can expect a response to something need.

Here are a few examples of status messages that I’ve found useful when communicating with my co-workers.

Mindful Slack status message examples

Emoji Message What it communicates
🧠 Deep work; may be slow to respond I put this message up when I’ve got my head down and doing deep work. I want my co-workers to know that I will get back to them, but just not right away.
💬 BRB I use this when I’m away to grab a snack or taking a quick break.
🦞 Lunch I’ll rotate the emoji, just to keep thing interesting.
🚶🏻‍♂️ Walking One of the benefits of working at a remote-first company is that I can take walks. This just communicates that I’m currently away from the keyboard. An alternative to this is 💬 AFK
🩺 Dr. appointment Indicates I’m out at the moment due to medical needs.
🚙 Picking up kids I’m a parent and I’m either dropping kids off or picking them up from school. For this reason, it indicates to co-workers that I’m currently away, in the car.
🌴 OOO - Start to End OOO is short for out of office. This indicates when you’re out because of vacation or paid time off. The “Start” and “End” are dates to indicate when co-workers can expect me to be back. I also use this if I’m out partial days too.
🤳/💬 Meeting I’m in various meetings throughout the day. This lets co-workers know that I’m at my desk, but will be slow to respond.

Clear message and pause notifications

When I’m setting up the status message, I will usually set up a time/date for the Slack message to also clear itself.

This is so my messages clear automatically at an anticipated end-time.

Along with the message, I will usually also set Slack to pause notifications. This is so that I’m not distracted depending on what I’m doing and can be fully invested with what is at hand.

Benefits of using away messages

I’ll admit, Slack makes it super easy to “shoulder tap” your co-worker if you need something.

In using away messages, a benefit may be, that when your co-worker sees the message, it’ll make them pause and ask themselves, “Do I need this response from Sarah now?” — replace Sarah with your name.

Hopefully they will re-evaluate and decide an immediate response isn’t needed and thus choose a more asynchronous form of communication such as email or commenting in a task management system such as Jira.

Stop, step back

Written on May 12, 2022

There’s a few sayings that mean the same thing:

“Don’t miss the forest for trees.”

“Make sure you see the big picture.”

“Focus on value.”

“Make sure you’re on the right track.”

Essentially when you’re deep in work, it’s beneficial to pause from time to time and make sure you know the why behind the work and that you’re working on the right things.

Once when I was in art school, I was working on a portrait I was really proud of. For some reason I had decided to work on the left eye of the portrait first. And boy was I proud of how realistic the eye was.

But then, my instructor walked by and asked me to stop and step back from my station. They asked me to look at the portrait and if I noticed something off?

I did…

My amazingly, detailed left eye was not inline with the right eye and thus threw off the entire portrait.

I had gone down the rabbit hole on this one detail that I missed how the work fit in-relation to the whole picture.

Instead I should’ve blocked in all the pieces of the portrait first, made sure that they were placed correctly in relation to each other, then added in the details.

How do you salvage a portrait with misaligned eyes? You could try to fix what you got. But it would always be off.

The best way to fix the portrait, was to erase and start over.

While I wish I could say I never made that mistake again, I still to this day find myself getting deep in the details of work.

I can say, with experience I can catch myself a lot sooner and pull back from the work I have at hand. But it’s a constant reminder to keep myself in check. Do I know why I’m working on what I’m working on? How does it fit into the big picture?

So what are some ways to stop and step back when in deep work?

  • Set up check points before going deep in your work to ask yourself, is this the most valuable thing to work on right now?
  • Ask yourself, if this thing you’re working on rolls up to the bigger goal you’re trying to achieve?
  • Find yourself a partner to help you take pause and help you assess if you’re on the right track.
  • If you’re working from a specification or agreement for work, pause from time to time and reread why you’re doing what you’re doing.
  • Go for a walk. Sometimes the physical act of walking away from your desk helps to assess what you’re working on. You’ll find the work doesn’t actually stop, but you might find a fresh new perspective.

MCU burnout

Written on May 11, 2022

This past weekend, I watched Dr. Strange in the Multiverse of Madness.

I enjoyed it a lot.

It was visually stunning, had interesting plot twists and saw some really cool character developments.

I’d say, compared to all the movies that’s come out since phase four of the Marvel Cinematic Universe (MCU) began, it’s number two on the list.

With the list currently being:

  1. Spider-Man: No Way Home
  2. Dr. Strange in the Multiverse of Madness
  3. Shang-Chi and the Legend of the Ten Rings
  4. Black Widow
  5. Eternals

While I’ve been pretty good about keeping up with all of Marvel’s phase four releases. I have to admit, after leaving the theater from watching, Dr. Strange, I felt a sort of fatigue.

I find the MCU movies to be quite entertaining. But with so many lined up and so many being released in quick succession, I’m burnt out by them.

As entertaining as the whole series is. I think I’ll take a little break.

I think it was phase two, where I kind of didn’t care to watch all the movies that were released right away.

Then phase three came out and I went back and watched the origin stories of some of the characters in the cross-over movies but in more casual fashion — like while washing dishes.

I think for a little while I’ll do that with phase four.

Instead of trying to keep up with the newest movie, I’ll just chill and come back to it when I have the appetite for it.

Duplicate a project in Things with Apple Shortcuts

Written on April 20, 2022

At the end of each work day, I have a project in Things where it lists all my daily shutdown tasks that I review.

The last item on my daily shutdown project is to create the next day’s shutdown project.

My daily shutdown routine template in Things

While the process to manually create this project doesn’t take long, doing it over and over each day can get tedious.

So with the help of Shortcuts and the Things URL scheme, I was able to create a shortcut that:

  1. Takes a project that I use as a template
  2. Rename it to indicate it’s the next day’s shutdown project
  3. Move it into the Things Area where I like to keep my shutdown project.

What’s a shutdown routine

A shutdown routine is a simple list of things that you might do at the end of your work day.

For me, it indicates to my brain it’s time to get ready to stop work and helps me get ready for the next work day.

My shutdown routine includes answering some questions of reflection and tidying up my physical and digital workspaces.

Templates in Things

The way I replicate my shutdown routine on a daily basis is that I use a “template” project in Things.

A “template” project in Things is just a project that doesn’t get actively used but has tasks and headings of repeating projects.

In other words, it’s just a source for the active project I will create from it.

In Things, I have an Area called Templates.

This is the place where I keep all my template projects and where my daily shutdown project resides.

Manual process

Prior to my shortcut in order to create the following days’ shutdown project, I’d have to:

  1. Right click to duplicate the project
  2. Drag and drop the project into my active projects area
  3. Rename the project to the next day’s date
  4. Take the first task in the project and set the When to tomorrow.

A four step process.

Duplicating projects with Shortcuts and the Things URL scheme

In Shortcuts, Things provides an action that allows you to Run Things URL. What the URL is referring to is the Things’ URL scheme

URL schemes are exposed by app developers to allow users to then run the URL with specific options to then have the app do things.

In order to have Shortcuts run the task of duplicating and manipulating a project, I used the update-project command.

The final URL the Run Things URL action runs is this:

things:///update-project?auth-token=[Token]&id=[Daily project id]&duplicate=true&title=[New URL encoded title]&area-id=[Area id]

Let me break down what each part of the URL does.

things:/// indicates that this is the Things URL scheme.

update-project Indicates the command we’d like to run in Things via the URL scheme.

? in URLs a question mark indicates what’s called a parameter. The first parameter after a URL always starts with the ? symbol.

auth-token=[Token] is the first parameter with the value passed to it. The value being what comes after the = which is [Token]. The token is what’s provided by Things.

The token is necessary because we’re manipulating data – in this case the name of a project.

The square brackets are not required and are just used for style purposes to indicate it’s a value you set yourself.

So in this case of the token from Things is 1234 The parameter and value would look like:

auth-token=1234

& every parameter after the first in a URL will start with the ampersand.

id Indicates the ID of the project.

duplicate Indicates that id like to take the project I pass to the command and duplicate it.

title is the new title of the duplicated project that’s URL encoded.

URL encoding takes a string and makes it safe to be used in a URL by converting certain characters into its URL-safe equivalent.

area-id Is the ID of the area where the new duplicated project will be placed.

Gathering all the necessary IDs and token from Things

For this Shortcut to work, you’ll need to get three things from Things:

  • 2 IDs – one for the project to duplicate and the other for the Area you’ll place it in
  • 1 Things authentication token

Getting the Things authentication token

First let’s get the authentication token. To do this, you’ll go to Things > Preferences > General then click the Manage button next to the Enable Things URLs option. You’ll find your token under the heading Authentication Token.

Get ID of Projects and Areas from Things

To get the ID of a Project or Area in Things, you’ll want to right-click on the Project or Area, then go to Share in the menu, then click on Copy Link.

This will copy the Things specific link like:

things:///show?id=5MBEHV2jnVZAR1T7Q28HnE

The characters after the id is the ID of the Project or Area.

Setting up Shortcuts to duplicate a Things project

To get Shortcuts to duplicate a Things project, I actually set up two shortcuts.

One shortcut is used to simply hold the Things authentication token and pass it to my main shortcut.

A second shortcut to put together all the pieces of the URL scheme to then run in Things and duplicate the project.

Apply Things token to first shortcut

For the first shortcut, all it is is a single action shortcut.

The action is a text action and the value set for the action is the Things token.

Shortcut for Things token

Replace [Things token] with the actual token from Things that we got earlier.

The reason why I do this is, the next shortcut I create will use the Run Shortcut action which will then run this shortcut and it’ll pass the token to the new shortcut.

This allows me to define the Things shortcut once and potentially use it across multiple shortcuts in the future.

Piecing together the Things URL to run in shortcut

In this section, we’ll piece together the second shortcut. Essentially it’s putting together all the pieces we gathered from Things and getting it prepared to run in the URL scheme.

Here’s what the entire shortcut looks like.

Shortcut that duplicates Things project

As you can see in the shortcut, there’s really 2 (maybe 3) areas you’ll want to update.

First step

The first action, we’re using the Run Shortcut action to run the Shortcut we made earlier to store our Things authentication token.

Since the output of that Shortcut is the token, the next action we’ll use is Set variable. I set the variable to Token and the input is the results of the previous action.

Second step

Next, in a Text action I put the ID of the Things Area. This is the place this shortcut will put my project once it’s duplicated.

I pass to another Set variable action that is set to Area

Third step

Like in the previous section, we’ll also set a pair of Text and Set variable actions for the ID of the Things Project – the template project you want to duplicate.

This time setting the variable to Daily project.

Fourth step

Now you’ll want to rename the title of the Project. I like my title for my daily shutdown project to be, “🌒 4/19 Daily review”.

So the first action you see is the Date action. I’ve set the Date action to ask each time the shortcut is run. The reason for this is, I can control the date based on if I’m creating this on a week day or on Friday. If it’s Friday, I’ll want Monday’s date and not Saturday’s.

The date then gets passed to a Text action that has the part of the title that never changes.

When the results of the Date action is received from the Text action, I ask for it to be formatted as M/d by updating the Date Format option to Custom.

Since this title will eventually be passed as a URL, I have to URL encode it using the URL Encode action.

Finally, I pass the new title to a Set variable action and set it to New title.

Last step

Now that I have all the parts of the URL I need, I put the full URL together in another Text action.

Here’s the URL again for easy, copy and pasting:

things:///update-project?auth-token=[Token]&id=[Daily project id]&duplicate=true&title=[New URL encoded title]&area-id=[Area id]

Wherever you see the square brackets, just replace it with the variables that were created above.

Once you’ve got the entire URL, pass it to the Run Things URL action.

I also changed the option Show When Run to off, for the Run Things URL action.

Now when you hit the play button on the shortcut, you should be able to go to Things and see your newly duplicated project.

Things with the newly, duplicated project

If you’ve got Shortcuts and Things set up on macOS and iOS, the shortcut will work seamlessly across both platforms.

Pass React component as prop to render as child in another component

Written on April 12, 2022

Let’s say you’re trying to put together this button with an icon in React.

Button with poop emoji icon

You could achieve this by creating a button component like this:

function Button ({ label }) {
  return(
    <div>
      <div>💩</div>
      <div>{ label }</div>
    </div>
  )
}

But what if instead of a poop icon™ you wanted to pass a different icon for the button?

You could, of course create another button component with the different icon.

function ButtonWithDifferentIcon ({ label }) {
  return(
    <div>
      <div>🦄</div>
      <div>{ label }</div>
    </div>
  )
}

But as you can see, every time you have a new icon, you’d have to create a different button component along with it, not making it very reusable.

Instead it’d be great if we could have a single <Button /> component which we could then pass various icon components to it based on what we need.

Pass components as React props

Well it turns out you can indeed do this, by passing components as props in React.

Let’s make some changes to make this happen.

First, we’ll move the icon into its own component.

function PoopIcon () {
  return(
    <div>💩</div>
  )
}

Now, we’ll update the <Button /> component to render an icon as a prop.

function Button ({ icon, label }) {
  return(
    <div>
      { icon }
      <div>{ label }</div>
    </div>
  )
}

And here’s how we would create our original button, passing the <PoopIcon /> component now as a prop.

<Button 
  icon={ <PoopEmoji /> }
  label='Make it poop'
/>

If we had a <UnicornIcon /> component, we could easily create a <Button /> component without having to create a separate button component but by passing the icon component as a prop.

<Button
  icon={ <Unicorn /> }
  label='Pet unicorn'
/>

Which would then yield this button.

Button with unicorn emoji icon