In the previous post I wrote about building Hangar Board, the flying-group app, with Codex doing the coding. Here is the usage so far:
In the previous post I wrote about building Hangar Board, the flying-group app, with Codex doing the coding. Here is the usage so far:
I've been having some more spare time recently. Since I have been using coding agents at work for some time now, and in recent months have switched mainly to Codex, I wanted to see whether I could write a fully functional app from scratch without writing a single line of code and without looking at the code whatsoever.
I own a share in an airplane. Our group uses a rather old piece of software for bookings. It does its job, but... it feels very much like old software. So the idea was simple: build something more modern for our group, but do not force everyone to move at once.
For the time being, bookings in the new app work as a wrapper around the existing booking service. The old system remains the source of truth, and anyone who wants to keep using it directly can still do so. The new app just gives us a nicer, group-specific front end and adds the things around bookings that we actually care about.
The app is called Hangar Board. At this point it is no longer just a toy experiment. It is fully working.
The main pieces are:
One of the most interesting parts of this experiment was that all of the third-party integration work was done by Codex. Aviation weather, aircraft tracking, maps, Dropbox, WhatsApp, email - Codex suggested which services to use, went and read the API documentation, and then wrote the integration code.
My role was basically to choose from the options it recommended. I did not read the API specs. I did not write the request/response handling. I did not wire the service layers. I just guided the product decisions and checked whether the resulting app behaved correctly.
Another part that still feels slightly magical is that Codex could test the UI on devices by controlling Xcode simulators. It would start a simulator, open a browser, navigate the app, take screenshots, inspect what was wrong, adjust the UI, and repeat.
This was especially useful for the checklist PWA and iPad layouts. I did not have to manually resize windows, copy screenshots around, or describe every alignment issue. Codex could see enough of the rendered result to iterate.
Codex also wrote the test suite. There are now over 800 tests, and Codex runs them every time a code change is made. That part matters a lot, because once the app grew beyond a few simple pages, manual checking would not have been enough.
For this work I have been exclusively using GPT-5.5 xhigh. The whole process has also been a lot of fun. Sometimes I was not even at my computer: I would use ChatGPT with remote Codex access, ask Codex to implement something, and then come back later to review the result. That still feels really cool.
The app is still deliberately small-scale. It uses SQLite and a dependency-light Python web app. It probably would not scale well for some larger deployment, but that is not the problem I am solving. There are six of us. For that, it works very well.
The main goal has been achieved: I did not write a single line of code, and I did not read the code. The app is fully working and working well.
Frankly, although I did expect Codex to succeed, I also expected that I would need to intervene in small ways here and there. I thought I would need to fix some code manually, read a few awkward parts, or step in when an integration got messy. That did not happen.
That said, I do think my technical background helped. I did not write the code, and I did not read the code, but knowing how software, backends, APIs, authentication, persistence, testing, and deployment usually fit together made it much easier to ask the right questions, judge trade-offs, and notice when something needed another iteration.
Still, it feels like we are now very close to the point where an AI system can generate a fully working service like this for someone without that kind of technical background. Not a toy demo, but a real, useful, integrated application built around the way a small group actually works.
When I think about it, just several months ago this was not possible. And yet now it already feels natural, almost mundane, and I find myself taking it for granted.
Truly marvelous times we live in.
On a low-latency Linux host, it is easy to assume that nohz_full (full dynticks / adaptive ticks) means "this CPU will not get ticks." In practice, tick behavior depends on both idle policy and runqueue state.
This post gives a brief summary of how this works on a Rocky Linux 9.x / 5.14.x kernel, with easy-to-reproduce examples.
The /api/private/cli family is useful, but the “standard”/structured passthrough style (where the CLI maps onto /api/private/cli/<command-path> and parameters become fields/query params) only covers a subset of CLI commands and behaviours.
POST /api/private/cli with a JSON body containing an input string. In effect, you hand ONTAP a whole CLI command line to execute. The trade-off is that you typically get CLI-style text output back (not nice JSON records), but it can still be extremely handy for one-off automation and troubleshooting.input)curl -u admin -k -X POST 'https://<cluster>/api/private/cli' \ -H 'accept: application/json' \ -H 'content-type: application/json' \ --data '{"input": "system node run -node * -command \"priv set diag; wafl scan speed\""}'Enter host password for user 'admin':{
"output": "2 entries were acted on.\n\nNode: XXX-01\nWarning: These diagnostic commands are for use by NetApp\n personnel only.\nWAFL scan speed is 1300\n\nNode: XXX-02\nWarning: These diagnostic commands are for use by NetApp\n personnel only.\nWAFL scan speed is 1300\n\n"
}