41554 blogs · [ { "id": "01a0879b-37f7-7376-a9e5-6956fce67b0b", "title": "Self-Hosting Hermes Agent with Matrix E2EE on Proxmox", "url": "https://lirantal.com/blog/self-host-hermes-agent-matrix-e2ee-proxmox", "published_at": "2026-09-05T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-6956fdcd6eb9", "title": "The Practical Second Brain: Building an LLM-Operated Markdown Knowledge Graph", "url": "https://lirantal.com/blog/practical-second-brain-llm-markdown-knowledge-graph", "published_at": "2026-08-02T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-6956fe25cca8", "title": "Building a Second Brain with LLMs and AI Agents", "url": "https://lirantal.com/blog/building-second-brain-llms-ai-agents", "published_at": "2026-08-01T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-6956fea02aa7", "title": "Invisible Unicode Can Hijack Gemini CLI Agent Skills", "url": "https://lirantal.com/blog/gemini-cli-invisible-unicode-skill-injection", "published_at": "2026-07-17T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-6956feb510b2", "title": "Build Agent Workflows Around State Ownership, Not Timing", "url": "https://lirantal.com/blog/build-agent-workflows-around-state-ownership", "published_at": "2026-07-02T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-6956ff5c14bf", "title": "How to Turn a Custom Terminal Setup into Portable Dotfiles with chezmoi", "url": "https://lirantal.com/blog/portable-terminal-dotfiles-chezmoi", "published_at": "2026-06-30T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-6956ffef47b5", "title": "DevRel in 2026: Thematic Shifts, Product-centric Advocacy and the Rising Tide of Coding Agents", "url": "https://lirantal.com/blog/devrel-2026-thematic-shifts-product-centric-advocacy-coding-agents", "published_at": "2026-06-18T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695700e280f2", "title": "Coding Agents Do Not Replace Technical Proficiency — They Demand More of It", "url": "https://lirantal.com/blog/coding-agents-do-not-replace-technical-proficiency", "published_at": "2026-05-10T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-6957019f43aa", "title": "Is Prompt Injection an Unsolvable Problem in AI?", "url": "https://lirantal.com/blog/is-prompt-injection-unsolvable-problem-ai", "published_at": "2026-05-09T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695701b3ef4d", "title": "Managing AI Agents and Skills with APM", "url": "https://lirantal.com/blog/managing-ai-agents-and-skills-with-apm", "published_at": "2026-05-02T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695702282495", "title": "Validated Fastify Configuration with dotenv, env-schema, and @fastify/env", "url": "https://lirantal.com/blog/fastify-dotenv-envschema-config", "published_at": "2026-05-01T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-6957030adc83", "title": "Cursor Agent Hooks: Lint and Build Checks After Each Turn", "url": "https://lirantal.com/blog/cursor-stop-hook-lint-build-verification", "published_at": "2026-04-22T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695703f49a87", "title": "LLM Security Automation Isn’t a Drop-In Scanner Yet", "url": "https://lirantal.com/blog/llm-security-automation-isnt-a-drop-in-scanner-yet", "published_at": "2026-04-20T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695704a578b4", "title": "All About Jest, Timers, and Mocks", "url": "https://lirantal.com/blog/jest-timers-and-mocks", "published_at": "2026-03-30T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69570591d35e", "title": "How to Build a Coding Agent Benchmark with Claude's Agent SDK", "url": "https://lirantal.com/blog/how-to-build-a-coding-agent-benchmark-with-claudes-agent-sdk", "published_at": "2026-03-29T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695705b6ce81", "title": "Agentic Growthhacking Tactics with Bots and AI", "url": "https://lirantal.com/blog/agentic-growthhacking-tactics-with-bots-and-ai", "published_at": "2026-03-28T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69570605fc4a", "title": "Tools for Self-Published Authors", "url": "https://lirantal.com/blog/tools-for-self-published-authors", "published_at": "2025-11-22T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695706361626", "title": "Pre‑Signed URL Upload Architecture (Cloudflare R2 + Hono Workers)", "url": "https://lirantal.com/blog/pre-signed-url-upload-architecture-cloudflare-r2-hono-workers", "published_at": "2025-10-15T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695706437bce", "title": "Building Cloudflare R2 Pre-signed URL Uploads with Hono: A Complete Implementation Guide", "url": "https://lirantal.com/blog/cloudflare-r2-presigned-url-uploads-hono", "published_at": "2025-10-14T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695707304683", "title": "A RESTful HTTP Mental Model to Understand MCP", "url": "https://lirantal.com/blog/a-restful-http-mental-model-to-understand-mcp", "published_at": "2025-10-12T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69570782af03", "title": "A Proposed Evaluation Framework for MCP Server Security", "url": "https://lirantal.com/blog/mcp-server-security-evaluation-framework", "published_at": "2025-10-07T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695707afe59e", "title": "Evaluation Framework for MCP Security Threats and Risks", "url": "https://lirantal.com/blog/evaluation-framework-for-mcp-security-threats-and-risks", "published_at": "2025-10-05T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695707f9ce01", "title": "The Cursor Agentic Jira MCP Attack Explained with Toxic Flow Analysis", "url": "https://lirantal.com/blog/the-cursor-jira-mcp-attack-explained-with-toxic-flow-analysis", "published_at": "2025-10-03T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695708798781", "title": "The Uprising of Model Context Protocol (MCP) Security Research", "url": "https://lirantal.com/blog/the-uprising-of-model-context-protocol-mcp-security-research", "published_at": "2025-09-24T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695708f70007", "title": "Agent Rules is the Missing Link in AI-Powered Development", "url": "https://lirantal.com/blog/agent-rules-missing-link-ai-powered-development", "published_at": "2025-09-21T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-6957098422be", "title": "Automating DevRel Conference CFP Evaluation with AI Agents: A Complete Guide with the Mastra AI Framework", "url": "https://lirantal.com/blog/automating-devrel-conference-cfp-evaluation-with-ai-agents", "published_at": "2025-09-20T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695709ed59d0", "title": "Agentic Marketing: The Future of AI-Driven Marketing Strategies", "url": "https://lirantal.com/blog/agentic-marketing-future-ai-driven-marketing-strategies", "published_at": "2025-09-17T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69570adaf56b", "title": "Getting Started with CLI Arguments in Node.js", "url": "https://lirantal.com/blog/mastering-cli-arguments-nodejs", "published_at": "2025-09-13T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69570b7bfe4c", "title": "Poetic Tales of Vulnerable MCP Servers: Command Injection in AI Coding Assistants", "url": "https://lirantal.com/blog/poetic-tales-vulnerable-mcp-servers-command-injection-ai-coding-assistants", "published_at": "2025-09-11T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69570c07e7aa", "title": "Secure Your MCP Servers with Environment Variable Risk Assessment", "url": "https://lirantal.com/blog/secure-mcp-env-var-risk-assessment", "published_at": "2025-09-09T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69570c317549", "title": "Solving an ASCII Maze with a Neural Network in JavaScript", "url": "https://lirantal.com/blog/solving-an-ascii-maze-with-a-neural-network-in-javascript", "published_at": "2025-09-07T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69570c42fae8", "title": "Automate Package Health Checks with Snyk Advisor and Qodo Agents", "url": "https://lirantal.com/blog/automate-package-health-checks-with-snyk-advisor-and-qodo-agents", "published_at": "2025-09-06T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69570d26c256", "title": "Computer Vision in Python Building Detection and Object Annotation with Ultralytics YOLO and Supervision", "url": "https://lirantal.com/blog/computer-vision-python-object-detection-annotation-yolo-supervision", "published_at": "2025-09-04T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69570d8a2ea1", "title": "What do AI-first DevTool Companies Look Like and how DevRel Practices Change?", "url": "https://lirantal.com/blog/ai-first-devtool-companies-and-devrel", "published_at": "2025-09-03T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69570da126b4", "title": "Securely Loading Credentials for Google Cloud Storage in Node.js", "url": "https://lirantal.com/blog/securely-loading-credentials-google-cloud-storage-nodejs", "published_at": "2025-09-02T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69570de193c7", "title": "DevRel Engagement and GTM Tactics on X / Twitter", "url": "https://lirantal.com/blog/devrel-engagement-gtm-tactics-on-x-twitter", "published_at": "2025-08-23T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69570e9068b8", "title": "Plan, Don't Execute: Agentic Workflows in Zero Trust Environments", "url": "https://lirantal.com/blog/plan-dont-execute-agentic-workflows-in-zero-trust-environments", "published_at": "2025-08-19T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69570ecfb037", "title": "5 Pillars of Augmented Agentic Software Development", "url": "https://lirantal.com/blog/five-pillars-augmented-agentic-software-development", "published_at": "2025-08-09T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69570efe5bab", "title": "Themes to Unlock Agentic Development for Software Engineers", "url": "https://lirantal.com/blog/themes-to-unlock-agentic-development-for-software-engineers", "published_at": "2025-08-01T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69570f481100", "title": "If You're an MCP Company You're NGMI", "url": "https://lirantal.com/blog/if-youre-an-mcp-company-youre-ngmi", "published_at": "2025-07-23T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695710392903", "title": "Auto fine-tuning Agentic Workflow with Qodo CLI", "url": "https://lirantal.com/blog/agentic-self-healing-workflows-with-qodo-command-cli", "published_at": "2025-07-22T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-6957111843ec", "title": "Automating OpenSSF Scorecard Security issues with Qodo CLI Agentic Workflow", "url": "https://lirantal.com/blog/automating-openssf-scorecard-security-issues-with-qodo-cli-agentic-workflow", "published_at": "2025-07-12T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695711449a65", "title": "How to setup TV Sleep Timer with Home Assistant Automation", "url": "https://lirantal.com/blog/how-to-setup-tv-sleep-timer-with-home-assistant-automation", "published_at": "2025-07-05T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695711a62a73", "title": "CORS, SameSite and CSRF: The 3 Dimensions of Cookie based Authentication", "url": "https://lirantal.com/blog/cors-samesite-csrf-3-dimensions-cookie-authentication", "published_at": "2025-06-08T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69571286d5d5", "title": "Gamifying the Future of Skill Development: From Open-Source Security to LLM Prompt Injection", "url": "https://lirantal.com/blog/gamifying-future-skill-development-open-source-security-llm-prompt-injection", "published_at": "2025-05-15T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695712aa96b6", "title": "DevRel Failures? Maybe Your Marketing and Product Strategies Are Outdated", "url": "https://lirantal.com/blog/devrel-failures-or-marketing-failures-outdated-product-marketing-strategies", "published_at": "2025-05-01T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695712bedac2", "title": "Dependency-free Command-Line Apps powered by Node.js core modules", "url": "https://lirantal.com/blog/dependency-free-command-line-apps-powered-by-node-js-core-modules", "published_at": "2025-04-17T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695713236813", "title": "Getting started with Neural Networks in JavaScript", "url": "https://lirantal.com/blog/getting-started-neural-networks-in-javascript", "published_at": "2025-03-07T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695713517f0c", "title": "How I use GenAI to Speed Up Demo Apps in My DevRel Role", "url": "https://lirantal.com/blog/how-use-genai-speed-up-demo-apps-devrel-role", "published_at": "2025-03-02T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69571379b7ec", "title": "What is an LLMs.txt File?", "url": "https://lirantal.com/blog/what-is-an-llms-txt-file", "published_at": "2025-02-28T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-6957147828ae", "title": "The CJS module system, globals and other hardships with maintainable code in Node.js", "url": "https://lirantal.com/blog/cjs-module-system-globals-hardships-maintainable-code-nodejs", "published_at": "2025-02-19T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695714e2778b", "title": "How to Read and Parse PDFs with PDF.js and Create PDFs with PDF Lib in Node.js", "url": "https://lirantal.com/blog/how-to-read-and-parse-pdfs-pdfjs-create-pdfs-pdf-lib-nodejs", "published_at": "2025-02-02T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695715007b63", "title": "TypeScript in 2025 with ESM and CJS npm publishing is still a mess", "url": "https://lirantal.com/blog/typescript-in-2025-with-esm-and-cjs-npm-publishing", "published_at": "2025-01-14T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695715a58220", "title": "Home Assistant YouTube DNS Blocking with AdGuard and Lovelace Buttons Setup", "url": "https://lirantal.com/blog/home-assistant-youtube-dns-blocking-adguard-lovelace-buttons-setup", "published_at": "2025-01-07T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-6957167e06ec", "title": "Customizing Astro Starlight Sidebar for Gated Content with Authentication", "url": "https://lirantal.com/blog/customizing-astro-starlight-sidebar-gated-content-auth", "published_at": "2025-01-06T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69571757de0e", "title": "How to Setup Google Cloud Project and Store Images in Google Cloud", "url": "https://lirantal.com/blog/how-to-setup-google-cloud-project-and-store-images-in-google-cloud", "published_at": "2024-12-21T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695717c9ab6c", "title": "Thinking Fast and Slow in Application Security", "url": "https://lirantal.com/blog/thinking-fast-and-slow-in-application-security", "published_at": "2024-12-12T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695718b75dc6", "title": "Component auto import in Astro framework", "url": "https://lirantal.com/blog/component-auto-import-in-astro-framework", "published_at": "2024-09-06T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-6957195535e6", "title": "Using Promise.withResolvers in Node.js Tests", "url": "https://lirantal.com/blog/promise-with-resolvers-in-nodejs-tests", "published_at": "2024-08-30T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69571a441950", "title": "Supercharging Your Vue.js 3 App with TanStack Query: A Practical Refactoring Guide", "url": "https://lirantal.com/blog/supercharging-vuejs-3-app-tanstack-query-practical-refactoring-guide", "published_at": "2024-08-11T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69571ad62503", "title": "Zero Dependency JavaScript is the Future?", "url": "https://lirantal.com/blog/zero-dependency-javascript-is-the-future", "published_at": "2024-07-24T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69571bb69093", "title": "How to run a local LLM for inference with an offline-first approach", "url": "https://lirantal.com/blog/how-to-run-local-llm-for-inference-with-offline-first-approach", "published_at": "2024-07-15T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69571c009b4b", "title": "GenAI Predictions and The Future of LLMs as local-first offline Small Language Models (SLMs)", "url": "https://lirantal.com/blog/genai-predictions-the-future-llms-local-first-offline-small-language-models-slm", "published_at": "2024-06-12T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69571cd04c60", "title": "Installing Playwright on Heroku for Programmatic Node.js Browser Automation", "url": "https://lirantal.com/blog/installing-playwright-on-heroku-for-programmatic-nodejs-browser-automation", "published_at": "2024-05-31T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69571d485bf7", "title": "Poor Express Authentication Patterns in Node.js and How to Avoid Them", "url": "https://lirantal.com/blog/poor-express-authentication-patterns-nodejs", "published_at": "2024-05-03T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69571df230a7", "title": "How to block LAN clients from accessing YouTube and other media with AdGuard and Home Assistant", "url": "https://lirantal.com/blog/block-lan-clients-from-accessing-youtube-and-other-media-with", "published_at": "2024-04-20T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69571e8655f3", "title": "HTTP webhooks on Firebase Functions and Fastify: A Practical Case Study with Lemon Squeezy", "url": "https://lirantal.com/blog/http-webhooks-firebase-functions-fastify-practical-case-study-lemon-squeezy", "published_at": "2024-02-16T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69571ee431d4", "title": "How To Get Social Media Previews Right on Astro blog with OpenGraph Meta Tags", "url": "https://lirantal.com/blog/getting-social-media-previews-right-with-opengraph-meta-tags", "published_at": "2024-01-03T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69571fcf66d0", "title": "Best Practices for Bootstrapping a Node.js Application Configuration", "url": "https://lirantal.com/blog/best-practices-for-bootstrapping-a-node-js-application-configuration", "published_at": "2023-10-31T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69571fdfe5c0", "title": "How I Deployed Tailscale VPN to Securely Access Home Assistant Remotely", "url": "https://lirantal.com/blog/employ-tailscale-vpn-to-securely-access-home-assistant-remotely", "published_at": "2023-10-15T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-6957200aa932", "title": "Environment variables and configuration anti patterns in Node.js applications", "url": "https://lirantal.com/blog/environment-variables-configuration-anti-patterns-node-js-applications", "published_at": "2023-10-01T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69572050ce62", "title": "Vue.js Patterns: Using Vue.js 3 Composition API for Reactive Parent to Child Communication", "url": "https://lirantal.com/blog/vuejs-patterns-using-vuejs-3-composition-api-for-reactive-parent-to-child-communication", "published_at": "2023-09-13T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-6957212a29eb", "title": "Generating presentation titles using OpenAI background jobs with Node.js, Express and Trigger.dev", "url": "https://lirantal.com/blog/background-jobs-processing-with-node-js-express-trigger-dev", "published_at": "2023-09-04T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695721e9a57a", "title": "How to Process Scheduled Queue Jobs in Node.js with BullMQ and Redis on Heroku", "url": "https://lirantal.com/blog/how-to-process-scheduled-queue-jobs-in-nodejs-with-bullmq-and-redis-on-heroku", "published_at": "2023-08-17T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695722dfba4b", "title": "Configuration Decoded: Lesser-Known Tips for Working with env-schema in Node.js", "url": "https://lirantal.com/blog/configuration-decoded-lesser-known-tips-for-working-with-env-schema-in-nodejs", "published_at": "2023-08-07T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695722f4bad0", "title": "Introducing Changesets: Simplify Project Versioning with Semantic Releases", "url": "https://lirantal.com/blog/introducing-changesets-simplify-project-versioning-with-semantic-releases", "published_at": "2023-07-17T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69572347a6b3", "title": "Deploying a Fastify & Vue 3 Static Site to Heroku", "url": "https://lirantal.com/blog/deploying-a-fastify-vue-3-static-site-to-heroku", "published_at": "2023-07-08T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695723485cf2", "title": "Avoid Fastify's reply.raw and reply.hijack Despite Being A Powerful HTTP Streams Tool", "url": "https://lirantal.com/blog/avoid-fastify-reply-raw-and-reply-hijack-despite-being-a-powerful-http-streams-tool", "published_at": "2023-06-30T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-6957243bcd98", "title": "Disclosing a local file inclusion vulnerability in xmlhttprequest library", "url": "https://lirantal.com/blog/local-file-inclusion-in-xmlhttprequest-library", "published_at": "2023-04-27T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695724c4d837", "title": "Disclosing uncontrolled resource consumption in xmlhttprequest library", "url": "https://lirantal.com/blog/disclosing-uncontrolled-resource-consumption-in-xmlhttprequest-library", "published_at": "2023-04-16T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695724d81dc2", "title": "How to apply custom admonition styles to AsciiDoc", "url": "https://lirantal.com/blog/how-to-apply-custom-admonition-styles-to-asciidoc", "published_at": "2023-04-10T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69572565ec6f", "title": "How to write your book with AsciiDoc", "url": "https://lirantal.com/blog/how-to-write-your-book-with-asciidoc", "published_at": "2023-04-05T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695725c05e4e", "title": "Celebrating Community: My Journey to Receiving the GitHub Stars 2023 Award", "url": "https://lirantal.com/blog/celebrating-community-my-journey-to-receiving-the-github-stars-2023-award", "published_at": "2023-03-16T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695726a99dd9", "title": "Open Source activism with ReadyCodePush", "url": "https://lirantal.com/blog/open-source-activism-readycodepush", "published_at": "2023-02-25T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695726df3f63", "title": "How to add client-side search with PageFind to your Astro blog static website", "url": "https://lirantal.com/blog/2023-01-01_-how_to_add_client-side_search_to_your_astro_blog_static_website", "published_at": "2023-01-24T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695727a4428f", "title": "Advanced usage patterns for taking page element screenshots with Playwright", "url": "https://lirantal.com/blog/advanced-usage-patterns-for-taking-page-element-screenshots-with-playwright", "published_at": "2023-01-15T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695728a3efca", "title": "Enhance your command line with Warp", "url": "https://lirantal.com/blog/2022-11-22_enhance-your-command-line-with-warp", "published_at": "2022-11-22T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-6957295f3d52", "title": "Content creators web resources", "url": "https://lirantal.com/blog/2022-12-03_content_creators_web_resources", "published_at": "2022-11-22T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69572a36b55b", "title": "Are you also validating a JavaScript URL using RegEx?", "url": "https://lirantal.com/blog/2022-10-28_are_you_validating_javascript_url_safely", "published_at": "2022-10-28T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69572b16eaa0", "title": "Resources for Public Speaking and Conference CFP application", "url": "https://lirantal.com/blog/2022-10-21_resources_for_public_speaking_and_conference_cfp_application", "published_at": "2022-10-21T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69574fdfae8c", "title": "The maintainer's CI workflows recipe for a peaceful open source life", "url": "https://lirantal.com/blog/2021-11-30_the-maintainer-ci-workflow-recipe-for-peaceful-open-source-life", "published_at": "2021-11-30T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695750b58c46", "title": "Angular vs React: the security risk of indirect dependencies", "url": "https://lirantal.com/blog/angular-vs-react-the-security-risk-of-indirect-dependencies-snyk-af83b24d429e", "published_at": "2019-10-30T00:01:37+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695751458eb4", "title": "Comparing React and Angular secure coding practices", "url": "https://lirantal.com/blog/comparing-react-and-angular-secure-coding-practices-snyk-96315e3faf7d", "published_at": "2019-10-30T00:01:35+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695751e162d1", "title": "84% of all websites are impacted by jQuery XSS vulnerabilities", "url": "https://lirantal.com/blog/84-of-all-websites-are-impacted-by-jquery-xss-vulnerabilities-snyk-4c73a935ab11", "published_at": "2019-10-30T00:01:26+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695752735c9e", "title": "A Snyk peek into Node.js and npm’s state of open source security report 2019", "url": "https://lirantal.com/blog/a-snyk-peek-into-node-js-and-npms-state-of-open-source-security-report-2019-2209a5adc1e0", "published_at": "2019-10-09T14:05:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695752a3cd7f", "title": "My first time at JSConf Budapest, how was it?", "url": "https://lirantal.com/blog/2019-10-04_jsconf-budapest-review", "published_at": "2019-10-04T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-695752ee0d2d", "title": "npm security tips to keep you safe of malicious modules", "url": "https://lirantal.com/blog/2019-08-19_npm-tips-to-keep-you-safe", "published_at": "2019-08-19T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69575360eb3a", "title": "6 stages of refactoring a jest test case", "url": "https://lirantal.com/blog/2019-06-14_6-stages-of-refactoring-a-jest-test-case", "published_at": "2019-06-14T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-6957541ce00e", "title": "npm passes the 1 millionth package milestone! What can we learn?", "url": "https://lirantal.com/blog/2019-06-04_npm-passes-1-million-packages", "published_at": "2019-06-04T00:00:00+00:00" }, { "id": "01a0879b-37f7-7376-a9e5-69575488ab3a", "title": "Are you building Docker images? here's how to avoid leaking sensitive information into Docker images", "url": "https://lirantal.com/blog/2019-05-09_avoid-leaking-sensitive-information-when-building-docker-images", "published_at": "2019-05-09T00:00:00+00:00" } ] posts Claim your blog
Back to lirantal.com
Blog · corpus.blog/blogs/lirantal.com/posts

lirantal.com

lirantal.com

2026

2025

2024

2023

2022

2021

2019