Skip to content
Muhammet Şafak
tr
academia.sh: can theory and a real field problem live in the same lesson?
Education & research In development Beta

academia.sh: can theory and a real field problem live in the same lesson?

A free, publicly open, text-first learning platform that holds textbook theory and problems actually met in the industry inside a single lesson flow.

What it does today

Live as a free learning platform with no signup wall: the field–curriculum–course–unit–lesson hierarchy, full-text search, progress tracking and verifiable certificates all work. Anyone who wants to read the computer-science curriculum can use it today.

Started
August 2026 — Ongoing

Form

Web app

Technologies

Laravel PHP Livewire Blade Tailwind PostgreSQL Redis Filament Pest

Unlike video course platforms, academia.sh makes writing the primary medium: readable, searchable, quotable, permanent in the browser. academia.sh is an attempt to present knowledge the way a textbook does — discipline, curriculum, course, unit, lesson — and all of it is free. The first body of content is computer science, but the model is multi-disciplinary from the start: adding mathematics or linguistics means writing lessons, not changing the schema.

That is not the interesting part. The interesting part is this: a lesson that carries only theory becomes lecture notes, and one that carries only field problems becomes a blog post. What does it cost to hold both in one flow — to write, right after the definition, where that definition breaks in practice?

Holding theory and the field problem in one lesson

A field problem is not a separate “exercise” entity; it sits in the lesson’s own text, as the continuation of the theory. The problems are not invented examples either: they are the ones actually met in the industry. That choice keeps the lesson a single entity.

Splitting it would have produced two products — text to read on one side, a list of exercises to solve on the other — and the moment it split, progress, search and assessment would have split with it. Staying single shows up in two places:

Progress. Completion is tracked per lesson, and the denominator is “published active lessons”. Reading a lesson’s theory while skipping its problem is not a state that exists; they are the same lesson. Assessment follows the same principle: a quiz asks about the whole lesson, not the theory alone.

Search. On a text-first platform search is not decoration, it is the spine — what you cannot search on a video platform is the primary way in here. Postgres full-text search: weights are title A, intro B, body C; ranking is ts_rank_cd, snippets ts_headline. search_vector is not a generated column, and cannot be — though the reason is not to_tsvector, whose two-argument form is immutable. The problem is that the dictionary sits on the row as text and has to be cast to regconfig; that cast is not considered immutable, so Postgres refuses the expression in a generated column. A trigger builds the vector instead.

Free, no signup wall, text-first

What came out is an open, free education platform that does only its job: no paywall, no ads, no layer pulling attention away from the content. The content does not originate in the application database either — it lives as markdown in a separate GitHub repository, and the platform feeds from there. That separation also shapes what comes next: the curriculum is kept in the one form that can genuinely be opened to contributions, plain text. Today I am the only author; that does not have to stay true.

The stack is plain: Laravel 13, Blade + Livewire, Tailwind, PostgreSQL 16, Redis, with Filament for administration. Markdown renders on the server (league/commonmark + tempest/highlight), so there is no Node at runtime.

One certificate decision is worth naming: holder_name and course_title are frozen at issue time. A name changed later does not alter a printed document, and un-checking a lesson does not revoke the certificate — undoing a mark is an error correction, not a revocation. The verification page is public but carries noindex, nofollow: a person’s name should not surface in search results.

There is no repository layer. Eloquent already plays that role; anything holding a workflow is an Action, stateless capabilities are a Service. Quality gates are Pest, Pint and Larastan at level 6.

Is the model really discipline-agnostic

The list of remaining work is not why it continues. I believe knowledge should be public, free and open: the obstacle in front of learning should be the difficulty of the knowledge itself — not a payment screen, a signup wall or a company deciding to shut something down. Both the text-first medium and the content living in its own repository follow from that: readable, copyable and continuable by someone else if they want to continue it.

The genuinely open question sits on the content side, and it is not technical. The schema is multi-disciplinary, but the model’s condition is that every lesson also carries a problem from the field. I can write that for computer science because I have been working in that field for years. Adding a second discipline needs no migration — it needs an author. Whether the model is actually discipline-agnostic will only show once that author is found.

The research behind this work

All research

Laravel's preload curve: 123 files buy eight times what the last 1,912 do

How far can a curated preload take Laravel, and what does each slice cost in start-up time?

Finding

The curve is not proportional to volume. The first 1,592 files — Laravel's own framework — buy 30 ms and add 1.2 seconds to start-up. The next 1,094 Symfony files buy 9.5 ms for free. The **123 files** after that (psr, carbon) buy 15.7 ms, more than the 1,094 before them. And the last 1,912 buy 1.8 ms while adding another 1.2 seconds. So the blanket preload the earlier record measured as a ceiling is the worst point on the curve that is not the origin: stopping at 2,809 files gives 12.77 ms for 1,514 ms of start-up, while 4,721 files ask 2,691 ms to reach 10.96 ms.

measured 15 days ago

High confidence

opcache preload cuts the deploy bill by up to fourteen times — but five of seven frameworks do not hand it to you

With `opcache.preload` on, how long is the first request seven PHP frameworks serve after a deploy, what does the gain cost, and who can actually have it?

Finding

Preload shortens the cold first request by between 3.5× and 14.2×: Symfony drops from 35.58 ms to 2.50 ms, down to Phalcon's bare figure. But only two of the seven candidates — Symfony and CodeIgniter — publish a preload file of their own; for the other five the gain sits on the table waiting for the user to write one. Writing one is not as easy as it looks: a preload generated blindly from the classmap never brings Symfony up at all, and on CodeIgniter it does worse (5.29 ms) than the hand-picked official file (3.13 ms). And the cost does not vanish: Laravel's classmap preload takes the 62 ms it saves each visitor and writes it back as 2,340 ms of php-fpm start-up.

measured 15 days ago

High confidence
Tags: #education#content-platform#open-access
Share:
Expertise: PHP Developer

More Records

All records

An open, free resource for reading, understanding and learning the Qur'an, gathering Qur'an- and hadith-centred research under one roof.

What it does today

Live as a free, open resource for reading and searching the Qur'an and hadith side by side; letter-level fingerprint matching gives 91–99% coverage across the hadith collections. Readers and researchers who want to go straight to the source can use it today.

Web app Laravel PHP Livewire +7 more
August 2026 — Ongoing

A swipe-based true/false trivia game; the real subject is not the game but making a client-computed score verifiable through a signature.

What it does today

The swipe-based true/false quiz runs end to end in its core loop as a mobile app; the score is produced on the client but verified server-side with a server_nonce and an HMAC signature. swipenor.com is the app's landing page, not the game itself.

Mobile app Laravel PHP PostgreSQL +6 more
July 2026 — Ongoing

A finance core that keeps multi-account income and expense tracking in a single model; it became Parantaj, running on web, iOS and Android.

What it does today

One account/transaction model carries multi-account management, budgeting, goals and reporting on a single core; the web, iOS and Android clients are all live. Anyone who wants personal and business finances tracked in one place can use it.

Open source Web app Mobile app PHP Laravel Go +4 more
March 2024 — October 2024

Search the site

Start typing to search posts, projects and pages.

Esc to close Powered by Pagefind