SEO audit for sofiashendi.com
Sofia Shendi | Engineering Leader & Full-Stack Engineer
Health 65/100 (fair) · 50 pages crawled · generated 2026-08-26
Download Markdown report (feed to ChatGPT / Claude / Cursor)Hands-on engineering leader building accessible, high-performance web apps.
| Category | Score | Errors | Warnings | Notices |
|---|---|---|---|---|
| Content | 70 | 0 | 50 | 0 |
| Headings | 70 | 0 | 50 | 0 |
| Rendering | 70 | 0 | 50 | 0 |
| Canonical | 92 | 0 | 14 | 0 |
| Duplicate | 92 | 0 | 14 | 14 |
| Titles | 98 | 0 | 3 | 0 |
| Cache | 100 | 0 | 0 | 50 |
| Crawlability | 100 | 0 | 0 | 36 |
| Geo | 100 | 0 | 0 | 1 |
| Meta Description | 100 | 0 | 0 | 7 |
| Performance | 100 | 0 | 0 | 100 |
| Security | 100 | 0 | 0 | 50 |
| Structured Data | 100 | 0 | 0 | 50 |
Warnings (6 rules)
warning Missing canonical tag
Rule canonical.missing · Canonical · 14 occurrence(s)
- https://sofiashendi.com/
- https://sofiashendi.com/blog
- https://sofiashendi.com/blog/tag/birthday
- https://sofiashendi.com/blog/tag/city-life
- https://sofiashendi.com/blog/tag/creative
- https://sofiashendi.com/blog/tag/engineering
- https://sofiashendi.com/blog/tag/leadership
- https://sofiashendi.com/blog/tag/privacy
- https://sofiashendi.com/blog/tag/slow-travel
- https://sofiashendi.com/blog/tag/sustainability
- https://sofiashendi.com/blog/tag/wellbeing
- https://sofiashendi.com/blog/tag/wordpress
- https://sofiashendi.com/contact
- https://sofiashendi.com/hush
warning Thin content (low word count)
Rule content.thin · Content · 50 occurrence(s)
- https://sofiashendi.com/ — 0 words
- https://sofiashendi.com/blog — 0 words
- https://sofiashendi.com/blog/back-with-the-montreal-builder-community — 0 words
- https://sofiashendi.com/blog/free-contemporary-art-in-montreal — 0 words
- https://sofiashendi.com/blog/how-i-vibe-coded-my-website-as-a-20-year-senior-engineer — 0 words
- https://sofiashendi.com/blog/kayaking-at-low-cost-around-montreal — 0 words
- https://sofiashendi.com/blog/leaving-google-for-proton-or-the-case-for-taking-ownership-of-our-privacy — 0 words
- https://sofiashendi.com/blog/looking-back-at-2025 — 0 words
- https://sofiashendi.com/blog/recycling-electronics-in-montreal — 0 words
- https://sofiashendi.com/blog/starting-2023-with-more-things-to-know-about-our-city — 0 words
- https://sofiashendi.com/blog/tag/birthday — 0 words
- https://sofiashendi.com/blog/tag/city-life — 0 words
- https://sofiashendi.com/blog/tag/creative — 0 words
- https://sofiashendi.com/blog/tag/engineering — 0 words
- https://sofiashendi.com/blog/tag/leadership — 0 words
- https://sofiashendi.com/blog/tag/privacy — 0 words
- https://sofiashendi.com/blog/tag/slow-travel — 0 words
- https://sofiashendi.com/blog/tag/sustainability — 0 words
- https://sofiashendi.com/blog/tag/wellbeing — 0 words
- https://sofiashendi.com/blog/tag/wordpress — 0 words
- https://sofiashendi.com/blog/taking-control-of-my-home-network-and-saving-216 — 0 words
- https://sofiashendi.com/blog/the-arrival-of-spring-and-seed-libraries — 0 words
- https://sofiashendi.com/blog/walking-through-ottawa-and-thinking-about-what-weve-become — 0 words
- https://sofiashendi.com/contact — 0 words
- https://sofiashendi.com/hush — 0 words
warning Duplicate <title> across pages
Rule duplicate.title · Duplicate · 14 occurrence(s)
- https://sofiashendi.com/ — title shared by 14 pages: https://sofiashendi.com/blog, https://sofiashendi.com/contact, https://sofiashendi.com/hush
- https://sofiashendi.com/blog — title shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/contact, https://sofiashendi.com/hush
- https://sofiashendi.com/blog/tag/birthday — title shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/contact
- https://sofiashendi.com/blog/tag/city-life — title shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/contact
- https://sofiashendi.com/blog/tag/creative — title shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/contact
- https://sofiashendi.com/blog/tag/engineering — title shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/contact
- https://sofiashendi.com/blog/tag/leadership — title shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/contact
- https://sofiashendi.com/blog/tag/privacy — title shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/contact
- https://sofiashendi.com/blog/tag/slow-travel — title shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/contact
- https://sofiashendi.com/blog/tag/sustainability — title shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/contact
- https://sofiashendi.com/blog/tag/wellbeing — title shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/contact
- https://sofiashendi.com/blog/tag/wordpress — title shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/contact
- https://sofiashendi.com/contact — title shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/hush
- https://sofiashendi.com/hush — title shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/contact
warning Missing <h1>
Rule h1.missing · Headings · 50 occurrence(s)
- https://sofiashendi.com/
- https://sofiashendi.com/blog
- https://sofiashendi.com/blog/back-with-the-montreal-builder-community
- https://sofiashendi.com/blog/free-contemporary-art-in-montreal
- https://sofiashendi.com/blog/how-i-vibe-coded-my-website-as-a-20-year-senior-engineer
- https://sofiashendi.com/blog/kayaking-at-low-cost-around-montreal
- https://sofiashendi.com/blog/leaving-google-for-proton-or-the-case-for-taking-ownership-of-our-privacy
- https://sofiashendi.com/blog/looking-back-at-2025
- https://sofiashendi.com/blog/recycling-electronics-in-montreal
- https://sofiashendi.com/blog/starting-2023-with-more-things-to-know-about-our-city
- https://sofiashendi.com/blog/tag/birthday
- https://sofiashendi.com/blog/tag/city-life
- https://sofiashendi.com/blog/tag/creative
- https://sofiashendi.com/blog/tag/engineering
- https://sofiashendi.com/blog/tag/leadership
- https://sofiashendi.com/blog/tag/privacy
- https://sofiashendi.com/blog/tag/slow-travel
- https://sofiashendi.com/blog/tag/sustainability
- https://sofiashendi.com/blog/tag/wellbeing
- https://sofiashendi.com/blog/tag/wordpress
- https://sofiashendi.com/blog/taking-control-of-my-home-network-and-saving-216
- https://sofiashendi.com/blog/the-arrival-of-spring-and-seed-libraries
- https://sofiashendi.com/blog/walking-through-ottawa-and-thinking-about-what-weve-become
- https://sofiashendi.com/contact
- https://sofiashendi.com/hush
warning Content only rendered by JavaScript (invisible to non-JS crawlers & AI)
Rule rendering.js_shell · Rendering · 50 occurrence(s)
- https://sofiashendi.com/ — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/blog — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/blog/back-with-the-montreal-builder-community — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/blog/free-contemporary-art-in-montreal — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/blog/how-i-vibe-coded-my-website-as-a-20-year-senior-engineer — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/blog/kayaking-at-low-cost-around-montreal — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/blog/leaving-google-for-proton-or-the-case-for-taking-ownership-of-our-privacy — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/blog/looking-back-at-2025 — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/blog/recycling-electronics-in-montreal — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/blog/starting-2023-with-more-things-to-know-about-our-city — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/blog/tag/birthday — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/blog/tag/city-life — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/blog/tag/creative — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/blog/tag/engineering — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/blog/tag/leadership — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/blog/tag/privacy — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/blog/tag/slow-travel — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/blog/tag/sustainability — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/blog/tag/wellbeing — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/blog/tag/wordpress — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/blog/taking-control-of-my-home-network-and-saving-216 — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/blog/the-arrival-of-spring-and-seed-libraries — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/blog/walking-through-ottawa-and-thinking-about-what-weve-become — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/contact — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://sofiashendi.com/hush — Raw HTML has 0 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
warning Title likely truncated in SERP (too wide)
Rule title.too_long · Titles · 3 occurrence(s)
- https://sofiashendi.com/blog/2017-06-23-c2-montreal-2017 — 72 chars, ~584px (limit ~580px)
- https://sofiashendi.com/blog/leaving-google-for-proton-or-the-case-for-taking-ownership-of-our-privacy — 89 chars, ~683px (limit ~580px)
- https://sofiashendi.com/blog/walking-through-ottawa-and-thinking-about-what-weve-become — 74 chars, ~614px (limit ~580px)
Notices (10 rules)
notice Page served uncached (no-store/private or CDN bypass)
Rule cache.not_cacheable · Cache · 50 occurrence(s)
- https://sofiashendi.com/ — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/blog — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/blog/back-with-the-montreal-builder-community — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/blog/free-contemporary-art-in-montreal — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/blog/how-i-vibe-coded-my-website-as-a-20-year-senior-engineer — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/blog/kayaking-at-low-cost-around-montreal — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/blog/leaving-google-for-proton-or-the-case-for-taking-ownership-of-our-privacy — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/blog/looking-back-at-2025 — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/blog/recycling-electronics-in-montreal — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/blog/starting-2023-with-more-things-to-know-about-our-city — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/blog/tag/birthday — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/blog/tag/city-life — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/blog/tag/creative — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/blog/tag/engineering — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/blog/tag/leadership — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/blog/tag/privacy — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/blog/tag/slow-travel — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/blog/tag/sustainability — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/blog/tag/wellbeing — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/blog/tag/wordpress — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/blog/taking-control-of-my-home-network-and-saving-216 — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/blog/the-arrival-of-spring-and-seed-libraries — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/blog/walking-through-ottawa-and-thinking-about-what-weve-become — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/contact — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
- https://sofiashendi.com/hush — Cache-Control: public, max-age=0, must-revalidate · cloudflare: DYNAMIC
notice Duplicate meta description across pages
Rule duplicate.meta_desc · Duplicate · 14 occurrence(s)
- https://sofiashendi.com/ — meta description shared by 14 pages: https://sofiashendi.com/blog, https://sofiashendi.com/contact, https://sofiashendi.com/hush
- https://sofiashendi.com/blog — meta description shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/contact, https://sofiashendi.com/hush
- https://sofiashendi.com/blog/tag/birthday — meta description shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/contact
- https://sofiashendi.com/blog/tag/city-life — meta description shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/contact
- https://sofiashendi.com/blog/tag/creative — meta description shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/contact
- https://sofiashendi.com/blog/tag/engineering — meta description shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/contact
- https://sofiashendi.com/blog/tag/leadership — meta description shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/contact
- https://sofiashendi.com/blog/tag/privacy — meta description shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/contact
- https://sofiashendi.com/blog/tag/slow-travel — meta description shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/contact
- https://sofiashendi.com/blog/tag/sustainability — meta description shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/contact
- https://sofiashendi.com/blog/tag/wellbeing — meta description shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/contact
- https://sofiashendi.com/blog/tag/wordpress — meta description shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/contact
- https://sofiashendi.com/contact — meta description shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/hush
- https://sofiashendi.com/hush — meta description shared by 14 pages: https://sofiashendi.com/, https://sofiashendi.com/blog, https://sofiashendi.com/contact
notice robots.txt blocks AI search/citation crawlers
Rule geo.ai_bots_blocked · Geo · 1 occurrence(s)
- https://sofiashendi.com/ — robots.txt disallows AI search crawler(s): perplexitybot (Perplexity). These fetch pages to cite in AI answers, so blocking them removes you from that citation pool. Allowing them is required for AI citations (though not a guarantee of them); blocking training bots like GPTBot/ClaudeBot is a separate, valid choice.
notice Meta description too long
Rule meta_desc.too_long · Meta Description · 3 occurrence(s)
notice Meta description too short
Rule meta_desc.too_short · Meta Description · 4 occurrence(s)
- https://sofiashendi.com/blog/2017-07-04-6-places-tried-may-june-montreal — 15 chars
- https://sofiashendi.com/blog/2019-06-25-here-comes-another-year — 28 chars
- https://sofiashendi.com/blog/kayaking-at-low-cost-around-montreal — 26 chars
- https://sofiashendi.com/blog/starting-2023-with-more-things-to-know-about-our-city — 40 chars
notice No ETag header (no conditional GET for unchanged pages)
Rule perf.no_etag · Performance · 50 occurrence(s)
- https://sofiashendi.com/ — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/blog — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/blog/back-with-the-montreal-builder-community — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/blog/free-contemporary-art-in-montreal — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/blog/how-i-vibe-coded-my-website-as-a-20-year-senior-engineer — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/blog/kayaking-at-low-cost-around-montreal — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/blog/leaving-google-for-proton-or-the-case-for-taking-ownership-of-our-privacy — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/blog/looking-back-at-2025 — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/blog/recycling-electronics-in-montreal — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/blog/starting-2023-with-more-things-to-know-about-our-city — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/blog/tag/birthday — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/blog/tag/city-life — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/blog/tag/creative — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/blog/tag/engineering — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/blog/tag/leadership — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/blog/tag/privacy — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/blog/tag/slow-travel — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/blog/tag/sustainability — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/blog/tag/wellbeing — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/blog/tag/wordpress — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/blog/taking-control-of-my-home-network-and-saving-216 — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/blog/the-arrival-of-spring-and-seed-libraries — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/blog/walking-through-ottawa-and-thinking-about-what-weve-become — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/contact — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://sofiashendi.com/hush — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
notice No Last-Modified header (no conditional GET for unchanged pages)
Rule perf.no_last_modified · Performance · 50 occurrence(s)
- https://sofiashendi.com/ — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/blog — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/blog/back-with-the-montreal-builder-community — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/blog/free-contemporary-art-in-montreal — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/blog/how-i-vibe-coded-my-website-as-a-20-year-senior-engineer — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/blog/kayaking-at-low-cost-around-montreal — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/blog/leaving-google-for-proton-or-the-case-for-taking-ownership-of-our-privacy — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/blog/looking-back-at-2025 — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/blog/recycling-electronics-in-montreal — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/blog/starting-2023-with-more-things-to-know-about-our-city — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/blog/tag/birthday — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/blog/tag/city-life — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/blog/tag/creative — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/blog/tag/engineering — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/blog/tag/leadership — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/blog/tag/privacy — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/blog/tag/slow-travel — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/blog/tag/sustainability — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/blog/tag/wellbeing — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/blog/tag/wordpress — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/blog/taking-control-of-my-home-network-and-saving-216 — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/blog/the-arrival-of-spring-and-seed-libraries — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/blog/walking-through-ottawa-and-thinking-about-what-weve-become — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/contact — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://sofiashendi.com/hush — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
notice URL redirects to another URL
Rule redirect.single · Crawlability · 36 occurrence(s)
- https://sofiashendi.com/blog/2018-03-08-getting-the-best-out-of-san-diego-newport-beach — redirects to https://sofiashendi.com/blog/2018-03-08-getting-the-best-out-of-san-diego-newport-beach/
- https://sofiashendi.com/blog/2018-04-09-spending-the-winter-away-in-south-east-asia — redirects to https://sofiashendi.com/blog/2018-04-09-spending-the-winter-away-in-south-east-asia/
- https://sofiashendi.com/blog/2018-06-22-this-is-33 — redirects to https://sofiashendi.com/blog/2018-06-22-this-is-33/
- https://sofiashendi.com/blog/2018-10-16-planning-next-summers-getaway — redirects to https://sofiashendi.com/blog/2018-10-16-planning-next-summers-getaway/
- https://sofiashendi.com/blog/2018-11-03-5-things-to-do-in-new-york-city — redirects to https://sofiashendi.com/blog/2018-11-03-5-things-to-do-in-new-york-city/
- https://sofiashendi.com/blog/2018-11-20-digital-nomad-guide-bali-indonesia — redirects to https://sofiashendi.com/blog/2018-11-20-digital-nomad-guide-bali-indonesia/
- https://sofiashendi.com/blog/2018-11-23-3-montreal-cafes-cool-with-you-working — redirects to https://sofiashendi.com/blog/2018-11-23-3-montreal-cafes-cool-with-you-working/
- https://sofiashendi.com/blog/2019-01-02-my-2018-review — redirects to https://sofiashendi.com/blog/2019-01-02-my-2018-review/
- https://sofiashendi.com/blog/2019-06-25-here-comes-another-year — redirects to https://sofiashendi.com/blog/2019-06-25-here-comes-another-year/
- https://sofiashendi.com/blog/2019-07-28-spring-in-lake-louise-and-banff-alberta — redirects to https://sofiashendi.com/blog/2019-07-28-spring-in-lake-louise-and-banff-alberta/
- https://sofiashendi.com/blog/2019-08-12-dealing-with-my-anxiety-from-climate-change — redirects to https://sofiashendi.com/blog/2019-08-12-dealing-with-my-anxiety-from-climate-change/
- https://sofiashendi.com/blog/2019-08-15-day-trip-to-les-de-boucherville-national-park — redirects to https://sofiashendi.com/blog/2019-08-15-day-trip-to-les-de-boucherville-national-park/
- https://sofiashendi.com/blog/2019-09-10-day-trip-to-cap-saint-jacques-nature-park — redirects to https://sofiashendi.com/blog/2019-09-10-day-trip-to-cap-saint-jacques-nature-park/
- https://sofiashendi.com/blog/2019-10-19-making-up-with-morocco — redirects to https://sofiashendi.com/blog/2019-10-19-making-up-with-morocco/
- https://sofiashendi.com/blog/back-with-the-montreal-builder-community — redirects to https://sofiashendi.com/blog/back-with-the-montreal-builder-community/
- https://sofiashendi.com/blog/free-contemporary-art-in-montreal — redirects to https://sofiashendi.com/blog/free-contemporary-art-in-montreal/
- https://sofiashendi.com/blog/how-i-vibe-coded-my-website-as-a-20-year-senior-engineer — redirects to https://sofiashendi.com/blog/how-i-vibe-coded-my-website-as-a-20-year-senior-engineer/
- https://sofiashendi.com/blog/kayaking-at-low-cost-around-montreal — redirects to https://sofiashendi.com/blog/kayaking-at-low-cost-around-montreal/
- https://sofiashendi.com/blog/leaving-google-for-proton-or-the-case-for-taking-ownership-of-our-privacy — redirects to https://sofiashendi.com/blog/leaving-google-for-proton-or-the-case-for-taking-ownership-of-our-privacy/
- https://sofiashendi.com/blog/looking-back-at-2025 — redirects to https://sofiashendi.com/blog/looking-back-at-2025/
- https://sofiashendi.com/blog/recycling-electronics-in-montreal — redirects to https://sofiashendi.com/blog/recycling-electronics-in-montreal/
- https://sofiashendi.com/blog/starting-2023-with-more-things-to-know-about-our-city — redirects to https://sofiashendi.com/blog/starting-2023-with-more-things-to-know-about-our-city/
- https://sofiashendi.com/blog/taking-control-of-my-home-network-and-saving-216 — redirects to https://sofiashendi.com/blog/taking-control-of-my-home-network-and-saving-216/
- https://sofiashendi.com/blog/the-arrival-of-spring-and-seed-libraries — redirects to https://sofiashendi.com/blog/the-arrival-of-spring-and-seed-libraries/
- https://sofiashendi.com/blog/walking-through-ottawa-and-thinking-about-what-weve-become — redirects to https://sofiashendi.com/blog/walking-through-ottawa-and-thinking-about-what-weve-become/
notice No structured data detected
Rule schema.none · Structured Data · 50 occurrence(s)
- https://sofiashendi.com/
- https://sofiashendi.com/blog
- https://sofiashendi.com/blog/back-with-the-montreal-builder-community
- https://sofiashendi.com/blog/free-contemporary-art-in-montreal
- https://sofiashendi.com/blog/how-i-vibe-coded-my-website-as-a-20-year-senior-engineer
- https://sofiashendi.com/blog/kayaking-at-low-cost-around-montreal
- https://sofiashendi.com/blog/leaving-google-for-proton-or-the-case-for-taking-ownership-of-our-privacy
- https://sofiashendi.com/blog/looking-back-at-2025
- https://sofiashendi.com/blog/recycling-electronics-in-montreal
- https://sofiashendi.com/blog/starting-2023-with-more-things-to-know-about-our-city
- https://sofiashendi.com/blog/tag/birthday
- https://sofiashendi.com/blog/tag/city-life
- https://sofiashendi.com/blog/tag/creative
- https://sofiashendi.com/blog/tag/engineering
- https://sofiashendi.com/blog/tag/leadership
- https://sofiashendi.com/blog/tag/privacy
- https://sofiashendi.com/blog/tag/slow-travel
- https://sofiashendi.com/blog/tag/sustainability
- https://sofiashendi.com/blog/tag/wellbeing
- https://sofiashendi.com/blog/tag/wordpress
- https://sofiashendi.com/blog/taking-control-of-my-home-network-and-saving-216
- https://sofiashendi.com/blog/the-arrival-of-spring-and-seed-libraries
- https://sofiashendi.com/blog/walking-through-ottawa-and-thinking-about-what-weve-become
- https://sofiashendi.com/contact
- https://sofiashendi.com/hush
notice Missing recommended security headers
Rule security.missing_headers · Security · 50 occurrence(s)
- https://sofiashendi.com/ — HSTS, CSP
- https://sofiashendi.com/blog — HSTS, CSP
- https://sofiashendi.com/blog/back-with-the-montreal-builder-community — HSTS, CSP
- https://sofiashendi.com/blog/free-contemporary-art-in-montreal — HSTS, CSP
- https://sofiashendi.com/blog/how-i-vibe-coded-my-website-as-a-20-year-senior-engineer — HSTS, CSP
- https://sofiashendi.com/blog/kayaking-at-low-cost-around-montreal — CSP, HSTS
- https://sofiashendi.com/blog/leaving-google-for-proton-or-the-case-for-taking-ownership-of-our-privacy — HSTS, CSP
- https://sofiashendi.com/blog/looking-back-at-2025 — HSTS, CSP
- https://sofiashendi.com/blog/recycling-electronics-in-montreal — HSTS, CSP
- https://sofiashendi.com/blog/starting-2023-with-more-things-to-know-about-our-city — HSTS, CSP
- https://sofiashendi.com/blog/tag/birthday — CSP, HSTS
- https://sofiashendi.com/blog/tag/city-life — HSTS, CSP
- https://sofiashendi.com/blog/tag/creative — HSTS, CSP
- https://sofiashendi.com/blog/tag/engineering — HSTS, CSP
- https://sofiashendi.com/blog/tag/leadership — HSTS, CSP
- https://sofiashendi.com/blog/tag/privacy — HSTS, CSP
- https://sofiashendi.com/blog/tag/slow-travel — HSTS, CSP
- https://sofiashendi.com/blog/tag/sustainability — CSP, HSTS
- https://sofiashendi.com/blog/tag/wellbeing — HSTS, CSP
- https://sofiashendi.com/blog/tag/wordpress — CSP, HSTS
- https://sofiashendi.com/blog/taking-control-of-my-home-network-and-saving-216 — HSTS, CSP
- https://sofiashendi.com/blog/the-arrival-of-spring-and-seed-libraries — HSTS, CSP
- https://sofiashendi.com/blog/walking-through-ottawa-and-thinking-about-what-weve-become — CSP, HSTS
- https://sofiashendi.com/contact — HSTS, CSP
- https://sofiashendi.com/hush — HSTS, CSP
| URL | Status | Indexable | Words | In-links |
|---|---|---|---|---|
| https://sofiashendi.com/ Sofia Shendi | Engineering Leader & Full-Stack Engineer |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog Sofia Shendi | Engineering Leader & Full-Stack Engineer |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2017-06-22-turn-32-today I Turn 32 Today — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2017-06-23-c2-montreal-2017 My Takeaway From Attending C2 Montréal For The First Time — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2017-07-04-6-places-tried-may-june-montreal 6 Places I Tried in May & June in Montreal — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2017-07-09-10-things-must-vancouver 10 Things I Must Do In Vancouver — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2017-08-13-11-addresses-tested-vancouver-summer 11 Addresses Tested In Vancouver This Summer — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2017-09-25-digital-nomad-guide-vancouver-canada Digital Nomad Guide: Vancouver, Canada — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2017-10-24-36-hours-new-york-city 36 Hours In New York City — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2017-11-08-5-places-visited-september-october-montreal 5 Places I Visited In September & October In Montreal — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2017-12-30-im-ready-2018 I'm Ready For You 2018! — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2018-01-21-maximizing-productivity-2-0 Maximizing Productivity 2.0 — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2018-03-06-seattle-36-hours Seattle in 36 Hours — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2018-03-08-getting-the-best-out-of-san-diego-newport-beach Getting The Best Out Of San Diego & Newport Beach — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2018-04-09-spending-the-winter-away-in-south-east-asia Spending The Winter Away In Southeast Asia — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2018-06-22-this-is-33 This is 33? — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2018-10-16-planning-next-summers-getaway Planning Next Summer's Getaway — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2018-11-03-5-things-to-do-in-new-york-city 5 Things To Do In New York City — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2018-11-20-digital-nomad-guide-bali-indonesia Digital Nomad Guide: Bali, Indonesia — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2018-11-23-3-montreal-cafes-cool-with-you-working 3 Montreal Cafés Cool With You Working — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2019-01-02-my-2018-review My 2018 Review — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2019-06-25-here-comes-another-year Here comes another year 🎂 — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2019-07-28-spring-in-lake-louise-and-banff-alberta Spring in Lake Louise & Banff, Alberta — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2019-08-12-dealing-with-my-anxiety-from-climate-change Dealing With My Anxiety From Climate Change — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2019-08-15-day-trip-to-les-de-boucherville-national-park Day Trip To Îles-de-Boucherville National Park — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2019-09-10-day-trip-to-cap-saint-jacques-nature-park Day Trip To Cap-Saint-Jacques Nature Park — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/2019-10-19-making-up-with-morocco Making Up With Morocco — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/back-with-the-montreal-builder-community Back with the Montreal Builder Community — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/free-contemporary-art-in-montreal Free Contemporary Art in Montreal — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/how-i-vibe-coded-my-website-as-a-20-year-senior-engineer How I Vibe Coded My Website as a 20+ Year Senior Engineer — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/kayaking-at-low-cost-around-montreal Kayaking at low cost around Montreal — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/leaving-google-for-proton-or-the-case-for-taking-ownership-of-our-privacy Leaving Google for Proton, or the Case for Taking Ownership of Our Privacy — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/looking-back-at-2025 Looking Back at 2025 — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/recycling-electronics-in-montreal Recycling electronics in Montreal — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/starting-2023-with-more-things-to-know-about-our-city Starting 2023 with more things to know about our city! — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/tag/birthday Sofia Shendi | Engineering Leader & Full-Stack Engineer |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/tag/city-life Sofia Shendi | Engineering Leader & Full-Stack Engineer |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/tag/creative Sofia Shendi | Engineering Leader & Full-Stack Engineer |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/tag/engineering Sofia Shendi | Engineering Leader & Full-Stack Engineer |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/tag/leadership Sofia Shendi | Engineering Leader & Full-Stack Engineer |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/tag/privacy Sofia Shendi | Engineering Leader & Full-Stack Engineer |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/tag/slow-travel Sofia Shendi | Engineering Leader & Full-Stack Engineer |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/tag/sustainability Sofia Shendi | Engineering Leader & Full-Stack Engineer |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/tag/wellbeing Sofia Shendi | Engineering Leader & Full-Stack Engineer |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/tag/wordpress Sofia Shendi | Engineering Leader & Full-Stack Engineer |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/taking-control-of-my-home-network-and-saving-216 Taking Control of My Home Network (and Saving $216) — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/the-arrival-of-spring-and-seed-libraries The arrival of Spring and Seed libraries — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/blog/walking-through-ottawa-and-thinking-about-what-weve-become Walking Through Ottawa and Thinking About What We’ve Become — Sofia Shendi |
200 | yes | 0 | 0 |
| https://sofiashendi.com/contact Sofia Shendi | Engineering Leader & Full-Stack Engineer |
200 | yes | 0 | 0 |
| https://sofiashendi.com/hush Sofia Shendi | Engineering Leader & Full-Stack Engineer |
200 | yes | 0 | 0 |
Audit your own site — free
157 checks, internal PageRank, render-diff. No signup, results in ~30s.