[{"content":" \u0026nbsp; View Source on GitHub Overview # Crafted Edge Solutions is the digital backbone for a Nairobi-based consultancy founded in May 2024, focused on empowering businesses through digital transformation. The platform serves as both the public-facing website and an internal operations hub.\nArchitecture \u0026amp; Technical Decisions # The backend is built on Django 5 with Wagtail 5.2 providing a headless-capable CMS that allows non-technical team members to publish content, manage service pages, and maintain the company blog without touching code. Content editing workflows, including draft → review → publish, are handled entirely through Wagtail\u0026rsquo;s built-in moderation system.\nThe API layer uses Django REST Framework to expose structured data for potential future mobile clients and third-party integrations. Authentication follows Django\u0026rsquo;s session model with additional API token support via DRF.\nFor data persistence, the project uses PostgreSQL in production with Redis powering both the caching layer and Celery task queues. Static assets are optimized and served through WhiteNoise for zero-config static file handling in containerized deployments.\nDeployment # The entire stack is containerized with Docker and orchestrated via Docker Compose, with separate configurations for development and production environments. The production Dockerfile uses a multi-stage build based on Python 3.12-slim to minimize the final image size.\nImpact # The platform consolidates client management, appointment scheduling, analytics tracking, and content publishing into a single, self-hosted system — reducing dependency on fragmented SaaS tools for the consultancy\u0026rsquo;s day-to-day operations.\n","date":"21 January 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/projects/crafted-edge-solutions/","section":"Projects","summary":"Full-stack consultancy platform powering Crafted Edge Solutions Kenya — featuring a Wagtail CMS, client dashboards, analytics, and a blog engine.","title":"Crafted Edge Solutions","type":"projects"},{"content":" \u0026nbsp; View Source on GitHub meshack-vs-you-all/step-up-connect Youth Growth Ecosystem Platform with AI and Gigs assignment HTML 0 0 Overview # Step Up Connect is a comprehensive ecosystem designed to empower youth by connecting them to jobs, skills, mentorship, and side hustles. It\u0026rsquo;s built with a static-first frontend and a robust, scalable backend to handle real-world traffic and data processing.\nBackend Architecture # The core of the platform is a FastAPI backend that follows modern RESTful principles. Key features include:\nJWT Authentication: Secure user sessions and role-based access control (RBAC) to ensure data integrity and privacy. Database Management: Uses SQLAlchemy for ORM and PostgreSQL for persistent storage, ensuring scalable and reliable data handling. AI Integration: A custom abstract connector integrates with OpenAI and Google Gemini to provide AI-driven features like automated job description generation and skill gap analysis. Payment Processing: Integrated with Flutterwave for handling transactions and subscriptions (currently in test mode). Validation: Strict data validation using Pydantic models to ensure all incoming and outgoing data adheres to the defined schema. Frontend \u0026amp; UX # The frontend is built for performance and accessibility:\nFramework: Developed using Hugo with the Blowfish theme, ensuring ultra-fast load times and a modern, responsive UI. Multilingual Support: Fully localized to cater to a diverse user base. Design Principles: Adheres to clean, minimalist design principles, focusing on user-centric navigation and clear calls to action. Deployment \u0026amp; DevOps # The entire platform is containerized using Docker and orchestrated with Docker Compose. This ensures environment parity across development, testing, and production.\nMulti-container setup: Separate containers for the FastAPI app, PostgreSQL database, Redis (for caching), and the Hugo frontend. CI/CD Ready: Designed for easy integration with GitHub Actions for automated testing and deployment to platforms like Railway or AWS. Impact \u0026amp; Vision # Step Up Connect aims to bridge the gap between youth potential and market opportunities. By leveraging AI and a scalable backend architecture, it provides a centralized hub for career growth and skill development in the digital age.\n","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/projects/step-up-connect/","section":"Projects","summary":"A production-style youth growth platform featuring a FastAPI backend, JWT authentication, and AI-powered job/skill generation.","title":"Step Up Connect","type":"projects"},{"content":" \u0026nbsp; View Source on GitHub Overview # CraftedEdge POS is a production-grade Point-of-Sale system tailored for small to medium-sized retail businesses in Kenya. It streamlines inventory management, sales tracking, and reporting through a clean, intuitive interface.\nCore Features \u0026amp; Functionality # Inventory Management: Real-time tracking of stock levels with automated low-stock alerts and easy product management. Sales Interface: A fast, responsive POS terminal designed for efficiency during peak hours. Data Exporting: Capability to export detailed sales and inventory reports for further business analysis. POS System Management: Administrative tools to configure multiple POS terminals and manage system settings. Technical Architecture # Backend: Built on Django, leveraging its robust admin interface for backend management and its secure ORM for data integrity. Database: Uses PostgreSQL in production, ensuring ACID compliance and reliable handling of transactional data. Frontend: Styled with Tailwind CSS to provide a modern, custom UI that remains performant on varied hardware. Validation \u0026amp; Logic: Implements strict business logic for transactions, including precise price calculations and inventory updates. Business Impact # The CraftedEdge POS system empowers local minimarts to transition from manual record-keeping to a data-driven approach. By providing clear insights into sales trends and stock levels, it helps business owners reduce waste and optimize their product offerings.\n","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/projects/craftededge-pos/","section":"Projects","summary":"A robust Point-of-Sale solution for local minimarts featuring Django backend, PostgreSQL, and a modern Tailwind CSS interface.","title":"CraftedEdge POS","type":"projects"},{"content":" SEO Performance (Live Metrics) # ServiceScout\u0026rsquo;s dynamic landing pages drive consistent organic growth. Here\u0026rsquo;s a glimpse of the 30-day traffic trend:\nArchitecture \u0026amp; Technical Decisions # Built on Django 5, ServiceScout uses a clean URL hierarchy (/\u0026lt;service\u0026gt;/\u0026lt;city\u0026gt;/\u0026lt;area\u0026gt;/) that maps directly to search intent. Each URL combination dynamically generates a fully SEO-optimized page with unique H1 tags, meta descriptions, and structured content — without requiring manual content creation for every service-location pair.\ngraph LR A[User Search: \"Plumber Westlands\"] --\u003e B(ServiceScout Router) B --\u003e C{URL Match?} C -- Yes --\u003e D[Fetch Service \u0026 Location Data] D --\u003e E[Generate Dynamic SEO Content] E --\u003e F[Render Landing Page] C -- No --\u003e G[404 / Suggest Nearby] The lead capture system is deliberately minimal: a single streamlined form that collects just enough information to route a qualified lead to the right provider. Form hardening includes Kenyan phone number validation (07XX/01XX/+254 formats), whitespace stripping, and empty-description prevention to maintain lead quality.\nThe admin dashboard surfaces leads with enhanced filtering and search capabilities, giving providers quick access to relevant opportunities without wading through noise.\n\u0026nbsp; View Source on GitHub Design Philosophy # Every architectural decision prioritizes speed and discoverability: minimal templates for fast page loads, dynamic SEO content that scales across hundreds of service-location combinations, and a URL structure that search engines can crawl and index efficiently. The platform deliberately avoids heavy JavaScript frameworks — server-rendered HTML keeps time-to-first-byte low and ensures full crawlability.\nImpact # ServiceScout provides a scalable model for hyperlocal service marketplaces in East African cities, where service discovery still relies heavily on word-of-mouth and social media. The SEO-first approach generates organic leads at near-zero customer acquisition cost, making it viable for markets where paid advertising budgets are constrained.\n","date":"2 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/projects/servicescout/","section":"Projects","summary":"SEO-first local service aggregator that connects users with vetted service providers across Nairobi — with dynamic landing pages and smart lead capture.","title":"ServiceScout","type":"projects"},{"content":" Python Scrapy Celery \u0026nbsp; View Source on GitHub Overview # The Kenya Scraper Platform (KSP) is a purpose-built web scraping infrastructure designed specifically for Kenyan websites. It prioritizes ethical data collection with built-in compliance mechanisms while maintaining the throughput needed for production workloads.\nArchitecture \u0026amp; Technical Decisions # The API layer is built on FastAPI for its async-first design and automatic OpenAPI documentation — critical for a platform where multiple internal services submit scraping jobs. Data validation uses Pydantic v2 models throughout, catching malformed requests before they reach the task queue.\nFor rendering JavaScript-heavy sites (common in Kenyan fintech and e-commerce), the platform uses Playwright instead of simple HTTP requests. This handles SPAs, lazy-loaded content, and pages behind client-side routing that would otherwise return empty responses to traditional scrapers.\nJob orchestration is handled by Celery with Redis as the broker, distributing scraping tasks across workers with configurable concurrency and rate limiting per domain. Persistent storage uses PostgreSQL via SQLAlchemy with Alembic managing schema migrations, while raw HTML snapshots are stored in MinIO/S3-compatible storage.\nEthical Compliance # The platform automatically parses and respects robots.txt for every target domain. Rate limiting is configurable per-site, the user agent clearly identifies the scraper, and CAPTCHA detection triggers manual intervention queues rather than automated bypass — ensuring compliance with website terms of service.\nDeployment # KSP ships with both Docker Compose for dev/staging and Kubernetes manifests for production environments. The Dockerfile uses a multi-stage build to minimize the final image footprint, and Helm-compatible configs allow scaling scraper workers independently of the API tier.\nImpact # The platform provides structured, reliable data extraction from Kenyan web sources — supporting market research, price monitoring, and business intelligence workflows where commercial scraping APIs have limited coverage of East African websites.\n","date":"16 October 2025","externalUrl":null,"permalink":"/meshack-hugo-portfolio/projects/kenya-scraper-platform/","section":"Projects","summary":"Production-grade ethical web scraping engine for Kenyan websites — with automatic robots.txt compliance, Playwright-based rendering, and Kubernetes-ready deployment.","title":"Kenya Scraper Platform","type":"projects"},{"content":" Django PostgreSQL Tailwind \u0026nbsp; View Source on GitHub Overview # JPF Stretch Hub is a comprehensive web application designed for a stretching and fitness studio, handling everything from class bookings and payment processing to user account management. It was scaffolded with Cookiecutter Django to ensure production-grade defaults from day one.\nArchitecture \u0026amp; Technical Decisions # The backend runs on Django 5 with django-allauth providing authentication (including MFA via FIDO2) — a deliberate choice to support passwordless login flows for studio members who book on mobile devices.\nThe frontend is a standalone React 19 SPA bundled with Vite, styled with TailwindCSS, and communicating with the backend via REST APIs. The decoupled architecture allows the frontend team to iterate on the booking UI independently of backend releases.\nBackground task processing — confirmation emails, payment webhooks, and schedule reminders — is handled by Celery backed by Redis, with Flower providing real-time task monitoring. Periodic tasks like session cleanup and report generation use django-celery-beat for cron-style scheduling.\nDeployment # The project ships with production-grade Docker Compose configurations. Static assets are compiled, compressed, and fingerprinted using django-compressor and served through WhiteNoise. Security hardening follows Cookiecutter Django\u0026rsquo;s opinionated defaults, including Argon2 password hashing and strict CSP headers.\nImpact # The platform replaced a manual booking system (phone calls + spreadsheets) with a self-service portal that handles scheduling, payments, and client communications — streamlining studio operations and reducing administrative overhead for a growing fitness business in Nairobi.\n","date":"21 January 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/projects/jpf-stretch-hub/","section":"Projects","summary":"Booking, payment, and user management platform for a stretching and fitness studio — built with Django, React, and Celery.","title":"JPF Stretch Hub","type":"projects"},{"content":" Bridging the gap between local data privacy and powerful Large Language Models using the Model Context Protocol (MCP). Project Overview # This initiative focuses on the practical application of Agentic AI — specifically, integrating LLMs with local tools and data without compromising privacy. I have worked extensively with custom MCP servers to allow models like DeepSeek and Llama 3 to interact with:\nLocal file systems Self-hosted databases Internal APIs Home automation systems Technical Integration # The architecture utilizes n8n for autonomous workflows and standardized MCP servers for tool definitions. This allows for a robust, local-first AI ecosystem that can handle complex tasks while keeping sensitive data on-premise.\n","date":"14 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/projects/local-ai-mcp/","section":"Projects","summary":"Implementing and integrating the Model Context Protocol (MCP) to connect local data sources with Large Language Models. Focuses on tool development and capability testing for local models like DeepSeek and Llama 3.","title":"Local AI Context \u0026 MCP","type":"projects"},{"content":" Infrastructure Visualization # Explore the self-healing architecture and dashboard metrics that power my homelab.\nMy personal proving ground for DevOps practices — a self-healing, containerized infrastructure running on bare metal. \u0026nbsp; View Source on GitHub Infrastructure Overview # This project is a living laboratory where I test deployment strategies, networking configurations, and security practices before applying them to client projects. It runs a full suite of self-hosted services behind a secure reverse proxy.\nKey Components # Traefik: Automatic SSL termination and reverse routing. Docker \u0026amp; Portainer: Container orchestration and management. Monitoring: Real-time metrics and logging. Storage: Network-attached storage with automated backups. ","date":"13 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/projects/homelab-infrastructure/","section":"Projects","summary":"A production-grade homelab environment serving as a proving ground for DevOps practices. Features secure reverse routing via Traefik, container orchestration with Portainer, and comprehensive monitoring.","title":"My Local Cloud (Homelab)","type":"projects"},{"content":" \u0026nbsp; View Source on GitHub Overview # Kenya B2B Leads 2026 is a strategic business intelligence initiative designed to optimize outreach and engagement in the Kenyan B2B sector. It provides a structured approach to lead generation, assessment, and conversion.\nKey Components # Segmented Lead Data: Categorized leads based on intent, budget, and decision-making speed (A, B, and C tiers). Business Audits: Individual assessments of potential leads, including rapport-building intelligence and visibility checks. Sales Roadmap: A comprehensive analysis and segmentation strategy to guide outreach efforts. Engagement Materials: Customized outreach scripts, call materials, and professional \u0026ldquo;leave-behind\u0026rdquo; assets (PDFs). Methodology \u0026amp; Strategy # Data-Driven Outreach: Leverages segmented CSV data to prioritize high-value targets. Value-Add Positioning: Uses individual audits to tailor proposals and provide immediate value to potential clients. Structured Sales Process: Provides a complete toolkit for the sales lifecycle, from initial contact to legal engagement templates. Strategic Impact # This project demonstrates the ability to translate data into actionable business strategy. By providing a clear, evidence-based roadmap for B2B outreach, it helps businesses increase their conversion rates and build stronger relationships with corporate clients in Kenya.\n","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/projects/kenya-b2b-leads/","section":"Projects","summary":"A data-driven business intelligence project providing segmented leads and sales roadmaps for the Kenyan B2B market.","title":"Kenya B2B Leads 2026","type":"projects"},{"content":" \u0026nbsp; View Source on GitHub Overview # This iteration of the JPF Stretch Hub platform focuses on empowering non-technical staff to manage website content dynamically. By leveraging the Wagtail CMS, the studio can now easily update service descriptions, schedules, and blog posts without developer intervention.\nCore Features \u0026amp; Functionality # Dynamic Content Management: A user-friendly admin interface for managing every aspect of the site\u0026rsquo;s content. Wagtail Integration: Seamless blending of CMS capabilities with standard Django features. REST API Endpoints: Dedicated API layer built with Django REST Framework for authentication and data handling. Role-Based Access: Granular control over user permissions, allowing for separate client and administrator workflows. Technical Implementation # Framework: Built on Django with Wagtail 5.2, providing a solid foundation for both CMS and custom application logic. API Layer: Uses Django REST Framework to expose status checks, registration, and profile endpoints. Database: Employs PostgreSQL for reliable data storage and scalability. Modular Design: A clean directory structure separating API, core, and project-level settings for better maintainability. Strategic Impact # The CMS-driven approach significantly reduces the ongoing maintenance burden for the business. It provides a scalable and flexible platform that can grow with the studio\u0026rsquo;s needs, while ensuring a high level of performance and security.\n","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/projects/jpf-stretch-hub-cms/","section":"Projects","summary":"A robust CMS-driven implementation of the fitness studio platform using Wagtail for content management and Django REST Framework for API integration.","title":"JPF Stretch Hub (CMS Edition)","type":"projects"},{"content":" \u0026nbsp; View Source on GitHub meshack-vs-you-all/freshspin-laundry HTML 0 0 Overview # FreshSpin Laundry is a professional digital presence for a laundry service business, designed to convert visitors into customers. The project focuses on high performance, SEO optimization, and a seamless user experience across all devices.\nUI/UX \u0026amp; Design Presentation # The design philosophy centered on cleanliness and trust, reflecting the core values of a laundry service. Key UX features include:\nIntuitive Navigation: Easy access to services, pricing, and promotions to minimize user friction. Responsive Layout: Fully optimized for mobile, tablet, and desktop using a mobile-first approach. Visual Storytelling: High-quality imagery and a cohesive color palette that aligns with the brand identity. Conversion-Oriented: Strategically placed Calls to Action (CTAs) for service inquiries and bookings. Technical Implementation # Framework: Built with Hugo (Fastest Static Site Generator) for near-instant load times. Development Phase: Currently in a Frontend \u0026amp; UI/UX rollout, with custom backend integrations for booking and tracking currently in active development. Theme Customization: Extensive overrides of the PaperMod theme to achieve a unique brand aesthetic. Performance: Achieved high Lighthouse scores for performance, accessibility, and best practices. CI/CD: Automated deployment via GitHub Actions ensures that updates are seamlessly pushed to production. Professional Impact # The FreshSpin website serves as a case study in building high-performance marketing sites that drive business growth. It demonstrates the ability to translate business requirements into a polished, production-ready digital product with a strong emphasis on user engagement and conversion.\n","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/projects/freshspin-laundry/","section":"Projects","summary":"A modern, high-performance service website for a laundry business, emphasizing UI/UX, responsiveness, and clear calls to action.","title":"FreshSpin Laundry","type":"projects"},{"content":" \u0026nbsp; View Source on GitHub meshack-vs-you-all/kenya-realty HTML 0 0 Overview # Kenya Realty is a specialized property platform catering to the high-growth real estate market in Nairobi, Kiambu, and across Kenya. It bridges the gap between premium property listings and savvy investors or home seekers.\nKey Features \u0026amp; UI/UX # Curated Listings: High-performance property listings categorized by type (residential, commercial, land) and status (sale, rent). Search \u0026amp; Filtering: Advanced taxonomies for property types and locations to help users find their ideal investment efficiently. Modern Aesthetic: A clean, professional design that reflects the luxury and reliability of the Kenyan real estate sector. Conversion-Centric: Clear property details, high-quality images, and direct contact options to facilitate lead generation. Technical Foundation # Framework: Built with Hugo for maximum speed and SEO efficiency, ensuring property pages rank high in search results. Development Phase: Currently in its High-Performance Frontend phase, with backend property search and user account features in active development. Scalability: Designed to handle a large number of listings while maintaining near-instant load times across all pages. Local Integration: Localized for the Kenyan market with KSh currency and local contact details. Maintainability: A structured content model that allows for easy updates and addition of new properties without complex backend management. Strategic Impact # The Kenya Realty platform demonstrates the power of static site generators in high-value industries. By providing a fast, reliable, and aesthetically pleasing property search experience, it helps establish trust and authority in the competitive Kenyan real estate market.\n","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/projects/kenya-realty/","section":"Projects","summary":"A premium real estate platform for Nairobi and the wider Kenyan market, focusing on luxury residential and high-value commercial properties.","title":"Kenya Realty","type":"projects"},{"content":" \u0026nbsp; View Source on GitHub meshack-vs-you-all/bakery-site CSS 0 0 Overview # The Artisan Bakery \u0026amp; Cafe platform is designed to showcase the artistry and freshness of a high-end Nairobi bakery. It provides a digital catalog of products and facilitates customer interaction for custom orders and inquiries.\nDesign \u0026amp; Experience # Visual Appeal: Large, high-quality images of fresh breads, cakes, and pastries to drive customer desire. Menu Presentation: A structured, easy-to-navigate digital menu that highlights the bakery\u0026rsquo;s specialties. Brand Consistency: A warm, inviting color palette and typography that reflects the artisan and artisanal nature of the brand. Localized Content: Specific to the Nairobi market, featuring local contact details and a recognizable physical location. Implementation Details # Framework: Built with Hugo for rapid content delivery and ease of maintenance. Development Phase: Currently in its Digital Presence \u0026amp; UI/UX phase, with order management and customer interaction features in active development. Performance: Near-instant page loads ensure that customers on mobile devices have a frictionless experience. SEO Ready: Optimized meta tags and structured content to rank for local bakery and cafe searches in Nairobi. Mobile First: Fully responsive design ensures the site looks great on smartphones, where many customers browse for local businesses. Impact # This project demonstrates the ability to create beautiful, effective marketing sites for local businesses that need to establish a strong online presence. It highlights the use of fast, modern web technologies to deliver high-value business outcomes.\n","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/projects/bakery-site/","section":"Projects","summary":"A visually appealing digital presence for a premium Nairobi-based artisan bakery, focusing on product presentation and order facilitation.","title":"The Artisan Bakery \u0026 Cafe","type":"projects"},{"content":" Overview # Glowify Baby Stores required a comprehensive technical overhaul to improve site speed, user experience, and conversion rates. The project involved a full-stack audit of the existing Shopify theme, identifying critical performance bottlenecks and UX friction points.\nKey Deliverables # Technical Audit: Conducted a 50+ point inspection of the codebase, identifying redundant apps and unoptimized assets. Theme Optimization: Refactored liquid templates to reduce render-blocking resources and improve Core Web Vitals. UX Enhancements: Redesigned the footer navigation and product page layout to align with modern e-commerce best practices. Security \u0026amp; Compliance: Implemented GDPR-compliant policy pages and verified trust badge integrations. Technical Stack # Platform: Shopify Plus Languages: Liquid, HTML5, SCSS, JavaScript Tools: Lighthouse, Shopify CLI, GitHub Actions Impact # The optimization roadmap provided a clear path to:\nReduce page load times by ~40%. Improve mobile usability scores. Streamline the checkout flow for higher conversion. ","date":"15 February 2025","externalUrl":null,"permalink":"/meshack-hugo-portfolio/projects/glowify-baby-stores/","section":"Projects","summary":"A deep-dive technical audit and renovation of a Shopify Plus store, focusing on performance optimization, liquid theme customization, and conversion rate optimization (CRO).","title":"Glowify Baby Stores","type":"projects"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/ai-integration/","section":"Tags","summary":"","title":"AI Integration","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/bakery/","section":"Tags","summary":"","title":"Bakery","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/posts/","section":"Blog","summary":"","title":"Blog","type":"posts"},{"content":" Available for Freelance \u0026 Consulting I am a Full Stack Engineer passionate about blending robust web architectures with AI Tools and Modern DevOps. I build production-ready systems that solve real-world problems. Featured Projects Crafted Edge Solutions 21 January 2026\u0026middot;234 words Full-stack consultancy platform powering Crafted Edge Solutions Kenya — featuring a Wagtail CMS, client dashboards, analytics, and a blog engine. Step Up Connect 19 February 2026\u0026middot;330 words A production-style youth growth platform featuring a FastAPI backend, JWT authentication, and AI-powered job/skill generation. CraftedEdge POS 19 February 2026\u0026middot;206 words A robust Point-of-Sale solution for local minimarts featuring Django backend, PostgreSQL, and a modern Tailwind CSS interface. ServiceScout 2 February 2026\u0026middot;285 words SEO-first local service aggregator that connects users with vetted service providers across Nairobi — with dynamic landing pages and smart lead capture. Kenya Scraper Platform 16 October 2025\u0026middot;292 words Production-grade ethical web scraping engine for Kenyan websites — with automatic robots.txt compliance, Playwright-based rendering, and Kubernetes-ready deployment. JPF Stretch Hub 21 January 2026\u0026middot;240 words Booking, payment, and user management platform for a stretching and fitness studio — built with Django, React, and Celery. \u0026nbsp; View All Projects ServiceScout Lead Engineer Architecting a **Django-based Service Aggregator** connecting Nairobi users with local providers. Features: SEO-first architecture, custom lead capture workflows, Postgres search. Stack: Django, Python, Docker, Tailwind. Shopify Marketing AI 2024 - Present Created an innovative solution leveraging **AI Agents** to automate marketing strategies. Impact: Solved manual campaign management pain points by intelligently generating content. Stack: TypeScript, AI Agents, Shopify API. JPF Stretch Hub 2023 - 2024 Built a comprehensive business management platform for a fitness studio. Scope: Bookings, payments, and user management. Stack: Django, Python, Web App. Freelance Technical Consultant 2023 - Present Delivering full-stack solutions for diverse clients (e.g., Glowify, ServiceScout). Performance: Reduced database load by 60% using Redis. DevOps: Automated onboarding reducing setup time from days to \u0026lt;30 mins. Operations Leadership 2022 - 2023 FreshSpin Laundry Led operational digitization and workflow optimization, improving throughput by 40%. Latest Writing Scaling from Lead Engineer to CTO: Navigating the Kenyan Tech Landscape 19 February 2026\u0026middot;285 words\u0026middot;2 mins Building Production Django Apps: Lessons from Shipping Real Products 15 February 2026\u0026middot;542 words\u0026middot;3 mins Hard-won lessons from deploying Django applications for real businesses — covering project structure, Docker workflows, database choices, and the mistakes that taught me the most. Visualizing Agentic Workflows with Mermaid 15 February 2026\u0026middot;223 words\u0026middot;2 mins A deep dive into using Mermaid.js for documenting autonomous AI agent workflows and system architecture. Includes live diagram examples. ","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/","section":"Building the Future with AI Agents \u0026 MCP","summary":"","title":"Building the Future with AI Agents \u0026 MCP","type":"page"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/business-intelligence/","section":"Tags","summary":"","title":"Business Intelligence","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/career-growth/","section":"Tags","summary":"","title":"Career Growth","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/cms/","section":"Tags","summary":"","title":"CMS","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/data-analysis/","section":"Tags","summary":"","title":"Data Analysis","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/django/","section":"Tags","summary":"","title":"Django","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/docker/","section":"Tags","summary":"","title":"Docker","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/drf/","section":"Tags","summary":"","title":"DRF","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/engineering-strategy/","section":"Tags","summary":"","title":"Engineering Strategy","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/fastapi/","section":"Tags","summary":"","title":"FastAPI","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/hugo/","section":"Tags","summary":"","title":"Hugo","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/inventory-management/","section":"Tags","summary":"","title":"Inventory Management","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/kenya/","section":"Tags","summary":"","title":"Kenya","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/nairobi/","section":"Tags","summary":"","title":"Nairobi","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/nairobi-tech/","section":"Tags","summary":"","title":"Nairobi Tech","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/papermod/","section":"Tags","summary":"","title":"PaperMod","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/pos/","section":"Tags","summary":"","title":"POS","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/postgresql/","section":"Tags","summary":"","title":"PostgreSQL","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/categories/professional-development/","section":"Categories","summary":"","title":"Professional Development","type":"categories"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/projects/","section":"Projects","summary":"","title":"Projects","type":"projects"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/python/","section":"Tags","summary":"","title":"Python","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/react/","section":"Tags","summary":"","title":"React","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/real-estate/","section":"Tags","summary":"","title":"Real Estate","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/responsive/","section":"Tags","summary":"","title":"Responsive","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/sales-strategy/","section":"Tags","summary":"","title":"Sales Strategy","type":"tags"},{"content":" The Evolution of a Tech Leader # As a Lead Full-Stack Engineer and AI Specialist based in Nairobi, I\u0026rsquo;ve witnessed the rapid evolution of the Kenyan tech landscape. Transitioning from a technical lead to a strategic CTO is a significant milestone, but it\u0026rsquo;s also a journey fraught with unique challenges and opportunities.\n1. Shifting from Code to Strategy # As a CTO, your focus moves away from day-to-day coding and towards long-term technical strategy and business alignment. This isn\u0026rsquo;t just about \u0026lsquo;architecture\u0026rsquo;; it\u0026rsquo;s about building a technical roadmap that supports your company\u0026rsquo;s growth.\n2. Building and Leading High-Performing Teams # One of the most critical aspects of being a CTO is the ability to attract, develop, and retain top-tier engineering talent. We have an incredible pool of talent in Nairobi, and building a culture of excellence and innovation is key to success.\n3. Navigating the Kenyan Tech Ecosystem # From the \u0026lsquo;Silicon Savannah\u0026rsquo; to the \u0026lsquo;Rift Valley,\u0026rsquo; the Kenyan tech ecosystem is unique. Understanding the local regulatory environment, market trends, and talent landscape is essential for any CTO.\n4. Balancing Innovation with Operational Excellence # As a tech leader, you must balance the need for innovation and \u0026lsquo;bleeding-edge\u0026rsquo; technology with the practicalities of building stable, scalable, and secure systems.\nThe Road Ahead: 2027 and Beyond # Focus on AI \u0026amp; Automation: Integrating LLMs and custom AI agents into your business workflows. Commitment to Quality: Ensuring your product is built with world-class engineering standards. Strategic Partnership: Building long-term relationships with your business and technical stakeholders. The journey from lead engineer to CTO is one of continuous growth, learning, and strategic thinking.\nLooking for a strategic engineering partner? Explore my consultation services or book a private consultation.\n","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/posts/engineer-to-cto-kenya/","section":"Blog","summary":"","title":"Scaling from Lead Engineer to CTO: Navigating the Kenyan Tech Landscape","type":"posts"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/seo/","section":"Tags","summary":"","title":"SEO","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/tailwind-css/","section":"Tags","summary":"","title":"Tailwind CSS","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/tech-leadership/","section":"Tags","summary":"","title":"Tech Leadership","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/categories/tech-management/","section":"Categories","summary":"","title":"Tech Management","type":"categories"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/ui/ux/","section":"Tags","summary":"","title":"UI/UX","type":"tags"},{"content":"","date":"19 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/wagtail/","section":"Tags","summary":"","title":"Wagtail","type":"tags"},{"content":"","date":"15 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/ai-agents/","section":"Tags","summary":"","title":"AI Agents","type":"tags"},{"content":"","date":"15 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/architecture/","section":"Tags","summary":"","title":"Architecture","type":"tags"},{"content":" Most Django tutorials stop at runserver. Here\u0026rsquo;s what I\u0026rsquo;ve learned building platforms that handle real traffic, real payments, and real users who don\u0026rsquo;t read documentation. The Gap Between Tutorial and Production # Every Django developer knows the feeling: you follow the tutorial, everything works locally, and then you deploy. Suddenly you\u0026rsquo;re debugging CORS errors at 2 AM, your static files are 404ing, and your database migrations are timing out.\nAfter shipping multiple Django platforms — from a consultancy CMS to a fitness booking system — I\u0026rsquo;ve developed a set of principles that close the gap between \u0026ldquo;it works on my machine\u0026rdquo; and \u0026ldquo;it works in production.\u0026rdquo;\nDocker The single biggest mistake I see (and made myself) is treating Docker as a deployment concern. It\u0026rsquo;s not. It\u0026rsquo;s a development concern. FROM python:3.12-slim ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . When your development environment matches production from day one, entire categories of bugs disappear. \u0026ldquo;It works on my machine\u0026rdquo; becomes a meaningful statement because your machine is the production environment.\nSettings Architecture Matters # Cookiecutter Django gets this right: separate settings for base, local, and production. But the key insight is what goes where:\nbase.py: Everything that doesn\u0026rsquo;t change between environments local.py: Debug toolbar, console email backend, relaxed security production.py: Gunicorn, real email, strict CORS, database connection pooling # base.py — the boring, correct defaults DATABASES = { \u0026#34;default\u0026#34;: env.db(\u0026#34;DATABASE_URL\u0026#34;) } # Never hardcode. Always env vars. Always. SECRET_KEY = env(\u0026#34;DJANGO_SECRET_KEY\u0026#34;) Database Migrations in Production # Never run migrations during deployment without testing them first. A migration that adds a NOT NULL column without a default will lock your table and take your site down. My workflow for every migration:\nWrite the migration locally Test it against a copy of production data Check if it requires a table lock (adding columns, creating indexes) If it locks: schedule downtime or use a two-step migration (add nullable → backfill → add constraint) WhiteNoise for Static Files # Stop using nginx to serve static files in simple deployments. WhiteNoise handles static files directly from your WSGI app with proper caching headers, compression, and fingerprinting. MIDDLEWARE = [ \u0026#34;django.middleware.security.SecurityMiddleware\u0026#34;, \u0026#34;whitenoise.middleware.WhiteNoiseMiddleware\u0026#34;, # Right after security # ... ] STATICFILES_STORAGE = \u0026#34;whitenoise.storage.CompressedManifestStaticFilesStorage\u0026#34; This eliminates an entire nginx configuration file and simplifies your Docker setup to a single container.\nThe Monitoring Blindspot # The one thing I wish I\u0026rsquo;d set up earlier in every project: structured logging. Not print() statements. Not even basic Django logging. Structured JSON logs that can be searched, filtered, and alerted on.\nLOGGING = { \u0026#34;version\u0026#34;: 1, \u0026#34;handlers\u0026#34;: { \u0026#34;console\u0026#34;: { \u0026#34;class\u0026#34;: \u0026#34;logging.StreamHandler\u0026#34;, \u0026#34;formatter\u0026#34;: \u0026#34;json\u0026#34;, }, }, \u0026#34;formatters\u0026#34;: { \u0026#34;json\u0026#34;: { \u0026#34;class\u0026#34;: \u0026#34;pythonjsonlogger.jsonlogger.JsonFormatter\u0026#34;, }, }, } What I\u0026rsquo;d Tell My Past Self # Use environment variables from the start. Not \u0026ldquo;when you deploy.\u0026rdquo; From the first django-admin startproject. Write the Dockerfile before the first model. The discipline pays for itself within a week. Separate read and write concerns early. Even if you\u0026rsquo;re not doing CQRS, having different serializers for list vs. detail views saves enormous refactoring later. Test the deployment, not just the code. A passing test suite means nothing if your Docker image doesn\u0026rsquo;t build. Have questions or want to discuss Django architecture? Reach out ","date":"15 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/posts/building-production-django/","section":"Blog","summary":"Hard-won lessons from deploying Django applications for real businesses — covering project structure, Docker workflows, database choices, and the mistakes that taught me the most.","title":"Building Production Django Apps: Lessons from Shipping Real Products","type":"posts"},{"content":"","date":"15 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/documentation/","section":"Tags","summary":"","title":"Documentation","type":"tags"},{"content":"","date":"15 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/categories/engineering/","section":"Categories","summary":"","title":"Engineering","type":"categories"},{"content":"","date":"15 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/mermaid/","section":"Tags","summary":"","title":"Mermaid","type":"tags"},{"content":"","date":"15 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/production/","section":"Tags","summary":"","title":"Production","type":"tags"},{"content":" Mermaid.js AI Architecture Documentation Complex systems require clear visualization. I use Mermaid as Code to document the decision loops of my autonomous AI agents. Pro Tip: Treating diagrams as code means your architecture documentation evolves in the same commit as your implementation. No more stale .png files! Why Visualization Matters # When building AI Agents that can use tools, query databases, and make decisions, the control flow can get complicated fast. Mermaid allows me to version-control my architecture alongside my code.\nAgent Decision Loop # Here is the actual logic flow for my Local AI Context Server:\nsequenceDiagram participant User participant Gateway participant Agent participant MCP_Server as MCP Server participant VectorDB User-\u003e\u003eGateway: Query: \"Summarize last week's logs\" Gateway-\u003e\u003eAgent: Route Request Agent-\u003e\u003eAgent: Analyze Intent (Thinking...) alt Needs Context Agent-\u003e\u003eMCP_Server: Call: fetch_logs(days=7) MCP_Server-\u003e\u003eVectorDB: RAG Search VectorDB--\u003e\u003eMCP_Server: Relevant Chunks MCP_Server--\u003e\u003eAgent: Structured Log Data end Agent-\u003e\u003eAgent: Synthesize Answer Agent--\u003e\u003eGateway: Response Gateway--\u003e\u003eUser: \"Here is the summary...\" Infrastructure State Machine # For my Self-Healing Infrastructure, I model the recovery states like this:\nstateDiagram-v2 [*] --\u003e Healthy Healthy --\u003e Degraded: High Latency / Error Rate Degraded --\u003e Healing: Auto-Scaler Triggered Healing --\u003e Healthy: Health Check Pass Healing --\u003e Critical: Health Check Fail Critical --\u003e Alerting: PagerDuty Trigger Alerting --\u003e [*]: Manual Intervention Conclusion # Diagrams like these live directly in my markdown documentation, ensuring they never go out of date.\n","date":"15 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/posts/visualizing-agentic-workflows/","section":"Blog","summary":"A deep dive into using Mermaid.js for documenting autonomous AI agent workflows and system architecture. Includes live diagram examples.","title":"Visualizing Agentic Workflows with Mermaid","type":"posts"},{"content":"","date":"14 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/ai/","section":"Tags","summary":"","title":"AI","type":"tags"},{"content":"","date":"14 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/asyncio/","section":"Tags","summary":"","title":"Asyncio","type":"tags"},{"content":"","date":"14 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/backend/","section":"Tags","summary":"","title":"Backend","type":"tags"},{"content":"","date":"14 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/concurrency/","section":"Tags","summary":"","title":"Concurrency","type":"tags"},{"content":"","date":"14 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/local-llm/","section":"Tags","summary":"","title":"Local LLM","type":"tags"},{"content":" Python\u0026rsquo;s asyncio is powerful, but often misunderstood. Let\u0026rsquo;s move beyond simple await calls and understand the Event Loop. 1. The Event Loop Explained # Think of the event loop as a single-threaded manager. It can only do one thing at a time, but it\u0026rsquo;s very fast at switching context when waiting for I/O.\nKey Concept: Async code doesn\u0026rsquo;t make CPU-bound tasks faster. It makes I/O-bound tasks (network requests, DB queries) non-blocking. Basic Pattern # import asyncio async def fetch_data(): print(\u0026#34;Fetching...\u0026#34;) await asyncio.sleep(2) # Simulates I/O print(\u0026#34;Done!\u0026#34;) return {\u0026#34;data\u0026#34;: 123} async def main(): # Run concurrently - This takes 2 seconds total, not 6 results = await asyncio.gather(fetch_data(), fetch_data(), fetch_data()) print(results) if __name__ == \u0026#34;__main__\u0026#34;: asyncio.run(main()) 2. Common Pitfalls # Pitfall #1: Blocking the Loop # Running heavy calculations (like image processing) inside an async function freezes the entire app.\nBad:\nasync def process_image(): # This blocks everything! time.sleep(5) Good:\nasync def process_image(): loop = asyncio.get_running_loop() # Run in a separate thread await loop.run_in_executor(None, do_heavy_work) Pitfall #2: Context Variables # threading.local() doesn\u0026rsquo;t work in async. Use contextvars.\nimport contextvars request_id = contextvars.ContextVar(\u0026#34;request_id\u0026#34;) async def log(message): print(f\u0026#34;[{request_id.get()}] {message}\u0026#34;) 3. Profiling Async Code # How do you know what\u0026rsquo;s slow? cProfile often fails with async.\nUse py-spy or built-in debug mode.\nPYTHONASYNCIODEBUG=1 python my_script.py This will warn you if a coroutine blocks the loop for too long.\nExecuting \u0026lt;Task...\u0026gt; took 0.150 seconds 4. Real World Async: Aiohttp # Calling 100 APIs sequentially takes 100 seconds. Concurrently, it takes 1 second.\nimport aiohttp import asyncio async def fetch(session, url): async with session.get(url) as response: return await response.text() async def main(): async with aiohttp.ClientSession() as session: tasks = [fetch(session, f\u0026#34;https://api.com/items/{i}\u0026#34;) for i in range(100)] # Run all 100 requests at once responses = await asyncio.gather(*tasks) if __name__ == \u0026#34;__main__\u0026#34;: asyncio.run(main()) When to Use Async? # Web Scrapers: Fetching 1000 URLs? Async is 10x faster than sync. Chat Servers: Handling 10k connections? Async is mandatory (WebSockets). Microservices: Calling 5 downstream APIs? asyncio.gather is your best friend. ","date":"14 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/posts/mastering-python-async/","section":"Blog","summary":"Asyncio isn’t just async and await. Learn how to build high-concurrency applications using Python’s modern async features.","title":"Mastering Python Async: Beyond Basic Coroutines","type":"posts"},{"content":"","date":"14 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/mcp/","section":"Tags","summary":"","title":"MCP","type":"tags"},{"content":"","date":"14 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/n8n/","section":"Tags","summary":"","title":"N8n","type":"tags"},{"content":"","date":"14 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/series/python-deep-dive/","section":"Series","summary":"","title":"Python Deep Dive","type":"series"},{"content":"","date":"14 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/series/","section":"Series","summary":"","title":"Series","type":"series"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/series/ai-engineering/","section":"Series","summary":"","title":"AI Engineering","type":"series"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/devops/","section":"Tags","summary":"","title":"DevOps","type":"tags"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/infrastructure/","section":"Tags","summary":"","title":"Infrastructure","type":"tags"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/local-llms/","section":"Tags","summary":"","title":"Local LLMs","type":"tags"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/machine-learning/","section":"Tags","summary":"","title":"Machine Learning","type":"tags"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/ollama/","section":"Tags","summary":"","title":"Ollama","type":"tags"},{"content":" Privacy, cost, and latency. Three reasons why Local LLMs are the future of AI development. And Ollama makes it incredibly easy. 1. What is Ollama? # Ollama is a tool that packages LLMs into easy-to-run binaries. It handles the model weights, the inference engine (llama.cpp), and provides a clean API.\nGetting Started # Install is a one-liner:\ncurl -fsSL https://ollama.com/install.sh | sh Run Llama 3 (8 Billion Parameters):\nollama run llama3 2. Integrating with Python # You can interact with Ollama via a REST API. Here\u0026rsquo;s a clean client:\nimport requests import json def chat(prompt, model=\u0026#34;llama3\u0026#34;): url = \u0026#34;http://localhost:11434/api/generate\u0026#34; data = { \u0026#34;model\u0026#34;: model, \u0026#34;prompt\u0026#34;: prompt, \u0026#34;stream\u0026#34;: False } response = requests.post(url, json=data) return response.json()[\u0026#39;response\u0026#39;] print(chat(\u0026#34;Explain quantum computing in one sentence.\u0026#34;)) 3. Building a RAG Pipeline (Retrieval Augmented Generation) # The real power comes when you give the LLM your own data.\nThe Stack # Ollama: Inference ChromaDB: Vector Store LangChain: Glue code from langchain_community.llms import Ollama from langchain_community.document_loaders import TextLoader from langchain_community.embeddings import OllamaEmbeddings from langchain_community.vectorstores import Chroma # 1. Load Data loader = TextLoader(\u0026#34;my_notes.txt\u0026#34;) docs = loader.load() # 2. Embed Data (Turn text into numbers) embeddings = OllamaEmbeddings(model=\u0026#34;llama3\u0026#34;) db = Chroma.from_documents(docs, embeddings) # 3. Query query = \u0026#34;What did I say about productivity?\u0026#34; docs = db.similarity_search(query) # 4. Ask LLM llm = Ollama(model=\u0026#34;llama3\u0026#34;) answer = llm.invoke(f\u0026#34;Context: {docs[0].page_content}. Question: {query}\u0026#34;) print(answer) Pro Tip: This runs 100% offline. You can build a personal assistant that knows your private notes without ever sending data to OpenAI. 4. Hardware Requirements # RAM: 7B Models (Llama 3, Mistral): Needs ~8GB RAM. 13B Models: Needs ~16GB RAM. 70B Models: Needs ~48GB RAM (Mac Studio / Dual GPU). GPU: Nvidia is best, but Apple Silicon (M1/M2/M3) is surprisingly fast due to Unified Memory. ","date":"13 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/posts/local-llms-ollama/","section":"Blog","summary":"Stop paying for API credits. Learn how to run state-of-the-art Large Language Models on your own hardware using Ollama.","title":"Running Local LLMs with Ollama: A Developer's Guide","type":"posts"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/self-hosting/","section":"Tags","summary":"","title":"Self-Hosting","type":"tags"},{"content":"","date":"13 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/traefik/","section":"Tags","summary":"","title":"Traefik","type":"tags"},{"content":"","date":"12 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/containers/","section":"Tags","summary":"","title":"Containers","type":"tags"},{"content":"","date":"12 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/deployment/","section":"Tags","summary":"","title":"Deployment","type":"tags"},{"content":"","date":"12 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/series/devops-zero-to-hero/","section":"Series","summary":"","title":"DevOps Zero to Hero","type":"series"},{"content":" If you\u0026rsquo;re still manually installing dependencies on your server, you\u0026rsquo;re doing it wrong. Docker ensures your environment is consistent from dev to prod. The Problem # Dev: Python 3.12, Postgres 16 Prod: Python 3.8, Postgres 12 (System Default) Result: Crash. 1. The Dockerfile: From Basic to Production-Ready # A Dockerfile is a recipe for your environment.\nLevel 1: The Basic Dockerfile (Don\u0026rsquo;t deploy this) # FROM python:3.11 WORKDIR /app COPY . . RUN pip install -r requirements.txt CMD [\u0026#34;python\u0026#34;, \u0026#34;app.py\u0026#34;] Why this is bad: It includes the full OS, compiler tools, and is huge \u0026gt;1GB.\nLevel 2: Multi-Stage Build (The Professional Way) # We use a \u0026ldquo;Builder\u0026rdquo; stage to compile dependencies, and a \u0026ldquo;Runner\u0026rdquo; stage to run the app.\n# Stage 1: Builder FROM python:3.11-slim as builder WORKDIR /app COPY requirements.txt . RUN pip install --user -r requirements.txt # Stage 2: Runner FROM python:3.11-distroless WORKDIR /app COPY --from=builder /root/.local /root/.local COPY . . ENV PATH=/root/.local/bin:$PATH CMD [\u0026#34;python\u0026#34;, \u0026#34;app.py\u0026#34;] Result: A 60MB image that is secure and fast.\n2. Docker Compose: Orchestrating the Stack # Orchestration Manage multi-container apps (App + DB + Redis) with docker-compose.yml.\nversion: \u0026#39;3.8\u0026#39; services: web: build: . ports: - \u0026#34;8000:8000\u0026#34; depends_on: - db - redis environment: - DATABASE_URL=postgres://user:pass@db:5432/myapp db: image: postgres:15-alpine volumes: - postgres_data:/var/lib/postgresql/data environment: POSTGRES_PASSWORD: secretpassword redis: image: redis:alpine volumes: postgres_data: With this file, docker-compose up is the only command a new developer needs to run to start the entire project. 3. Security Best Practices # Don\u0026rsquo;t run as Root: By default, Docker containers run as root. This is a security risk.\nRUN adduser -D myuser USER myuser Scan your Images: Use docker scan (powered by Snyk) to find vulnerabilities.\ndocker scan my-image:latest Use .dockerignore: Prevent secrets from being copied into the image.\n.git .env __pycache__ passwords.txt 4. Common Commands Cheat Sheet # Command Action docker build -t myapp . Build an image docker run -p 80:80 myapp Run container mapping port 80 docker ps List running containers docker exec -it \u0026lt;id\u0026gt; bash Shell into a container docker system prune Clean up unused images/volumes ","date":"12 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/posts/docker-basics/","section":"Blog","summary":"Containers are the standard unit of software delivery. This guide covers Dockerfiles, Compose, and best practices for Python/Node apps.","title":"Docker: Stop Saying 'It Works on My Machine'","type":"posts"},{"content":"","date":"11 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/career/","section":"Tags","summary":"","title":"Career","type":"tags"},{"content":"","date":"11 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/linux/","section":"Tags","summary":"","title":"Linux","type":"tags"},{"content":"","date":"11 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/terminal/","section":"Tags","summary":"","title":"Terminal","type":"tags"},{"content":" The cloud runs on Linux. Docker runs on Linux. The internet runs on Linux. If you want to understand how software really works, you need to be comfortable in the shell. 1. The Power of the Pipe | # The United Philosophy: Write programs that do one thing and do it well. Write programs to work together.\nExample: Find the 5 most common words in a text file.\ncat essay.txt | tr -cs A-Za-z \u0026#39;\\n\u0026#39; | tr A-Z a-z | sort | uniq -c | sort -rn | head -n 5 Try doing that in a GUI.\n2. Essential Commands for DevOps # grep: Search text like a wizard. grep -r \u0026quot;TODO\u0026quot; . (Find all TODOs in current directory) htop: Monitor system resources. ssh: Connect to remote servers securely. rsync: The robust file copier. rsync -avz local/ remote:/path/ Challenge: Spend one week executing file operations (copy, move, delete) ONLY via the terminal. You\u0026rsquo;ll never go back to drag-and-drop. 3. Permissions 101 # r (Read): 4 w (Write): 2 x (Execute): 1 chmod 755 script.sh means:\nOwner: 7 (4+2+1) -\u0026gt; Read, Write, Execute Group: 5 (4+1) -\u0026gt; Read, Execute Others: 5 (4+1) -\u0026gt; Read, Execute 4. Bash Scripting: Automating the Boring Stuff # You don\u0026rsquo;t need Python for everything. Sometimes a 5-line bash script is better.\nExample: Log Rotator # #!/bin/bash LOG_DIR=\u0026#34;/var/log/myapp\u0026#34; DAYS_TO_KEEP=7 # Find files older than 7 days and delete them find $LOG_DIR -name \u0026#34;*.log\u0026#34; -mtime +$DAYS_TO_KEEP -delete echo \u0026#34;Cleanup complete.\u0026#34; Example: Site Monitor # #!/bin/bash URL=\u0026#34;https://mysite.com\u0026#34; STATUS=$(curl -o /dev/null -s -w \u0026#34;%{http_code}\\n\u0026#34; $URL) if [ \u0026#34;$STATUS\u0026#34; != \u0026#34;200\u0026#34; ]; then echo \u0026#34;Site is down! Status: $STATUS\u0026#34; | mail -s \u0026#34;Alert\u0026#34; me@example.com fi 5. Systemd: Ensuring Uptime # Don\u0026rsquo;t run your apps in a screen session. Create a systemd service.\n/etc/systemd/system/myapp.service\n[Unit] Description=My Python App After=network.target [Service] User=www-data WorkingDirectory=/var/www/myapp ExecStart=/var/www/myapp/venv/bin/gunicorn app:app Restart=always [Install] WantedBy=multi-user.target Now you have automatic restarts, logging, and dependency management.\n","date":"11 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/posts/why-linux/","section":"Blog","summary":"From file permissions to piping commands, Linux proficiency is the difference between a junior and a senior engineer.","title":"Why Every Developer Should Learn Linux","type":"posts"},{"content":"","date":"10 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/series/django-deep-dive/","section":"Series","summary":"","title":"Django Deep Dive","type":"series"},{"content":"","date":"10 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/frontend/","section":"Tags","summary":"","title":"Frontend","type":"tags"},{"content":"","date":"10 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/fullstack/","section":"Tags","summary":"","title":"FullStack","type":"tags"},{"content":"","date":"10 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/htmx/","section":"Tags","summary":"","title":"HTMX","type":"tags"},{"content":" What if you could build a modern, interactive web app without writing a single line of JavaScript? With HTMX, you can. The Problem with React for Small Teams # Separating your backend (API) and frontend (SPA) doubles your state management. You have state on the server (DB) and state on the client (Redux/Zustand). Keeping them in sync is hard work.\nThe HTMX Approach # HTMX extends HTML. Instead of a JSON API, your server returns HTML fragments.\nExample: Active Search # template.html\n\u0026lt;input type=\u0026#34;text\u0026#34; name=\u0026#34;q\u0026#34; hx-get=\u0026#34;/search/\u0026#34; hx-trigger=\u0026#34;keyup changed delay:500ms\u0026#34; hx-target=\u0026#34;#search-results\u0026#34; placeholder=\u0026#34;Search users...\u0026#34;\u0026gt; \u0026lt;div id=\u0026#34;search-results\u0026#34;\u0026gt; \u0026lt;!-- Results will be injected here --\u0026gt; \u0026lt;/div\u0026gt; views.py\ndef search(request): query = request.GET.get(\u0026#39;q\u0026#39;) results = User.objects.filter(name__icontains=query) # Return just the rows, not the whole page! return render(request, \u0026#39;partials/results_list.html\u0026#39;, {\u0026#39;results\u0026#39;: results}) Result: A responsive, live-search interface that feels like React, but deployed as a standard monolithic Django app. ","date":"10 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/posts/django-htmx/","section":"Blog","summary":"HTMX allows you to access AJAX, CSS Transitions, WebSockets and Server Sent Events directly in HTML, using attributes.","title":"The HTMX Revolution: Building SPAs with Pure Django","type":"posts"},{"content":"","date":"9 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/database/","section":"Tags","summary":"","title":"Database","type":"tags"},{"content":"","date":"9 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/performance/","section":"Tags","summary":"","title":"Performance","type":"tags"},{"content":" A slow application is usually a slow database. Before you cache everything in Redis, verify your indexes. The EXPLAIN ANALYZE Command # This is your best friend. It tells you exactly how Postgres executes a query.\nEXPLAIN ANALYZE SELECT * FROM users WHERE email = \u0026#39;test@example.com\u0026#39;; If you see Seq Scan (Sequential Scan), Postgres is reading every row in the table. That\u0026rsquo;s O(N). We want O(log N).\nIndex Types # B-Tree (Default): Great for =, \u0026lt;, \u0026gt;, BETWEEN.\nCREATE INDEX idx_users_email ON users(email); GIN (Generalized Inverted Index): Essential for JSONB and Full-Text Search.\nCREATE INDEX idx_products_data ON products USING GIN (data); Partial Indexes # Optimization: If you frequently query a subset of data (e.g., is_active=True), creating an index ONLY for those rows saves space and speeds up writes. CREATE INDEX idx_active_users ON users(id) WHERE is_active = TRUE; ","date":"9 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/posts/postgres-indexing/","section":"Blog","summary":"Database performance isn’t magic. It’s about data structures. Learn how to optimize your Postgres queries.","title":"PostgreSQL Performance: Indexing Strategies","type":"posts"},{"content":"","date":"9 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/sql/","section":"Tags","summary":"","title":"SQL","type":"tags"},{"content":"","date":"9 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/series/system-design-masterclass/","section":"Series","summary":"","title":"System Design Masterclass","type":"series"},{"content":"","date":"8 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/collaboration/","section":"Tags","summary":"","title":"Collaboration","type":"tags"},{"content":"","date":"8 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/git/","section":"Tags","summary":"","title":"Git","type":"tags"},{"content":" Git is more than commit and push. It\u0026rsquo;s how teams communicate. Your branching strategy determines your deployment velocity. 1. GitFlow (The Old Way) # GitFlow involves two long-running branches: main and develop.\nPros: strict control, clear release versions. Cons: Merge conflicts hell, slow deployment cycle. 2. Trunk-Based Development (The Modern Way) # Everyone pushes to main (or short-lived feature branches that merge to main within hours).\nDeveloper creates branch feat/login-page. Writes code. Opens PR. CI/CD runs tests. Code merges to main. main automatically deploys to Staging. gitGraph commit branch feature-A checkout feature-A commit commit checkout main merge feature-A commit branch feature-B checkout feature-B commit checkout main merge feature-B commit 3. Advanced Scenarios # The Interactive Rebase # Before merging your branch, clean up your history.\n# Combine the last 3 commits into one git rebase -i HEAD~3 Change pick to squash for the commits you want to combine.\nThe Cherry Pick # Need a specific hotfix from another branch without merging everything?\ngit cherry-pick \u0026lt;commit-hash\u0026gt; The \u0026ldquo;Oh No, I Committed to Main\u0026rdquo; Protocol # # 1. Reset main to the previous commit (keeping changes) git reset --soft HEAD~1 # 2. Create a new branch git checkout -b my-feature-branch # 3. Commit there git commit -m \u0026#34;Saved my work\u0026#34; 4. Branch Protection Rules # If you use GitHub, enable these settings on main:\nRequire pull request reviews before merging. Require status checks to pass before merging (CI/CD). Require linear history (no merge commits, only rebase/squash). Comparison # Feature GitFlow Trunk-Based Release Speed Slow (Scheduled) Fast (Continuous) Complexity High Low Ideal For Legacy Software SaaS / Web Apps Verdict: Use Trunk-Based ","date":"8 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/posts/git-workflows/","section":"Blog","summary":"Should you use GitFlow or Trunk-Based Development? We analyze the pros and cons of modern version control strategies.","title":"Git Workflows: Trunk-Based Development vs GitFlow","type":"posts"},{"content":"","date":"8 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/workflow/","section":"Tags","summary":"","title":"Workflow","type":"tags"},{"content":" I use both frameworks daily. Here is my honest breakdown of when to use which. 1. Django: The \u0026ldquo;Batteries Included\u0026rdquo; Heavyweight # Best For:\nCMS / E-commerce sites Applications needing a robust Admin Panel Teams that need standard structure Why? Django gives you an ORM, Authentication, Admin Interface, and Migrations out of the box. You can build a MVP in 2 hours.\n2. FastAPI: The Modern Speedster # Best For:\nMicroservices ML/AI Model Serving High-concurrency APIs (WebSockets, Chat) Why? FastAPI uses starlette and pydantic. It gives you automatic Swagger documentation and async support by default.\nBenchmark Comparison # Metric Django (Sync) FastAPI (Async) Req/Sec ~2,000 ~14,000 Dev Time Fast Medium Type Safety Good (mypy) Excellent (Native) My Verdict # Building a SaaS with user accounts and payments? Django. Building an API to wrap an LLM? FastAPI. ","date":"7 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/posts/django-vs-fastapi/","section":"Blog","summary":"Django offers speed of development. FastAPI offers speed of execution. Which one fits your project?","title":"Django vs FastAPI: Choosing the Right Python Framework in 2026","type":"posts"},{"content":"","date":"7 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/web-development/","section":"Tags","summary":"","title":"Web Development","type":"tags"},{"content":"","date":"6 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/networking/","section":"Tags","summary":"","title":"Networking","type":"tags"},{"content":" Reverse proxies used to be hard. Traefik makes them magical. It discovers your services automatically. Why Traefik? # Traditional proxies (Nginx/HAProxy) require a static config file. Every time you add a service, you edit the file and reload.\nTraefik watches your Docker Engine. When you start a container with specific labels, Traefik starts routing traffic to it instantly.\nSimple Configuration # In your docker-compose.yml:\nservices: my-app: image: my-app:latest labels: - \u0026#34;traefik.enable=true\u0026#34; - \u0026#34;traefik.http.routers.myapp.rule=Host(`myapp.localhost`)\u0026#34; That\u0026rsquo;s it. Traefik sees the label and creates the route.\nAutomatic HTTPS (Let\u0026rsquo;s Encrypt) # Traefik can automatically request and renew SSL certificates for your domains.\ncommand: - \u0026#34;--certificatesresolvers.myresolver.acme.email=your-email@example.com\u0026#34; - \u0026#34;--certificatesresolvers.myresolver.acme.storage=/acme.json\u0026#34; Security: Traefik handles the complexities of TLS termination, so your application containers don\u0026rsquo;t have to worry about certificates. ","date":"6 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/posts/mastering-traefik/","section":"Blog","summary":"Say goodbye to manually editing Nginx configs. Traefik listens to your Docker socket and routes traffic automatically.","title":"Traefik: The Cloud-Native Edge Router","type":"posts"},{"content":"","date":"5 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/hardware/","section":"Tags","summary":"","title":"Hardware","type":"tags"},{"content":"","date":"5 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/series/hobby-it/","section":"Series","summary":"","title":"Hobby IT","type":"series"},{"content":"","date":"5 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/homelab/","section":"Tags","summary":"","title":"Homelab","type":"tags"},{"content":"","date":"5 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/self-hosted/","section":"Tags","summary":"","title":"Self-Hosted","type":"tags"},{"content":" There is a unique satisfaction in knowing exactly where your data lives (hint: it\u0026rsquo;s in the closet under the stairs). What is a Homelab? # A homelab is a server (or cluster of servers) you run in your own home to host services, experiment with software, and learn.\nMy Setup # Hardware: Intel NUC i7, 32GB RAM OS: Proxmox VE (Hypervisor) Services: Pi-hole: Network-wide ad blocking. Jellyfin: Media streaming (alternative to Netflix). Nextcloud: Personal Google Drive replacement. Home Assistant: Smart home automation. Why Do It? # Privacy: Your photos stay on your hard drive. Learning: You execute rm -rf / once and learn forever. Cost: After hardware, it\u0026rsquo;s free (minus electricity). Warning: Highly Addictive Building a homelab is the best way to gain \u0026ldquo;Full Stack\u0026rdquo; confidence. You touch hardware, networking, OS, virtualization, containers, and applications.\n","date":"5 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/posts/building-homelab/","section":"Blog","summary":"Stop renting everything from AWS. Building a homelab teaches you networking, virtualization, and system administration limits.","title":"The Joy of Homelabbing: Owning Your Infrastructure","type":"posts"},{"content":"","date":"4 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/high-performance/","section":"Tags","summary":"","title":"High Performance","type":"tags"},{"content":"","date":"4 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/scalability/","section":"Tags","summary":"","title":"Scalability","type":"tags"},{"content":"","date":"4 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/system-design/","section":"Tags","summary":"","title":"System Design","type":"tags"},{"content":" Scaling isn\u0026rsquo;t about buying bigger servers. It\u0026rsquo;s about removing bottlenecks. Here is the evolution of a startup\u0026rsquo;s architecture. Stage 1: The Monolith (0 - 1k Users) # One server. Database + App + Web Server all on the same machine.\nPros: Simple deployment, cheap. Cons: Single point of failure. Stage 2: Vertical Scaling (1k - 10k Users) # Upgrade the instance size (t3.micro -\u0026gt; m5.large). This works until it doesn\u0026rsquo;t. You eventually hit the limit of a single machine.\nStage 3: Horizontal Scaling (10k - 100k Users) # This is the big jump.\nLoad Balancer (ELB/Nginx): Distributes traffic across multiple app servers. Stateless Apps: User sessions moved to Redis. Database Separation: Master (Write) / Replica (Read) architecture. graph TD User --\u003e LB[Load Balancer] LB --\u003e App1[App Server 1] LB --\u003e App2[App Server 2] App1 --\u003e Redis[Redis Cache] App2 --\u003e Redis App1 --\u003e DB_M[DB Master] App2 --\u003e DB_R[DB Replica] DB_M --\u003e|Replication| DB_R Stage 4: 1M+ Users # Now we need serious optimizations.\nCDN (Cloudflare): Cache static assets at the edge. Database Sharding: Split the database by User ID (Users 1-1M on DB1, 1M-2M on DB2). Async Workers (Celery/Kafka): Move everything non-essential (email, PDF generation) to background queues. ","date":"4 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/posts/system-design-scaling/","section":"Blog","summary":"Load balancers, caching, database sharding, and CDNs. The missing guide to system architecture.","title":"System Design: Scaling to 1 Million Users","type":"posts"},{"content":"","date":"3 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/series/career-growth/","section":"Series","summary":"","title":"Career Growth","type":"series"},{"content":"","date":"3 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/engineering/","section":"Tags","summary":"","title":"Engineering","type":"tags"},{"content":"","date":"3 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/leadership/","section":"Tags","summary":"","title":"Leadership","type":"tags"},{"content":"","date":"3 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/soft-skills/","section":"Tags","summary":"","title":"Soft Skills","type":"tags"},{"content":" I used to think being a \u0026ldquo;Senior\u0026rdquo; meant I could write the most clever, optimized standard library replacement in C. I was wrong. 1. Code is a Liability # Every line of code you write is a line that needs to be debugged, tested, and maintained. Junior: \u0026ldquo;I wrote 500 lines of code to solve this.\u0026rdquo; Senior: \u0026ldquo;I deleted 500 lines of code and solved it.\u0026rdquo;\n2. Problem Finding vs Problem Solving # Juniors are given tickets. Seniors find the problems that generate the tickets.\nExample: Instead of fixing the same bug 5 times, a Senior Engineer pauses to refactor the broken module that causes it. 3. Communication # You interpret technical constraints for business stakeholders.\nBad: \u0026ldquo;We can\u0026rsquo;t do that, the O(N) complexity is too high.\u0026rdquo; Good: \u0026ldquo;We can do that, but it will slow down checkout by 3 seconds and cost $500/month more.\u0026rdquo; 4. Mentorship # If you are the smartest person in the room, you are failing your team. Your job is to elevate everyone else. Force multiply your knowledge.\n","date":"3 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/posts/senior-mindset/","section":"Blog","summary":"Crossing the chasm from Junior to Senior isn’t about memorizing algorithms. It’s about ownership, communication, and risk management.","title":"The Senior Engineer Mindset: It's Not About Code","type":"posts"},{"content":"","date":"2 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/microservices/","section":"Tags","summary":"","title":"Microservices","type":"tags"},{"content":" \u0026ldquo;We need microservices because Netflix uses them.\u0026rdquo; This sentence has killed more startups than bad product-market fit. The Hidden Cost of Microservices # You trade complexity of code for complexity of infrastructure.\nNetwork Latency: Function calls are nanoseconds. HTTP calls are milliseconds. Distributed Transactions: Rollbacks across 3 services are a nightmare (Requires Sagas pattern). Observability: Debugging a request that jumps through 5 containers requires expensive tracing tools (Jaeger/OpenTelemetry). The Modular Monolith # This is the sweet spot for 99% of companies. Keep code in one repo. Deploy as one binary. But enforce strict module boundaries.\n# Django Example /users /payments /inventory If payments imports from inventory, you have a violation. Enforce this via linters, not network boundaries.\nWhen to Split? # Independent Scaling: Video processing needs 100 GPUs. The user login service needs 1 CPU. Team Scaling: You have 50 engineers. API collisions in git are slowing you down. ","date":"2 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/posts/microservices-vs-monolith/","section":"Blog","summary":"Microservices are not a default. They are a solution to organizational scaling problems, not technical ones.","title":"Microservices vs Monolith: The Honest Truth","type":"posts"},{"content":" The default isolation level in many databases allows race conditions. Do you know what yours is set to? The Phenomena # Dirty Read: Reading uncommitted data from another transaction. Non-Repeatable Read: Reading the same row twice gets different data (someone updated it). Phantom Read: Running the same conceptual query gets different rows (someone inserted a new row). The Levels # Level Dirty Read Non-Repeatable Phantom Read Uncommitted Yes Yes Yes Read Committed (Postgres Default) No Yes Yes Repeatable Read No No Yes Serializable No No No When to use Serializable? # When correctness is more important than speed. E.g., Preventing double-spending in a banking ledger.\nSET TRANSACTION ISOLATION LEVEL SERIALIZABLE; BEGIN; -- Your logic COMMIT; It guarantees that the result is the same as if transactions were executed one after another.\n","date":"1 February 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/posts/db-isolation-levels/","section":"Blog","summary":"If you don’t understand isolation levels, your financial application has a race condition. Guaranteed.","title":"Understanding Database Isolation Levels","type":"posts"},{"content":" Why spend 10 minutes doing it every day when you can spend 10 hours automating it once? (Just kidding. It pays off eventually.) 1. The File Organizer # I download a lot of files. My Downloads folder is a mess. I wrote a script to watch the folder and move files based on extension.\nimport os import shutil EXTENSIONS = { \u0026#34;Images\u0026#34;: [\u0026#34;.jpg\u0026#34;, \u0026#34;.png\u0026#34;, \u0026#34;.svg\u0026#34;], \u0026#34;Documents\u0026#34;: [\u0026#34;.pdf\u0026#34;, \u0026#34;.docx\u0026#34;, \u0026#34;.txt\u0026#34;], \u0026#34;Installers\u0026#34;: [\u0026#34;.deb\u0026#34;, \u0026#34;.iso\u0026#34;, \u0026#34;.zip\u0026#34;] } def organize(): for filename in os.listdir(\u0026#34;.\u0026#34;): for folder, exts in EXTENSIONS.items(): if filename.endswith(tuple(exts)): shutil.move(filename, folder) 2. Terminal Demo # Here is the script in action:\n(Note: This is a placeholder demo. To replace it with your own recording:)\nRun asciinema rec demo.cast in your terminal. Run asciinema upload demo.cast. Copy the ID from the URL and update this shortcode. 3. Expense Tracking # I use pandas to parse my bank\u0026rsquo;s CSV export and categorize expenses automatically.\nimport pandas as pd df = pd.read_csv(\u0026#34;statement.csv\u0026#34;) food = df[df[\u0026#39;description\u0026#39;].str.contains(\u0026#34;UBER EATS|CAFE\u0026#34;)] print(f\u0026#34;Total Food: ${food[\u0026#39;amount\u0026#39;].sum()}\u0026#34;) Tip: Run these scripts on a cron job or systemd timer so you never have to think about them. ","date":"30 January 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/posts/automating-life/","section":"Blog","summary":"Real-world examples of automation scripts I run daily. Includes code snippets and Asciinema demo.","title":"Automating My Life with Python","type":"posts"},{"content":"","date":"30 January 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/automation/","section":"Tags","summary":"","title":"Automation","type":"tags"},{"content":"","date":"30 January 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/productivity/","section":"Tags","summary":"","title":"Productivity","type":"tags"},{"content":"","date":"30 January 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/scripting/","section":"Tags","summary":"","title":"Scripting","type":"tags"},{"content":"","date":"21 January 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/celery/","section":"Tags","summary":"","title":"Celery","type":"tags"},{"content":"","date":"21 January 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/rest-api/","section":"Tags","summary":"","title":"REST API","type":"tags"},{"content":"","date":"21 January 2026","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/tailwindcss/","section":"Tags","summary":"","title":"TailwindCSS","type":"tags"},{"content":"","date":"16 October 2025","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/playwright/","section":"Tags","summary":"","title":"Playwright","type":"tags"},{"content":"","date":"15 February 2025","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/blowfish/","section":"Tags","summary":"","title":"Blowfish","type":"tags"},{"content":"","date":"15 February 2025","externalUrl":null,"permalink":"/meshack-hugo-portfolio/series/client-work/","section":"Series","summary":"","title":"Client Work","type":"series"},{"content":"","date":"15 February 2025","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/cro/","section":"Tags","summary":"","title":"CRO","type":"tags"},{"content":"","date":"15 February 2025","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/e-commerce/","section":"Tags","summary":"","title":"E-Commerce","type":"tags"},{"content":"","date":"15 February 2025","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/liquid/","section":"Tags","summary":"","title":"Liquid","type":"tags"},{"content":"","date":"15 February 2025","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/portfolio/","section":"Tags","summary":"","title":"Portfolio","type":"tags"},{"content":" Overview # This Privacy Policy describes how your personal information is collected, used, and shared when you visit Meshack Mogire\u0026rsquo;s Portfolio.\nPersonal Information We Collect # When you visit the specific parts of the Site, we may collect certain information about your device, including information about your web browser, IP address, time zone, and some of the cookies that are installed on your device.\nAnalytics # We use privacy-focused analytics (e.g., Umami/Fathom) to understand how our site is used without tracking your personal identity across the web. This data helps us improve the user experience.\nHow We Use Your Personal Information # We use the information we collect generally to:\nCommunicate with you (via the Contact form). Screen for potential risk or fraud. Improve and optimize our Site (for example, by generating analytics about how our customers browse and interact with the Site). Sharing Your Personal Information # We do not share your Personal Information with third parties for marketing purposes. We may share your Personal Information to comply with applicable laws and regulations, to respond to a subpoena, search warrant or other lawful request for information we receive, or to otherwise protect our rights.\nContact Us # For more information about our privacy practices, if you have questions, or if you would like to make a complaint, please contact us by e-mail at meshackmogire254@gmail.com.\n","date":"15 February 2025","externalUrl":null,"permalink":"/meshack-hugo-portfolio/privacy/","section":"Building the Future with AI Agents \u0026 MCP","summary":"","title":"Privacy Policy","type":"page"},{"content":"","date":"15 February 2025","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/shopify/","section":"Tags","summary":"","title":"Shopify","type":"tags"},{"content":"","date":"15 February 2025","externalUrl":null,"permalink":"/meshack-hugo-portfolio/series/site-construction/","section":"Series","summary":"","title":"Site Construction","type":"series"},{"content":"","date":"15 February 2025","externalUrl":null,"permalink":"/meshack-hugo-portfolio/tags/technical-audit/","section":"Tags","summary":"","title":"Technical Audit","type":"tags"},{"content":"When building this portfolio, I needed a theme that was fast, accessible, and visually stunning. Enter Blowfish.\nKey Features # Blowfish is a fork of the popular Congo theme, but with superpowers. 1. Native Tailwind CSS # Styling is a breeze. The entire theme is built on Tailwind, meaning I can customize anything without fighting a rigid CSS structure.\n2. Rich Shortcodes # As a developer, I need to express complex ideas. Blowfish provides tools for that:\nCode Blocks with Copy Button\ndef hello_world(): print(\u0026#34;Hello, Blowfish!\u0026#34;) return True Badges for Skills Python React Docker 3. Automatic Dark Mode # Check the toggle in the footer. The theme handles system preferences out of the box.\nPerformance # Because it\u0026rsquo;s Hugo, it\u0026rsquo;s blazing fast. Static site generation means:\n0ms database lookups. Instant page loads. \u0026lt;1s Time to Interactive. Conclusion # If you\u0026rsquo;re a developer looking for a portfolio theme that respects your time and your code, give Blowfish a try.\n","date":"15 February 2025","externalUrl":null,"permalink":"/meshack-hugo-portfolio/posts/choosing-blowfish/","section":"Blog","summary":"","title":"Why I Chose Blowfish for My Portfolio","type":"posts"},{"content":" I am a Full Stack Engineer based in Nairobi, building systems that solve real problems. I specialize in Django, React, and Cloud Infrastructure, with a bias toward production-ready, self-healing architectures. Technical Arsenal # Core Stack: Python (Django), React, Docker, PostgreSQL, Linux. Languages \u0026amp; Frameworks # Python TypeScript Go Django FastAPI React Next.js Tailwind DevOps \u0026amp; Tools # Docker Kubernetes Linux Nginx Git GitHub Actions Traefik AI \u0026amp; Automation # Ollama Local LLMs MCP n8n 🛠️ Transferable Backend Principles # I apply core architectural patterns across different technology stacks to ensure scalability and reliability:\nMVC \u0026amp; Layered Architecture: Expert at separating concerns between data (Models), business logic (Services), and presentation (Views/Controllers) in Django, Express, and FastAPI. Database Design \u0026amp; Optimization: Proficient in relational schema design, complex joins, and query optimization in PostgreSQL and MySQL, using both ORMs and raw SQL. Authentication \u0026amp; Security: Implementing robust security measures including JWT, OAuth2, and Session-based auth, along with secure password hashing and CORS policies. RESTful API Design: Building clean, versioned, and well-documented APIs using Django REST Framework and FastAPI\u0026rsquo;s automatic OpenAPI spec generation. Asynchronous Task Processing: Scaling backend operations using Celery with Redis/RabbitMQ for background jobs, email queues, and scheduled tasks. Professional Experience # Freelance Technical Consultant 2023 – Present Remote / Nairobi Delivering full-stack solutions for high-traffic clients. - **Database Optimization**: Reduced load by **60%** using Redis. - **DevOps**: Automated setup reducing time from days to **\u003c30 mins**. - **Full Stack**: Built production apps with Django \u0026 React. Operations Coordinator 2022 – 2023 FreshSpin Laundry Led operational digitization and workflow optimization. - **Efficiency**: Improved throughput by **40%**. - **Growth**: Increased retention by **25%**. - **Cost**: Reduced operational costs by **15%**. Education \u0026amp; Certifications # ALX Software Engineering 2024 – Present Holberton School Specialization in Back-End Systems, DevOps, and Low-level programming (C, Python). ALX Career Programme May 2025 Comprehensive curriculum covering algorithms, system design, and professional skills. Featured Projects # Recent Work Crafted Edge Solutions 21 January 2026\u0026middot;234 words Full-stack consultancy platform powering Crafted Edge Solutions Kenya — featuring a Wagtail CMS, client dashboards, analytics, and a blog engine. Step Up Connect 19 February 2026\u0026middot;330 words A production-style youth growth platform featuring a FastAPI backend, JWT authentication, and AI-powered job/skill generation. CraftedEdge POS 19 February 2026\u0026middot;206 words A robust Point-of-Sale solution for local minimarts featuring Django backend, PostgreSQL, and a modern Tailwind CSS interface. Let\u0026rsquo;s Connect # I am open to Contract Work, Consulting, and Full-Time Opportunities.\nEmail Me GitHub LinkedIn Twitter +254 769 071 925 ","externalUrl":null,"permalink":"/meshack-hugo-portfolio/about/","section":"Building the Future with AI Agents \u0026 MCP","summary":"","title":"About Me","type":"page"},{"content":"","externalUrl":null,"permalink":"/meshack-hugo-portfolio/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":" Elevate Your Technical Strategy # As a Lead Full-Stack Engineer and AI Specialist based in Nairobi, I offer strategic consultation services designed to help businesses navigate complex technical challenges and leverage the latest innovations.\nConsultation Areas # AI \u0026amp; Automation Strategy: Strategic advice on integrating LLMs and custom AI agents into your business workflows. Scalable Software Architecture: Designing robust, maintainable, and high-performance systems for your growth. Product Engineering Roadmap: From discovery to deployment, ensuring your product is built for success. Digital Transformation: Navigating the shift to modern, data-driven operations in the Kenyan and global markets. Why Consult with Me? # Global Standards, Local Expertise: Deep understanding of the Kenyan tech landscape combined with international engineering standards. Proven Results: A track record of shipping production-ready products for high-ticket clients. Strategic Partnership: I don\u0026rsquo;t just provide advice; I partner with you for your long-term success. Book a Consultation | View My Portfolio\n","externalUrl":null,"permalink":"/meshack-hugo-portfolio/services/","section":"Building the Future with AI Agents \u0026 MCP","summary":"","title":"Expert Engineering Consultation Services","type":"page"},{"content":" Terms of Service # By using our website, you agree to our terms of service designed to protect both the user and the provider.\n","externalUrl":null,"permalink":"/meshack-hugo-portfolio/terms/","section":"Building the Future with AI Agents \u0026 MCP","summary":"","title":"Terms of Service","type":"page"}]