56,966 blogs · [ { "id": "01a087e1-9ce2-7195-ae3d-cca61ecaa191", "title": "A Dev-Only Permission Inspector Built on React Fiber", "url": "https://sirwan.info/blog/en/permission-inspector-react-fiber/", "published_at": "2026-06-26T00:00:00+00:00" }, { "id": "01a087e1-9ce2-7195-ae3d-cca61f1635d4", "title": "TIL: Kotlin's Generics Syntax Is a Pragmatic Compiler Trade-off", "url": "https://sirwan.info/blog/en/kotlin-generics-syntax/", "published_at": "2026-02-22T00:00:00+00:00" }, { "id": "01a087e1-9ce2-7195-ae3d-cca61f33bd69", "title": "TIL: Using Homebridge to Add Non-HomeKit Devices to Apple Home", "url": "https://sirwan.info/blog/en/homebridge/", "published_at": "2026-02-08T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca4b96f6ba", "title": "TIL: Gemini CLI Now Has Agent Skills", "url": "https://sirwan.info/blog/en/gemini-cli-agent-skills/", "published_at": "2026-01-01T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca4be0eacf", "title": "When Apple Podcasts Went Empty (Again)", "url": "https://sirwan.info/blog/en/when-apple-podcasts-went-empty-again/", "published_at": "2025-12-20T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca4bf39c9c", "title": "Learning Without Shortcuts", "url": "https://sirwan.info/blog/en/learning-without-shortcuts/", "published_at": "2025-09-13T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca4ca8843f", "title": "Sending Code from VS Code to Obsidian", "url": "https://sirwan.info/blog/en/weekend-project-code-clipper/", "published_at": "2025-05-26T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca4cda0de3", "title": "How I Use Back Tap and Shortcuts to Capture Info on My iPhone", "url": "https://sirwan.info/blog/en/how-i-use-back-tap-and-shortcuts-to-capture-info-on-my-iphone/", "published_at": "2025-03-16T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca4d865db2", "title": "ترندهای تکنولوژی در سال ۲۰۲۵", "url": "https://sirwan.info/blog/fa/tech-trends-2025/", "published_at": "2025-01-18T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca4e653009", "title": "Turning Notes into Knowledge", "url": "https://sirwan.info/blog/en/turning-notes-into-knowledge/", "published_at": "2025-01-12T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca4e9a0509", "title": "How I Use Obsidian to Publish Posts", "url": "https://sirwan.info/blog/en/how-i-use-obsidian-to-publish-posts/", "published_at": "2025-01-05T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca4efa6bf1", "title": "Advent of Code 2024", "url": "https://sirwan.info/blog/en/advent-of-code-2024/", "published_at": "2024-11-30T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca4f1a8b5f", "title": "Microsoft.Extensions.AI", "url": "https://sirwan.info/blog/en/microsoft-extensions-ai/", "published_at": "2024-11-14T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca4f3d5662", "title": "Git Commits as Documentation (RAG-Powered Commit Search)", "url": "https://sirwan.info/blog/en/git-commit-as-documentation/", "published_at": "2024-11-02T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca4f6d596a", "title": "A Weekend with Chrome AI", "url": "https://sirwan.info/blog/en/weekend-with-chrome-ai/", "published_at": "2024-10-26T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca4ff0bd13", "title": "HTML Parser and Whitespace", "url": "https://sirwan.info/blog/en/html-parser-and-whitespace/", "published_at": "2024-10-20T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca50a1898d", "title": "موختەسەر لە بارەی موهیم بوون نووسین بلاگ", "url": "https://sirwan.info/blog/ku/importance-of-blogging/", "published_at": "2024-10-18T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca50c86c49", "title": "مختصر له باره‌ی LLM", "url": "https://sirwan.info/blog/ku/llm-brief/", "published_at": "2024-09-14T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca51b7310b", "title": "Local AI Models in Browsers (Chrome Canary)", "url": "https://sirwan.info/blog/en/local-ai-models-in-browsers/", "published_at": "2024-09-09T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca52823ffa", "title": "My Approach to Problem Solving - Blazor Version", "url": "https://sirwan.info/blog/en/my-approach-to-problem-solving-blazor-version/", "published_at": "2024-07-31T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca52c6b31f", "title": "System-Versioned Tables in SQL Server/EF Core", "url": "https://sirwan.info/blog/en/system-versioned-tables-in-sql-server/", "published_at": "2024-07-13T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca531851cc", "title": "Azure API Management", "url": "https://sirwan.info/blog/en/azure-api-management/", "published_at": "2024-04-17T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca53d56195", "title": "Redis RESP", "url": "https://sirwan.info/blog/en/redis-resp/", "published_at": "2024-04-17T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca54cee3ea", "title": "Securing Next.js Apps Using Microsoft Identity Platform", "url": "https://sirwan.info/blog/en/securing-next.js-apps-using-microsoft-identity-platform/", "published_at": "2024-04-09T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca55a81975", "title": "Securing Blazor 8.x Web Apps Using Microsoft Identity Platform", "url": "https://sirwan.info/blog/en/securing-blazor-8.x-web-apps-using-microsoft-identity-platform/", "published_at": "2024-04-06T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca5682ec75", "title": "Beyond Titles, Embracing Data Analysis in Every Tech Role", "url": "https://sirwan.info/blog/en/beyond-titles-embracing-data-analysis-in-every-tech-role/", "published_at": "2024-03-02T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca571f8f09", "title": "A Weekend with Swift", "url": "https://sirwan.info/blog/en/a-weekend-with-swift/", "published_at": "2024-02-17T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca57966a55", "title": "Programmers and LLMs", "url": "https://sirwan.info/blog/en/programmers-and-llms/", "published_at": "2024-02-01T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca5860a1d4", "title": "Migrating to Astro", "url": "https://sirwan.info/blog/en/migrating-to-astro/", "published_at": "2024-01-05T00:00:00+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca591fdd66", "title": "A Quick Note", "url": "https://sirwan.info/blog/en/a-quick-note/", "published_at": "2023-09-07T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca59452f1e", "title": "آشنایی با TypeChat", "url": "https://sirwan.info/blog/fa/typechat/", "published_at": "2023-08-18T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca599e91d0", "title": "iPhone", "url": "https://sirwan.info/blog/en/iphone-theft/", "published_at": "2023-04-03T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca5a10c855", "title": "Visualising Your IoT Data", "url": "https://sirwan.info/blog/en/visualising-your-iot-data/", "published_at": "2023-03-18T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca5b0f5bce", "title": "Different ways of adding your signature on a PDF", "url": "https://sirwan.info/blog/en/different-ways-of-adding-your-signature-on-a-pdf/", "published_at": "2022-11-27T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca5b279cd5", "title": "انجام یک تسک ساده با Golang", "url": "https://sirwan.info/blog/fa/web-automation/", "published_at": "2022-06-04T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca5b5fb739", "title": "بررسی خطای undefined is not iterable در JavaScript", "url": "https://sirwan.info/blog/fa/undefined-is-not-iterable/", "published_at": "2022-06-03T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca5bab6156", "title": "Blazor Meetup", "url": "https://sirwan.info/blog/en/blazor-meetup-reading/", "published_at": "2022-05-05T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca5bf3de48", "title": "نکات Golang", "url": "https://sirwan.info/blog/fa/golang-basics/", "published_at": "2021-10-13T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca5cd5f123", "title": "تولید فایل‌های PDF توسط React", "url": "https://sirwan.info/blog/fa/generating-pdf/", "published_at": "2021-09-25T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca5d04f981", "title": "ذخیره فایل CSV در SQL Server", "url": "https://sirwan.info/blog/fa/importing-csv-file-in-sql-server/", "published_at": "2021-09-10T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca5ddd3b63", "title": "آشنایی با CSV Storage Engine در MySQL", "url": "https://sirwan.info/blog/fa/csv-storage-engine/", "published_at": "2021-09-07T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca5e285d90", "title": "Showing Topbar Progress Indicator in React", "url": "https://sirwan.info/blog/en/showing-topbar-progress-indicator-in-react/", "published_at": "2021-09-01T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca5f1fb3a7", "title": "Using Mirage With Vite", "url": "https://sirwan.info/blog/en/using-mirage-with-vite/", "published_at": "2021-07-25T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca5f864764", "title": "Web Server Logs", "url": "https://sirwan.info/blog/en/web-server-logs/", "published_at": "2021-07-20T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca5fef0072", "title": "disallow nested ternary expressions (no-nested-ternary)", "url": "https://sirwan.info/blog/en/no-nested-ternary/", "published_at": "2021-06-10T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca606d8429", "title": "OS Notification", "url": "https://sirwan.info/blog/en/OS-Notification/", "published_at": "2021-05-19T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca60a7f2e6", "title": "MySQL - Transforming JSON data into relational tables", "url": "https://sirwan.info/blog/en/Transforming-JSON-data-into-relational-tables/", "published_at": "2020-10-24T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca61a35af7", "title": "Getting Started With Sequelize", "url": "https://sirwan.info/blog/en/getting-started-with-sequelize/", "published_at": "2020-10-12T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca6252a754", "title": "WebSocket and React", "url": "https://sirwan.info/blog/en/WebSocket-and-React/", "published_at": "2020-03-08T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca6274d68a", "title": "Displaying Secured Images", "url": "https://sirwan.info/blog/en/Displaying-Secured-Images/", "published_at": "2020-01-25T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca62af6338", "title": "MobX with React and TypeScript", "url": "https://sirwan.info/blog/en/MobX-with-React-and-TypeScript/", "published_at": "2020-01-05T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca62cf8b8a", "title": "Server-Sent Events and React", "url": "https://sirwan.info/blog/en/%20Server-Sent-Events-and-React/", "published_at": "2019-12-15T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca6376ec45", "title": "Setting Up Tailwind", "url": "https://sirwan.info/blog/en/Setting-Up-Tailwind/", "published_at": "2019-11-16T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca63c605c4", "title": "Passing custom HTTP Header via Apollo Client", "url": "https://sirwan.info/blog/en/Passing-custom-HTTP-Header-via-Apollo-Client/", "published_at": "2019-11-06T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca6460c9b2", "title": "Redux", "url": "https://sirwan.info/blog/en/Redux/", "published_at": "2019-11-05T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca647eb050", "title": "Initializing state using class field declaration", "url": "https://sirwan.info/blog/en/Initializing-state-using-class-field-declaration/", "published_at": "2019-10-29T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca64af59c6", "title": "Flux", "url": "https://sirwan.info/blog/en/Flux/", "published_at": "2019-10-27T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca654f052c", "title": "Building Ionic React App", "url": "https://sirwan.info/blog/en/Building-Ionic-React-App/", "published_at": "2019-10-21T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca663b5451", "title": "Testing React Components", "url": "https://sirwan.info/blog/en/Testing-React-Components/", "published_at": "2019-10-02T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca6729ad56", "title": "Higher-Order Components", "url": "https://sirwan.info/blog/en/Higher-Order-Components/", "published_at": "2019-09-22T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca67edc909", "title": "Importing JSON files into SQL Server", "url": "https://sirwan.info/blog/en/Importing-JSON-files-into-SQL-Server/", "published_at": "2019-09-18T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca6867a8b5", "title": "Using IHostingEnvironment in a test project", "url": "https://sirwan.info/blog/en/Using-IHostingEnvironment-in-a-test-project/", "published_at": "2019-08-09T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca68ac361e", "title": "Migrating To Gatsby", "url": "https://sirwan.info/blog/en/Migrating-To-Gatsby/", "published_at": "2019-07-22T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca68d94af9", "title": "Morse code", "url": "https://sirwan.info/blog/en/Programming-challenges-morse-code/", "published_at": "2019-07-08T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca69169c33", "title": "Calling Stored Procedures using Dapper", "url": "https://sirwan.info/blog/en/Calling-Stored-Procedures/", "published_at": "2019-06-07T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca695fcda3", "title": "Highlighting Current Link in Razor Pages", "url": "https://sirwan.info/blog/en/Razor-Pages-Highlight-Current-Link/", "published_at": "2019-05-31T23:46:37+00:00" }, { "id": "01a087e1-9ce3-7019-8648-c6ca69bcb491", "title": "Passed Exam 70-483 - Programming in C#", "url": "https://sirwan.info/blog/en/Passed-Exam-70-483-exam/", "published_at": "2019-05-25T23:46:37+00:00" }, { "id": "01a087e1-9ce4-717c-8ae5-6f5e22a17070", "title": "Hosting React app on IIS", "url": "https://sirwan.info/blog/en/Hosting-react-app-on-iis/", "published_at": "2019-04-09T23:46:37+00:00" }, { "id": "01a087e1-9ce4-717c-8ae5-6f5e23341c08", "title": "Hosting a WCF Service as a Windows Service Using Topshelf", "url": "https://sirwan.info/blog/en/Hosting-WCF-Service/", "published_at": "2019-03-07T23:46:37+00:00" }, { "id": "01a087e1-9ce4-717c-8ae5-6f5e23dc5a3c", "title": "What's Elasticsearch", "url": "https://sirwan.info/blog/en/What's-Elasticsearch/", "published_at": "2018-12-05T23:46:37+00:00" }, { "id": "01a087e1-9ce4-717c-8ae5-6f5e241ba2da", "title": "GraphQL", "url": "https://sirwan.info/blog/en/Graphql/", "published_at": "2018-10-28T23:46:37+00:00" }, { "id": "01a087e1-9ce4-717c-8ae5-6f5e2519044e", "title": "React Hooks", "url": "https://sirwan.info/blog/en/React-Hooks/", "published_at": "2018-10-27T23:46:37+00:00" }, { "id": "01a087e1-9ce4-717c-8ae5-6f5e2603686d", "title": "Shahriban - My first Hackathon project (Challenges, Lessons Learned)", "url": "https://sirwan.info/blog/en/Shahriban/", "published_at": "2018-06-25T23:46:37+00:00" }, { "id": "01a087e1-9ce4-717c-8ae5-6f5e26b10cf8", "title": "Uploading file in Vue.js", "url": "https://sirwan.info/blog/en/Uploading-file-in-Vue.js/", "published_at": "2018-06-04T23:46:37+00:00" }, { "id": "01a087e1-9ce4-717c-8ae5-6f5e2705bdde", "title": "TypeScript and Vue.js", "url": "https://sirwan.info/blog/en/TypeScript-and-Vue.js/", "published_at": "2018-05-28T23:46:37+00:00" }, { "id": "01a087e1-9ce4-717c-8ae5-6f5e274f7738", "title": "Developing Console-based UI in CSharp", "url": "https://sirwan.info/blog/en/Developing-Console-based-UI-in-C/", "published_at": "2018-05-02T23:46:37+00:00" }, { "id": "01a087e1-9ce4-717c-8ae5-6f5e27a986cb", "title": "Does making decision matter?", "url": "https://sirwan.info/blog/en/Does-making-decision-matter/", "published_at": "2018-04-27T23:46:37+00:00" }, { "id": "01a087e1-9ce4-717c-8ae5-6f5e282f4787", "title": "Running PowerShell on macOS", "url": "https://sirwan.info/blog/en/Powershell-on-macOS/", "published_at": "2017-06-06T23:46:37+00:00" }, { "id": "01a087e1-9ce4-717c-8ae5-6f5e2867bb4c", "title": "SQL Server on Linux in Docker on a Mac", "url": "https://sirwan.info/blog/en/SQL-Server-on-Linux-in-Docker-on-a-Mac/", "published_at": "2017-06-04T23:46:37+00:00" }, { "id": "01a087e1-9ce4-717c-8ae5-6f5e28a91f3e", "title": "Working remotely", "url": "https://sirwan.info/blog/en/Working-remotely/", "published_at": "2017-05-03T23:46:37+00:00" }, { "id": "01a087e1-9ce4-717c-8ae5-6f5e291473ac", "title": "My first experiences with Linux", "url": "https://sirwan.info/blog/en/My-first-experiences-with-Linux/", "published_at": "2017-02-27T23:46:37+00:00" }, { "id": "01a087e1-9ce4-717c-8ae5-6f5e29318a90", "title": "Environments in ASP.NET Core", "url": "https://sirwan.info/blog/en/Environments-in-ASP.NET-Core/", "published_at": "2016-11-23T23:46:37+00:00" }, { "id": "01a087e1-9ce4-717c-8ae5-6f5e2a0a4a9d", "title": "Getting to know Singleton pattern in C#", "url": "https://sirwan.info/blog/en/Getting-to-know-Singletone-Pattern/", "published_at": "2016-11-08T23:46:37+00:00" }, { "id": "01a087e1-9ce4-717c-8ae5-6f5e2ad540dd", "title": "Designing Fluent Interfaces in C#", "url": "https://sirwan.info/blog/en/Designing-Fluent-Interfaces-in-C/", "published_at": "2016-10-26T23:46:37+00:00" }, { "id": "01a087e1-9ce4-717c-8ae5-6f5e2bbc28bd", "title": "Explicit Interface Implementation", "url": "https://sirwan.info/blog/en/Explicit-Interface-Implementation/", "published_at": "2016-08-12T23:46:37+00:00" }, { "id": "01a087e1-9ce5-70f9-ac7b-d37135b18fdc", "title": "Delegates in C#", "url": "https://sirwan.info/blog/en/Delegates/", "published_at": "2016-07-02T23:46:37+00:00" }, { "id": "01a087e1-9ce5-70f9-ac7b-d37135db9ace", "title": "Thinking out of the box to become a better programmer", "url": "https://sirwan.info/blog/en/Thinking-out-of-the-box-to-become-a-better-programmer/", "published_at": "2016-06-11T23:46:37+00:00" }, { "id": "01a087e1-9ce5-70f9-ac7b-d371360e4e36", "title": "Why AngularJS?", "url": "https://sirwan.info/blog/en/Why-Angular/", "published_at": "2016-04-17T23:46:37+00:00" }, { "id": "01a087e1-9ce5-70f9-ac7b-d37136739255", "title": "Asynchronous Execution in JavaScript", "url": "https://sirwan.info/blog/en/Asynchronous-Execution-in-JavaScript/", "published_at": "2016-02-12T23:46:37+00:00" }, { "id": "01a087e1-9ce5-70f9-ac7b-d371376b99b5", "title": "Object Oriented JavaScript Part 2", "url": "https://sirwan.info/blog/en/Object-Oriented-JavaScript-Part-2/", "published_at": "2015-12-11T23:46:37+00:00" }, { "id": "01a087e1-9ce7-7001-9668-07ef5095c1b0", "title": "Object Oriented JavaScript Part 1", "url": "https://sirwan.info/blog/en/Object-Oriented-JavaScript-Part-1/", "published_at": "2015-12-10T23:46:37+00:00" }, { "id": "01a087e1-9ce7-7001-9668-07ef510a3903", "title": "My first blog post!", "url": "https://sirwan.info/blog/en/First-Blog-Post/", "published_at": "2015-11-28T23:46:37+00:00" } ] posts Claim your blog
Back to sirwan.info
Blog · corpus.blog/blogs/sirwan.info/posts

sirwan.info

sirwan.info

2026

2025

2024

2023

2022

2021

2020

2019

27 Oct 2019

2018

2017

2016

2015