Insta360 X2/X3 Filming Tips

Timelapse Videos

You can create timelapse videos using the Insta360 ONE X2/3. The resulting timelapse will be a 360-degree video that you can edit the same way you can non-timelapse videos. Unfortunately, the interval setting between when a picture is taken to create the timelapse can only be set from your phone. The interval options are 0.5s, 1s, 2s, 4s, 10s, 30s, 1min, 2min. Note that standard video is 29.97s, which is like making a timelapse video where the interval between still images is 1/29.97s or 0.03s. According to this timelapse calculator, if you film for 8 hours straight (event duration) with a shooting interval of 0.5s, then the camera will take 57600 photos. If you want the resulting timelapse video to have a frame rate of 29.97 fps, then the resulting timelapse video duration will be 32m 2s long.

Here are the number of photos and video durations for an 8-hour event duration for the shooting intervals supported by the ONE X2.

IntervalNumber of PhotosVideo Duration
0.5s5760032m 2s
1s2880016m 1s
10s28801m 36s

I wouldn’t choose a timelapse interval greater than 10s since an 8-hour-long filming session would produce a video that’s longer than 1m 36s. If 1m 36s is too long, then in post-production, whether in Insta360 Studio or some other video editing program, you can speed up the timelapse to produce an even shorter video.

The battery that comes with the Insta360 ONE X2 is good for 80 minutes. You can buy additional batteries, but if you’ll be recording a long timelapse video, it would be annoying to have to keep changing the battery every 80 minutes. In this case, you’re better off recording with the USB charging cable plugged in. To prevent overheating, remove the battery. The camera can still operate and record while plugged in.

When taking a 360-degree timelapse video, make sure the following options are set

360-degree mode (not 150-degree mode)

Left to right: 360-degree mode, panorama mode, 150-degree wide-angle mode

Video timelapse mode

Slow Motion Videos

If you want to make a slow-motion video, e.g. a real estate tour video, then you definitely want to record at a high frame rate like 60 fps. Then, in your video editor, slow down the video and export it at 30 or 60 fps. If the original video is recorded at 30 fps, then the slowed-down video will be choppy.

Action Videos

When filming action scenes, it’s better to record at a high frame rate so that playback will be sharp, more fluid, and not blurry.

Low-Light / Night Scenes

When filming in low light like at night, you’ll get much better results if you manually adjust the exposure.


ISO is a camera setting that will brighten or darken a photo.

However, if you increase the ISO too high, you’ll see a lot of grain.

You should only raise your ISO when you are unable to brighten the photo via shutter speed or aperture instead (for example, if using a longer shutter speed would cause your subject to be blurry). The ISO 200 image on the left was brightened with a long shutter speed.

Shutter Speed

Shutter speed is responsible for two particular things:

  • changing the brightness of your photo and
  • creating dramatic effects by either freezing action or blurring motion.

Shutter speed is the length of time in seconds the camera shutter is open, exposing light onto the camera sensor. Essentially, it’s how much time your camera spends taking a photo. When the shutter is open, light passes through the lens and is collected on the camera sensor. The button that fires the camera is also called “shutter” or “shutter button,”

Fast / Short Shutter Speed > Freezes Action

A fast shutter speed is a small fraction of a second, like 1/250th of a second.

Slow / Long Shutter Speed > Motion Blur

A long shutter speed is 1 second or longer. A slow shutter speed is like 1/2 or 1/4 of a second.

Shutter Speed and Exposure (Brightness)

If you use a long shutter speed, your camera sensor gathers a lot of light, and the resulting photo will be quite bright. If you use a quick shutter speed, your camera sensor is only exposed to a small fraction of light, resulting in a darker photo. 

The following flowchart can help you tweak the ISO and shutter speed.

Left: Manual Exposure. Right: Auto Exposure

Learn more

Invisible Selfie Stick

Insta360 offers some selfie sticks that will become invisible in your videos. I have 2 sticks

  1. 2-in-1 invisible selfie stick with tripod (3.4′ long)
  2. Extended edition selfie stick (10′ long)

Following are how some videos look when using each stick.

3.4′-long selfie stick, front, face level
10′-long selfie stick extended to about 5′, front, face level
3.4′-long selfie stick, front, stomach level
3.4′-long selfie stick, 45-degree angle, face level
3.4′-long selfie stick, side, face level
3.4′-long selfie stick, side, face level
3.4′-long selfie stick, front, feet level
3.4′-long selfie stick, straight up
10′-long selfie stick, straight up
10′-long selfie stick, up, back
10′-long selfie stick, up, side

10′-long selfie stick, front spin, face level
10′-long selfie stick, low to high, facing down
10′-long selfie stick, low to high, facing up

Selfie Drone

For comparison, following are some videos taken with the Hover Air X1 selfie drone.

Bird’s Eye, no spin, 10 feet
Bird’s Eye, no spin, 10 feet, return
Bird’s Eye, no spin, 50 feet
Bird’s Eye, no spin, 50 feet, return
Bird’s Eye, fast spin, 50 feet
Bird’s Eye, fast spin, 50 feet, return
Bird’s Eye, slow spin, 50 feet
Bird’s Eye, slow spin, 50 feet, return
Dolly track
Dolly track
Hover with target tracking
Orbit, 5 feet
Orbit, 20′
Zoom out, down
Zoom in, down, return
Zoom out, flat
Zoom in, flat
Zoom out, up
Zoom in, up
Zoom out, up, far
Zoom in, up, far

Lens Care

The Insta360 X2/X3 camera has protruding lenses on two sides. As such, the lenses can easily get scratched, so extreme care must be taken to prevent that from happening. Also, before shooting, you should always clean the lens to remove any dirt or fingerprints. A dirty lens can easily result in a blurry shot. Following are comparisons of image quality when different lens conditions.

Brand New and Clean Lens

The image quality is relatively sharp.

Brand New Lens But Full of Fingerprints

The image is blurry, especially around the lights.

Scratched But Clean Lens

Despite being cleaned with a new cloth, the image is partially blurry due to the scratched part of the lens.

3rd-Person Pan

High-Up Shot



Rise-Up Reveal

Upward Tilt

Various Action Camera Mounts & Accessories

Here’s a collection of mounts for action cameras like the Insta360 X3 that I’ve found useful. These accessories can mostly be used with other cameras as well.

Flat C Clamp

This particular clamp has a 2.36″ max width opening and many 1/4″ screws around it. It’s useful for clamping to a flat surface.

Example Use Cases

  • Clamp to a table
  • Clamp to railing

Buy on Amazon

Curved Clamp

This clamp is lightweight. Since it’s curved, it’s ideal for clamping to cylindrical objects like bike handlebars. You can connect it to a long selfie stick or a 1/4″ rod that accepts a 1/4″ screw.

Example Use Cases

  • Clamp to a bike handlebar with or without a short selfie stick or rod

Buy on Amazon (clamp, rod)

Adjustable-Angle Selfie Stick Clamp

This clamp is designed for fishing poles, but it can be used for selfie sticks because selfie sticks are like fishing poles. You can adjust the angle of the stick.

Example Use Cases

  • Secure to cruise ship railing and insert 10′ selfie stick to get drone-like footage.

Buy on Amazon

Flexible Rod

This flexible rod is 20″ long. One end has a female 1/4″ screw opening and the other has a male 1/4″ screw.

Example Use Cases

  • Wrap around a large or irregular shape like a tree branch, hand rail, or large cylindrical object.

Buy on Amazon

Short (6-8″) Selfie Stick

This short selfie stick is great because it’s small enough to completely fit in some pockets.

Example Use Cases

  • Sliding down waterslides
  • Playing in a swimming pool

Buy on Amazon

Alternative: Insta360 Mini 2-in-1 Tripod for X3 GO 3 ONE RS and ONE R

Medium (3.4′) Invisible Selfie Stick With Tripod and Invisible Quick Release Adapter

This selfie stick is invisible when used with the Insta360 X3 camera. To quickly attach and remove an Insta360 X3 camera, use the invisible quick release adapter designed specifically for the Insta360 X3.

Example Use Cases

  • Walking around
  • Placing it on the floor / ground using the tripod while you perform an activity, e.g. painting a room

When walking, I find it best to keep the camera at face level, unless you want to create some interesting perspectives like positioning the camera near your feet.

Buy on Amazon

Long (10′) Invisible Selfie Stick

This incredibly long selfie stick will make it seem like you’re photos and videos were taken using a drone.

Example Use Cases

  • Whenever you want to simulate taking photos and videos using a drone, e.g.
    • extending it our from the balcony of a cruise ship
    • walking along the beach to get bird’s eye views
    • holding it while being in the water at a beach
    • holding it against your shoulder with it extended behind you

Buy on Amazon

1/4″ camera screw

If you’re worried about dropping your selfie stick and losing it, you can attach a 1/4″ camera screw to the bottom of it and a wrist lanyard to the screw.

Buy on Amazon (1/4″ camera screw, lanyard)

Invisible Quick Release Adapter

To quickly attach and remove an Insta360 X3 camera, use the invisible quick release adapter designed specifically for the Insta360 X3.

Buy on Amazon

Tripod Stand 1/4” Mounting Screw

If you can’t mount the Insta360 camera to something, then you can stand it on the ground by attaching a tripod to a selfie stick.

Buy on Amazon

Forearm Mount

Having a selfie stick extended away from you allows you to get shots that look as if someone is filming you. You can also get more of yourself in the shot. In certain situations, however, you may not be able to hold the stick in your hand. That’s when having a forearm mount comes in handy. Since no one makes these, I had to engineer one myself using a forearm brace and an adjustable clamp.


The brace comes with a thin aluminum bar that is inserted in a pocket at the top of the brace. Using a utility knife, I had to make minor incisions to be able to insert the clamp into and underneath the aluminum bar.

At the front of the brace, I wasn’t able to slide the clamp underneath the bar, so I trimmed the bar to make it a bit narrower.

Like this.

This is the finished product.

The metal bar and clamp can cause discomfort on the top of your hand, especially when the selfie stick is extended and is shaking up and down. To address this, you can simply slide a dishwashing sponge above your hand as shown below to act as a cushion.

Example Use Cases

  • Any time you want to extend the selfie stick and you can’t mount it on something else and you need your hands free, e.g.
    • when you are driving a jet ski

Wrist Mount

If the forearm mount is unavailable or can’t be used, then you can use a wrist mount. This is not as good as the forearm mount because the distance from the camera to your face is just the length of your arm extended.

Example Use Cases

  • when ziplining
  • when you are driving a jet ski
  • sliding down water slides

Buy on Amazon

Chest Mount

This mount is great because it’s hands-free, but you can’t film yourself with it.

If you are afraid of the camera falling despite the strong magnet, you can loop an adjustable neck lanyard to the GoPro mount screw as follows.

Example Use Cases

  • when walking around and you don’t want to make it obvious that you are filming people and/or you want your hands free
  • when boarding an airplane and walking down the aisle

Buy on Amazon

Bicycle / Motorcycle Mount

This mount is very sturdy, but the handlebar clamp opening may be too big for some handlebars. In that situation, you can wrap some rubber around the handlebar, which will also protect it from damage. This mount includes the selfie stick.

Example Use Cases

  • when riding a bicycle or motorcycle

Buy on Amazon (handlebar mount, 2″-wide rubber strip)

Note: when mounting to a bike, I find it better to position the mount such that the camera is at face level.

Glass or Window Mount

This mount can stick to a glass very firmly. You can also rotate the mount in many directions.

Example Use Cases

  • mount to a car windshield or window
  • mount to a bathroom mirror

Buy on Amazon

Magnetic Mount + Rigid 1/4″ Rods

This mount has a small footprint and includes a very strong magnet. You can add one or more 1/4″ rods to it. I find this setup particularly useful when eating at a restaurant. The mount doesn’t take a lot of space and it positions the camera high enough that you can film everyone’s food and their faces.

This mount can also stick to any metal surface like the side of a refrigerator.

Example Use Cases

  • on a table at a restaurant
  • on any magnetic surface

Buy on Amazon (magnetic base, 1/4″ rods)


If you’re out and about and want to stand your selfie stick on the ground, you can easily do that with the 3.4′ stick with built-in tripod. But, if you try that with 10′-long selfie stick extended at max length, then there’s the risk of it falling and destroying your camera. In this case, one thing you can do is strap the stick against an object like a rail. You can also try to use a c-clamp to clamp onto something flat and then strap the selfie stick to the clamp.

There are many adjustable and removable straps you can use, including

MicroSD Card

According to the Insta360 ONE X2 manual, you must use a UHS-I Micro SD card with a V30 or above speed class and exFAT format. UHS-II and UHS-III Micro SD/TF cards are not compatible with ONE X2. You can find V30 cards on Amazon. Note that the U3 symbol in the image below doesn’t mean UHS-III but rather U3. According to Wikipedia, U3 has to do with software rather than speed.

The cards below have been tested to work well with ONE X2 and X3.

SD CardModel NumberCapacitySpeed Class
Sandisk Extreme V30 A1SDSQXVF-032G-GN6MA32GV30
Sandisk Extreme Pro V30 A1SDSQXCG-032G-GN6MA32GV30
Sandisk Extreme Pro V30 A1SDSQXCG-064G-GN6MA64GV30
Sandisk Extreme V30 A1SDSQXAF-128G-GN6MA128GV30
Sandisk Extreme V30 A2SDSQXAF-128G-GN6MA64GV30
Sandisk Extreme V30 A2SDSQXA1-256G-ZN6MA256GV30
Sandisk Extreme Pro V30 A2SDSQXCZ-1T00-ZN6MA1TBV30

The first character of the 3rd part of the model number may differ, e.g. “G” in GN6MA vs “Z” in ZN6MA. According to this forum, that just identifies a different manufacturer.

The last character of the 3rd part of the model number may differ, e.g. “A” in GN6MA vs “N” in GN6MN. “A” means it comes with an adapter and “N” means it doesn’t.

SanDisk MobileMate USB 3.0 microSD Card Reader

Transferring video files from the Insta360 ONE X2 to your computer can be really slow. To speed this up, use a USB 3 card reader. I use this one: SanDisk MobileMate USB 3.0 microSD Card Reader- SDDR-B531-GN6NN. It supports transfer speeds of up to 170 MB/s. With USB 3.0, move content up to 10x faster than USB 2.0 readers.

Extra Batteries + External Charger

The battery that comes with the Insta360 ONE X2 is good for 80 minutes. It may be a good idea to buy additional batteries just in case. I bought a pack of 2 batteries on Amazon. It comes with a charger and the batteries work.

Mount Adapter

For the adapters, this one is better because you can tighten it with the camera facing any direction you want.

Waterproof Pouches

When you’re swimming, having a waterproof pouch to keep your camera dry can give you peace of mind. Though the pouches pictured below are for phones, they fit the Insta360 X2/3 cameras as well.

Buy on Amazon

Itinerary for the Ultimate Miami & Caribbean Cruise Vacay

4-night Royal Caribbean cruise aboard the Freedom of the Seas (Deck Plan) plus a few days in Miami before and after the cruise

February 2024


Saturday, February 10, 2024

9:30 AM – 10:00 AMDrive to SF Int’l Airport (SFO)
  • Driving Time: 30 min
10:00 AMCheck in
  • Flight: AA 2045
  • Airline: American
  • Confirmation #: IICJZE
11:00 AMLunch at Airport

There’s no free food on the plane. Eat at the airport. Bring trail mix.

12:00 PMTake off
8:19 PMLand at Miami Int’l Airport (MIA)
  • American Airlines is in the north terminal (D)
8:45 PMGo to rental car center
  1. Use the 3rd-Level Skyride (moving walks) to access the MIA Mover station.
  2. Use the MIA Mover located on the 3rd level between the Dolphin and Flamingo garages to go to the MIA Rental Car Center.
9:00 PMPick up rental car
  • Company: Thrifty
  • Confirmation #: K66811443F5
  • Reservation Website:
  • Vehicle: Jeep Compass
  • Total Cost For 2 Days: $121.31
  • Collision Damage Waiver: Extra (get at counter)
10:00 PMDrive to Hotel & Check In
  • Onyx Hotel Miami Airport
  • Driving time: 5 min

Sunday, February 11, 2024

8:00 AM – 9:00 AMBreakfast at IHOP
  • Open 24 hours
  • Walking Time: 1 min
Steak Omelette with Pancakes
9:15 AM – 10:15 AMDrive to Everglades Holiday Park
  • Driving time: 40 mins
10:30 AM – 12:00 PMEverglades Airboat Tour
  • Official website
  • Open: 9:00 a.m. – 4:00 p.m.
  • $39
  • AIRBOAT TOUR: 60 mins
  • Airboat tour tickets are first-come, first-served – no reservations necessary! Tours leave the dock every 20-minutes or less.
12:00 PM – 1:00 PMDrive to Bayside Marketplace
1:00 PM – 2:00 PMWalk to Rolly’s Bistro for Lunch
  • Menu
  • Hours: 10 AM – 10 PM
  • Order:
    • Beef panini
    • Pina Colada
2:00 PM – 4:30 PMWalk to Big Bus Tours and Go on Red Tour
  • Website
  • Hours: 9 am – 4 pm
  • Cheaper to buy online
  • Frequency: Every 30 minutes
  • Duration: 2 hrs 10 min
  • Cost: $86
4:30 PM – 5:30 PMDrive Along Miami Beach
6:00 PMSunset
6:00 PMDrive to Miami Beach Parking Garage
6:00 PM – 8:00 PMWalk Around Espanola Way and Lincoln Shopping District

Española Way


Española Way is a historic street in Miami Beach, Florida. It’s located between 14th and 15th Streets, between Washington Avenue and Pennsylvania Avenue. It’s a pedestrian-only street with shops, galleries, restaurants, and bars. 

Lincoln Road Shopping District


Miami Beach’s Lincoln Road is one of the most unique shopping districts in the world,  full of stunning architecture, world-class culture and destination retail stores spanning 8 blocks.

8:00 PMHave Dinner at The Lincoln Eatery
  • Hours: 8 AM – 10 PM
9:00 PMDrive Back to Hotel

Monday, February 12, 2024

8:15 AMBreakfast at IHOP
  • Walking Time: 1 min
Spicy Poblano Eggs Benedict
9:15 AMCheck Out of Hotel

9:30 AMDrive Back to Bayside Parking
10:30 AMWalk to and Check in at Thriller Miami Speedboat Sightseeing Tour
  • 4-minute walk from parking garage
  • Website
  • Open: 11 am – sunset
  • Tours are every 1.5 hours on weekdays
  • Duration: 45 minutes
  • Cost: $45
11:00 AM – 11:45 AMTake Thriller Miami Speedboat Sightseeing Tour
12:00 PMRide Skyviews Miami Observation Wheel
  • Walking time: 3 min
  • Website
  • Open: 12 – 10 pm
  • Duration: 12 min
  • Cost: $20
12:30 PMWalk Around Bayside Marketplace
12:30 PM – 1:00 PMWalk Around Bayside Marketplace
1:00 PM – 1:30 PMDrive to Return Rental Car
1:30 PM – 2:00 PMTake Uber to Cruise Terminal
2:30 PMCheck In For Cruise

Cruise Terminal A

3:30 PMBoard Cruise and Go to Stateroom (with Balcony)
4:30 PMCruise Departs to CocoCay, Bahamas
4:30 PMRSVP for Dinner
  • Cruise Dining Options
  • Main Dining Room (Galileo, Isaac & Leonardo) at back of ship. Enter on deck 3.
  • Stunning three-level dining room offering a variety of options for each course, from appetizers and entrees to mouthwatering desserts.
  • Seating Times: 
    • Breakfast: 7:30 – 9:30 AM,
    • Lunch: From noon – 2 PM,
    • Dinner: Early – 6:15 PM, Late – 8:30 PM.
  • Dress: Smart casual attire. On formal evenings, formal attire is appropriate in the restaurant, which includes suits and ties or tuxedos for men and dresses for women. On couple of nights, semi-formal attire is permitted. Swimwear, shorts and jeans are not permitted.
  • Costs: Food included in the cost of your cruise; specialty drinks, alcoholic beverages, bottled water, beer, wine and soft drinks are at current menu pricing.
  • Reservations are required. RSVP through the Royal Caribbean app or call extension 7000.
5:00 PMExplore the Ship

Deck 2

  • Middle (Midship): Studio B Ice Rink
  • Rooms: Ocean-View Rooms, Interior Rooms

Deck 3

  • Front (Forward): Royal Theater
  • Middle (Midship): Studio B Ice Rink, Photo Studio, Art Gallery
  • Back (Aft): Main Dining Hall
  • Rooms: Ocean-View Rooms, Interior Rooms

Deck 4

  • Front (Forward): Royal Theater
  • Middle (Midship): Izumi Hibachi & Sushi, Schooner Bar, Casino Royale, Playmakers Sports Bar & Arcade, Boleros, Centrum
  • Back (Aft): Main Dining Hall

Deck 5

  • Front (Forward): Outdoor Deck
  • Middle (Midship): Star Lounge, Library Card Room, Sorrento’s, Bull& Bear Pub, Promenade Shops, Royal Promenade, Ben & Jerry’s Ice Cream, Cafe Promenade, Next Cruise, Shore Excursions, Guest Services, R Bar
  • Back (Aft): Main Dining Hall

Deck 6

  • Rooms: Suites, Balcony Rooms, Ocean-View Rooms, Promenade-View Rooms, Interior Rooms

Deck 7

  • Rooms: Suites, Balcony Rooms, Ocean-View Rooms, Promenade-View Rooms, Interior Rooms

Deck 8

  • Rooms: Suites, Balcony Rooms, Ocean-View Rooms, Promenade-View Rooms, Interior Rooms

Deck 9

  • Rooms: Suites, Balcony Rooms, Ocean-View Rooms, Interior Rooms

Deck 10

  • Rooms: Suites, Balcony Rooms, Ocean-View Rooms, Interior Rooms

Deck 11

  • Front (Forward): Fitness Center
  • Middle (Midship): Solarium, Whirlpool, The Lime & Coconut, Main Pool, Sports Pool, Splashaway Bay, El Loco Fresh, PADI, Chops Grille, Giovanni’s Italian Kitchen
  • Back (Aft): The Plaza Bar, Windjammer Cafe

Deck 12

  • Front (Forward): Spa
  • Middle (Midship): The Lime & Coconut, Running Track, Movie Screen
  • Back (Aft): Nursery, Adventure Ocean, Arcade, Johnny Rockets

Deck 13

  • Front (Forward): Freedom Dunes
  • Back (Aft): Rock Climbing Wall, Sports Court, The Perfect Storm Waterslides, Flowrider

Deck 14

  • Front (Forward): Lounges

Deck 15

6:00 PMSunset
7:00 PMDinner at Main Dining Hall
  • Bottom level = Deck 3
  • Middle level = Deck 4
  • Top level = Deck 5
9:30 PMWatch a Show
  • Shows are nightly at 7:30 PM and 9:30 PM
  • Arrive 15 mins before the show
  • Royal Theater
  • Decks 3 and 4
10:30 PMPack for Next Day at Cococay
  • Dry bag
  • Snorkel mask
  • Inflatable lounges
  • Sunscreen
  • Cameras and equipment (selfie stick, etc)
  • SeaPass card
  • Cash: Tipping cabana attendants requires cash
  • Beach towels. You can get these from the ship. 
  • Sunglasses
  • Hats

Tuesday, February 13, 2024

7:00 AMArrive at Cococay
8:00 AM – 9:00 AMBreakfast at Windjammer Buffet
  • Hours: 7:00 – 11:00 AM
10:00 AMPut stuff in a locker

There are free lockers to use around Perfect Day at CocoCay. Lockers are first come, first serve. Lockers can be found

  • near the entrance to Thrill Waterpark
  • near the entrance to zipline
  • near the helium balloon
  • at Chill Island (north and south)
10:30 AM – 11:15 AMZipline
  • Appointment Time: 10:30 AM
  • Hours: 8:00 AM – 3:30 PM
  • Duration: 45 min
  • Cost: $50 pp
  • Bring camera hand mount
11:30 AM – 12:00 PMLunch

Have lunch at Chill Grill (or other places).

Captain Jack’s Bar ($)8:00 AM – 4:30 PM
Oasis Lagoon Bar ($)8:00 AM – 4:30 PM
South Beach Bar ($)8:00 AM – 4:30 PM
Coco Beach Club8:00 AM – 4:30 PM
Chill Grill11:30 AM – 3:00 PM
Skipper’s Grill 11:30 AM – 3:00 PM
Snack Shack Oasis11:00 AM – 3:30 PM
Snack Shack Water Park11:00 AM – 3:30 PM
South Beach Snack Shack11:00 AM – 3:30 PM
12:30 PM – 1:45 PMJet Ski Tour
  • Appointment Time: 12:30 PM
  • Hours: 9:00 AM – 2:00 PM
  • Cost: $65 driver, $25 passenger
  • Duration: 1 hr 15 min
  • Bring camera hand mount
  • Ask if can bring dry backpack on jet ski. If can, then bring 10′ selfie stick to take drone-like videos.
  • Bring dry bag with 10selfie stick
  • Replace SD card with a new one in case the camera falls into the sea and is not recoverable
2:30 PM – 2:45 PMHelium Balloon Ride
  • Appointment Time: 2:30 PM
  • Hours: 8:30 AM – 3:30 PM
  • Duration: 10 min
  • Cost: $43 pp
3:00 PM – 4:00 PMBeaches, Pools & Exploration

Dining Options

Captain Jack’s Bar ($)8 AM – 4:30 PM
Oasis Lagoon Bar ($)8 AM – 4:30 PM
South Beach Bar ($)8 AM – 4:30 PM
Coco Beach Club 8 AM – 4:30 PM
Chill Grill11:30 AM – 3 PM
Skipper’s Grill11:30 AM – 3 PM
Snack Shack Oasis11:00 AM – 3:30 PM
Snack Shack Water Park11:00 AM – 3:30 PM
South Beach Snack Shack11:00 AM – 3:30 PM
4:00 PMReturn to Ship
5:00 PMDepart Cococay to Nassau
6:00 PMSunset
7:00 PMDinner at Main Dining Hall
  • Open: 7 – 9:30 PM
  • Bottom level = Deck 3
  • Middle level = Deck 4
  • Top level = Deck 5
9:30 PMWatch a Show
  • Shows are nightly at 7:30 PM and 9:30 PM
  • Arrive 15 mins before the show
  • Royal Theater
  • Decks 3 and 4
10:30 PMWatch a Movie Outside

Wednesday, February 14, 2024

8:00 AMBreakfast on Balcony (Room Service)
9:30 AM – 11:30 AMShip Tour
  • Appointment Time: 9:30 AM
  • Duration: 2 hours
  • Cost: $89
11:30 AM – 12:00 PMFitness
  • Hours: 6:00 AM – 9:00 PM
12:00 – 1:00 PMLunch at Windjammer Buffet
  • Hours:
    • 7:00 – 11:00 AM
    • 12:00 PM – 3:00 PM
    • 6:00 PM – 9:00 PM
1:00 PM – 2:00 PMWaterslides
  • Open: Noon to 6 PM
3:30 PM – 4:30 PMRock Climbing Wall
  • Open: 3:30 – 7:00 PM
  • Deck 13
6:00 PMSunset
7:00 PMDinner at Main Dining Hall
  • Open: 7 – 9:30 PM
9:30 PMWatch a Show
  • Shows are nightly at 7:30 PM and 9:30 PM
  • Arrive 15 mins before the show
  • Royal Theater
  • Decks 3 and 4

Dining on Board

Main Dining Room

  • No extra cost
  • Deck 3, 4, 5
  • Ext 7000
  • Breakfast: 8 AM – 9:30 AM
  • Dinner: 7 PM – 9:30 PM

Windjammer Marketplace

  • No extra cost
  • Deck 11
  • Breakfast: 7 AM – 11 AM
  • Lunch: Noon – 3:30 PM
  • Dinner: 6 PM – 9 PM

Cafe Promenade Coffee Station

  • No extra cost
  • Deck 5
  • 24 hours

El Loco Fresh

  • No extra cost
  • Deck 11
  • 3 PM – 6 PM

Sorrento’s Pizza

  • Extra cost $
  • Deck 5
  • 1:30 PM – 3 AM

Cupcake Cupboard

  • No extra cost
  • Deck 11
  • 11 AM – 8 PM

Chef’s Table

  • RSVP required
  • Extra cost $$$$
  • Ext 7000
  • Deck 5
  • 6:30 PM

Chops Grille

  • RSVP required
  • Extra cost $$$
  • Ext 7000
  • Deck 11
  • 5:30 PM – 9:30 PM

Giovanni’s Italian Kitchen

  • RSVP required
  • Extra cost $$$
  • Ext 7000
  • Deck 11
  • 5:30 PM – 9:30 PM

Izumi Hibachi & Sushi

  • RSVP required
  • Extra cost $$
  • Ext 7000
  • Deck 4
  • 5:30 PM – 9:30 PM

Johnny Rockets

  • Extra cost $$
  • Deck 12
  • 2:00 PM – 10:30 PM

Ben & Jerry’s Ice Cream

  • Extra cost $
  • Deck 5
  • 2:00 PM – 11:00 PM

Cafe Promenade Coffee Station

  • No extra cost
  • Deck 5
  • 6:30 AM – 11:00 PM

Room Service

  • Extra cost
  • Ext 7000
  • Deck 5
  • 6:30 AM – 11:00 PM

Thursday, February 15, 2024

7:00 AM – 8:00 AMBreakfast at Windjammer Buffet
  • Hours: 7:00 – 11:00 AM
6:42 AMSunrise in the Bahamas
8:00 AMArrive at Nassau, Bahamas
9:00 AMTake Shuttle to Atlantis
  • Appointment time: 9:00 AM
  • Bring dry bag and camera accessories
9:30 AM – 1:30 PMPlay at Atlantis Waterpark
  • Atlantis Resort Map
  • Atlantis Aquaventure Map
  • Wristbands are required and can be obtaining at any towel hut
  • Aquaventure is cashless. Pay by credit card.
  • Lockers are available and subject to availability
  • Towers are provided for day use
  • Complimentary life jackets are provided for day use
  • Wear sandals or water shoes because the pathways can get very hot
  • Shortest wait times for the water slides and the rapids river are when the rides open at 10 AM
  • The center of the action is the Mayan Temple Pool

Action Plan

  1. Get a locker
  2. Go on Mayan Temple water slides (bring short and 3.4″selfie stick)
  3. Go on Power Tower water slides (bring short and 3.4″selfie stick)
  4. Go on river rides (bring short and 3.4″selfie stick)
  5. Have lunch
  6. Go to pools (bring 3.4′ and 10′ selfie stick)
  7. Go to the beaches (bring 3.4′ and 10′ selfie stick)
  8. Take photos at vista points (bring dry bag)
  9. Explore the Royal Towers (bring dry bag)
  10. Visit the Dig

Mayan Temple Water Slides

Leap of Faith: a near 60-foot near-vertical drop propels you through a clear acrylic tunnel into a shark-filled lagoon [video]

Serpent Slide: travel 5-stories down in complete darkness, then emerge and float through an acrylic tunnel in a shark-filled lagoon [video]

Challenger Slide: race down twin high-speed slides with friends, then check your speeds on the time clocks at the bottom to see who won [video]

Jungle Slide: take a thrilling safari slide through the exotic jungle-scape and caves built right into the heart of the Mayan temple [video]

Power Tower Water Slides

The Abyss: Drop into complete darkness with twists and turns and end in an underground cave with alligator gar and tropical fish. [video]

The Surge: Brave a camel back drop into a cavern with quick downward twists and turns into white-water rapids. [video]

The Drop: Drop through darkness, then enjoy open-air twists and turns before splashing down into the Rapids River [video]

The Falls: This slide shoots you 58 feet to ground level, then propels you through a water roller coaster of twisting tubes. [video]

River Rides

The Rapids River: A mile-long river ride with extreme rapid, rolling waves, water escalators and surprises. [video]

Lazy River: A relaxing, scenic, quarter-mile loop guided by a gentle current. [video]


Royal Baths: This low key pool features two sunburst mosaics and soothing music with the iconic Royal Towers as a backdrop.

Mayan Temple Pool: One of the most popular pools at Atlantis, adjacent the slides of the Mayan Temple. A live DJ spins hot beats.

Baths Colonnade Pool: Large columns with hieroglyphs and rockwork structures adorn this free-form pool.

Grotto Pool: A zero-entry pool framed by two cascading waterfalls. Preferred seating with lockable safe and electronics charging station available for a fee.

River Pool: A relaxing zero-entry pool just steps away from Atlantis Beach and removed from the main activity of Aquaventure.

Blu Pool: This pool offers a cool vibe with music from the 80s, 90s, and today’s billboard hits.


Atlantis Beach: An action-packed beach located closest to Beach, Coral and Royal Towers.

Cove Beach: This beach offers a protective cove, good for snorkeling and just soaking up the sun.

Paradise Beach: A tranquil stretch of sand, perfect for relaxing closest to the Reef.

Paradise Lagoon Beaches: Paradise Lagoon offer two beaches for snorkeling, paddle boats, and other water sports, in a protected environment – great for families.


The Dig: Polished marine life & aquarium exhibits in a series of tunnels at the posh Atlantis resort.

2:00 PMTake Shuttle Back to Ship
2:30 PMExplore Downtown – Straw Market
3:00 PMExplore Downtown – Queen’s Staircase
4:00 PMGo Back to Ship
5:00 PMDepart Nassau Back to Miami
6:00 PMSunset
7:00 PMDinner at Main Dining Hall
  • Open: 7 – 9:30 PM
9:30 PMWatch a Show
  • Studio B – Ice Rink
  • Deck 3

Friday, February 16, 2024

6:00 AMArrive in Miami
7:30 AMTake Uber From Cruise Terminal to Airport
  • Driving time: 20 min
8:00 AMPick Up Rental Car
Confirmation #K6683555424
SizeJeep Compass
Total Price For 2 Days$142.66
Collision Damage Waiverextra
8:30 AM – 9:00 AMDrive to Hotel & Check In
  • Onyx Hotel Miami Airport
  • Driving time: 5 min
9:30 AM – 9:45 AMDrive to Frost Museum of Science
  • Driving Time: 15 min
10:00 AMBuy Planetarium Show Tickets
  • Must buy tickets on site
  • Website
  • Hours: 10:00 am – 6:00 pm
  • Cost: $30
10:20 AMWatch Planetarium Show
11:00 AMWatch Planetarium Show
  • Dynamic Earth
  • Duration: 24 min
  • Showtimes: 11:00 a.m. | 12:20 p.m. | 1:40 p.m. | 3:00 p.m. | 4:20 p.m. | 5:40 p.m.
11:30 AM – 11:45 AMDrive to Wynwood Walls
  • Driving time: 10 min
12:00 PM – 1:00 PMExplore Wynwood Walls
  • Website
  • Hours: 11 am – 7 pm
  • Cost: $12
1:00 PM – 1:15 PMDrive to Lock n Load Museum
  • Driving Time: 10 min
1:15 PM – 2:30 PMVisit Lock n Load Museum
  • Website
  • Hours: 12 – 6 pm
  • Cost: Museum: Free, Shooting Training: $175
2:30 PM – 2:45 PMDrive to Superblue Miami Immersive Art Experience
  • Driving Time: 5 min
2:45 PM – 3:45 PMVisit Superblue Miami Immersive Art Experience
  • Website
  • Hours: 11 am – 7 pm
  • Cost: $39
3:45 PM – 4:00 PMDrive to ARTECHOUSE Miami
  • Driving Time: 15 min
4:00 PM – 5:00 PMVisit ARTECHOUSE Miami
  • Website
  • Hours: 1 – 8 pm
  • Cost: ?
5:00 PM – 5:10 PMDrive to Museum Of Illusions
  • Driving Time: 10 min
5:15 PM – 6:00 PMVisit Museum Of Illusions
  • Website
  • Hours: 11 AM to 9 PM
  • Cost: $30
6:00 PMSunset
6:00 PM – 6:15 PMDrive to Fogo de Chão Brazilian Steakhouse
  • Driving Time: 10 min
6:15 PM – 7:30 PMDinner at Fogo de Chão Brazilian Steakhouse
  • Website
  • Hours: 12 PM – 10:30 PM

Saturday, February 17, 2024

8:00 AM – 9:00 AMBreakfast at IHOP
9:00 AMCheck Out of Hotel
9:00 AM – 9:20 AMDrive to Bike n Roll Miami
  • 210 10th St, Miami Beach, FL 33139
  • Driving Time: 20 min
10:00 AM – 12:00 PMGo on Segway Tour
  • Website
  • RSVP
  • Hours: 9 AM – 6 PM
  • Duration: 2 hours
  • Cost: $75
12:00 PM – 12:15 PMDrive to Bayside Parking
  • Driving Time: 15 min
12:15 PM – 12:20 PMWalk to Millionaire’s Row Tour
  • Walking time: 5 min
1:00 PM – 2:30 PMGo on Millionaire’s Row Tour
  • Website
  • Duration: 90 min
  • Hours: 11 am – 6 pm
  • Cost: $30
  • Departure Times: 10:30AM, 11AM, 12PM, 1PM, 2PM, 3PM, 4PM, 5PM, 6PM
2:30 PM – 2:45 PMDrive to Bike n Roll Miami

Duration: 15 mins

2:45 PM – 4:30 PMRent e-bike and Ride Along Miami Beach
  • Website
  • Cost: $25 / hour, $85 / day
4:30 PM – 5:30 PMDrive to Airport Rental Car Center & Return Car
  • Driving Time: 30 min
6:30 PMDinner at Airport

There’s no free food on the plane. Eat at the airport. Bring trail mix. American Airlines is in the north terminal (concourse D, 2nd Level Departures).

8:11 PMFly Back to San Francisco
  • Flight: AA 2426
  • Airline: American Airlines
  • Confirmation #: IICJZE
11:51 PMLand at SFO

How to Customize a Hat with Appliques / Patches

While there are many services that let you buy a hat and customize it, you may not like the style, quality or fit of the hat. Also, you are limited in how you can customize it. In this post, I explain how I customized a hat I already own. Since I’m planning to go on a cruise, I wanted a hat that kinda looked like a captain’s hat. My preferred hat is a black cap that I get at a nearby mall.

I wanted to customize it with design elements from the captain hat shown below.

After much research, trial and error, I ended up with this:

Here’s how I made it.


  1. Scrambled Eggs, Embroidered, Iron on Patch (Metallic Gold)
  2. Gold Star Embroidered, Iron on Patch
  3. E6000 adhesive
  4. Gold buttons (similar to this)
  5. Sewing pins


  1. Place the patches on the hat and secure using sewing pins.
  2. When you know where the patches should go, put sewing pins in hat at certain points along perimeter of patches to guide where the patches should go.
  3. Add glue to the back of the patches and place patches on hat.
  4. Insert sewing pins into hat through patches to secure patches in place. If necessary, clamp patches to hat using a clamp.
  5. Decide where to put the gold buttons.
  6. Drill hold in hat where gold buttons would go.
  7. Fasten gold buttons to hat via the holes you just created.

For the buttons, I actually took mine off of a cheap hat I had bought on Amazon. The buttons have 2 flat metal pins that can be folded to secure the buttons.

Best Caribbean Beaches & Travel Considerations

The Caribbean is a subregion of the Americas that includes the Caribbean Sea and its islands.

Best Beaches

If your idea of the best beach is like mine, which are beaches that have

  • shallow turquoise or clear water,
  • fine white sand,
  • no garbage, seaweed, rocks and corral

like this

then, looking at the Google satellite image above, it should be evident that one spot stands out: The Bahamas! Actually, if we zoom in on that area, we’ll find that the Turks and Caicos Islands also have that same turquoise color.

Both of these countries have many beaches, and some are better than others. According to the World Travel Awards, Turks and Caicos Islands has the best beaches, and the country has held that rank since 2012.

According to the award history for 2012, 2013 and 2014, and according to the “Visit Turks & Caicos Islands‘” website, the best beach is Grace Bay Beach on Providenciales island. Learn more about Grace Bay Beach.

Grace Bay Beach

Grace Bay Beach is located on the west side of Providenciales island. As you can see in the picture above, it looks amazing. But, the beach and water on the eastern side looks even better according to the zoomed-out photo below.

So, what about the Bahamas? According to Lonely Planet, two beaches that meet the criteria above are

  1. Junkanoo beach
    Located in the city of Nassau on the island of New Providence and near the cruise port, this beach gets really crowded.
  2. Tropic of Cancer Beach
    This beach is located in a small town far from Nassau. You may feel lonely at this beach.
Junkanoo Beach
Tropic of Cancer Beach

Another popular beach is Cabbage beach on Paradise Island where the Atlantis resort is in Nassau, Bahamas.

Best Luxury Island Destination

Though the Bahamas may not have won the record for having the best beach, it did consistently win for being the best luxury island destination in the Caribbean.

Probably the most notable luxury spot in the Bahamas is the Atlantis resort on Paradise island.

Other Islands

I’m sure there are many other islands with very nice beaches. Some may even be better than the ones mentioned above, but they may be so remote that they would be difficult to get to. You may think that the U.S. and British Virgin Islands (U.S.V.I and B.V.I.) have nice beaches, but from my personal experience visiting them, they are nowhere as nice as the ones mentioned above. There is one beach on Sint Maarten however that is nice and very unique and attractive among tourists. It’s the Sint Maarten Airport Beach or Maho Beach, where the airport landing strip is literally right next to the beach.

The airport runway is half the length of typical runways, so airplanes have to land close to the start of it to avoid overrunning the landing strip.

Tourists love taking photos of themselves standing right below a plane coming in for a landing.


The best time to go to the Caribbean is during the winter months when the temperature isn’t too high and rainfall is low. Below are average temperatures and rainfall by month for the Bahamas, Turks & Caicos, and Sint Maarten.

The Bahamas

Turks & Caicos

Sint Maarten

And since many cruises depart from Miami, it may be worth it to spend a few days in Miami before or after the cruise. The weather is Miami similar to that in the Caribbean.


Based on the graphs above, it would appear that February is the best time to go.

Humidity and Heat Index

Note that the Caribbean has a humid climate, and high humidity actually makes you feel hotter than in low humidity climates. The heat index is a measure of how hot you feel when taking into both temperature and humidity into consideration. Learn more.

In Nassau, Bahamas,

  • On average, September is the most humid month, at 81.0%.
  • On average, April is the least humid month, at 74.0%.
  • The average annual percentage of humidity is: 78%

According to this heat index calculator, if the temperature is 79 degrees and the humidity is 78%, then the heat index is 82 degrees Fahrenheit.


You can easily find flights from Miami to the Bahamas, Turks and Caicos, and Sint Maarten. Below are non-stop flights to each country, flight time, and cost for travel in February 2024.

DestinationTravel TimeCost
Nassau, Bahamas1 hr 10 min$262
Sint Maarten3 hr$400
Turks and Caicos2 hr$200


The Caribbean is a popular region for cruises. Many cruise lines go to all 3 countries mentioned above. But, cruise ships don’t necessarily dock at the specific islands mentioned above. Here are the cruise ship ports of call for each country.

CountryPort of Call
The BahamasNassau City, New Providence Island
The BahamasPrincess Cays
Turks & CaicosGrand Turk
Sint MaartenSint Maarten

In particular, note that Grand Turk is an island in Turks & Caicos that is very far from Providenciales island where the best beach (Grace Bay Beach) is. You’d have to fly from Grand Turk to Grace Bay Beach.

If you are looking for a cruise ship that goes to these islands, you can do a search from sites like where you can specify search criteria like

  • month (January, February)
  • ports of call (Nassau and Grand Turk)
  • etc

The cruise line that primarily goes to Grand Turk is Carnival. Following are some cruise itineraries that meet the criteria above.

Ship: Carnival Magic – 6-Night Cruise

Sun Feb 18, 2024 – Sat Feb 24, 2024

Feb 18, 2024Miami3:30 PM
Feb 19, 2024Fun Day At Sea
Feb 20, 2024Grand Turk, Turks & Caicos8:00 AM5:00 PM
Feb 21, 2024Amber Cove, Dominican Republic8:00 AM5:00 PM
Feb 22, 2024Fun Day At Sea
Feb 23, 2024Nassau8:00 AM4:00 PM
Feb 24, 2024Miami8:00 AM

Ship: Princess Cruises – 14-Night Cruise

Feb 11, 2024Fort Lauderdale (Port Everglades), Florida3:00 PM
Feb 12, 2024Princess Cays, Bahamas9:00 AM4:00 PM
Feb 13, 2024Cruising
Feb 14, 2024Ocho Rios, Jamaica8:00 AM4:00 PM
Feb 15, 2024Georgetown, Grand Cayman, Cayman Islands7:00 AM4:00 PM
Feb 16, 2024Cozumel, Mexico10:00 AM7:00 PM
Feb 17, 2024Cruising
Feb 18, 2024Fort Lauderdale (Port Everglades), Florida7:00 AM3:00 PM
Feb 19, 2024Princess Cays, Bahamas9:00 AM4:00 PM
Feb 20, 2024Cruising
Feb 21, 2024San Juan, Puerto Rico9:00 AM10:00 PM
Feb 22, 2024St. Thomas, U.S. Virgin Islands8:00 AM5:00 PM
Feb 23, 2024Cruising
Feb 24, 2024Cruising
Feb 25, 2024Fort Lauderdale (Port Everglades), Florida7:00 AM

Cruise Line Private Islands

Some cruise lines bought or made islands just for their passengers. Since the islands were custom-made for tourists, they have many tourist benefits that you may not find on other islands. Following are some notable islands.

Ocean Cay, The Bahamas: MSC Cruises

This island is located on a former sand extraction site. MSC Cruises owns it. It’s located pretty close to Miami.

Google Maps’ satellite view shows a lot of beaches with turquoise water.

There’s a beach right by the port where the cruise ship docks. If you want calm water and are afraid of accidentally being pulled out to sea, you can swim between the two beaches at the lagoon.

View hi-res version of this photo

Perfect Day at CocoCay, Bahamas: Royal Caribbean

This island is owned by Royal Caribbean and is exclusively for Royal Caribbean guests. The Google Maps satellite view may make you think the water isn’t turquoise, but it’s deceiving. Many photos show that the water is actually very turquoise. Note that the pier can accommodate two ships, so if you want to avoid crowds, try to find a trip when only your ship will dock there.

With so many activities and attractions, CocoCay looks more like an amusement park. Some activities and amenities include

  • waterpark with slides and a wave pool
  • private over-water cabanas
  • freshwater lagoon
  • 1600-foot-long zipline
  • helium balloon ride

Learn more

View Map (PDF)

Castaway Cay, Bahamas: Disney Cruise Line

Castaway Cay is owned by Disney. Most of the island appears undeveloped. The water by the pier seems to be pretty turquoise.

According to the Disney map, the only developed area is by the pier. It’s nice how they have a breakwater barrier to keep the water calm and to block you from accidentally getting pulled out to sea.

Half Moon Cay, Bahamas: Holland America Line

Below is a satellite view of Half Moon Cay, also called Little San Salvador. Only 3% of the island has been developed for cruise passengers. The color of the water looks pretty good. You will find a 2-mile-long powdery white sand beach and a rugged coastline beyond. There is a natural lagoon called Bone Fish Lagoon that is a breeding ground for sharks, turtles and bonefish.

One interesting activity you can do there is ride a horse in the water.

Great Stirrup Cay, Bahamas: Norwegian Cruise Line

Great Stirrup Cay is located next to Perfect Day CocoCay.

Labadee, Haiti: Royal Caribbean

This destination offers some interesting activities. You can go to the mountaintop for a ride on the alpine Dragon’s Tail Coaster. The thrilling descent begins with panoramic views of Labadee from 680 feet above the coastline atop Santa Maria’s lookout mountain. On the way down you’ll reach speeds of 30 miles per hour and zip through 360-degree twists and turns.

There is also a zip line and Superman-style flight line that both let you soar a half mile over the water.



There are many activities you can do when visiting Caribbean islands, including


When snorkeling, it would seem better to wear a full-face snorkel mask and a snorkel vest. The mask will give you better visibility and you don’t have to keep your mouth closed. The snorkel vest will easily keep you afloat while allowing your face to be submerged in the water. A life jacket, unlike a snorkel vest, will keep your head above the water, which is not what you want for snorkeling.

Full-face snorkel mask
Snorkel vest

Power snorkeling

Lounging in the water

Whether in a swimming pool or at the beach, these inflatable hammocks are great as they keep your head above the water but your body in it.

Jet ski tour

Explore the island by scooter

Catamaran tour


Ride a banana boat

Cruise around in a seabob

Mini Personal SUB

Other activities include

  • Snuba (with an “n”) diving
  • Scuba diving
  • Fishing
  • Horseback riding in the water
  • Dune buggy tour
  • Swimming
  • Playing at a water park with slides and wave pool
  • Exploring the island by foot, bike, scooter
  • Ziplining
  • Kayaking

Sint Maarten/Saint Martin

This island of Sint Maarten/Saint Martin is shared by 2 nations. Sint Maarten is Dutch and Saint Martin is French. It is the smallest inhabited island in the world. The entire island is just 37 square miles.

Some things to do there include


At Maho beach, you can watch commercial jet planes fly really low over your head as they come in for a landing.

The Royal Islander Club Resort La Plage is located next to the airport landing strip and has access to the beach where planes directly fly over.

Soualiga  Sky Explorer

The Sky Explorer is a chairlift attraction in St. Maarten. The ride is approximately 25 minutes long and takes riders to the top of Sentry Hill, the highest elevation in St. Maarten. The ride spans 2,997 feet and includes two lifts.

Flying Dutchman

The Flying Dutchman is the world’s steepest zip line! You’ll be attached to a flight line in a secure harnessed chair, launching you on the 1050-foot drop in elevation over 2800 feet to experience the ride of a lifetime.

Sentry Hill Zip Line

Schooner Ride

Melange Grill

This restaurant is similar to Brazilian BBQ and Korean BBQ.

  1. Select your Appetizer
  2. Choose your Salad
  3. Enjoy a continuous flow of grilled meats and Seafood right at your table with an assortment of sauces and sides !!

Horseback Riding (1-hour tour)

Lucky Stables at Seaside Nature Park offers a wide variety of tours and trail rides. Ride horses peacefully along one of the many trails that span this beautiful island. Or, ride into the sea with your horse and treat the animals to a cooling swim in the ocean!

Hiking Tour

The many trails at Seaside Nature Park can be explored easily with some water and sturdy hiking shoes while sharing in the extensive knowledge of a professional guide about the flora, fauna and history of the park.

Price starting at $ 10 per person per hour.

Guana Bay hiking tour: $39

Explore the boardwalk

Segway Tour

Explore the boardwalk by segway.

Jet Ski Tour

Jet Ski 30 min = $60
Jet Ski 60 min = $120
Jet Ski Tour 2 hours = $200

E-bike Tour

ATV Tour

Itinerary for Maximum Activities

People have different preferences when it comes to vacation. Some may want to just be a beach bum. Others may want to just do casual sightseeing. For me, I want maximum activity options and clean, turquoise beaches with fine white sand. I also want to go on a cruise because that in and of itself is an experience full of on-board fun activities. Since it’s not possible to cruise to the best beach in the world, Grace Bay Beach in Turks and Caicos, and since Perfect Day at CocoCay is the most developed cruise-owned island full of convenient vacation activities, I think my preferred itinerary would include Perfect Day at CocoCay. And since Nassau is nearby, is a common cruise port of call, and is a popular destination, it would also be on my itinerary. Sint Maarten is one particular island with a lot of fun activities as well, but it may not be possible to find a cruise that goes to all 3 locations. Plus, spending one day at Sint Maarten is likely not long enough. So, I think my preferred itinerary would be

  • Flight: Home > Miami (spend 0 to 3 nights)
  • Cruise:
    • Miami
    • Nassau (Atlantic AquaVenture, Cottage Beach, Downtown)
    • Perfect Day at CocoCay
    • Day at Sea
    • Miami
  • Flight: Miami > Sint Maarten (2 or 3 nights) > Miami
  • Flight: Miami > Home (spend 0 to 3 nights)

Here’s one actual itinerary.

4 Night Bahamas & Perfect Day Cruise

Ship: Royal Caribbean Freedom of the Seas

Mon, Feb 12, 2024Miami4:30 PM
Tue, Feb 13, 2024Perfect Day at CocoCay7:00 AM5:00 PM
Wed, Feb 14, 2024Cruising Day at Sea
Thu, Feb 15, 2024Nassau, Bahamas8:00 AM5:00 PM
Fri, Feb 16, 2024Miami6:00 AM

Pricing by Room Category:

Outside View$422

Note that the balcony is pretty small.

Atlantis Resort

  • Hotel room: Minimum 2-night stay: $270 – $359 / night.
  • Day Pass: $190 / person

There’s a hack to get access to Atlantis without spending 2 nights and paying a high price. If you stay at the Comfort Suites on Paradise Island, Bahamas, you’ll have full access to Atlantis, which is just a 3-minute drive away. As an example, the cheapest cost to stay at Atlantis on February 19. 2024 is $363 / night with a minimum 4-night stay. The cost to stay at Comfort Suites on the same dates is just $246 with no 4-night-minimum restriction.

Cruise Ports

Some cruise ports can accommodate multiple ships at the same time. The more ships there are, the more crowded the place will be. Therefore, it’s preferable to choose a trip with the fewest ships at your scheduled ports of call.


As you can see, the port at Nassau can accommodate up to 5 ships.

For the itinerary above, the ship “Freedom of the Seas” is scheduled to dock on Feb 14, 2024. The Nassau, Bahamas cruise terminal website shows the schedule by month. Here’s the schedule for February 2024. Unfortunately, it looks like the terminal will be full of ships that day.

Perfect Day at CocoCay

Perfect Day at CocoCay is owned by Royal Caribbean, so only their ships can dock there. The port is smaller. It can accommodate a maximum of 2 ships. For the itinerary above, the ship “Freedom of the Seas” is scheduled to dock on February 13, 2024. According to, there will be 2 ships that day.


Since many cruises depart from Miami and Miami itself is an interesting destination, it makes sense to spend some time there before or after going on a cruise.

Following are some things to do when visiting Miami.

Miami Hop-On-Hop-Off Bus

Go on a double-decker, open-air hop-on-hop-off bus and be taken around many of the tourist spots. This is an easy way to see a lot and get a sense of the area. Afterwards, you can spend time at individual spots you are interested in. There are many tour bus operators. BigBus, shown below, is just one of them.

Day Tour (Red Loop): $43

Stop #Location
1Bayside Marketplace
Island Queen Millionaire’s Row Cruise
Skyviews Miami
Miami Beach Boardwalk
2South Beach
Big Pink (restaurant)
Miami Beach Boardwalk
3Soundscape Park
Espanola Way
Museum Of Illusions
Miami Beach Boardwalk
4Indian Creek
Miami Beach Boardwalk
5Mid Beach / RIU Hotel
Miami Beach Boardwalk
6North Beach / Fontainebleu & Lexington Hotels
Miami Beach Boardwalk
7Design District / Midtown
8Wynwood Walls
9Downtown / Holiday Inn
Bayside Marketplace
Thriller Miami Speedboat Experience
10Little Havana
Learn more

Wynwood Walls

Unique outdoor destination featuring huge, colorful street murals by artists from around the globe.

Bayside Marketplace

Enjoy a drink along the water (or on it), snagging a seat at one of Bayside Marketplace’s big-name restaurants or setting off on a sunset cruise touring Biscayne Bay’s islands.

Lock & Load Museum

Look at all sorts of guns and practice shooting some.


Art + Technology Museum

Superblue Miami Immersive Art Experience

Explore a mirrored labyrinth, see digital worlds immersed in seasonal flowers and waterfalls, and watch your own heartbeat as it glows with 3,000 lights.

Airboat Everglades Tour

Thriller Miami Speedboat Experience

Learn more

Yellow path is Thriller Miami Speedboat Route

Jet Ski Tour

Wings Over Miami Air Museum

Skyviews Miami Observation Wheel

Miami Beach

Explore Miami Beach / South Beach by E-Bike or Segway

Fat tire e-bikes can ride on sand.

E-bikes are prohibited on all sidewalks in Miami Beach, including along the Beachwalk. They are also prohibited on South Pointe Park and Pier, Marina Baywalk, and Lincoln Road Mall.

However, Florida state law allows e-bikes to be operated in the same locations as regular bicycles. This means they can be ridden on: Roads, Bike lanes, Bike paths, Multi-use paths, Sidewalks.

If your e-bike is class 1 (or maybe 2) and limited to 20mph, you should be legally allowed on the beach.

Florida allows all classes of e-bikes, including Class 3 e-bikes — provided they don’t exceed speeds of 28 mph. The bike also can’t have an electric motor power with a wattage exceeding 750.

Miami Beach also has 11 miles of green bicycle lanes.

Free Miami Beach Trolley

From 8 a.m. to 11 p.m., 7 days a week at approximately 20-minute average service frequency along each route.


  • North Beach Loop
  • Middle Beach Loop
  • South Beach Loop (A and B)
  • Collins Express

Millionaire’s Row™ Cruise

Explore Miami aboard a fully-narrated bilingual sightseeing cruise along scenic Biscayne Bay – a top-rated thing to do in Miami! Cruise around Biscayne Bay and see the spectacular coastal sites including the beautiful downtown Miami skyline, the Port of Miami, Fisher Island, Miami Beach and “Millionaire’s Row™” – the Homes of the Rich and Famous™.

Learn More

The Phillip & Patricia Frost Museum Of Science

This is a science museum, aquarium and planetarium. The cutting-edge 250-seat Frost Planetarium takes you on visual joyrides that both thrill and educate. Though it might seem like you’re really hurtling through space or weaving through a coral reef or DNA strand, that ultra-real immersive experience is the result of a 16-million-color 8K visual system using six 3D-capable projectors and surround sound. The dome is tilted forward at 23.5 degrees, allowing its 67-foot span to fill your field of vision as if you’re flying—imagery comes at you from above, below and the peripheral edges, creating a nearly 360-degree view of whatever world you’re in.

Learn More

Espanola Way

Española Way is a historic street in Miami Beach, Florida. It’s located between 14th and 15th Streets, between Washington Avenue and Pennsylvania Avenue. It’s a pedestrian-only street with shops, galleries, restaurants, and bars. 

Museum Of Illusions


Experience stunning 3D illusions and art at the Museum of Illusions in Miami. Capture memorable, interactive photos and have fun with friends and family.

Lincoln Road Shopping District

Miami Beach’s Lincoln Road is one of the most unique shopping districts in the world,  full of stunning architecture, world-class culture and destination retail stores spanning 8 blocks.


How to Clearly Explain Website Update Requests

If you’re a non-technical person who is part of a marketing team working for a company that depends a lot on a website, chances are you will often need to ask a team of web developers to make website updates for you. Your particular website may not be easily updated using a content management system (CMS), and even if it could, many non-technical people would rather just send an email to request their website changes. Asking developers to update a website is fine, but only if the update requests are clear. Otherwise, the requestors risk wasting their time and other people’s as well. Unfortunately, the reality is most people don’t know how to clearly communicate their change requests. There are many website annotation tools that claim to be able to simplify the communication process, but in real-world situations, I haven’t found any that were good enough. Plus, adding a new tool requires learning something new, which many people are unwilling to do or don’t have time for.

In this post, I’ll share one approach that non-technical people can use to easily and clearly communicate website change requests to minimize misunderstandings, delays, and lots of back-and-forth messages. And since most people already know and are comfortable using MS Word or Google Docs, this approach only requires a word processor.

Website Sections

Most websites contain a vertical series of sections. For example, Adobe has a product page for its video editing software, Adobe Premier. This web page can easily be divided into a bunch of sections.

Change Request Doc

Since a picture is worth a thousand words, it’ll be a lot easier to show a screenshot of a section of a web page rather than try to explain the section using words. And since you may want to move some sections around, it’s helpful to number each section. And since you may collaborate with other people in requesting website changes, we’ll use MS Word or Google Docs for our change requests. I’m going to use Google Docs because I find it easier to use.

  1. Create a new Google doc
  2. Give it a name like “Adobe Premier Product Page Changes”.
  3. Change the page margins to 0.25″ on all sides
  4. Under View, uncheck “Show print layout” if it is checked.
  5. At the top of the doc, put the URL to the page, e.g.
  6. Insert a table containing 3 columns and 20 rows.
  7. In row 1, cell 1, enter “#”
  8. In row 1, cell 2, enter “SECTION”
  9. In row 1, cell 3, enter “CHANGES”
  10. In the first column, enter a consecutive number in each cell starting from 1 and make it narrow enough just for the numbers
  11. Take a screenshot of each section and paste them in the middle column
  12. In the right column, describe your change request.

Here’s an example.

View the sample Change Request Google Doc.

Israel-Palestine Conflict 2023: Israel Ignores the Rules of War and Behaves Like Their Terrorist Enemy

When terrorists attacked the United States on 9/11 by flying airplanes into the Twin Towers, they killed around 3,000 civilians. In response, the U.S. killed the terrorists, including Osama bin Laden. It took time, but it was done by following the rules of war and by carefully avoiding the killing of innocent civilians.

Read the Rules of War

In October of 2023, Hamas, a Sunni Islamist political and militant organization currently governing the Gaza Strip of the Palestinian territories headquartered in Gaza City, attacked Israel by killing around 1300 civilians and taking about 200 hostages. Israel, the US, and the EU designate Hamas as a terrorist organization, similar to the terrorist organization Al-Qaeda led by Osama bin Laden which was responsible for 9/11.

In response to Hamas’ attack on Israel, Israel responded by

  • calling Palestinian civilians in the Gaza Strip and giving them 10 minutes to evacuate to avoid being bombed
  • dropping 6000 bombs on dense residential buildings in Gaza
  • cutting off electricity, food, water, and fuel to residents of Gaza
  • blocking the border so that Gaza civilians can’t evacuate
  • preventing humanitarian aid from entering the Gaza Strip until the Israeli hostages are released

So far, the result of Israel’s response attack was the death of over 1000 civilians, a big percentage of which were women and children who had nothing to do with Hamas’ attack on Israel. (Update: As of Nov 3, over 9000 Gaza civilians have been killed by Israel).

While it is understandable and completely reasonable for Israel to defend itself and to retaliate when attacked, you’ll notice a big difference in how Israel and the US deal with “terrorists”. Unlike the US, which carefully avoided civilian casualties when going after Al-Qaeda, Israel appears to follow the rule of “an eye for an eye” rather than the international rules of war. The fact that Israel bombed so many buildings while people were sleeping and gave them only 10 minutes to leave is completely outrageous. Israel’s argument was that they were targeting members of Hamas, but for every member of Hamas killed, Israel probably killed 30 or so civilians. To make matters worse, Israel has blocked humanitarian aid from reaching those civilians as if Israel wants the civilians to suffer and die. In the video below, the president of Israel said that the entirety of Gaza, including civilians, was responsible for Hamas attacking Israel. He argues that civilians should have stopped Hamas. His mindset justifies the killing of civilians, including at least 1,000 children. Sadly, when Israel makes these outrageous statements, the international community, including the U.S., says and does nothing. It seems as though Israel is using this opportunity to ethnically cleanse Gaza of Palestinians under the guise of “self-defense”.


The Israeli government has clearly violated the rules of war and its actions are just as bad as the terrorist group Hamas, which they blame for starting the war.

Land Dispute

Everyone knows that the Palestinians have been living in Palestine for a long time. Since Jews in Europe were hated by others, treated unfairly, and even killed, they wanted a land of their own. So, they argued that they should go create their own state in Palestine for 2 reasons:

  1. they believe that God said it was their land according to the Jewish bible
  2. their ancestors lived there 2000 years ago

Both of these reasons are a joke. If someone came knocking on your door and said that they were going to take all or half of your house or your backyard for the reasons above, no one in their right mind, including a reputable court of law, would agree to it. Unfortunately, with the help of the British, Jews were able to just take land from the Palestinians and create the nation of Israel.

What Hamas Should Have Done

What Hamas did on Oct 7 was clearly inexcusable. There’s no justification for the killing of innocent civilians. It’s no wonder why some countries label Hamas a terrorist organization. When violence is used to achieve a goal, it’s hard to get support from the international community. What Hamas should have done is like what the Jews did when they took Palestinian land in the first place. The Jews would not have been successful without the help of the British. Likewise, Palestinians will not be successful without powerful and influential allies. Those allies could be neighboring states like Egypt, Syria, Lebanon, Jordan, Saudi Arabia, Iran, etc. When you have that type of support, war can be avoided. Israel would be under pressure to negotiate and Israel’s allies like the US would support talks over war. If Israel refuses to talk, then the Palestinian alliance could announce that they will peacefully reclaim the land that the Israelis took from them under their “right of return“. Upon exercising their “right of return, if the Israelis fight the Palestinians and people are killed, then the Israelis will be at fault. At that point, the alliance can give an ultimatum to Israel that if Israel doesn’t participate in peace talks to resolve land and governance disputes, then the alliance will retaliate for the people Israel killed. Israel would be surrounded by an alliance of countries supporting Palestine, and Israel would know that they would lose. Under these circumstances, the US and the West would find it difficult to justify supporting a war against an alliance of Arab states.

One-state or Two-state Solution

Some people support a one-state solution where both Jews and Palestinians share the same land. Others support a two-state solution like there sort of is now. I think a one-state solution is necessary to force the Jews and Palestinians to get along. It may take some time, but eventually they will get along. In the US, African Americans and Whites didn’t get along, but eventually they did. To be fair, the government in a one-state solution would have to comprise 50% Jews and 50% Palestinians.

As for the conflict between Saudi Arabia and Iran, they need to put aside their religious differences (Sunni vs Shia) while supporting Palestine.

Improve Music Audio Quality with a Wireless Bluetooth DAC+AMP

There are at least 3 major things that affect music audio quality:

  1. Speakers
  2. Audio source, e.g. mp3 file, FLAC file, etc
  3. Digital-to-Analog Converter (DAC)

Some people may argue that transmitting audio over Bluetooth degrades sound quality, but the reality is the difference is so small that it’s negligible.


Needless to say, quality speakers are necessary to hear music at a higher quality. Don’t expect to hear quality audio from cheap $10 earphones. Since I’m not an audiophile and I’m not interested in spending thousands of dollars just for speakers, I just have what I guess are prosumer speakers. Specifically, I have:

And since it makes no sense to buy them at full price, I buy them renewed on Amazon for a big discount because even renewed, they look and function exactly like they are brand new.

The WH-1000XM4 has a better sound stage, but it’s bulkier and leaks audio a lot. Also, it’s not great for working out because I feel it moves around too much and gets in the way of my workout. The WI-1000XM2 is compact, doesn’t leak audio, and can easily rest on my neck when not in use. The problem is when listening to music on my phone, the volume is often not high enough, especially when at the gym or when traveling by plane. This is where having an amplifier (amp) takes care of volume issues.

Audio source

I’ve dabbled with lossless FLAC files, but when compared to high-bitrate mp3 files, I personally can’t notice a big enough improvement to justify the cost and huge file size. I’m okay with mp3s as long as the bitrate is high enough. I normally just buy mp3s from Amazon Music. Don’t expect to hear quality audio from low-bitrate mp3s, though. The compression is too lossy.

Digital-to-Analog Converter (DAC)

Chances are you probably listen to music from your phone and sometimes from your laptop like me. The problem is the converters in them that convert digital audio signals to analog signals are likely of low quality. I have the Google Pixel 4a 5G smartphone. It’s a mid-range phone. But even if you have a high-end phone, the digital-to-analog converter (DAC) is most likely not as good as a dedicated DAC. Fortunately, there are small Bluetooth DACs that are lightweight and can clip onto your shirt. I tested the EarStudio ES100 MK 2 ($60 renewed, $80 new on Amazon).

When comparing the audio quality with and without this DAC, it’s clear that the DAC makes a decent, if not big, difference, depending on the song I’m listening to. The DAC is also an amplifier and can increase the volume to levels higher than I’d ever need it to be. It didn’t come with an aux cable, so I bought a short 4-inch one. The setup might seem complex, but it’s not that bad, especially if you’re just sitting for a long time, like on a long flight.

Instead of pairing your head/earphones to your audio source (phone, laptop, etc), you pair the DAC to it.

Though it has volume controls, I find it easier to adjust the volume from the phone app. It’s recommended to set the source volume (phone or laptop volume) to max and to adjust the analog (DAC) volume. The app has a lot of options and clear explanations, but I find the default settings to be sufficient.

Host PDFs in AWS CloudFront CDN and Enable Redirects Using CloudFront Functions & Lambda Functions

Many website files include PDFs. These PDF files are usually much larger than other file types and can take up a lot of space. You may want to keep all website files like images and PDFs (binary files) together with your HTML, CSS and JS files (text files) and put them all in version control, like GitHub, but there are downsides to this:

  1. Git version control is designed for text files, not binary files. Even though you can use Git LFS so you can version your binary files, there are simpler, better alternatives.
  2. Website images are better served from an image CDN like Cloudinary or ImageKit. These services will automatically and quickly optimize images on the fly.
  3. PDF files are better served from a CDN. Amazon AWS S3 can be used to store your PDFs with versioning and AWS CloudFront can serve those PDFs from a CDN. With CloudFront, you can also write a function to redirect one PDF file to another in case you need to delete a file.

As of this writing, the AWS CloudFront CDN has 218 global edge locations.

The steps below describe how to set up AWS S3 and CloudFront to host PDFs and to set up redirects.

Note: you can create redirects using AWS Lambda functions (launched in 2017), but they are more complicated and cost 6 times as much as the cost of CloudFront functions (launched in 2021). Learn more.

1. Create an S3 bucket

Log in to the AWS console, go to S3, and click “Create bucket”. Choose a bucket name like “pdfs”.

Since you want people to be able to access the PDFs, uncheck “Block all public access” and check “I acknowledge that the current settings might result in this bucket and the objects within becoming public.”

If you want, click the radio button that enables versioning

Ignore the other options, if you want, and then click the “Create bucket” button.

2. Upload PDFs

You can drag and drop your PDFs to upload them. If you have many PDFs, like thousands, then it’s better to use the AWS CLI S3 Sync command.

As a test, I just uploaded 2 PDF files/

3. Create a CloudFront Distribution

In the AWs console, go to CloudFront and click “Create Distribution”. For “Origin domain, choose the Amazon S3 bucket you created in step 1.

For the viewer protocol policy, choose “Redirect HTTP to HTTPS” since that’s a good policy IMO.

Ignore all other options, if you want, and click the “Create Distribution” button.

Now, the PDF files in your S3 bucket will be available in a CDN at the CloudFront domain provided, e.g.

4. Create a CloudFront Function to Redirect Requests

Click on the distribution and then click on “Functions” in the left sidebar.

Click the “Create Function” button and enter a name for the function, e.g. “Redirects”.

You will see 3 tabs: Build, Test, and Publish.

In the “Build” tab, enter the code below and customize as needed.

Note that there is a 10 KB limit on the size of your CloudFront function.

Click the “Save Changes” button and then click the “Test” tab. You will see a field labeled “URL Path” with a default value of “/index.html”.

Since we don’t have a redirect rule for that URL path, we don’t expect any redirection to happen. Click the “Test Function” button. You will see output like below indicated that the response URI is “/index.html” as expected.

Now, change the URL path to one you have a redirect for. In my example code, I am redirecting “/test-pdf-2.pdf” to “”. Click the “Test Function” button. The output shows “”.

Now, publish the CloudFront function. Click the “Publish” tab, then click the “Publish Function” button.

Click “Add Association” to associate the function to your distribution. Choose your distribution in the Distribution field. Leave Event Type as “Viewer Request” and ignore Cache behavior. Click the “Add association” button.

Note that you can only have one CloudFront function for a given cache behavior and event type.

Wait for the function to be deployed. Go back to the function list page and check the status column. It will say “Updating” for a few minutes.

Wait a few minutes. Reload the page. The status should change to “Deployed”.

Now, test out the redirect in production by going to the CloudFront URL of a path you have a redirect for. You should see the redirect work.

Using Lambda Functions

Make sure the location is set to us-east-1.

Go to the Lambda page and click “Create function”.

  1. Enter a name for your function.
  2. Under “Execution Role”, choose “Create a new role from AWS policy templates”
  3. Enter a role name
  4. Under “Policy Templates”, choose “Basic Lambda@Edge permissions (for CloudFront trigger)”. This is IMPORTANT. Do NOT choose “Create a new role with basic Lambda permissions”.

In the “Code” tab, enter the redirect code below and then click File > Save.

In order to test your code, you must deploy it first. Click the Deploy button.

  1. Test your code by clicking the “Test” tab
  2. Choose “Create new event”
  3. Enter a name for the test
  4. Replace the event JSON with relevant test data, e.g.
  "Records": [
      "cf": {
        "config": {
          "distributionId": "EXAMPLE"
        "request": {
          "uri": "/docs/test-pdf-2.pdf"
        "response": {
          "status": "302",
          "statusDescription": "Found",
          "headers": {
            "location": [
                "key": "Location",
                "value": ""

Click the “Save” button and then the “Test” button.

You will either see an error or a success response similar to what’s shown below.

Under “Actions”, click “Deploy to Lambda@Edge”. This will deploy the Lambda function to the CloudFront edge network.

  1. Choose your CloudFront distribution from the dropdown list.
  2. For CloudFront event, choose “Origin Response”.

The green banner will state that the function is being replicated, but that it will take a few minutes to complete.

Go to the CloudFront distribution. You’ll see the status “Deploying”. Wait till it changes to a date/time indicating the deployment has completed.

Invalidate the CloudFront cache for all objects using /*

When the trigger is created, it will create a new Lambda function version. Click on the “Versions” tab and then click the version number to see that the trigger is saved in the version.

You will then see the CloudFront trigger in the diagram and other saved details.

Test the redirect using the cURL command.

If you need to remove a Lambda function from a Cloudfront distribution,

  1. go to the distribution
  2. click “Behaviors”
  3. choose a behavior and click “Edit”
  4. Scroll down to “Function Association” and select “No association” for the function type
  5. Click “Save changes”
  6. Invalidate the Cloudfront distribution using /*

Put Redirect Data in an External JSON File

The instructions above work, but whenever you want to update the redirects, you have to edit the lambda JavaScript function and redeploy it to the Cloudfront edge. The deployment process takes about 5 minutes. To improve this process, we can move the redirect data to a JSON file in an S3 bucket. Then, you can just upload an updated JSON file, overwriting the existing file, and the updated redirects will work immediately. Here’s how to do that.

Create a JSON file containing all redirects like the following and upload it to S3.

  "/file1.pdf": { "to": "/file2.pdf", "statusCode": 301 },
  "/resources/file3.pdf": { "to": "/resources/file4.pdf", "statusCode": 301 },
  ... etc. ...

Add permissions to the lambda function to have read access to S3. Go to Lambda > Functions > and click on the function name. Then, go to Configuration > Permissions > Execution Role > and click on the role name.

A new tab containing the role’s permission will open. Under “Permissions policies”, click on the policy name.

That will open a new tab showing the permissions defined in the policy. Click the Edit button.

A new table will open showing the existing permission. Add the following S3 permissions. Replace “mybucket” with the name of the S3 bucket where you put the JSON redirect file.

"Effect": "Allow",
	"Action": [
	"Resource": [

The entire JSON object may look like this.

	"Version": "2012-10-17",
	"Statement": [
			"Effect": "Allow",
			"Action": [
			"Resource": [
			"Effect": "Allow",
			"Action": [
			"Resource": [

Back at the lambda function page, click on the Code tab and update the code as follows:

Replace the first 3 constant values with your S3 bucket’s region, bucket name and the path to the redirect JSON file.

const REDIRECTS_DATA_REGION = 'us-east-1';
const REDIRECTS_DATA_OBJECT = 'docs/pdf-redirects.json';

Click “Deploy” so you can test the lambda function. Once you verify it is working, go to Actions > Deploy to Lambda Edge. Follow the remaining steps as shown above.



Passing UTM Name/Value Pairs to Specific Links on a Website

Adding UTM parameters to links is useful for tracking marketing efforts, e.g. if you have a banner or an email with links to a landing page, you’ll want to know which method (banner or email) generated the most page visits and form fills. Google has a campaign URL builder that will generate URLs with UTMs for you. In Google Analytics, you can find pageviews to the landing page by UTM parameter. However, if you want to track any subsequent pages after the landing page, then you’ll need a way to pass the UTMs along to the subsequent pages. In my particular situation, I needed to pass UTMs to a 3rd-party site. The visitor flow would be like this

  1. Click a banner on the home page of The banner has UTMs in the query string, e.g.
  2. Land on an overview page on, e.g.
  3. Maybe visit other pages on
  4. Return to
  5. Click a link to register for something on a 3rd-party site, e.g.

By default, only the first pageview of would include UTMs in the URL. To pass the UTMs to the link to the 3rd-party site, something extra needed to be done. I chose the following approach, which works well.

  1. Write JavaScript code that runs on all pages.
  2. If a URL contains UTM params, save the UTM name/value pairs as session cookies, overwriting any existing UTM cookies.
  3. If a page has any <a> tags with the class “appendUTM”, then rewrite the href value by appending the UTM params.

I then added the class “appendUTM” to any links where I wanted to append the UTMs. In my case, it was the links to the 3rd-party registration site.

Below is the code that accomplishes this.