Posts by author

Author: Ammar Najjar

Ammar Najjar22 posts

Blog Posts

  • Every Camera Tells a Story

    Every Camera Tells a Story

    Every now and then, I catch myself looking at new cameras. I open another review, compare another specification sheet, or watch yet another photographer explaining why this year's camera is better than last year's. It always begins with a simple curiosity, and before I realize it, hours have passed. Somewhere between comparison videos, photography forums, and used listings, I find myself imagining what it would be like to own a different camera.

    Read more →
  • Nine Years on GitHub Pages, Why I Finally Moved to Cloudflare

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

    For nearly nine years, my personal website lived on GitHub Pages. It was free, reliable, and required almost no maintenance, so why migrate? A recent move to Cloudflare Pages prompted this post, which covers the motivation behind the change, the migration process, the issues encountered, and the trade-offs discovered along the way.

    Read more →
  • Local AI on a MacBook Pro with 16 GB RAM: What Actually Works

    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.

    Read more →
  • Essential Development Tools: My Brewfile Setup

    As a software engineer, our toolset shapes how we work and what we can accomplish. Over time, I've curated a collection of essential tools that boost my productivity and make development more enjoyable. Here's a breakdown of my Homebrew setup, featuring the tools I use daily.

    Read more →
  • Portfolio: a lightweight personal portfolio tracker

    Portfolio: a lightweight personal portfolio tracker

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

    Read more →
  • Mastering Git Commands: A Practical Guide

    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.

    Read more →
  • Angular - Content Projection

    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 flexible and reusable components.

    Read more →
  • Reactjs: Arrays in jsx

    When I tried out Reactjs tutorial few months ago, I noticed that in the official starter code, they repeated same div elements in the render() method, just in case of change in the source, I will list it here:

    Read more →
  • Fetch using Gitlab API

    Between gitlab repos that need daily tracking and frequent machine changes, the manual cloning and sync process became exhausting. An automation script was the obvious next step to offload the boring tasks.

    Read more →
  • PyConDe & PyData 2019

    PyConDe & PyData 2019

    Fresh back from PyConDe & PyData-2019, this post shares and documents the experience. Think of it as a diary more than a blog, covering:

    Read more →
  • RxJS Series - Observables

    RxJS (on Github) is a reactive programming library for Javascript, and in this series, I would like to expose my way of learning it with you.

    Read more →
  • Custom Selenium Webdrivers using Decorators

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

    Read more →
  • Fedora23 Upgrade (unlabeled home)

    When I tried to update from the fedora23 to fedora24, I faced the issue that the home directoy lost its labeling:

    Read more →
  • Build Vim from Source

    Many times when I want to use vim which comes within the main repo of any Linux distro, I find that it is missing some kind of support, either python or client-server mode, or any other feature. And there for I have to build it manually from source and install it.

    Read more →
  • Lwa4p Robot Arm Setup

    Experiments with the powerball lightweight lwa4p robot arm from Schunk came with many difficulties getting it to move using moveit. This post shares that experience.

    Read more →
  • Adventure through my vimrc (nvimrc)

    In this post I'm going to take you in an adventure in my previously vimrc and currently init.vim which I collected from using vim then neovim along the last few years. I will explain the feature or the function, then include the configurations or code that should be inserted in the vimrc (init.vim) file to activate that feature.

    Read more →
  • Opencv on Openshift

    When I wanted to intall opencv on my python-2.7 openshift online cartridge I faced the problem of quota limitation to 1GB.

    Read more →

Books