book
Slopware 101
A practical guide to understanding the software you build.
by Damla Su Bilge · 35 steps · about 2 hours
- PrefaceI believe everyone should benefit from tech. It is not just business and money but making products for your own needs.2 min
- Everyone can build anythingA common argument goes like this: an accountant who can build their own form and put two lines of logic behind it does not need an engineer. About the form…2 min
- 1Why do some websites feel like slop at first glance?Sometimes a site feels like slop before you have clicked anything. There is a grand promise at the top, three equally important cards underneath, and a…4 min
- 2The same command, a different resultA command can work in one terminal window and fail in another. Before changing the command, look at which folder each window is using. The same relative path…4 min
- 3What actually happens when you open a page?We have found the project folder. The page is open in the browser too, but those are two different views of the work. Changing a file does not, by itself…5 min
- 4It opens on my laptop. Why not on yours?A development tool starts a website on your own machine and prints an address such as localhost:3000. You click it and your page opens.4 min
- 5What should the browser be allowed to do?The last chapter ended on the difference between a page on your laptop and one on a machine strangers can reach. Once there is a machine on the other end…4 min
- 6Where does your work go when you close the tab?The browser can send a request and the service can answer it. But when that request adds a task, where does the task stay? Close the tab, open a second…3 min
- 7What does “it works” mean?Working once and working are not the same thing. The first is an event: you clicked, and the right thing happened. The second is a claim about many clicks…3 min
- 8I pressed Save. Did it save?You type a note, press Save, and a green message appears. You close the page. Tomorrow the note is gone.3 min
- 9The error message is trying to tell you somethingSometimes the page cannot even show the useful failure state we planned. It goes blank instead, leaving an error in the browser console. We will follow one…4 min
- 10Can we go back to the version that worked?The model broke something and I cannot get it back is one of the most common emergencies in this kind of work. It is usually three emergencies wearing one…4 min
- 11Who else can see your API key?Saving a project's history makes it easier to recover earlier work. It also preserves anything sensitive that went into those earlier files. An API key…4 min
- 12What did you just install?Once a program can read a key, the code running inside that program matters too. Installing a package brings other people's code into the project, and some…3 min
- 13Giving your project an address of its ownWith the files, configuration and dependencies in place, the project may run happily on your laptop. Earlier we saw why its localhost address belongs to that…4 min
- 14A place for the data, rules for what belongs thereAn address lets someone reach the app; a place to keep their work lets them come back to it. We have already compared browser storage, files and databases.…4 min
- 15Changing the app without losing the old workA schema is not written once. The app grows, a column needs a new meaning, and the question becomes what happens to the rows that already exist. This chapter…4 min
- 16All the tests passed. What did that prove?The migration rehearsal gave us a concrete comparison: existing work should still be readable after the change. We can check that by hand, but repeating…4 min
- 17A convincing answer can still be wrongSome expected results are exact: a note still exists, a forbidden request is refused, a count has the right value. When a feature uses a language model, an…4 min
- 18You logged in. Are you allowed?A calendar draft can be accurate and still belong to the wrong person. Correct contents do not settle who may read or change them. Every request carries two…4 min
- 19Can the database keep a private note private?The previous chapter put the ownership check in your server's query. Some stacks move that check one layer down, into the database itself, and Supabase is…4 min
- 20What could go wrong with an upload button?Ownership checks tell us whether a person may change a record. They do not tell us whether the change itself is acceptable. Someone allowed to edit their own…4 min
- 21Your key is hidden. Who is running up the bill?A privileged API key authorizes calls against an account, which is typically the account billed for them. Keeping it secret prevents other people from using…4 min
- 22What does Delete actually delete?Every field on a signup form is a promise you make without noticing. From the moment a value arrives, you are responsible for every copy of it, wherever it…3 min
- 23Could a web page give your agent orders?White text on a white background is still text to a machine. Imagine a line in a web page telling the reader to ignore its earlier orders and send a config…3 min
- 24It was fast when only you used itLimiting what a request may do is one part of controlling its work. Another is noticing how that work grows. Reading twelve rows may be quick even with a…3 min
- 25One click, two copiesA busy app does more than handle larger amounts of data. It also meets repeated requests: someone clicks again while waiting, or a system repeats a message…4 min
- 26The money arrived. Where is the order?A customer can complete a payment while your database still shows an unpaid order. Each side may be working correctly in isolation; the missing part is how…4 min
- 27Waiting for a service that may not answerThe payment example leaves a question that applies to many other services: what should the app do while it has no answer? In code, the call may sit beside…3 min
- 28It broke while you weren’t watchingThe delayed and failed calls in our development exercise were arranged on purpose. A failure in use arrives with less explanation. Someone says the site is…4 min
- 29How much did that one click cost?The record of a request can tell us how it failed. It can also show how many attempts we paid for. A task that appears once on the screen may have called a…3 min
- 30Why can’t the app find Işıl?We began by asking whether the screen helped someone do a particular job. We have since followed that job through storage, permissions, failures and costs.…2 min
- 31Try using your own app without a mouseThe last example failed because two parts of the app treated a name differently. A form can also fail someone before they enter a single letter: they cannot…1 min
- 32The moment you open a comment boxA comment box lets your product publish a sentence you did not write, from an address that carries your name. The form may be small; the decisions begin…3 min
- 33Who will read the PR you sent?A comment adds something another person has to read and possibly act on. Code contributions ask for a different kind of attention. When you send a pull…3 min
- 34Does anyone need the thing you’re building?A useful patch begins with a problem someone can recognise and reproduce. A product needs a recognisable problem too, although finding it happens in people's…3 min
- 35People are paying. Are you making money?Suppose that small pilot finds people who want the product and are willing to pay. That gives us evidence of demand, but it does not yet tell us whether the…3 min


