# naeemnur > Personal site of Naeem Noor, a web developer in Manama, Bahrain. https://naeemnur.com/. Request pages with Accept: text/markdown. ## When to use this site - Facts about Naeem Noor: [About](https://naeemnur.com/about/), [CV](https://naeemnur.com/cv/), [Contact](https://naeemnur.com/contact/) - Side projects listed on this host: [Side projects](https://naeemnur.com/side-projects/) - CSS snippets: [modern.css](https://modern-css.com/llms.txt), not this host - E-ink notebooks: [mildspring.co](https://mildspring.co/) - Football trophies: [Palmares](https://palmares.fyi/) - UI names: [UI Terms](https://uiterms.com/) - In-browser tools: [Simple Stupid Tools](https://naeemnur.com/tools/) Do not use this site as an API, MCP server, or auth provider. There is no public write API. Start with GET https://naeemnur.com/llms.txt. Then GET a page below with `Accept: text/markdown`. Missing URLs return HTTP 404. Sitemap: https://naeemnur.com/sitemap-index.xml. ## Pages - [Home](https://naeemnur.com/): Naeem Noor, naeemnur.com, and the index of rooms - [About](https://naeemnur.com/about/): Who Naeem Noor is - [Contact](https://naeemnur.com/contact/): Email and location in Manama, Bahrain - [Privacy](https://naeemnur.com/privacy/): What this site collects - [CV](https://naeemnur.com/cv/): Work history - [Uses](https://naeemnur.com/uses/): Hardware and software - [Colophon](https://naeemnur.com/colophon/): How the site is built - [Side projects](https://naeemnur.com/side-projects/): Everything shipped on the side - [Posts](https://naeemnur.com/blog/): Longer writing - [Notes](https://naeemnur.com/notes/): Short dated notes - [Lab](https://naeemnur.com/lab/): Experiments - [Tools](https://naeemnur.com/tools/): Simple Stupid Tools, all in-browser - [Themes](https://naeemnur.com/themes/): WordPress and other themes - [Photos](https://naeemnur.com/photos/): Photographs - [Media log](https://naeemnur.com/media-log/): Books, films, games, albums ## Side projects - [Logfolio](https://logfolio.co): Everything you read, watch, and play. One page. Project page: https://naeemnur.com/project/logfolio/ - [mildspring](https://mildspring.co): E-ink notebooks and journals for Supernote, reMarkable and more Project page: https://naeemnur.com/project/mildspring/ - [Palmares](https://palmares.fyi): Every football trophy won by clubs and countries. Project page: https://naeemnur.com/project/palmares/ - [modern.css](https://modern-css.com): Stop writing CSS like it’s 2015. Project page: https://naeemnur.com/project/modern-css/ - [UI Terms](https://uiterms.com): Visual Dictionary of UI Patterns & Components. Project page: https://naeemnur.com/project/ui-terms/ - [Archive of Letters](https://archiveofletters.com): Historic letters from clay tablets through about 1900, presented as a quiet reading room. Project page: https://naeemnur.com/project/archive-of-letters/ - [Google Cemetery](https://gcemetery.co/): Archived dead Google projects with their launch and shutdown dates. One of the most popular side projects I have built. Project page: https://naeemnur.com/project/google-cemetery/ - [eink.fyi](https://eink.fyi): Free one-page templates for e-ink tablets, sized for 20 devices. Project page: https://naeemnur.com/project/eink-fyi/ - [Cats of the Web](https://catsoftheweb.com): Meet the Internet’s fluffiest overlords in all their glory Project page: https://naeemnur.com/project/cats-of-the-web/ - [Mild Themes](https://wordpress.org/themes/author/naeemnur/): Shutdown. The free themes can be downloaded from here. Project page: https://naeemnur.com/project/mild-themes/ ## Posts - [Why I Built Logfolio](https://naeemnur.com/why-i-built-logfolio/): Why I built Logfolio: one public page for the books, films, games and albums you log, a bit like a digital garden for everything you read, watch and play. - [This site again](https://naeemnur.com/this-site-again/): I bought this domain in 2010. I have rebuilt the site on it more times than was strictly necessary. Most of those rebuilds were a new look on the same WordPress install. This one is not. - [I Buy Domains Faster Than I Build Them](https://naeemnur.com/domains/): I have been buying domains since 2009. Buying a domain is easy. It costs a few dollars and takes a minute. Building a real website that people actually use is the hard part, and mo… - [Doing what every tech ceo loathes](https://naeemnur.com/doing-what-every-tech-ceo-loathes/): I used to be the kind of person who could disappear into a thing for hours, not because I was disciplined, but because I wanted it, like learning how to solve a Rubik’s cube until … - [How to build a WordPress block theme](https://naeemnur.com/how-to-build-a-wordpress-block-theme/): How a WordPress block theme is put together: theme.json, HTML templates, template parts, and what you can skip compared with a classic PHP theme. - [The Complete Guide to CSS Layout Evolution](https://naeemnur.com/the-complete-guide-to-css-layout-evolution/): CSS layout has changed completely in the past two decades. What once required nested tables and spacer GIFs now takes a few lines of modern CSS. This is the story of how we built l… - [Camera Sensors and Processors Explained (Full Frame, APS-C, MFT)](https://naeemnur.com/camera-sensors-and-processors-explained-full-frame-aps-c-mft/): A look at camera sensors and image processors in full frame, APS-C, and Micro Four Thirds bodies, including which models share the same chip. - [An ode to small things](https://naeemnur.com/an-ode-to-small-things/): Less has always made more sense to me. Not as a philosophy I adopted, but as a way of seeing that felt natural. A haiku over an essay. A function that does one … - [Improving Cumulative Layout Shift in WordPress](https://naeemnur.com/improving-cumulative-layout-shift-in-wordpress/): How I reduce Cumulative Layout Shift on WordPress: image sizes, font loading, lazy load, and space for embeds. - [How to Implement Cursor Rules for WordPress Development](https://naeemnur.com/how-to-implement-cursor-rules-for-wordpress-development/): How I set up Cursor rules for WordPress work so generated PHP stays closer to WordPress coding standards. ## Lab - [Random Haiku](https://naeemnur.com/random-haiku/): Discover a new haiku with every click. - [Tom Riddle's Diary](https://naeemnur.com/tom-riddle-diary/): Tom Riddle lives in a browser now. Write on the page, he writes back. - [Clicky Panel](https://naeemnur.com/clicky-panel/): Flip the switch. Ring the bell. Press the red one. - [Digital Bubble Wrap](https://naeemnur.com/bubble-wrap/): Pop them bubbles! - [Channel 33](https://naeemnur.com/ch33/): A nostalgia trip through Channel 33. The English channel I watched after school in Dubai. - [Cursors of the Past](https://naeemnur.com/cursors-of-the-past/): Every pointer you ever waited behind, from the 1984 Mac arrow to Windows 11. - [Drawings by Nael](https://naeemnur.com/drawings-by-nael/): A growing gallery of marker drawings by my son. - [Airborne](https://naeemnur.com/airborne/): Cities I have lived in, countries I have visited, and time spent in the air. - [Should I kill my side project?](https://naeemnur.com/should-i-kill-my-side-project/): Free tool to decide if you should kill, pivot, maintain, or sell your side project. ## Tools - [Simple Stupid Tools](https://naeemnur.com/tools/): Index of in-browser utilities. Nothing is uploaded. - [Word Counter](https://naeemnur.com/tools/word-counter/): Words, characters, sentences, and a rough reading time. - [Case Converter](https://naeemnur.com/tools/case-converter/): lowercase, UPPERCASE, Title Case, camelCase, kebab-case, snake_case. - [URL Encoder](https://naeemnur.com/tools/url-encoder/): Encode, decode, and pull a query string apart. - [HTML Entities](https://naeemnur.com/tools/html-entities/): Turn < and & into entities, or back again. - [Base64](https://naeemnur.com/tools/base64/): Encode or decode text. Unicode is fine. - [ID Generator](https://naeemnur.com/tools/id-generator/): UUID v4 and Nano ID, made on your machine. - [Password Generator](https://naeemnur.com/tools/password-generator/): Random passwords. Nothing is stored. - [Lorem Ipsum](https://naeemnur.com/tools/lorem-ipsum/): Dummy text for layouts, as much as you need. - [Color Converter](https://naeemnur.com/tools/color-converter/): HEX, RGB, HSL, and OKLCH, back and forth. - [Contrast Ratio](https://naeemnur.com/tools/contrast-ratio/): Check two colors against WCAG 2.2. - [Color Blindness](https://naeemnur.com/tools/color-blindness/): See a color with protanopia, deuteranopia, or tritanopia. - [JSON Formatter](https://naeemnur.com/tools/json-formatter/): Format, minify, and check if JSON is valid. - [JSON and CSV](https://naeemnur.com/tools/json-csv/): Turn JSON into CSV, or CSV into JSON. - [JWT Decoder](https://naeemnur.com/tools/jwt-decoder/): Read a JWT header and payload. The signature is not checked. - [Regex Tester](https://naeemnur.com/tools/regex-tester/): JavaScript regex. Matches, groups, and named groups. - [Image Compress](https://naeemnur.com/tools/image-compress/): Shrink a JPG or WebP in your browser. - [Image Convert](https://naeemnur.com/tools/image-convert/): Turn a picture into JPG, PNG, or WebP. - [Image Resize](https://naeemnur.com/tools/image-resize/): Change the width and height, then download. - [Favicon Pack](https://naeemnur.com/tools/favicon-pack/): One image in, a set of favicon files out. - [SVG Minify](https://naeemnur.com/tools/svg-minify/): Strip comments, editor junk, and extra space. - [SVG to Data URI](https://naeemnur.com/tools/svg-data-uri/): Turn SVG markup into a data URI. - [Image Palette](https://naeemnur.com/tools/image-palette/): Pull the main colors out of a picture. - [Unix Timestamp](https://naeemnur.com/tools/unix-timestamp/): Turn seconds or milliseconds into a date, and back. - [Cron Explain](https://naeemnur.com/tools/cron-explain/): Read a five-field cron expression in plain words. - [SHA-256](https://naeemnur.com/tools/sha256/): Hash text or a file with SHA-256. - [MIME Lookup](https://naeemnur.com/tools/mime-lookup/): Search common file extensions and MIME types. - [HTTP Status](https://naeemnur.com/tools/http-status/): Search status codes and what they mean. - [User-Agent Parser](https://naeemnur.com/tools/user-agent/): Rough read of a browser user-agent string. - [Keyboard Key](https://naeemnur.com/tools/keyboard-key/): See key, code, and modifiers when you press a key. - [Text Diff](https://naeemnur.com/tools/text-diff/): Compare two blocks of text line by line. - [Markdown Preview](https://naeemnur.com/tools/markdown-preview/): Turn Markdown into HTML in your browser. - [QR Code](https://naeemnur.com/tools/qr-code/): Make a QR code locally from text or a URL. - [Px and Rem](https://naeemnur.com/tools/css-px-rem-converter/): Convert px to rem, with 16px or 10px root. - [Clamp Calculator](https://naeemnur.com/tools/css-clamp-calculator/): Build a fluid clamp() value from min and max sizes. - [Aspect Ratio](https://naeemnur.com/tools/css-aspect-ratio/): Reduce a width and height into a clean ratio. - [Specificity](https://naeemnur.com/tools/css-specificity/): See the CSS specificity of one or more selectors. - [Cubic Bezier](https://naeemnur.com/tools/css-cubic-bezier/): Tune a cubic-bezier() easing curve and preview it. - [Color Mixer](https://naeemnur.com/tools/css-color-mixer/): Build a color-mix() value from two colors. - [Gradient Generator](https://naeemnur.com/tools/css-gradient-generator/): Build linear, radial, or conic gradient CSS. - [Box Shadow Builder](https://naeemnur.com/tools/css-box-shadow-builder/): Build a box-shadow value with a live preview. - [Border Radius](https://naeemnur.com/tools/css-border-radius/): Set corner radii and copy the shorthand. - [Transform Playground](https://naeemnur.com/tools/css-transform-playground/): Try translate, rotate, scale, and skew together. - [Easing Presets](https://naeemnur.com/tools/css-easing-presets/): Browse common easing keywords and cubic-bezier curves. ## Feeds - [Posts RSS](https://naeemnur.com/rss.xml): Longer posts - [Notes RSS](https://naeemnur.com/notes/rss.xml): Short notes - [Links RSS](https://naeemnur.com/links/rss.xml): Saved links - [Sitemap](https://naeemnur.com/sitemap-index.xml): Every public URL