GA4: Find Previous Page Path in Google Analytics

Things have definitely moved around and look different in the UI for GA4 (Google Analytics v4) vs UA (Universal Analytics). If you’re looking how to find pages that link to a particular page (previous page path), then you need to use Path Exploration.

Explore > Path Exploration

If you see an existing path exploration, click “Start Over”. Then, click “Ending Point” and choose an option. I prefer to choose “Page path and screen class” since page paths are easy and unique to get.

You can then choose one of the available paths or click the magnifying glass to type in a path, e.g. /resources/.

You will then see how often people click on a link on a page that takes them to your ending point (page) within a particular time range.

In the Variables section on the left, you can change the date range and other variables.

Web Designer Interview Questions

  1. From a web design point of view, what do you think of  
    1. Are you currently employed? If so, why are you looking for another job? 
    1. What have been your key responsibilities as a web designer? 
    1. Describe your experience designing websites. 
    1. How familiar are you with HTML and CSS? 
    1. Do you have a portfolio of web designs? 
    1. Have you created any websites yourself, whether from scratch or from WYSIWYG tools like Webflow? 
    1. On a scale of 1-10, with 10 being the most proficient, rate your proficiency in Photoshop. 
    1. On a scale of 1-10, with 10 being the most proficient, rate your proficiency in Figma. 
    1. Do you have a portfolio of websites you’ve designed? 
    1. Do you use a grid system when you create designs? 
    1. What is a responsive web design? 
    1. Are you familiar with website breakpoints? 
    1. What are some bad examples of web design? 
    • An outdated or inadequate web design. 
    • Poor website navigation. 
    • Convoluted or unclear user journeys. 
    • Excessive use of images, icons, colors, and textures. 
    • Poor quality images. 
    • Mobile optimization is not available. 
              1. What’s the web design project you’re most proud of? 
              1. Describe your end-to-end process when working on a web design task. 
              1. Have you ever been involved in a complete website redesign project? 
              1. Describe what UX is and why it is important. 
              1. Describe your experience with website animation. 
              1. Do you have experience designing icons from scratch or editing existing icons or do you rely solely on a library of premade icons? 
              1. Do you have experience creating vector images from scratch, e.g. using Adobe Illustrator? 
              1. Have you created any animations using Adobe AfterEffects? 
              1. When designing for web, have you leveraged any website component libraries like Tailwind UI and Flowbite? 
              1. A common workflow we have is to take a Word document containing web page content and turn it into a web design in Figma. Is this something you can do? 
              1. Unlike print designs, websites are living documents, meaning that the content, whether text or images, often changes. As such web designs need to be versatile to accommodate such changes. For example, if a design calls for a box containing paragraph with 5 lines of text, e.g. a customer quote, that same design may not look good the customer was replaced with one spanning 10 lines of text. Do you have experience facing such web designs issues? 
              1. Have you worked with any website templates before? 
              1. Describe your level of passion for web design. 
              1. How do you keep abreast of web design trends, e.g. do you follow certain groups, attend conferences, read certain blogs, etc? 
              1. The marketing department at Qualys is very fast-paced with many last-minute requests. Do you have experience in and would you be comfortable in such an environment? 
              1. Do you have experience designing marketing websites and/or landing pages to drive signups? 
              1. Do you have experience designing websites with SEO in mind?  
              1. Qualys is a multi-national company with offices around the world. Sometimes, you may need to work outside of normal business hours. Is that okay for you or do you have a strict 9-5 schedule? 
              1. Where do you go for design inspiration? 
              1. Are there certain websites that you particularly like the design of, e.g. apple.com, yahoo.com, etc? 
              1. Please take 15 mins to make a list of design choices you like and dislike on www.qualys.com and explain why.
              1. Describe a web design project you worked on that didn’t go as planned. What could you have done better? 
              1. Do you have experience with ADA compliance as it pertains to web design, e.g. 
              • Color contrast 
              • Accessibility of web forms 
              • Etc  
                  1. What tools do you use the most when designing? 
                  1. Some designs are full-width. How do you handle such designs if a user’s monitor is very wide? 
                  1. When designing for web, do you prefer to start with a mobile design (mobile-first design) or a desktop design? 

                  Programmatically Convert a Large Static HTML Website Into One with Header and Footer Partials

                  Let’s say you’ve inherited a large website that uses some home-grown static site generator (SSG) and there’s no documentation. Your build and release infrastructure is fragile and also custom. Your git repo is massive with content from two decades, including lots of binary files. You want to migrate this massive piece of shit to a popular SSG like Eleventy and you want to use a reliable deployment system like GitHub + Netlify. Let’s say you can’t migrate all source files because there’s no easy way to do so between your custom SSG and Eleventy. If you’re willing to sacrifice most of your layouts and partials (includes) and just migrate everything all of the built static files to Eleventy with one partial for the header and one for the footer, then here’s one way to do it.

                  1. Copy Your Static Site to a New Folder

                  If you don’t have access to the SSG and the web servers, you can download the whole website from the internet using wget.

                  If your website is on WordPress, install the Simply Static plugin and export your site to a zip file (free).

                  2. Copy the Header and Footer Code Blocks to Separate Files

                  Let’s say your HTML looks something like this.

                  <html>
                  <head>
                  	...
                  </head>
                  <body>
                  <header class="header">
                  	<div>Logo</div>
                  	<ul>
                  		<li>Link 1</li>
                  		<li>Link 2</li>
                  	</ul>
                  </header>
                  <section>
                  	<p>Hello, World!</p>
                  </section>
                  <footer class="footer">
                  	<p>Copyright 2024</p>
                  	<div>blah blah blah</div>
                  </footer>
                  </body>
                  </html>

                  In this case, you can create separate files like this:

                  /includes/header.njk

                  <header class="header">
                  	<div>Logo</div>
                  	<ul>
                  		<li>Link 1</li>
                  		<li>Link 2</li>
                  	</ul>
                  </header>

                  /includes/footer.njk

                  <footer class="footer">
                  	<p>Copyright 2024</p>
                  	<div>blah blah blah</div>
                  </footer>

                  3. Search and Replace the Header Code Block with a Include

                  For simplicity, let’s say that your HTML looks something like this:

                  <html>
                  <head>
                  	...
                  </head>
                  <body>
                  <div class="header">
                  	<div>Logo</div>
                  	<ul>
                  		<li>Link 1</li>
                  		<li>Link 2</li>
                  	</ul>
                  </div>
                  <section>
                  	<p>Hello, World!</p>
                  </section>
                  <div class="footer">
                  	<p>Copyright 2024</p>
                  	<div>blah blah blah</div>
                  </div>
                  </body>
                  </html>

                  If your header and footer code blocks don’t use unique HTML tags like “header” and “footer”, then you may have a problem searching and replacing these code blocks. For example, in VS Code, if I try to select the header block beginning with <div class="header">, I can’t do so due to the nested div tag.

                  Using the regex

                  <div class="header"(.|\n)*?</div>

                  notice how the selection ends prematurely at the closing nested div tag. In this situation, you can update your source code to replace the open and closing div tags with the standard <header> tag. You can do the same with the footer by using the <footer> tag. After updating the source code, you can rebuild your static HTML pages and then use a regex like

                  <header(.|\n)*?</header>
                  <footer(.|\n)*?</footer>

                  to search and replace the header and footer code blocks with a code reference that includes those code blocks using whatever template engine you want to use.

                  If you want to use the Nunjucks template engine, for example, then you can replace those code blocks with something like

                  {% include "header.njk" %}
                  {% include "footer.njk" %}

                  4. Rename file extensions

                  Rename all HTML files so their extensions are .njk instead of .html.

                  brew install rename
                  find . -name "*.html" -exec rename 's|\.html|\.njk|' {} +

                  5. Install an SSG

                  Create a new folder and install an SSG. In this case, I’ll install Eleventy.

                  mkdir mysite 
                  cd mysite
                  npm init -y
                  npm install --save-dev @11ty/eleventy

                  Move your website files to your new Eleventy project. To follow Eleventy’s default conventions, your folder structure should look something like this.

                  Note that we put the header and include partials in the “_includes” folder under the “src” folder. Therefore, our header and footer include references should be updated to look like this

                  <html>
                  <head>
                  	<title>Home Page</title>
                  </head>
                  <body>
                  {% include "src/_includes/header.njk" %}
                  <section>
                  	<p>Hello, World!</p>
                  </section>
                  {% include "src/_includes/footer.njk" %}
                  </body>
                  </html>

                  6. Test

                  If you don’t create an Eleventy config file, then Eleventy will use all of its defaults and output built files to a “_site” folder and it will build the partials as well.

                  Since we don’t want to build the partials, let’s create an Eleventy config file.

                  7. Create an Eleventy config file

                  In the project root, create a file called .eleventy.js with the following content.

                  module.exports = function(eleventyConfig) {
                  	eleventyConfig.addPassthroughCopy("src", {
                  		//debug: true,
                  		filter: [
                  			"404.html",
                  			"**/*.css",
                  			"**/*.js",
                  			"**/*.json",
                  			"!**/*.11ty.js",
                  			"!**/*.11tydata.js",
                  		]
                  	});
                    
                  	// Copy img folder
                  	eleventyConfig.addPassthroughCopy("src/img");
                  
                  	eleventyConfig.setServerPassthroughCopyBehavior("copy");
                  
                  	return {
                  		dir: {
                  			input: "src",
                  			// ⚠️ These values are both relative to your input directory.
                  			includes: "_includes",
                  			layouts: "_layouts",
                  		}
                  	}
                  };

                  If you rerun Eleventy, you’ll see that the partials are not built and copied to the output folder.

                  8. Create a layout (optional)

                  If you want your page content to be wrapped in other content, you can create a layout. This is called template inheritance. Both Nunjucks and 11ty have their own template inheritance mechanism. With Nunjucks, you inherit a parent template using 

                  {% extends "parent.njk" %}. 

                  With 11ty, you inherit a parent template using front matter, e.g.

                  ---
                  layout: parent.njk
                  ---

                  Nunjucks supports template blocks natively, but it doesn’t support front matter. 11ty supports front matter, but it doesn’t support template blocks natively. Learn more about creating a layout using 11ty’s template inheritance mechanism.

                  9. Change absolute links to relative ones

                  If you have absolute links to the same site, you should replace them with relative ones, e.g.

                  https://www.mysite.com/products/ -> /products/

                  You can do this easily in VS Code’s search and replace feature.

                  10. Move all images to AWS S3 and an image CDN like ImageKit

                  If your website images are local, I would move them to AWS S3 and then use the S3 URL as a custom origin to pull the images into an image CDN like ImageKit or Cloudinary. If your site is in WordPress, the images will be in the wp-content/uploads folder. You can then do a global search and replace to reference the image CDN URL.

                  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 https://events.govexec.com/qualys-cyber-risk-conference/
                  • The -p flag means download all page requisites, such as images, stylesheets, etc.
                  • The -r flag means recursive.

                  Note that wget will crawl a website to download pages and dependencies. If a page is not linked, whether directly or indirectly from the URL passed to the wget command (an orphan page, it will not get downloaded. One option is to make a list of all URLs (one per line) by getting them from the websites sitemap, assuming the sitemap is complete, and passing that list to the wget command, e.g.

                  wget -p -r --input-file=download-list.txt

                  If download stops, you can continue using the command

                  $ wget -p -r --continue --input-file=download-list.txt

                  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:

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

                  Note: these regexes only work if the tags don’t have any nested tags with the same name.

                  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

                  Shrugs

                  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

                  Sources

                  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 dumb as hell. 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 within a few days if not hours, 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., the 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 of the actual work that they’ve discussed in the meetings. Another problem with these types of periodic (weekly or monthly) status update meetings is people are forced to try to remember their activities or accomplishments, put them in a few Powerpoint slides, and then wait till the meeting happens, only for the activities to become old news because they happened too long ago.

                  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, 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 group chat, 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 gives people time to think about a particular update and follow up with relevant people if needed. It also allows anyone, not just team leads, to post important updates as soon as they happen.

                  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.

                  friday

                  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.

                  Switchboard

                  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.”

                  BetterMeetings

                  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.

                  Amanet

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

                  Saudi Arabia Trip 2025

                  Weather by Month

                  Sunrise & Sunset

                  SunriseSunset
                  May 11, 20255:46 AM6:53 PM
                  May 19, 20255:43 AM6:56 PM

                  Itinerary at a Glance

                  Saturday, May 10 – Fly to KSA

                  Start TimeEnd TimeActivity
                  4:21 PM5:49 PMFly from SF (SFO) to Los Angeles (LAX)
                  5:49 PM9:00 PM3-hour layover at LAX
                  9:00 PMFly from LAX to Jeddah, KSA

                  Sunday, May 11 – Fly to KSA

                  Start TimeEnd TimeActivity
                  10:20 PMLand in Jeddah, KSA
                  11:00 PM11:30 PMDriver takes us from airport to Luli’s house

                  Monday, May 12 – Medinah

                  Start TimeEnd TimeActivity
                  7:00 AM8:00 AMBreakfast at … (Shakshouka, Roz Bi-Laban)
                  8:30 AM9:00 AMUber from Luli’s house to Jeddah airport train station
                  10:00 AM11:45 AMBullet train from Jeddah airport to Medina ($62)
                  12:00 PM12:30 PMUber from train station to the Prophet’s mosque
                  12:30 PM1:00 PMLunch at Al Baik (in front of mosque)
                  1:00 PM4:30 PMVisit the Prophet’s mosque
                  4:30 PM5:30 PMDinner at …
                  5:30 PM6:00 PMUber to train station
                  7:00 PM8:48 PMBullet train from Medina to Jeddah ($62)
                  9:00 PM9:30 PMUber to Nawal’s house

                  Tuesday, May 13 – Mecca

                  Start TimeEnd TimeActivity
                  Breakfast at … (Shakshouka, Roz Bi-Laban)
                  9:00 AMHired driver (Ali) picks us up at Nawal’s house. Bring all bags.
                  9:00 AM10:00 AMDrive from Nawal’s house in Jeddah to Farida’s house in Mecca
                  10:00 AM10:30 AMRest / chat with Farida
                  10:30 AM11:00 AMLeave small bags at Farida’s house. Drive to Miqat of Tan’im (Masjid-e-Aisha) 7.5 KM away from Masjidil Haram.
                  11:00 AM11:30 AMPray sunnah with intention to do umrah
                  11:30 AM12:00 PMDrive to Masjid Al-Haram
                  12:00 PM3:00 PMDo umrah (tawaf and sa’i). Driver drives back to Jeddah and drops off our luggage at Riyadh’s house.
                  3:00 PM4:00 PMLunch at Al Shorfa (next to mosque)
                  4:00 PM 4:10 PMUber to Farida’s house
                  8:00 PM9:00 PMBullet train from Mecca to Jeddah airport ($34)
                  9:00 PM9:30 PMUber to Riyadh’s house
                  10 PM11 PMBuy Baklava at Baklavaci بكلافجي

                  Wednesday, May 14 – Jeddah

                  Start TimeEnd TimeActivity
                  8:00 AM9:00 AMBreakfast at Maison De Zaid دار زيد
                  12:00 PM1:00 PMLunch at Ulfat Mutabbaq
                  3:00 PM4:00 PMDrive to Arabian Treks Campground
                  4:00 PM9:00 PMDesert Safari (includes dinner)
                  9:00 PM10:00 PMDrive back to Jeddah

                  Thursday, May 15 – Jeddah

                  Start TimeEnd TimeActivity
                  8:00 AM9:00 AMBreakfast at … (Shakshouka, Roz Bi-Laban)
                  12:00 PM1:00 PMGo to Marina
                  1:00 PM7:00 PMPrivate boat ride to Bayada Island in the Red Sea
                  9:00 PM10:00 PMDinner at Al Nakheel Lebanese restaurant

                  Friday, May 16 – Jeddah

                  Start TimeEnd TimeActivity
                  6:00 AM9:00 AM
                  2:00 PM3:00 PMLunch at Saraya Latif Turkish restaurant
                  5:30 PM6:00 PMUber to Al-Balad
                  6:00 PM6:30 PMCoffee at Roshan Cafe
                  6:30 PM8:30 PMJeddah Old Town Walking Tour (Al-Balad)

                  The place comes alive at night, so best to go right before sunset, which is at 7 PM.
                  8:30 PM9:00 PMDinner at Al-Basali Seafood Restaurant in Al-Balad
                  9:00 PM10:00 PMWalk the Jeddah corniche at night / Jeddah Yacht Club

                  Saturday, May 17 – Jeddah

                  Start TimeEnd TimeActivity
                  9:00 AM10:00 AMBreakfast at Twenty Four Restaurant
                  12:00 PM1:00 PMBuy Baklava to bring home
                  1:00 PM2:00 PMLunch at …
                  3:30 PM8:00 PMOff-Road Dirt Bike Tour in Bahrah
                  9:00 PM10:00 PMDinner at Al-Romansiah Saudi Restaurant

                  Sunday, May 18 – Jeddah

                  Start TimeEnd TimeActivity
                  Breakfast at … (Shakshouka, Roz Bi-Laban)
                  8:00 AM11:00 AME-bike along the corniche
                  12:00 PM1:30 PMLunch at Asli Basha Turkish restaurant
                  4:00 PM5:00 PMRed Sea Rush Boat Ride
                  5:00 PM5:30 PMJet skiing in the Red Sea
                  8:00 PM9:30 PMDinner at Khayal Turkish restaurant

                  Monday, May 19 – Fly to USA

                  Start TimeEnd TimeActivity
                  6:00 AMGo to airport
                  9:50 AM4:05 PMFly from Jeddah to Los Angeles
                  4:05 PM6:55 PM3-hour layover in Los Angeles 
                  6:55 PM8:15 PMFly from Los Angeles to San Francsisco

                  Saturday, May 10, 2025

                  Fly from San Francisco to Los Angeles

                  Fly from Los Angeles to Jeddah, Saudi Arabia

                  Sunday, May 11, 2025

                  Drive from Jeddah airport to Luli’s house

                  Luli’s house

                  Monday, May 12, 2025

                  Uber from Luli’s house to Jeddah airport train station

                  Bullet train from Jeddah to Medina

                  Lunch at Al Baik – The KFC of Saudi Arabia

                  BBQ Baik
                  4-piece chicken meal
                  Falafel

                  Visit the Prophet’s Mosque

                  Bullet Train from Medina to Jeddah

                  Drive (Uber) from Jeddah airport train station to Nawal’s House

                  Tuesday, May 13, 2025

                  Drive from Nawal’s house in Jeddah to Farida’s house in Mecca

                  Drive to Miqat Tan’im (Masjid Aisha)

                  Drive to Masjid Al-Haram

                  Umrah

                  1. Go to the miqaat location (per tradition, not Quran)
                  2. Wear 2 white pieces of fabric (men only, per tradition, not Quran)
                  3. Make the intention to perform Umrah
                  4. Recite the Talbiyah
                    Labbayka Allahumma labbayk, labbayka la sharika laka labbayk. Inna al-hamd wa\’l-ni\’mata laka wa\’l-mulk, la sharika lak
                  5. Go to Masjid Al-Haram
                  6. Pray 2 raka’ats
                  7. Perform Tawaf (circumambulate the Kaa’ba counterclockwise ) (7x per tradition, 1+x per Quran)
                  8. Perform Sa’i (walk between Safa and Marwa starting at Safa) (7x per tradition, 1+x per Quran)
                  9. Done

                  Lunch in Mecca near Masjid Al-Haram

                  Al Shorfa

                  Drive (Uber) from Masjid Al Haram to Farida’s House

                  Drive (Uber) from Farida’s house to train Station

                  Bullet train from Mecca to Jeddah airport train station

                  Drive (Uber) from Jeddah airport train station to Tante Zahra & Rushdi’s House

                  Riyadh’s House

                  Buy Baklava at بكلافجي

                  Wednesday, May 14, 2025

                  Lunch: Saudi Martabak at Ulfat Mutabbaq

                  • Google Map
                  • Hours: 2 PM – 2 AM
                  • Hira St, An Nahdah, Jeddah 23523, Saudi Arabia

                  Drive to Arabian Treks Campground

                  Desert Safari

                  Dune bashing
                  Sandboarding

                  Thursday, May 15, 2025

                  Private Mini Yacht From Jeddah Marina to Bayada Island

                  Galeon 340 Fly boat
                  Top deck (seating at top)
                  Middle deck (seating at back, seating in middle, seating on front deck)
                  Bottom deck (3 bedrooms, 1 shower room, 1 toilet room)
                  Middle deck, showing stairs to go to top deck
                  Middle deck
                  Middle deck, showing opening to lower deck
                  Lower deck, master bedroom
                  Lower deck, 2nd bedroom
                  Lower deck, 3rd bedroom
                  Lower deck, shower room
                  Lower deck, toilet room
                  1. Play music using Bose portable speaker
                  2. Lip sync Cest La Vie at various scenes
                  3. On boat, change into captain outfit and make video tour of the yacht
                  4. Take pic looking out using binoculars
                  5. Give everyone plastic champagne glasses and pour apple cider
                  6. On boat, change into rastafarian hair and make video eating baklava in master bedroom or on front deck of boat
                  7. Upon arriving at Bayada, take a group photo using the 10′ selfie stick with everyone standing on the front deck of the boat. Take both a video and interval photos.
                  8. Get on inflatable lounger and float around boat while sipping on apple cider
                  9. Have Riyadh jump into the water near me to make me fall off the lounge
                  10. Take turns jumping into water from boat
                  11. Everyone jump into the water at the same time
                  12. Go snorkeling

                  Lebanese Dinner at Al Nakheel Restaurant

                  • Google Map
                  • Hours: 5 PM – 1 AM
                  • حي, Al Kurnaysh Br Rd, Ash Shati, Jeddah 23413, Saudi Arabia
                  • Do this at night because there is outdoor seating.

                  Friday, May 16, 2025

                  Turkish Lunch at Saraya Latif

                  Historic Jeddah – Al Balad Walking Tour

                  This neighborhood is from the 7th century.

                  Google Map

                  Bab Makkah – باب مكة

                  Google Map

                  Souq Bab Makkah – سوق باب مكه

                  Google Map

                  Al-Basali Seafood Restaurant – مطعم البصلي للاسماك والمأكولات البحرية

                  Google Map
                  Hours: 1 PM – 11:30 PM

                  Al-Basali Seafood Restaurant
                  Al-Basali Seafood Restaurant
                  Al-Basali Seafood Restaurant
                  Al-Basali Seafood Restaurant

                  Souq Al-Badu – سوق البدو

                  Google Map

                  Al-Matbouli House – بيت المتبولي

                  Google Map

                  Souq Al-Alawi – سوق العلوي

                  Google Map

                  Al-Shargi House – البيت الشرقي

                  Google Map

                  Zawiya 97 – زاوية ٩٧

                  Google Map

                  Nassif House – بيت نصيف

                  Google Map

                  Noorwali House – بيت نورولي

                  Google Map

                  Jumjoom House – بيت الجمجوم

                  Google Map

                  Shaikh Ibrahim Ahmad Abu Hamaa’il House – بيت الشيخ ابراهيم احمد ابو الحمائل

                  Google Map

                  Antique Houses

                  Google Map

                  Fizwan House – بَيت فَرْوان

                  Google Map

                  Jeddah Historic District

                  Google Map

                  Roshan Cafe – روشان كافية

                  Google Map

                  Have Saudi coffee on the rooftop of Roshan Cafe

                  Take a picture like this

                  Baeshan’s House – بيت باعشن

                  Google Map

                  Saloom’s House – بيت سلوم

                  Google Map

                  Souq Al-Nada – سوق الندى

                  Google Map

                  Qabel Trail – شارع قابل

                  Google Map

                  The following houses are a little bit out of the way.

                  Al-Sharbatly House – بيت الشربتلي

                  Google Map

                  Barghoutah House – بيت برغوته

                  Google Map

                  Walk the Jeddah corniche at night

                  King Fahd Fountain (turns on at sunset)
                  Al-Rahmah Floating Mosque
                  Jeddah Yacht Club and Marina

                  Saturday, May 17, 2025

                  Breakfast Buffet at Twenty Four Restaurant

                  Off-Road Dirt Bike Tour in Bahrah

                  Bikes

                  Morning tour: 6 AM – 9 AM
                  Afternoon tour: 3:30 PM till sunset (7 PM)

                  Cost: 500 SAR ($133)
                  Includes bike, helmet, body protection.
                  Does not include transportation to and from Bahrah.

                  Contact

                  • Hassan Hawsawi
                  • WhatsApp: +966 59 006 6986
                  Yamaha YZ450F
                  Honda CRF450R
                  Kawasaki KX 250F
                  Kawasaki KX 250F

                  Saudi Dinner at Al-Romansiah Restaurant الرومانسية -البوادي

                  • Google Map
                  • Hours: 10:30 AM – 12:30 AM
                  • Qouraish, Al Bawadi, Jeddah 23443, Saudi Arabia
                  • Menu
                  Chicken Mandi
                  Chicken Kabsa
                  Jareesh

                  Take a picture like this

                  Sunday, May 18, 2025

                  E-bike along the corniche

                  Turkish Lunch at Asli Basha

                  • Google Map
                  • Hours: 1 PM – 2 AM
                  • 8006 صفيه بنت عبدالمطلب, An Naim District, JENF2777، 2777, Jeddah 23621, Saudi Arabia

                  Red Sea Rush Boat Ride

                  Jet Skiing in the Red Sea

                  Ride jetskis along the coast

                  Turkish Dinner at Khayal Restaurant

                  • Location 1 – Al Zahra
                  • Location 2 – Outside Cenomi Mall of Arabia
                  • Hours: 12:30 PM – 3 AM
                  • Menu
                    • Cucumber Yogurt Salad
                    • Iskander Kebab (beef)
                    • Khayal Grill Mix
                    • Layers juice
                  Khayal Grill Mix, Layered Juice Drink, Iskendar Kebab
                  1/2 meter or 1 meter kabab
                  Mixed Grill
                  Iskendar Kebab
                  Cucumber Yogurt Salad

                  Monday, May 19, 2025

                  6:00 AM – Go to airport

                  Terminal 1

                  9:50 AM – Fly from Jeddah to Los Angeles

                  Other Food and Restaurants

                  Shakshouka

                  Roz Bi-Laban

                  Turkish Dinner at Bursa Iskendar

                  • Google Map
                  • Hours: 12 PM – 2 AM
                  • 3195 Muhyi Ad Din An Nadhir, Al-Hamra’a, Jeddah 23212, Saudi Arabia

                  Pakistani Lamb Chops at Marhaba Restaurant

                  Kachumber Salad (tomato, cucumber) – 16 SAR – $4.26
                  Lamb Chops – 55 SAR = $14.66
                  Kheer – 16 SAR – $4.26

                  Maison De Zaid دار زيد

                  Pistachio Pancake – Large fluffy pancake served with pistachio sauce & halwa tahini – 45 SAR = $12

                  Manahi Restaurant

                  Saleeg

                  Hashi Basha (Camel Meat)

                  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 container 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.

                  Enhance
                  Dynamic
                  Portrait
                  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).

                  Original

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

                  Enhance
                  Dynamic

                  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.