Skip to content
View majidbilal's full-sized avatar

Block or report majidbilal

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
majidbilal/README.md

Majid Bilal

Software engineer. Computer science graduate. I build products end to end, and lately I build the tooling that keeps AI-assisted code honest.

Started in Python and Django. These days mostly TypeScript, Node, and Flutter.


Developer tools

Three small tools, each solving one problem properly. Zero runtime dependencies, all of them — nothing to audit, nothing to break, and they work anywhere Node runs.

Structure-aware compression for large tool output.

Truncation keeps the wrong part: the first 4,000 characters of a 40,000-line test run give you the header and some passing lines, and throw the failure away. gistline knows what it is reading — it keeps test failures and their diagnostics, preserves JSON shape while shrinking values, keeps your stack frames and drops the library noise, and picks log lines by content rather than position.

Measured on a real 605-test suite: 96,443 characters to 2,284 — 98% smaller, failure intact. Originals are kept in a content-addressed store, so retrieve, slice, and grep are real operations rather than a reassuring promise.

A linter for AI code slop.

Coding agents rarely fail by writing wrong code. They fail by writing too much: a stray console.log, a @ts-ignore to quiet the compiler, a .skip on the test that broke, a block commented out "just in case", a dependency nobody asked for. Each is small. Together they are how a codebase rots — and every one of them passes CI.

tightdiff parses the actual diff, names each violation with its file and line, and exits non-zero. It is a gate, not a suggestion. 24 rules across three axes — noise, lies, and taste — with a baseline for adopting it on an existing codebase, and suppressions that require a stated reason and are reported rather than hidden.

A map of your code, so tools navigate instead of grepping.

Where is this defined? Who imports it? Who actually uses it — not just mentions it in a comment? What breaks if I change it? Blast radius is transitive and shows distance, which is the question worth asking before touching anything.

It is honest about its limits: no dynamic dispatch, no type resolution. "Unused" is a strong hint, never proof, and it says so every time it prints.


Other work

Project What it is
teamify-ai A multi-agent orchestration framework. Turns one AI coding agent into a software organisation with enforced write lanes, human checkpoints, and completion that has to be proven rather than claimed.
fiscalgrove Mortgage and home-finance guides for the UK, US, Canada, Australia, New Zealand, and Ireland. TypeScript.
Cashbook Personal finance app. Flutter / Dart.
DMS Document management system, built as a SaaS product.
VoiceNotes Voice notes and meeting recording.
intake Client intake for personal injury law firms. TypeScript.

How I like to build

  • Zero dependencies where it is possible. Fewer moving parts, nothing to audit, nothing that rots.
  • A gate that cannot fail is decoration. If a check cannot actually stop a bad change, it is worse than no check — because everyone downstream believes they are protected.
  • Correctness before coverage. A false positive costs more than a missed finding: it is how a tool gets switched off.
  • Say what you do not know. A shallow answer you can trust beats a deep one you cannot.

Tech

TypeScript · Node.js · Python / Django · Flutter / Dart · React · JavaScript

Reach me

majidbilaly@gmail.com

Popular repositories Loading

  1. Hello-World- Hello-World- Public

  2. Spoon-Knife Spoon-Knife Public

    Forked from octocat/Spoon-Knife

    This repo is for demonstration purposes only.

    HTML

  3. LoopLAB LoopLAB Public

    Bootstrap 4 LoopLAB Project

  4. LoopLAB-working LoopLAB-working Public

    Bootstrap 4 LoopLAB Project

    HTML

  5. writing-poem writing-poem Public

    I have written a poem

  6. firstPythonWebsite firstPythonWebsite Public