RSSAmplifier

Blog

Ammar Najjar - Blog

Personal blog about software engineering, AI, and more.

ammar-najjar.comRSS feed ↗22 posts

Latest posts

ngrx-graph: Static Analysis and Graph Visualization for NgRx Applications

A CLI that parses your Angular NgRx source code and generates DOT/SVG graphs revealing how Actions, Effects, and Reducers connect, including aliases and nested dispatches.

How I Configure Cloudflare for My Website

After years of accumulating Cloudflare settings, I reviewed every option on the Free plan. Here's what I kept, what I disabled, and why.

How This Website Works: A Technical Look at the Stack

A technical walkthrough of every layer that powers this website: Astro for static generation, Bun for tooling, Cloudflare Pages for delivery, and all the smaller decisions in between.

A Lunch Conversation Changed My Website

A lunch conversation about Astro sparked a complete website rebuild: new framework, new workflow, new languages, and a more personal vision for what a website can be.

Making Angular AI Work in Real Projects

How I'm integrating Angular's new AI toolbox into a real enterprise Angular workflow.

Every Camera Tells a Story

A reflection on the cameras I have owned, what each one taught me about photography, and how the tool shapes the story.

Nine Years on GitHub Pages, Why I Finally Moved to Cloudflare

After nine years hosting my personal site on GitHub Pages, I moved to Cloudflare Pages. This post explains why: not because GitHub Pages stopped working, but because my goals changed.

Local AI on a MacBook Pro with 16 GB RAM: What Actually Works

How to run AI coding assistants locally on a 16 GB MacBook Pro M1: what models fit in memory, which tools actually work, and what to skip.

Essential Development Tools: My Brewfile Setup

A software engineer's curated Brewfile: the macOS development tools worth installing, from terminal utilities to editors, explained with daily-use context.

Portfolio: a lightweight personal portfolio tracker

Design and implementation of a browser-first investment portfolio tracker built with React, TypeScript, and Vite: state handling, caching, and chart interaction explained.

Mastering Git Commands: A Practical Guide

A practical guide to essential Git commands: configuration, branching, merging, rebasing, stashing, and more, with examples for everyday developer workflows.

Angular - Content Projection

A guide to Angular content projection: the different types (single-slot, multi-slot, conditional), when to use each, and how to build flexible, reusable components.

Reactjs: Arrays in jsx

How to correctly render arrays in React JSX: why repeating elements is a problem, and how to use map() with keys to build lists cleanly.

Fetch using Gitlab API

How to use the GitLab API with Python to fetch repository data, automate git operations, and integrate GitLab into your development workflow.

PyConDe & PyData 2019

Personal notes from attending PyConDe and PyData Berlin 2019: talks, workshops, and highlights from the Python and data science community conference.

RxJS Series - Observables

An introduction to RxJS Observables: what they are, how they differ from Promises, and how to use them for reactive programming in JavaScript and Angular.

Custom Selenium Webdrivers using Decorators

How to dynamically create custom Selenium WebDriver classes with a parametrized browser binary path using Python decorators.

Fedora23 Upgrade (unlabeled home)

How to fix the unlabeled home directory issue encountered when upgrading from Fedora 23 to Fedora 24, with the exact SELinux relabeling steps.

Build Vim from Source

Step-by-step guide to compiling Vim from source on Linux to enable Python support, client-server mode, and other features missing from distribution packages.

Lwa4p Robot Arm Setup

How to set up the Schunk Powerball LWA4P robot arm with MoveIt and ROS: the steps, pitfalls, and a complete install script from real lab experiments.

Adventure through my vimrc (nvimrc)

A guided tour through a Vim and Neovim configuration: plugins, key mappings, and settings accumulated over years of daily use, with explanations for each choice.

Opencv on Openshift

How to install OpenCV on a Python 2.7 OpenShift cartridge while staying within the 1 GB quota limit, with a complete bash script for the setup.