INSIGHTS

Ali's Blog

Insights on software engineering, SaaS architecture, remote work, and building products that scale.

Browse by topic

2026-10-163 min read

Hype vs Reality on Whatever Everyone Is Posting

Judge the latest AI launch by what it does to your release date, not your feed. A short, practical checklist for agency owners with a deadline too close.

Read

2026-10-135 min read

From One-Off Gig to Retainer: The State Change

Most one-off gigs stay one-off because the engineer never makes the case for ongoing work. Here is a practical decision table for making that transition.

Read

2026-10-126 min read

I Built an AI Bid Desk for Upwork: Meet Bidsmith

I built Bidsmith, an AI proposal assistant that watches Upwork, scores every job for fit, and drafts proposals in my own voice. Here is the problem it solves, how it works behind the scenes, and where it goes next.

Read

2026-10-106 min read

JSONB Columns: When They Save You, When They Trap You

JSONB columns are useful until they aren't. Here's a practical breakdown of when to reach for them, when they'll hurt you, and how to avoid the common traps.

Read

2026-10-085 min read

The "Can You Do It Cheaper" Message: A Receipt for Handling It Without Losing the Job or Your Rate

You got the "can you do it cheaper" message. Here is a practical, step-by-step receipt for responding in a way that protects your rate and keeps the client enga

Read

2026-10-055 min read

Specializing Beats Generalizing: A Decision Table for Freelance Engineers

Generalist profiles get skipped. Here's a practical decision table to help freelance engineers pick a specialization that wins better clients and higher rates.

Read

2026-10-047 min read

Real DB vs In-Memory in Tests: A Decision Table for NestJS Engineers

In-memory DBs make your test suite fast and your production bugs invisible. Here is a practical decision table for when to use each in NestJS.

Read

2026-09-225 min read

Red Flags in a Job Post: Before You Bid, Read This

Most bad clients reveal themselves before you ever send a proposal. Here are the red flags in a job post that experienced freelancers spot immediately.

Read

2026-09-187 min read

Partial and Composite Indexes: The Ordering Rule That Kills Slow Queries

Get composite and partial index ordering wrong and your query planner ignores the index entirely. Here is the rule, with concrete examples.

Read

2026-09-174 min read

Cursor Earned Its Spot. Then It Slipped. Here Is Where It Stands Right Now.

Cursor is still in the workflow - but with guardrails. A builder's honest take on what changed, what broke, and what the recovery looked like.

Read

2026-09-164 min read

Laravel 12, NestJS 10, React 19: The One Feature Worth Caring About in Each

Three major releases landed. Most of the changelog is noise. Here is the one feature in Laravel 12, NestJS 10, and React 19 that actually changes how you ship.

Read

2026-09-137 min read

NestJS Provider Scopes and the Traps That Catch You in Production

DEFAULT, REQUEST, and TRANSIENT scopes look simple. Here is where each one quietly breaks your NestJS app - and the checklist to avoid the common traps.

Read

2026-09-107 min read

Refactor Story: A 400-Line Controller to Something Testable

A bloated 400-line controller is untestable by design. Here's a practical before/after refactor using service classes, form requests, and dependency injection.

Read

2026-09-095 min read

Freelance Pricing: Hourly vs Fixed vs Value - A Decision Table for Engineers

Hourly, fixed, or value-based? The wrong pricing model costs you money or clients. Here's a practical decision table to pick the right one every time.

Read

2026-09-076 min read

Reading an EXPLAIN Plan Without Guessing

Most slow-query fixes are guesses dressed up as diagnoses. Here is how to actually read an EXPLAIN plan and know what it is telling you.

Read

2026-09-065 min read

GPT-6 Astra Released: What Engineering Teams and Founders Actually Care About

GPT-6 Astra dropped Sep 4, 2026. Here is the practical builder's read - agentic coding, computer use, and the real cost math at $10/$50 per million tokens.

Read

2026-09-054 min read

Gemini 2.5 Pro Is Out. Here Is What Actually Changes for People Who Ship.

Google released Gemini 2.5 Pro with a 1M-token context window and top reasoning scores. Here is what it means if you build and ship real software.

Read

2026-09-036 min read

The Proposal Opening Line That Wins (And Why Yours Probably Isn't It)

Most Upwork proposals lose in the first sentence. Here is how to write the opening line that gets clients to keep reading and hire you.

Read

2026-08-297 min read

Overusing `with()` and Missing the Real N+1 in Laravel

You added with() everywhere and thought you were done. But N+1 queries are still wrecking your Laravel app. Here's where they actually hide.

Read

2026-08-277 min read

Model Observers vs Events vs Listeners in Laravel: Pick the Right Tool

Model observers, events, and listeners all hook into your app's lifecycle - but using the wrong one creates tangled, untestable code. Here's how to choose.

Read

2026-08-267 min read

Queued Jobs vs Scheduled Commands in Laravel - When Each One Actually Fits

Picking the wrong tool slows your app and burns debugging hours. Here's a practical breakdown of when to reach for a queued job versus a scheduled command in La

Read

2026-08-257 min read

Upwork MCP Server: The AI Agent Now Built Into Your Freelance Account

Upwork's new MCP server lets AI agents like Claude and ChatGPT find jobs, draft proposals, and manage contracts inside your account. Here's what it does, what you can automate, the limits, and how to set it up.

Read