إنتقل إلى المحتوى الرئيسي
Ammar Najjar
Engineering Team Lead & Software Architect
عرض جميع المؤلفين

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

· 8 دقائق قراءة
Ammar Najjar
Engineering Team Lead & Software Architect

Running AI coding assistants locally sounds appealing — no API costs, your code stays on your machine, and you get a Claude Code-like experience for free. But getting it to actually work well on a 16 GB MacBook Pro M1 takes more trial and error than most guides admit.

This post summarizes months of real-world testing across multiple tools, runtimes, and models. The conclusion surprised me.

Portfolio — a lightweight personal portfolio tracker

· 7 دقائق قراءة
Ammar Najjar
Engineering Team Lead & Software Architect

This post explains the design and implementation of a small browser-first portfolio tracker I built. It focuses on requirements, the challenges I ran into, and how the final solution addresses them, including code snippets that illustrate the state handling, caching, and chart interaction.

Mastering Git Commands: A Practical Guide

· 14 دقائق قراءة
Ammar Najjar
Engineering Team Lead & Software Architect

Git is an indispensable tool for version control, enabling developers to track changes, collaborate effectively, and manage project history. While its capabilities are vast, a solid understanding of key commands can significantly streamline your workflow. This article delves into a selection of practical Git commands, explaining what they do, how to use them, and when they are most effective.

Angular - Content Projection

· 5 دقائق قراءة
Ammar Najjar
Engineering Team Lead & Software Architect

Content projection is a feature in angular that supports inserting a component in another component. This changes the way an angular developer designs his application/library by implementing flexable and reusable components.

This post explains the different types of content projection, where to use each of them, with an example project. All the code can be found on github.(LINK)

Fetch using Gitlab API

· 2 دقائق قراءة
Ammar Najjar
Engineering Team Lead & Software Architect

Motivation

I use gitlab, and I have many repos that I need to track on daily basis, or even more than once per day. I found it so tyring first of all to clone all those repos when I change my working machine, and then to keep all these repos up to date. For that reason I began to write an automation script to do the boring tasks of my shoulders.

Custom Selenium Webdrivers using Decorators

· 5 دقائق قراءة
Ammar Najjar
Engineering Team Lead & Software Architect

The main question:

How to create custom selenium webdriver classes dynamically with a parametrized browser binary path?

The motivation:

Working on website functional testing using selenium webdriver, generates the urge to run tests using different versions of the most commonly used browsers these days, in parallel on the same machine.