Hello world, I’m

Abanoub Hanna

Full‑stack Web & Android Developer

I design and build clean, reliable software across the stack — from web backends and APIs in PHP Laravel and Go, to Android applications in Kotlin/Java, to fast CLI tools in Go that automate real‑world workflows.

Portrait of Abanoub Hanna

Tech Stack

Technologies I work with daily to build reliable, scalable software.

Go programming language

Go (Golang)

Backend APIs, CLI tools, cross-platform apps, and high-performance services.

PHP Laravel

PHP Laravel

Full-stack web apps, APIs, e-commerce platforms, and rapid prototyping.

Kotlin programming language

Android (Kotlin/Java)

Mobile apps with modern architecture, Jetpack Compose, and performance optimization.

sqlite

SQLite & Databases

Efficient data modeling, migrations, and query optimization for web and apps.

🎨

CSS & Tailwind

Responsive UIs, utility-first design, and accessible layouts.

CLI & DevOps

Automation scripts, deployment pipelines, Linux tools, and system scripting.

IDEs & Editors

My daily drivers for coding across platforms — optimized for speed and workflow.

Android Studio

Android app development in Kotlin and Java — layouts, Compose, debugging, and emulators.

visual studio code

VS Code

Web development in Go and Laravel — extensions for syntax, debugging, Tailwind, and Git integration.

Neovim icon

VIM / NeoVim

Scripting, CLI tools, and quick edits — with custom configs for Fish shell and system automation.

Operating Systems

Platforms I develop and deploy across — from daily drivers to production environments.

apple

macOS

Daily driver for development — Xcode, Homebrew, fast builds, and seamless Apple ecosystem integration.

Ubuntu Linux

Primary Linux environment — Go cross-compilation, CLI workflows, server deployments, and containerization.

windows 11

Windows 11 + WSL Ubuntu

Hybrid setup for cross-platform testing — WSL for Linux tooling, PowerShell, and Windows-native apps.

Code Platforms

Where I host, collaborate, and ship open-source projects across ecosystems.

GitHub

GitHub

Primary hub for open-source — gobrew package manager, Go CLI tools, cross-platform builds, and collaboration.

GitLab

CI/CD pipelines, private repos, enterprise-grade workflows, and advanced project management.

Codeberg

FOSS-first hosting — decentralized Git, privacy-focused, and community-driven development.

Web Projects

Full-stack applications I've built and launched — from SaaS to eCommerce to content platforms.

🛒

LokaStores

Full-featured eCommerce platform with inventory, payments, and order management for online retail.

PHP Laravel Tailwind CSS PostgreSQL
📄

OCRWeb

Queue-based OCR service for images and PDFs — scalable task processing with Tesseract integration.

Go Tesseract OCR
📝

AbanoubHanna.com

Bilingual tech blog powered by Markdown — custom Hugo theme with Arabic/English content management.

Hugo SSG Custom Theme Markdown
🏗️

KemetWebBuilder

Visual website builder for non-technical users — drag & drop interface with code generation.

Go JavaScript

Android Projects

Native Android apps published on Google Play — from religious content to OCR utilities.

🙏

Agpeya

Google Play • GitHub

Agpeya prayer book for Coptic Orthodox Church — Arabic prayers with daily liturgical hours.

Java Open Source
🖼️

IMG2TXT

Open Source

Free OCR app to extract text from images — fast, offline text recognition powered by Tesseract.

Kotlin OCR

A digital wallet for business cards - Kart Business Project

Predictions for the Future of Programming Future in 2030

Free OCR Software created by Abanoub Hanna - Software Developer

518 posts

[update][tutorial] reduce memory usage in Google Chrome Browser

[update][tutorial] reduce memory usage in Google Chrome Browser

Google Chrome informed me that the great suspender extension contains malware. Here is a screenshot of the malware alert. I installed this extension to save memory by suspending inactive tabs. But …

[tutorial] How to rate limit http requests in Laravel ?

Rate Limiting is the process of limiting the number of requests per minute sent to a web application is often necessary to protect against attacks trying to saturate your server or to brute force …

convert old('d') to $model->d in Laravel using regular expressions (RegEx)

convert old('d') to $model->d in Laravel using regular expressions (RegEx)

While developing a website in PHP Laravel, I reused create.blade.php as edit.blade.php. So I need to edit some things, especially the input values. In create.blade.php we use old('something') to …

Git Delete Remote Branch – How to Remove a Remote Branch in Git

To show branches, use git branch. If you want to show all branches even the remote ones, use git branch -a. To delete a branch, use git branch -d <branch-name>. If the branch name is …

[fixed] Error: lulu: uninstall script /Applications/LuLu.app/Contents/Resources/LuLu Uninstaller.app/Contents/MacOS/LuLu Uninstaller does not exist.

[fixed] Error: lulu: uninstall script /Applications/LuLu.app/Contents/Resources/LuLu Uninstaller.app/Contents/MacOS/LuLu Uninstaller does not exist.

When I tried to upgrade LuLu the firewall with command brew upgrade lulu, I faced this error. Error: lulu: uninstall script /Applications/LuLu.app/Contents/Resources/LuLu Uni …

Strict Secure Cookie policy does not allow setting a secure cookie for apps targeting >= R

After updating my app to compile with API level 30 (Android R, 11), I can’t see AdMob test ads, and I’m receiving this error in the log: Strict Secure Cookie policy does not allow setting …

[fixed] error duplicate class Kotlin Android

Here is a sample of error message. Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.0 (org.jetbrains.kotlin:kotlin-stdlib:1.8.0) and …

Flutter Gradle task assembleDebug failed with exit code 1 zip END header not found

The error code is this. exception in thread "main" java.util.zip.ZipException: zip END header not found at java.base/java.util.zip.ZipFile$Source.zerror(ZipFile.java:1567) at …

How to get filename without the extension in Fish script?

We can use string split like this (string split -r -m1 . $filename)[1]. I use this method in my Fish script function. function vidfps --description "vidfps <input.mp4>" ffmpeg -i $argv …

10 Things we knew from open-sourced Twitter algorithm

10 Things we knew from open-sourced Twitter algorithm

Twitter (now called X Corp) revealed its algorithm to the world as open source on GitHub . But what does it mean for you? I spent the evening analyzing it. Here’s what you need to know: 1. Likes, then …