Download a Website Using wget

Recently, I needed to clone a website and make a few minor changes to it. I wanted to publish a slightly modified copy of the website. Luckily, it’s easy to do that using wget. Here’s how I did it.

1. Install wget

I’m on Mac, so I installed wget using Homebrew using the command

brew install wget

2. Download site

I wanted to download this small website. I used this command:

wget -p -r
  • The -p flag means download all page requisites, such as images, stylesheets, etc.
  • The -r flag means recursive.

Learn more

3. Search and replace

Since I downloaded a bunch of HTML files, if I wanted to replace a common element on multiple pages, the easiest way was to do a search and replace. Using VisualStudio Code, you can easily find all HTML blocks within a particular tag using a multi-line regex. Here are some example regexes:

<a class="popup(.|\n)*?</a>

Easily Annotate Screenshots Using Excalidraw

1. Take a screenshot

For example, I’ll take a screenshot of the Yahoo homepage.

2. Paste into Excalidraw

The nice thing about excalidraw is you don’t need an account. Just go to and paste.

3. Annotate the screenshot

There are a ton of options, but the options that exist should be sufficient. Some common features are

  • create an outline (rectangle, circle, triangle)
  • draw an arrow or a line with different endpoints

If you use the arrow tool and then hit enter, you can add text in the arrow.

You can then take a screenshot of your annotated screenshot to share with others.

Different Ways to Use the ER KANG Lat Tower Machine with Ab Crunch

Buy on Amazon

Seated Lat Pulldown with Lat Bar

Standing Lat Pulldown with Lat Bar

Standing Lat Pulldown with Tricep Rope

Close-Grip Pulldown

Close-Grip Seated Row

One-Arm Row

Wide-Grip Seated Row

Standing Tricep Pressdown

Standing Rope Tricep Extension

Standing Bicep Curls

Seated Bicep Curl

Upright Row

Long Ab Strap Pulldown

Overhead Tricep Extension

One-Arm Cable Bicep Curls

Side Lateral Raise

One-Arm Tricep Extension

One-Arm Crossover


Standing Leg Curls

Spud Ab Crunch

Seated Ab Crunch

Double-D Pressdown

Cable Shoulder Press

Reverse-Grip Pressdown

Front Raises

Seated Face Pull

Standing Face Pull


Effective vs Ineffective Work Meetings

In some companies, some people have way too many meetings. Of course, some meetings are necessary, like when you need to discuss an issue. But some meetings are pretty much just status updates. For example, within a marketing department, you will have many teams, including public relations, events, web, design, content, campaigns, etc. Within each team, you’ll have a team lead and other people of varying ranks. What some companies or departments do is they have long meetings every month or so where everyone attends. Then, the team lead from each unit takes turns giving a status update. While this may seem like a good use of everyone’s time, it’s actually not. Many, if not most, people will not care about what other teams are doing because the activities of other teams are simply irrelevant to them. They may try to pay attention, but because much of what is said doesn’t matter to them, they will likely forget what was said, resulting in a complete waste of many people’s time. Another problem is time management. If each speaker is given 5 minutes to talk, most likely they will talk for much longer and not everyone will be able to share their updates or the meeting will just last for much longer than it needs to. If your team is spread across multiple time zones, e.g US and India, then people will inconveniently have to attend these pointless meetings early in the morning or late in the evening. Interestingly, some people are in so many meetings that they don’t even have time to do any actual work or do the work that they’ve decided on in the meetings.

For a live meeting to be effective, it should meet the following criteria:

  1. only relevant people should attend
  2. there should be a clear agenda with an issue that needs to be discussed or one that involves something that is easier said and shown rather than written.
  3. if a live discussion is required, the issue to discuss should be sufficiently complex or important or urgent.

For discussions that don’t need to be in real time (asynchronous discussions), then communicating via chat where only relevant people are involved is usually effective.

For status updates, they are actually more effective when they are written, e.g, via weekly email, as long as they are concise and formatted well so that people can easily consume all of it or just the parts that are relevant to them. This also allows people time to think about a particular update and follow up with relevant people if needed.

Following are some quotes from various sources on the topic of providing status updates. Many of these quotes are from companies that provide communication and collaboration tools. Regardless, they do have a point.

Status updates don’t belong in meetings. Status updates are ineffective team meetings, says Baker. “A round-robin of what people are working on can be handled over email or a collaboration tool.”

Slack (from Salesforce)

Status updates are the hallmark of a poorly run meeting. Let’s say every week, each person on your team goes around in a circle and provides a high-level update of what they are working on. Without fail, many of these items are ONLY relevant to a few people.


Sitting through another status meeting where the project manager reads through a spreadsheet list or flips through slides on a presentation isn’t a productive use of anyone’s time. In fact, 56% of US workers get irritated by meetings that could’ve been an email. To make the best use of your team’s time, switch to asynchronous meetings where possible.

When updates or discussions aren’t relevant for the entire team, some people can end up disengaging. Inviting too many people who don’t need to be there can also cause meetings to become irrelevant. Set a high bar for whole-team meetings. Reserve meetings involving the entire team or a larger group for topics that truly require collective discussion and decision-making.


To be plain, many status meetings don’t need to happen. Instead, many status update meetings could be emails, memos, threads on collaboration platforms like Slack, or quick check-ins between colleagues on their own. Many status meetings happen by tradition: “We always do a Monday morning status meeting.” “Wednesday are for team updates.”


Almost 50 percent of respondents in a recent poll said they would rather go to the DMV or watch paint dry than sit in a status meeting.

Lucid meetings

One of the worst kinds of status meetings to attend is the type in which everyone goes around the room and states what they accomplished the prior week. This practice is a colossal waste of time. If this is the entire point of the meeting, then don’t call one. An effective PM can get these updates prior to a meeting, distribute them and then discuss issues at the meeting.


Why Weekly Synch Meetings Are Boring and A Waste of Time [Rhythm Systems]

Video Codec VS. Container

With so many video codecs and containers, it’s easy to get confused. Here’s a simple explanation.

Codec (Video Format)

Codec stands for coder-decoder. Video codecs are algorithms for encoding and decoding video data.

  • An encoder compresses video streams, which reduces the amount of data for storage and transmission.
  • A decoder reverses the conversion for playing or editing a video stream.

For simplicity, you can think of a video codec as the video format.

Examples of video codecs are H.261, H.263, VC-1, MPEG-1, MPEG-2, MPEG-4, AVS1, AVS2, AVS3, VP8, VP9, AV1, AVC/H.264, HEVC/H.265, VVC/H.266, EVC, LCEVC

Currently, the most popular codec is AVC/H.264.

Container (File Format)

With respect to video, a container is a data storage. It can include compressed video and audio sequences, subtitles, service information and metadata. It is a package or bundle.

For simplicity, you can think of a media container as the file format.

Examples of media containers are MPEG-1 System Stream, MPEG-2 Program Stream, MPEG-2 Transport Stream, MP4, MOV, MKV, WebM, AVI, FLV, IVF, MXF, HEIC

Currently, the most popular codec is MP4.

Easily Upscale & Enhance Photos Using Google Photos and Topaz Photo AI

There are many ways and tools you can enhance a photo. If you’re a professional photographer, then you’ll likely have advanced methods, but for the average person, you’ll probably just want some quick and easy solutions. Like most average people, my photos are mostly taken from my phone (currently, Google Pixel 8). However, when vacationing, I also take a lot of video using my Insta360 X3 camera, and I’ll occasionally want to take snapshots of a video frame to add to my photo collection. With this in mind, here’s my current (simple) workflow for upscaling and enhancing photos.

Enhance a Photo Using Google Photos

First, upload your photo to Google Photos. Then, use one of the presets to enhance the photo. Here’s an example photo without any enhancements applied.

The average person might that the photo looks fine, but it can significantly be improved. Here’s how the photo looks when you click on each of the suggested improvement options.

Color Pop

Note that Color Pop tried to isolate the subject and convert everything else to grayscale. It’s not perfect because the subject’s right arm is partially gray. To fix this, you could select the subject in Photoshop either manually or automatically, invert the selection, and convert the selection to grayscale.

B&W Portrait

Now, let’s say that you have a heavily underexposed (dark) photo. (Learn more about under and overexposed photos).


If you click the “Enhance” or “Dynamic” options, you’ll get this.


For comparison, here are the photo’s input levels in Photoshop.

If I were to manually correct the exposure in Photoshop, this is what I’d get.

The photo is significantly improved, but it doesn’t look exactly like it does using the Google Photos presets.

If the Google Photos presets don’t look good enough, you can make many adjustments in the Settings tab. In the example below, I started by choosing the “Dynamic” preset, and then in the Settings tab, I increased the brightness.

So, for the average person, using Google Photos to improve photos is easy and usually adequate.

Enhance a Photo Using Topaz Photo AI

Topaz Photo AI can do many things to a photo, including

  • remove noise
  • sharpen
  • adjust lighting
  • balance color
  • recover faces
  • preserve text
  • upscale

You can also just run autopilot and let Topaz choose settings for you.

For me, I mainly use Topaz to enlarge (upscale) photos, remove noise, which can result from adjusting the levels of a heavily underexposed photo, and to sharpen photos. These improvements are particularly useful when I take a snapshot of a 1920×1080 video frame. For example, here’s a frame from a video.

I want to zoom in on the subject, crop it, enlarge it, and enhance it. Here’s the zoomed-in part cropped. The dimensions are 1048 x 589 px.

Now, I’ll drag it into Topaz and run autopilot to upscale and enhance the photo. It will take a minute to process. Here’s how the photo looks enlarged by 34% before enhancing it with Topaz.

Before Topaz

Here’s how it looks with Topaz enhancements applied.

After Topaz

There is a difference, but it will be more obvious when you zoom in. Below is a comparison zoomed in at 67% before and after using Topaz.

Before Topaz
After Topaz

At this point, you can copy the upscaled and sharpened photo from Topaz and paste it into Google Photos to enhance it.

Topaz Photo AI isn’t perfect, but depending on the original photo, it can often product amazing results.

Slow-Digesting Breakfast For All-Day Satiety

Whether you’re planning to fast before a medical operation or otherwise, or don’t plan to have access to much food for a long period, I’ve found the following food incredibly effective at staving off hunger. Ramadan fasters, take note! The following foods have a low glycemic index and are digested slowly.

Warning: consuming some of these foods may cause bloating and flatulence, but if you consume it every day, those symptoms will go away within a week.

Kirkland Signature Organic Ancient Grain Granola

Available at Costco, this granola is high in fiber, healthy and delicious. The downside is it has 8 grams of added sugar. Costco should make a version replacing sugar with the all-natural, zero-calorie Monk fruit. I prefer to consume a bowl of this with unsweetened almond or soy milk and optionally some berries. Learn more.

MUSH Overnight Oats

Also available at Costco, these prepackaged overnight oats are convenient and healthy. There’s no added sugar, but they’re still sweet. Learn more.

Greek yogurt (optional)

Greek yogurt is very thick compared with regular yogurt and typically higher in protein, too. This particular one is sweetened with all-natural stevia extract, which is better than cane sugar and artificial sweeteners like sucralose. I consider this to be optional.

Upscale an Image Using AI

If you have old, low-res photos that you want to enhance and upscale or if you want to zoom in on a hi-res photo while preserving quality, you’ll be impressed with what artificial intelligence (AI) can do. Compare the following.

Original Photo

This photo was taken in Cairo, Egypt back in 1997. The original photo was 640 by 480 pixels. I’ve cropped it to focus on the subject. It’s now 238 px wide.


In Photoshop, you can increase the dimensions of an image. I’m going to enlarge it by 300% to 714 px wide.

Here are the results using the “Automatic” resampling option. Notice the graininess.

Now, I’ll do the same using the “Preserve Details (enlargement)” option with a 50% noise reduction.

Here are the results. It’s less grainy, but still not sharp at all.

I’ll try one more time. Below are the results with 100% noise reduction. Still not great.

Spyne AI Image Enhancer

Let’s see how well Spyne AI image enhancer does.

Here are the results. This is definitely an improvement compared to Photoshop.

Topaz Labs Photo AI

Now I’ll try Topaz Labs Photo AI 2.4.0. This software costs $200, so I’ve just taken a screenshot of the preview. As you can see, the results are way better than both Photoshop and Spyne. There is no noise and everything is sharp, including the hair. If the face looks a bit too soft, you can sharpen it in Photoshop under Filter > Sharpen.

So there you have it. Successfully upscaling an image using AI with realistic results.

How to Win Every Argument

This post is a summary of a summary of the New York Times best-selling book Win Every Argument: The Art of Debating, Persuading, and Public Speaking by Mehdi Hasan.

Persuasive arguments appeal to facts and feelings

The ancient Greeks called the language deployed in such debates rhetoric – a word derived from rhetor, meaning “public speaker.” For Aristotle, persuasive speech has three modes: ethos, pathos, and logos.

Ethos (Character / Credibility)

Ethos is the Greek word for “character”. In this context, it concerns the credibility of the person. For example, we’re more inclined to accept what a practicing doctor has to say about vaccinations, for example, than an anonymous blog author.

Pathos (Emotion)

Pathos is the Greek word for “emotion”. In this context, it concerns an attempt to sway an audience by appealing to powerful emotions such as love and fear. For example, if a doctor’s credentials haven’t persuaded their reluctant patient, they doctor may tell a story about a couple in perfect health who refused to get vaccinated but died within 15 days of each other leaving behind four young children. The patient would feel emotionally in fear and be more inclined to trust the doctor.

Logos (Facts, Figures, Data, Statistics)

Logos is the Greek word for “reasoning”. This form of persuasion deals in facts and figures. For example, if a doctor points out that multiple peer-reviewed studies show that COVID vaccines result in a 90% decrease in the risk of hospitalization and death, they’re appealing to logos. 

Arguing using just logos (facts and figures) is insufficient because people are stubborn, reactive, overconfident, afraid of change, and, more importantly, emotionally invested in beliefs, ideas, and ideals. People’s feelings don’t care about the facts. Therefore, to win an argument, you need also appeal to feelings, not just state the facts.

Tell Stories to Appeal to Feelings (Pathos)

According to 2007 study, people are much more likely to give money to charity if they’re told stories about an “identifiable victim” than they are if they’re presented with accounts of “statistical victims.” For example, a story of the suffering of a single child with a name and a face is more effective than a description of millions of nameless and faceless people suffering in the same way. For example, telling a story about the awful hunger cramps that one child suffers every day is more effective than abstract statements like “820 million people around the world go hungry every day”.

To win arguments, tell gripping and relatable stories.

Cite Credibility, as Necessary (Ethos)

When debating, your aim is to go after the argument, not the person making it. If you go after the person, that’s ad hominem. In theory, the merits of the person speaking have nothing to do with the soundness of what they’re saying, but in reality, merits matter. When facts and figures (logos) are insufficiently convincing, then cite the person’s character and reputation (ethos).

Conflicts of Interest

Imagine a major study is published that claims to show that climate change isn’t nearly as bad as we thought. The caveat: it was entirely funded by fossil fuel companies. If the authors of the study were paid by companies with a less than purely academic interest in the topic, then there’s a conflict of interest. Therefore, dismissing the study on the credibility of the authors is a logical and reasonable thing to do.


If an outspoken anti-abortion lawmaker privately supports women having abortions, then they are hypocrites. In theory, the hypocrisy of the person speaking has nothing to do with the soundness of what they’re saying, but in reality, hypocrisy matters.

To win arguments, consider citing the credibility of the speaker.


  1. State facts and figures.
  2. Tell gripping and relatable stories.
  3. Consider citing the credibility of the speaker.

Brighten a Face Using Photoshop

Chances are you’ve taken photos where the faces are too dark. This can be due to a low-quality camera and/or incorrect camera settings. Fortunately, there is a way to easily fix this using Photoshop. As an example, I’ll use this photo of me in the Wynwood district of Miami (below). Notice how my face lacks detail because it’s underexposed (too dark).


First, I like to check and adjust the levels for the image. Go to Image > Adjustments > Levels. You’ll see a histogram like this

In the input levels, there are 3 markers from left to right

  • black marker (left) = shadows
  • gray marker (middle) = midtones
  • white marker (right) = highlights

The left and right markers should touch the left and right edges of the histogram. In this case, there is a small gap between the right marker and the right edge of the histogram, meaning the image is a little underexposed. If we move the right marker to the right edge of the histogram, the image will become a little brighter.

In this particular example, this adjustment isn’t significant. But, if there’s a big gap in the histogram like this

then adjusting the levels will make a big improvement to your image.


If adjusting the levels doesn’t brighten your subject’s face enough, you can adjust the exposure of just the face. First, make a circular selection around a face.

Then, add a feather to it. Select > Modify > Feather. For a 1920 x 1080 image, I create a 50-pixel feather.

Then, adjust the exposure by going to Adjustments > Exposure

You will see a slider for Exposure. Drag it to the right to increase the exposure.

Notice how the face is brighter.

If I increase the exposure too much, the face will look nice and bright, but it won’t look natural against the darker surroundings.

The problem is there appears to be a white glow around the face. In this case, I can select just the subject or the subject’s face to limit the exposure adjustment area. In this case, no feather is needed.

Now, only the subject is brightened.

I can also tweak the levels by adjusting the shadows and the midtones so that the subject doesn’t look unnaturally bright against a darker background.

Before and After

As you can see in the before and after image below, my face looks much brighter while still appearing natural.