1<!doctype html> 2<html lang="en"> 3 <head> 4 <meta charset="UTF-8" /> 5 <meta 6 name="viewport" 7 content="width=device-width, initial-scale=1.0, viewport-fit=cover" 8 /> 9 <title>Ashraful Islam Hridoy | Full Stack Developer</title> 10 <meta 11 name="description" 12 content="Ashraful Islam Hridoy is a full stack developer who builds production web applications, from the interface to the systems behind them." 13 /> 14 <meta name="author" content="Ashraful Islam Hridoy" /> 15 <link rel="canonical" href="https://ashrafulislam.im/" /> 16 <!-- SVG first for browsers that take it; the ICO stays for the 17 /favicon.ico request older clients make without being asked. --> 18 <link rel="icon" href="/favicon.svg" type="image/svg+xml" /> 19 <link rel="icon" href="/favicon.ico" sizes="48x48" /> 20 <link rel="apple-touch-icon" href="/apple-touch-icon.png" /> 21 <link rel="manifest" href="/site.webmanifest" /> 22 <!-- The feed's <link rel="alternate"> is added by the build, and only when 23 there is a feed to point at. Declaring it here unconditionally sent 24 feed readers to /rss.xml, which the SPA fallback answered with an HTML 25 page whenever no posts existed. See scripts/prerender-routes.ts. --> 26 <meta 27 name="theme-color" 28 content="#ffffff" 29 media="(prefers-color-scheme: light)" 30 /> 31 <meta 32 name="theme-color" 33 content="#020817" 34 media="(prefers-color-scheme: dark)" 35 /> 36 <!-- Instrument Serif carries the display and headings, Inter the running 37 text, JetBrains Mono the labels. All three are served from this origin 38 (see scripts/fetch-fonts.mjs), so there is no third-party connection on 39 the critical path. Only the base latin file of each is preloaded â the 40 latin-ext subsets load on demand, and preloading everything would just 41 compete with the LCP image for bandwidth. 42 43 Each family has a metric-matched fallback in src/styles/fonts.css, so 44 text painted before the webfont arrives occupies the same space and 45 nothing moves when it swaps. --> 46 <link 47 rel="preload" 48 as="font" 49 type="font/woff2" 50 crossorigin 51 href="/fonts/instrument-serif-latin.woff2" 52 /> 53 <link 54 rel="preload" 55 as="font" 56 type="font/woff2" 57 crossorigin 58 href="/fonts/inter-latin.woff2" 59 /> 60 <meta property="og:type" content="website" /> 61 <meta property="og:url" content="https://ashrafulislam.im/" /> 62 <meta property="og:site_name" content="Ashraful Islam Hridoy" /> 63 <meta 64 property="og:title" 65 content="Ashraful Islam Hridoy | Full Stack Developer" 66 /> 67 <meta 68 property="og:description" 69 content="Ashraful Islam Hridoy is a full stack developer who builds production web applications, from the interface to the systems behind them." 70 /> 71 <!-- PNG rather than WebP: some social scrapers still refuse WebP. --> 72 <meta 73 property="og:image" 74 content="https://ashrafulislam.im/og-cover-v2.png" 75 /> 76 <meta property="og:image:width" content="1200" /> 77 <meta property="og:image:height" content="630" /> 78 <meta 79 property="og:image:alt" 80 content="Ashraful Islam Hridoy, full stack developer building production web applications" 81 /> 82 83 <meta name="twitter:card" content="summary_large_image" /> 84 <meta 85 name="twitter:title" 86 content="Ashraful Islam Hridoy | Full Stack Developer" 87 /> 88 <meta 89 name="twitter:description" 90 content="Ashraful Islam Hridoy is a full stack developer who builds production web applications, from the interface to the systems behind them." 91 /> 92 <meta 93 name="twitter:image" 94 content="https://ashrafulislam.im/og-cover-v2.png" 95 /> 96 <meta 97 name="google-site-verification" 98 content="aCBELVw3_QmZA_BBR3FXmpiRYvvfuoouDBSGMuZVblc" 99 /> 100 101 <!-- Search engines and AI assistants read this to answer "who is this and 102 what do they do" without parsing the page. Everything here is stated 103 somewhere on the site itself. --> 104
104<script type="application/ld+json"> 105 { 106 "@context": "https://schema.org", 107 "@type": "Person", 108 "name": "Ashraful Islam Hridoy", 109 "alternateName": "Ashraful Islam", 110 "url": "https://ashrafulislam.im/", 111 "image": "https://ashrafulislam.im/og-cover-v2.png", 112 "jobTitle": "Full Stack Developer", 113 "email": "mailto:[email protected]", 114 "address": { 115 "@type": "PostalAddress", 116 "addressLocality": "Sylhet", 117 "addressCountry": "BD" 118 }, 119 "alumniOf": { 120 "@type": "CollegeOrUniversity", 121 "name": "Leading University" 122 }, 123 "worksFor": { 124 "@type": "Organization", 125 "name": "Times IT" 126 }, 127 "knowsAbout": [ 128 "TypeScript", 129 "Node.js", 130 "React", 131 "Next.js", 132 "PostgreSQL", 133 "Prisma", 134 "MongoDB", 135 "Redis", 136 "BullMQ", 137 "REST APIs", 138 "GraphQL" 139 ], 140 "sameAs": [ 141 "https://github.com/aihridoy", 142 "https://www.linkedin.com/in/ashraful-islam-hridoy" 143 ] 144 } 145 </script>
145 146
146<script type="module" crossorigin src="/assets/index-D06VSEsb.js"></script>
146 147 <link rel="stylesheet" crossorigin href="/assets/index-NBew7lWb.css"> 148 <link rel="alternate" type="application/rss+xml" title="Ashraful Islam Hridoy - Blogs" href="https://ashrafulislam.im/rss.xml" /> 149 </head> 150 151 <body> 152 <div id="root"></div> 153 </body> 154</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.