AR-05 · FIELD NOTESField Notebook
Field Notebook
Not a list of technologies I claim to know. A record of what I am trying to understand, what standing each subject has actually reached, and whether you can check it without taking my word for it.
- Sheet
- AR-05 · Learning
- Subjects
- 17 in 5 strands
- Field log
- 13 entries
- Open questions
- 5
01The standing note
Learning is not a list of technologies I claim to know. It is a record of what I am trying to understand.
When I work with AI, I want to understand what it's doing rather than blindly accepting the output.
That sentence is why this page has two columns where a skills page has one bar. Standing says what was actually done with a subject. Basis says whether anyone else can check it. A subject can be honestly present with nothing behind it — that is what Stated means, and three of the entries below carry it.
- Standing
- Built
Used to make something that runs, and that you can read.
ExperimentedWired up and tried, in a project with a purpose — not a tutorial.
Currently learningWorked on now, with the working visible somewhere.
ExploringRead about and poked at. Nothing has been finished with it.
Not attemptedNever done. Recorded because the absence is the useful fact.
- Basis
- Verified
Read out of source. The evidence names the file, the constant or the commit range, so you can go and disagree with it.
Partly verifiedSome of it is in the source and some of it is not. The evidence says which part is which.
StatedI said so, and this archive holds nothing that shows it. Included anyway, marked as what it is.
02Register of subjects
Grouped by strand, never ranked. Sorting these by standing would put a bar chart back on the page with the numbers taken off.
| Subject | Standing | Basis | Evidence |
|---|---|---|---|
| AI and language models | |||
| Local language models | Experimented | Verified | ollama==0.3.3 with AIBrain(model="mistral") in jarvis_assistant; qwen2.5:0.5b served at localhost:11434, temperature 0.3, an 80-token cap and a 20-second timeout, in x-man.Set out at length → |
| Hosted language models | Experimented | Verified | OpenAI and Anthropic behind one provider interface in YushaCyber; GPT-4o and Gemini 1.5 Flash in beach_buggy_ai. Every one of them key-gated, and each reports itself unavailable without a key.Set out at length → |
| Computer vision | Experimented | Verified | MediaPipe Hands and Face Mesh, OpenCV, DeepFace, and MobileNetV2 carrying stock ImageNet weights.Set out at length → |
| Speech recognition and synthesis | Experimented | Verified | Vosk KaldiRecognizer running continuously at 16 kHz, faster-whisper small loaded per command, pyttsx3 on the way out.Set out at length → |
| Training a model | Not attempted | Verified | No .fit(, no train_test_split, no fine-tune and no saved weights in any repository. Every model in this archive arrived already trained.Set out at length → |
| Programming | |||
| Python | Built | Verified | The primary language of five public repositories, the largest of them a Flask application of roughly 3.4 MB of Python.Set out at length → |
| Web development | Built | Verified | This site is Astro and TypeScript, built to static files. Three repositories are Flask with Jinja templates, their own stylesheets and their own client JavaScript.Set out at length → |
| Automation | Built | Verified | PyAutoGUI and pynput driving a real desktop, held behind an application whitelist, a key allow-list, a 120-character typing cap, rate limiting and a confirmation on the close-window hotkey.Set out at length → |
| C | Exploring | Stated | No public artifact. It is in this register because it is being studied, not because it has been used for anything the archive can show you. |
| Cybersecurity | |||
| The Linux shell | Currently learning | Verified | OverTheWire Bandit, levels 0 to 13, worked in public: 19 commits across six days between 13 and 20 August 2026, each level with its own written note.Set out at length → |
| Networking | Currently learning | Partly verified | SSH, hosts and ports from Bandit 0. Beyond that, five lab modules in YushaCyber — fundamentals, reconnaissance, troubleshooting, topology and an HTTP deep dive — each with its own test file. |
| Nmap | Currently learning | Verified | A simulated scanner was written so the mission could be graded: -p-, -sn, -sV, -sU, -sT, -O and -Pn against a virtual network with filtered ports, a host that drops ICMP, and an OS guess. Running nmap against a real network is not recorded here.Set out at length → |
| Packet analysis | Currently learning | Verified | A packet lab, and the capture, filter, follow and packets commands in the simulated terminal, behind a 536-line test file. No capture of my own is published.Set out at length → |
| Web application security | Exploring | Verified | SQL injection, XSS, CSRF and file-upload modules in YushaCyber, each with its own tests — and two decisions in the platform itself: CSRF protection applied globally, and rendered markdown sanitised with bleach against an allow-list.Set out at length → |
| Systems and hardware | |||
| Machines and peripherals | Exploring | Partly verified | The vision and speech work runs against a real camera and microphone, and its constants belong to one machine — 1280×720 captured and 320×240 inferred, capture stopping 450 ms after the signal drops below energy 400. Beyond that, hardware is an interest in the personal record with nothing filed under it.Set out at length → |
| Away from the machine | |||
| German | Currently learning | Stated | Recorded in the personal record. It produces no artifact this archive can hold, and no level, module or examination is claimed.Set out at length → |
| Bachelor's degree, Lincoln University | Currently learning | Stated | From the personal record. No dates, modules, marks or graduation date appear anywhere on this site, because none were supplied.Set out at length → |
03Re-implementation as a method
The same thing keeps happening in the source. Faced with a tool that is not understood, the response is to write a version of it — not a mock that returns the right answer, but something with the tool’s actual behaviour in it, because a fake cannot be got wrong and therefore teaches nothing. Three instances, all inside YushaCyber.
I want to understand and build with code, rather than blindly trust code generated by AI.
The shell
A shell over a virtual filesystem: 54 commands, pipes, redirection, variable assignment and expansion, command substitution, and single-line if and for. Its own docstring says it exists so the terminal behaves "like a real (sandboxed) shell rather than fake string-matching".
297 lines of shell, 1,195 of commands
Nmap
A scanner over a virtual network — hosts, services and versions, filtered ports, a host that drops ICMP, UDP, and an OS guess — so a scanning exercise could be graded on what was actually run.
358 lines of network, 484 of tests
A packet analyser
A packet lab with capture, display filters and stream following, addressed by the same simulated terminal as everything else.
409 lines of packets, 536 of tests
Worth being precise about what this is and is not evidence of. It shows the behaviour of these tools was understood well enough to reproduce and grade. It is not a record of running them against a real network, and the register above says so on every affected row.
04Field log — the Linux shell
OverTheWire’s Bandit, worked in the open. Every level has a note written for it and a commit that filed it, so this is a dated record rather than a claim. The level answers are in those notes and are deliberately not reproduced here.
The repository describes itself as “I will going to upload daily basis for 6 months.” It was created on 11 Aug 2026, and what the log currently shows is 19 commits across 6 days. The stated intention is recorded as an intention, next to the record, and neither has been edited to agree with the other.
| Filed | Level | What it turned on | Own note |
|---|---|---|---|
| 13 Aug 2026 | 0 → 1 | SSH as three parts — user, host, port. The default is 22; this server answers on 2220. | SSH |
| 13 Aug 2026 | 1 → 2 | A file named "-". cat - waits on standard input instead of reading it; cat ./- says "this is a path, not a flag". | — |
| 13 Aug 2026 | 2 → 3 | Spaces inside a filename. The shell splits on them, so each one has to be escaped or one argument becomes four. | — |
| 14 Aug 2026 | 3 → 4 | Hidden files, and ls -la as the only way to see that they are there at all. | — |
| 14 Aug 2026 | 4 → 5 | Ten files, one of them readable. file ./* reports what is actually inside each one rather than what its name suggests. | — |
| 14 Aug 2026 | 5 → 6 | Finding by size and permission — and the trap underneath it: two files matched every criterion and one was noise. Narrowing a search is not the same as identifying a file. | — |
| 16 Aug 2026 | 6 → 7 | The same search across the whole filesystem from /, by owner, group and exact size, with the permission errors suppressed. | /dev/null |
| 17 Aug 2026 | 7 → 8 | A file far too large to read. grep for the one word standing next to the answer. | — |
| 17 Aug 2026 | 8 → 9 | The line that occurs exactly once, found by sorting first and counting second — because uniq only ever compares neighbours. | sort, uniq |
| 19 Aug 2026 | 9 → 10 | Binary data with readable text buried in it. strings pulls out what a human can read, then grep narrows it. | strings |
| 19 Aug 2026 | 10 → 11 | Base64: what it is for, why it is not encryption, and how to reverse it. | Base64 |
| 20 Aug 2026 | 11 → 12 | ROT13, rotated through tr — a substitution written as a character mapping rather than as a program. | — |
| 20 Aug 2026 | 12 → 13 | A hex dump of a file compressed over and over with different tools. xxd -r back to binary, then identify and unpack, repeatedly, until the format stops changing. | — |
The last column is the one worth reading. Six of the thirteen levels produced a second file about the command itself — not what it did here, but what it does. That is the same instinct as section 03, two hundred lines of shell code earlier: the level was already solved when those notes were written.
05Open questions
Five things that were built, shipped and never measured. Each comes out of an experiment in the AI Lab whose recorded result is an absence; none of them is rhetorical, and none has an answer here.
01
How often is the five-crop mapping right? There is no labelled test set, so there is no number — and building one is the work, not running the model again.
02
Does an assistant that knows whether it is being looked at actually answer better? The mechanism works. Whether it helps was never tested.
03
What does the two-recogniser split actually cost and save? Latency and word error rate were never measured for either model.
04
What frame rate and false-trigger rate does hand steering run at? The thresholds were set by playing the game, not by instrumenting it.
05
How often does the 0.5B model hand over to its rule-based fallback, and how good are its answers when it does not? Neither was recorded.
06Filed notes
Nothing filed here yet. The Linux notes live in their own repository rather than being copied into this one, and section 04 indexes them; when notes are written for this archive directly, they will appear in this section.
07Not in this notebook
- Certifications
- Completed courses
- Proficiency levels
- Years of experience
- CTF placements
- Security engagements
- Trained models
None of these exists, so none of them appears. They are named individually rather than left out silently, because a page about learning that simply omits certifications is read as modest, and this one would rather be read as accurate.
08Sources
Everything marked Verified above came from one of these.
- Field loghttps://github.com/ayushrijal83-ops/cyber-security
- The wargamehttps://overthewire.org/wargames/bandit/
- The repositoriesPublic code archive
- The projectsEngineering workshop
- The experimentsExperimental laboratory
- The personPersonal record