{"course":{"slug":"how-software-changed","title":"How Software Development Changed","url":"https://addaly.com/learn/how-software-changed","level":"intermediate","track":"work"},"lesson":{"slug":"the-hardware-you-have","title":"Doing this work on the machine you own","url":"https://addaly.com/learn/how-software-changed/the-hardware-you-have","position":84,"of":87,"minutes":9,"answer":"A phone with a terminal plus a borrowed machine covers nearly all of this work, and the honest hardware floor is a 4-bit 7B model at roughly 4 to 5 GB of memory, with training.","keyIdea":"A phone with a terminal plus a borrowed machine covers nearly all of this work, and the honest hardware floor is a 4-bit 7B model at roughly 4 to 5 GB of memory, with training, large models and Apple-platform development being the things that genuinely require hardware you may not have."},"body":{"format":"markdown","text":"## The assumption worth dropping\n\nMost writing about this work assumes a recent laptop with sixteen gigabytes of memory and a stable connection. A large share of people reading this have a phone, or a machine with four gigabytes, or a connection that disappears for hours.\n\nAlmost all of this work is reachable from there. Some of it is not, and this lesson says which.\n\n## A phone is a real computer\n\nOn Android, **Termux** is a full terminal with a package manager. `git`, `python`, `clang`, `node`, `vim`, `ssh`: the actual tools, compiled for the device, free and open source. A phone from 2020 runs a Python test suite without difficulty.\n\nWhat a phone is bad at is typing and reading. A five-pound Bluetooth keyboard changes the experience more than any software. Reading a long diff on a small screen is hard, and no trick fixes it.\n\nOn iOS the position is worse (no general terminal) so the practical route is connecting to a machine elsewhere, which is the next section.\n\n## Borrow a machine\n\nWhen the local device is the constraint, move the work.\n\n- **GitHub Codespaces** includes a monthly free allowance for personal accounts, giving a real Linux container with VS Code in the browser.\n- **Google Colab** provides free notebook sessions with a GPU, subject to idle limits and no guarantee of availability.\n- **Kaggle notebooks** provide a weekly GPU quota, around thirty hours, which is more generous than most people realise and is free.\n- **A small virtual server** costs about five dollars a month. Install `tmux` and `code-server`, and you have a persistent development machine reachable from a browser.\n- **`code-server`** on any spare machine at home, reached over Tailscale or a similar free tier, turns an old desktop into your workstation.\n\nThe pattern is the same: the phone becomes a terminal, and the work happens somewhere with memory.\n\n## Surviving a bad connection\n\nThis is a design problem, and it has good answers.\n\n**`tmux` or `screen` on the remote machine.** Your session survives the disconnection. Reconnect and everything is as you left it, mid-command. This single habit removes most of the pain of intermittent connectivity.\n\n**Git is offline by design.** Commit, branch, rebase, read history, run `bisect`: all local. You need the network only to push and pull, which is seconds.\n\n**Take documentation offline.** DevDocs downloads complete API references for hundreds of languages and libraries into browser storage. `man` pages, `pydoc`, `go doc` and `--help` are already on your machine. A large share of what people ask a chat interface is in a reference page that is already local.\n\n**`mosh` instead of `ssh`** where you can install it: it survives network changes and reconnects without dropping the session.\n\n## Running a model locally\n\nThis is where hardware bites, and the honest numbers matter more than encouragement.\n\nA 4-bit quantised model of around 7 billion parameters needs roughly 4 to 5 GB of memory. A 3B model needs around 2 GB and will run on a mid-range phone, slowly. `llama.cpp` runs on CPU only and works on hardware with no GPU at all; `ollama` wraps it in something easier.\n\n> Figure: Memory a local model needs. Bars (GB): 3B model, 4-bit 2; 7B coding model, 4-bit 5; 13B model, 4-bit 9; 70B model, 4-bit 40. The honest floor is the highlighted bar, and llama.cpp will run it on a processor with no graphics card at all. A machine with eight gigabytes reaches the second bar and not the third, and the last one is what a borrowed machine is for.\n\nWhat a small local model does well: completion, boilerplate, explaining unfamiliar syntax, writing a regular expression, drafting a test, renaming things consistently. Those are a real fraction of daily work.\n\nWhat it does not do well: multi-step reasoning over a large codebase, subtle debugging, anything needing a long context. Module five made the point that many of those tasks are ones you should be doing yourself; that is true and it is also partly a consolation. The gap is real.\n\n## What cannot be done on constrained hardware\n\nSaid plainly, because false encouragement wastes people's time.\n\nTraining or fine-tuning anything substantial. Running large open-weight models: a 70B model needs tens of gigabytes even quantised. Large-scale data processing that does not fit in memory. Compiling very large codebases in reasonable time. iOS and macOS development, which requires Apple hardware.\n\nFor several of these the answer is the borrowed machine: Kaggle's weekly GPU hours will fine-tune a small model. For the Apple case there is no free path, and that is a real barrier, not a matter of effort.\n\n## What this actually costs\n\nA usable setup: a second-hand Android phone, a cheap Bluetooth keyboard, a free GitHub account, a free Kaggle account, and optionally five dollars a month for a server. Everything else on this page is free and open source.\n\nThat is a genuine change, and it is worth stating without inflating it: the capital barrier to learning this work is now very low. The barriers that remain are electricity, bandwidth, time, and the fact that most documentation and most hiring happens in English. Those are not solved by any tool on this list."},"check":{"question":"Someone with an unreliable connection keeps losing long-running commands mid-execution. Which change addresses the mechanism rather than the symptom?","options":[{"text":"Run a persistent terminal multiplexer on the remote machine so the session outlives the connection.","correct":true},{"text":"Switch to a browser-based editor, since web sessions reconnect automatically after a network interruption.","correct":false,"tempting":"The browser reconnects, but the process attached to the dropped shell has already been terminated."},{"text":"Move to a provider with servers geographically closer, reducing latency and therefore dropped connections.","correct":false,"tempting":"Latency and connection stability are different properties; a nearby server still drops when the link does."},{"text":"Break long commands into smaller steps so less work is lost when the connection fails.","correct":false,"tempting":"Reduces the damage per failure without removing the coupling between the session and the link."}]},"prev":{"slug":"what-it-costs-to-leave","title":"Ask the exit question before you enter","url":"https://addaly.com/learn/how-software-changed/what-it-costs-to-leave"},"next":{"slug":"what-previous-automations-did","title":"What happened the last few times","url":"https://addaly.com/learn/how-software-changed/what-previous-automations-did"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'Doing this work on the machine you own', in How Software Development Changed. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/how-software-changed/the-hardware-you-have (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"Doing this work on the machine you own","courseTitle":"How Software Development Changed","module":{"index":9,"slug":"what-did-not-change","title":"What did not change, and what to do now"},"answer":null,"keyIdea":"A phone with a terminal plus a borrowed machine covers nearly all of this work, and the honest hardware floor is a 4-bit 7B model at roughly 4 to 5 GB of memory, with training, large models and Apple-platform development being the things that genuinely require hardware you may not have.","hero":{"kind":"figure","figure":{"t":"figure","label":"Figure","figure":{"type":"bars","unit":"GB","title":"Memory a local model needs","series":[{"label":"3B model, 4-bit","value":2},{"label":"7B coding model, 4-bit","value":5,"highlight":true},{"label":"13B model, 4-bit","value":9},{"label":"70B model, 4-bit","value":40}],"caption":"The honest floor is the highlighted bar, and llama.cpp will run it on a processor with no graphics card at all. A machine with eight gigabytes reaches the second bar and not the third, and the last one is what a borrowed machine is for."},"alt":"Figure: Memory a local model needs. Bars (GB): 3B model, 4-bit 2; 7B coding model, 4-bit 5; 13B model, 4-bit 9; 70B model, 4-bit 40. The honest floor is the highlighted bar, and llama.cpp will run it on a processor with no graphics card at all. A machine with eight gigabytes reaches the second bar and not the third, and the last one is what a borrowed machine is for."}},"blocks":[{"t":"h2","id":"the-assumption-worth-dropping","runs":[{"text":"The assumption worth dropping"}]},{"t":"p","runs":[{"text":"Most writing about this work assumes a recent laptop with sixteen gigabytes of memory and a stable connection. A large share of people reading this have a phone, or a machine with four gigabytes, or a connection that disappears for hours."}]},{"t":"p","runs":[{"text":"Almost all of this work is reachable from there. Some of it is not, and this lesson says which."}]},{"t":"h2","id":"a-phone-is-a-real-computer","runs":[{"text":"A phone is a real computer"}]},{"t":"p","runs":[{"text":"On Android, "},{"text":"Termux","b":true},{"text":" is a full terminal with a package manager. "},{"text":"git","code":true},{"text":", "},{"text":"python","code":true},{"text":", "},{"text":"clang","code":true},{"text":", "},{"text":"node","code":true},{"text":", "},{"text":"vim","code":true},{"text":", "},{"text":"ssh","code":true},{"text":": the actual tools, compiled for the device, free and open source. A phone from 2020 runs a Python test suite without difficulty."}]},{"t":"p","runs":[{"text":"What a phone is bad at is typing and reading. A five-pound Bluetooth keyboard changes the experience more than any software. Reading a long diff on a small screen is hard, and no trick fixes it."}]},{"t":"p","runs":[{"text":"On iOS the position is worse (no general terminal) so the practical route is connecting to a machine elsewhere, which is the next section."}]},{"t":"h2","id":"borrow-a-machine","runs":[{"text":"Borrow a machine"}]},{"t":"p","runs":[{"text":"When the local device is the constraint, move the work."}]},{"t":"ul","items":[[{"text":"GitHub Codespaces","b":true},{"text":" includes a monthly free allowance for personal accounts, giving a real Linux container with VS Code in the browser."}],[{"text":"Google Colab","b":true},{"text":" provides free notebook sessions with a GPU, subject to idle limits and no guarantee of availability."}],[{"text":"Kaggle notebooks","b":true},{"text":" provide a weekly GPU quota, around thirty hours, which is more generous than most people realise and is free."}],[{"text":"A small virtual server","b":true},{"text":" costs about five dollars a month. Install "},{"text":"tmux","code":true},{"text":" and "},{"text":"code-server","code":true},{"text":", and you have a persistent development machine reachable from a browser."}],[{"text":"code-server","b":true,"code":true},{"text":" on any spare machine at home, reached over Tailscale or a similar free tier, turns an old desktop into your workstation."}]]},{"t":"p","runs":[{"text":"The pattern is the same: the phone becomes a terminal, and the work happens somewhere with memory."}]},{"t":"h2","id":"surviving-a-bad-connection","runs":[{"text":"Surviving a bad connection"}]},{"t":"p","runs":[{"text":"This is a design problem, and it has good answers."}]},{"t":"p","runs":[{"text":"tmux","b":true,"code":true},{"text":" or ","b":true},{"text":"screen","b":true,"code":true},{"text":" on the remote machine.","b":true},{"text":" Your session survives the disconnection. Reconnect and everything is as you left it, mid-command. This single habit removes most of the pain of intermittent connectivity."}]},{"t":"p","runs":[{"text":"Git is offline by design.","b":true},{"text":" Commit, branch, rebase, read history, run "},{"text":"bisect","code":true},{"text":": all local. You need the network only to push and pull, which is seconds."}]},{"t":"p","runs":[{"text":"Take documentation offline.","b":true},{"text":" DevDocs downloads complete API references for hundreds of languages and libraries into browser storage. "},{"text":"man","code":true},{"text":" pages, "},{"text":"pydoc","code":true},{"text":", "},{"text":"go doc","code":true},{"text":" and "},{"text":"--help","code":true},{"text":" are already on your machine. A large share of what people ask a chat interface is in a reference page that is already local."}]},{"t":"p","runs":[{"text":"mosh","b":true,"code":true},{"text":" instead of ","b":true},{"text":"ssh","b":true,"code":true},{"text":" where you can install it: it survives network changes and reconnects without dropping the session."}]},{"t":"h2","id":"running-a-model-locally","runs":[{"text":"Running a model locally"}]},{"t":"p","runs":[{"text":"This is where hardware bites, and the honest numbers matter more than encouragement."}]},{"t":"p","runs":[{"text":"A 4-bit quantised model of around 7 billion parameters needs roughly 4 to 5 GB of memory. A 3B model needs around 2 GB and will run on a mid-range phone, slowly. "},{"text":"llama.cpp","code":true},{"text":" runs on CPU only and works on hardware with no GPU at all; "},{"text":"ollama","code":true},{"text":" wraps it in something easier."}]},{"t":"p","runs":[{"text":"What a small local model does well: completion, boilerplate, explaining unfamiliar syntax, writing a regular expression, drafting a test, renaming things consistently. Those are a real fraction of daily work."}]},{"t":"p","runs":[{"text":"What it does not do well: multi-step reasoning over a large codebase, subtle debugging, anything needing a long context. Module five made the point that many of those tasks are ones you should be doing yourself; that is true and it is also partly a consolation. The gap is real."}]},{"t":"h2","id":"what-cannot-be-done-on-constrained-hardware","runs":[{"text":"What cannot be done on constrained hardware"}]},{"t":"p","runs":[{"text":"Said plainly, because false encouragement wastes people’s time."}]},{"t":"p","runs":[{"text":"Training or fine-tuning anything substantial. Running large open-weight models: a 70B model needs tens of gigabytes even quantised. Large-scale data processing that does not fit in memory. Compiling very large codebases in reasonable time. iOS and macOS development, which requires Apple hardware."}]},{"t":"p","runs":[{"text":"For several of these the answer is the borrowed machine: Kaggle’s weekly GPU hours will fine-tune a small model. For the Apple case there is no free path, and that is a real barrier, not a matter of effort."}]},{"t":"h2","id":"what-this-actually-costs","runs":[{"text":"What this actually costs"}]},{"t":"p","runs":[{"text":"A usable setup: a second-hand Android phone, a cheap Bluetooth keyboard, a free GitHub account, a free Kaggle account, and optionally five dollars a month for a server. Everything else on this page is free and open source."}]},{"t":"p","runs":[{"text":"That is a genuine change, and it is worth stating without inflating it: the capital barrier to learning this work is now very low. The barriers that remain are electricity, bandwidth, time, and the fact that most documentation and most hiring happens in English. Those are not solved by any tool on this list."}]}],"check":{"question":[{"text":"Someone with an unreliable connection keeps losing long-running commands mid-execution. Which change addresses the mechanism rather than the symptom?"}],"options":[{"text":[{"text":"Run a persistent terminal multiplexer on the remote machine so the session outlives the connection."}],"correct":true,"tempting":null},{"text":[{"text":"Switch to a browser-based editor, since web sessions reconnect automatically after a network interruption."}],"correct":false,"tempting":[{"text":"The browser reconnects, but the process attached to the dropped shell has already been terminated."}]},{"text":[{"text":"Move to a provider with servers geographically closer, reducing latency and therefore dropped connections."}],"correct":false,"tempting":[{"text":"Latency and connection stability are different properties; a nearby server still drops when the link does."}]},{"text":[{"text":"Break long commands into smaller steps so less work is lost when the connection fails."}],"correct":false,"tempting":[{"text":"Reduces the damage per failure without removing the coupling between the session and the link."}]}],"order":[1,3,2,0],"why":null},"prev":{"slug":"what-it-costs-to-leave","title":"Ask the exit question before you enter","minutes":8},"next":{"slug":"what-previous-automations-did","title":"What happened the last few times","minutes":10}}}