<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>LLM on William Floyd (high-quality images)</title>
    <link>https://w-floyd.com/tags/llm/</link>
    <description>Recent content in LLM on William Floyd</description>
    <generator>Hugo</generator><language>en</language><managingEditor>William Floyd</managingEditor><webMaster>William Floyd</webMaster><lastBuildDate>Fri, 06 Nov 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://w-floyd.com/tags/llm/index.hi.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Notes on LLMs - Part 2</title>
      <link>https://w-floyd.com/2026/11/notes-on-llms-part-02/</link>
      <pubDate>Fri, 06 Nov 2026 00:00:00 +0000</pubDate><author>William Floyd</author>
      <guid>https://w-floyd.com/2026/11/notes-on-llms-part-02/</guid><description>&lt;p&gt;Some notes on how I&amp;rsquo;ve found the most use out of LLMs.&#xA;The specifics of the tools honestly change so fast, I won&amp;rsquo;t get into the details too much, but here&amp;rsquo;s a look at some themes I&amp;rsquo;ve found.&#xA;Note that some of these principles are likely helpful even without LLMs, but are especially important with them.&lt;/p&gt;&#xA;&lt;h1 id=&#34;tldr&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#tldr&#34;&gt;TL;DR&lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Know your actual goal, and when &amp;ldquo;good enough&amp;rdquo; is all it needs.&lt;/li&gt;&#xA;&lt;li&gt;Get &lt;em&gt;something&lt;/em&gt; working first, and make the feedback loop as fast as you can so each iteration runs on its own.&lt;/li&gt;&#xA;&lt;li&gt;Turn anything you repeat into a script: scripts are inspectable, reusable, and outlast cheap tokens.&lt;/li&gt;&#xA;&lt;li&gt;Do homework on prior art and primary sources before running an LLM on a large or opaque task.&lt;/li&gt;&#xA;&lt;li&gt;Reshape a task into a common, well-trodden form, so the novel work is small and contained.&lt;/li&gt;&#xA;&lt;li&gt;Get both ends working, then use the LLM to fill in the step between them.&lt;/li&gt;&#xA;&lt;li&gt;With profiling and low stakes, LLMs are good for trying out speedups.&lt;/li&gt;&#xA;&lt;li&gt;LLMs are a hammer; not everything is a nail.&lt;/li&gt;&#xA;&lt;li&gt;Pin down how you&amp;rsquo;ll measure features, performance and correctness, early.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;keep-the-main-thing-the-main-thing&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#keep-the-main-thing-the-main-thing&#34;&gt;Keep the &amp;ldquo;Main Thing&amp;rdquo; the Main Thing&lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;p&gt;Know what you&amp;rsquo;re looking to &lt;em&gt;achieve&lt;/em&gt; when you set out on a project.&lt;/p&gt;&#xA;&lt;p&gt;This depends heavily on the criticality of what&amp;rsquo;s being done, but know when &amp;ldquo;it ain&amp;rsquo;t stupid if it works&amp;rdquo; applies.&#xA;For example, with my work in &lt;a href=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/&#34; &gt;Part 1&lt;/a&gt; getting a phone and then a car&amp;rsquo;s head unit running Linux, the goal was just that - getting Linux running.&lt;/p&gt;&#xA;&lt;p&gt;Non-goals included:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;sharing every random script used&lt;/li&gt;&#xA;&lt;li&gt;documenting every step&lt;/li&gt;&#xA;&lt;li&gt;doing it &amp;ldquo;right&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;mainlining modifications&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This sounds terrible, perhaps, but bear with me.&#xA;The &lt;em&gt;goal&lt;/em&gt; is to get mainline-ish Linux running on these devices.&#xA;No-one else has done this, to my knowledge - not because it&amp;rsquo;s impossible or even hard for the right person (it &lt;em&gt;is&lt;/em&gt; hard for me), but because I happen to be the &lt;em&gt;first&lt;/em&gt; attempting it.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;I assure you I had rather be the first man here than the second man in Rome.&lt;/p&gt;&#xA;&lt;p&gt;— Julius Caesar (&lt;a href=&#34;https://en.wikiquote.org/wiki/Julius_Caesar#:~:text=I%20assure%20you%20I%20had%20rather%20be%20the%20first%20man%20here%20than%20the%20second%20man%20in%20Rome%2E&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Wikiquote&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Put another way, if you can&amp;rsquo;t be the best, at least be first.&lt;/p&gt;&#xA;&lt;p&gt;This is not, however, meant to disparage taking the time to do good work.&#xA;On the contrary I value good work very much, and hope to do as much of it as I can.&#xA;But sometimes what I need is &amp;ldquo;good enough&amp;rdquo; work to achieve a goal.&lt;/p&gt;&#xA;&lt;p&gt;LLMs are a tool used to achieve this goal for me.&#xA;Were my goal to simply write lines of code, there are myriad ways of fulfilling that goal, but rest assured I would not achieve the goal of booting mainline-ish Linux as quickly as I did with LLMs.&lt;/p&gt;&#xA;&lt;h1 id=&#34;make-it-work-make-it-right-make-it-fast&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#make-it-work-make-it-right-make-it-fast&#34;&gt;Make It Work, Make It Right, Make It Fast&lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Make it work, make it right, make it fast.&lt;/p&gt;&#xA;&lt;p&gt;— attributed to Kent Beck (&lt;a href=&#34;https://wiki.c2.com/?MakeItWorkMakeItRightMakeItFast&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;c2 wiki&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;LLMs are fairly good at the first (and sometimes the third, see more &lt;a href=&#34;#i-am-speed&#34; &gt;here&lt;/a&gt;) part of this phrase.&#xA;Run an LLM in a loop against a clear goal, and you can often brute-force &lt;em&gt;something&lt;/em&gt; working, however hacky it might be.&lt;/p&gt;&#xA;&lt;p&gt;Again, this may sound terrible, but I find it much easier to have a working end-point to work backwards from, than to do everything &amp;ldquo;right&amp;rdquo; from scratch.&#xA;This is especially true of things like embedded Linux bringup, where simply getting a booting system with remote access is so much more helpful than any amount of &amp;ldquo;doing it right&amp;rdquo; blindly could ever yield.&#xA;Once you get it working, it&amp;rsquo;s much easier to get it working right.&lt;/p&gt;&#xA;&lt;p&gt;When using LLMs it is especially important to close the feedback loop as quickly as possible, so the tool can iterate automatically.&#xA;For example, in &lt;a href=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/#2024-kia-ev6-head-unit&#34; &gt;Part 1&lt;/a&gt;, I ensured there was a script that automated as much of the USB-to-boot cycle as possible.&#xA;See also &lt;a href=&#34;https://xkcd.com/1205/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;xkcd 1205, &amp;ldquo;Is It Worth the Time?&amp;rdquo;&lt;/a&gt;.&#xA;Which leads me to my next point&amp;hellip;&lt;/p&gt;&#xA;&lt;h1 id=&#34;produce-durable-goods&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#produce-durable-goods&#34;&gt;Produce Durable Goods&lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;p&gt;Make scripts for everything you do more than twice.&#xA;LLMs have a tendency to produce inscrutable one-liners for routine tasks, so I find it helpful to step in to ensure durable scripts are made instead, especially if I know I&amp;rsquo;m going to do the task often.&#xA;These scripts don&amp;rsquo;t need to be especially &lt;em&gt;good&lt;/em&gt;, but the fact they&amp;rsquo;re at least written down in one place and inspectable is critical.&#xA;They can be committed, reviewed, and tweaked as time goes on.&#xA;These scripts, once sufficiently worked through, serve to reduce the cognitive load on humans and context usage of LLMs, which then simply run a small command to do a rote task instead of reinventing the wheel.&lt;/p&gt;&#xA;&lt;p&gt;These cobbled together scripts may be a rat&amp;rsquo;s nest as a whole, but if they work, they inch you closer to your goal.&#xA;Once that goal is achieved, it is at least repeatable.&#xA;And once it&amp;rsquo;s repeatable, it can be made more &amp;ldquo;right&amp;rdquo; (see &lt;a href=&#34;#make-it-work-make-it-right-make-it-fast&#34; &gt;above&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;p&gt;These &amp;ldquo;durable goods&amp;rdquo; will outlive the cheap LLM tokens.&#xA;Once the true cost of operating LLMs at a loss funded by gobs of VC money is brought to bear, we will still have these outputs.&#xA;Ultimately, the less you depend on LLMs being cheap, the better.&#xA;And if they do remain cheap (or get cheaper), then all the better I guess&amp;hellip;&lt;/p&gt;&#xA;&lt;h1 id=&#34;prior-art-and-primary-sources&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#prior-art-and-primary-sources&#34;&gt;Prior Art and Primary Sources&lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;p&gt;It is useful to survey prior art and primary sources before just setting LLMs running on a given task.&#xA;For example, in &lt;a href=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/#2024-kia-ev6-head-unit&#34; &gt;Part 1&lt;/a&gt;, tracking down the somewhat obscure Mobis open source portal got me a vendor kernel tree.&#xA;Perhaps an LLM would have found it eventually (and I&amp;rsquo;d still have had to download it myself), but by doing at least a modicum of up-front homework, a lot of time can be saved.&#xA;In this instance, the LLMs could then derive vendor changes for the SoC in question and port them to a new mainline branch, something that would take me far, &lt;em&gt;far&lt;/em&gt; longer.&lt;/p&gt;&#xA;&lt;h1 id=&#34;intermediate-formats-and-task-normalization&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#intermediate-formats-and-task-normalization&#34;&gt;Intermediate Formats and Task Normalization&lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;p&gt;Massage your tasks into something that is &lt;em&gt;like&lt;/em&gt; something that is already commonly done.&#xA;Once a common intermediate format is achieved, you will have a much easier time of making progress.&#xA;This is especially true when reverse engineering, but may still prove useful in other projects.&#xA;For example, converting an obtuse API spec from a 500-page PDF into an OpenAPI spec that is 95% complete with the last 5% captured in prose descriptions yielded better results with LLMs than just using the PDF directly.&lt;/p&gt;&#xA;&lt;p&gt;I might call this &amp;ldquo;task normalization&amp;rdquo;: breaking a project down into the most idiomatic steps such that LLMs need to do the least novel work, or at least that the novel work is well bounded and concentrated into one domain.&lt;/p&gt;&#xA;&lt;h1 id=&#34;fill-in-the-blank&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#fill-in-the-blank&#34;&gt;Fill in the Blank&lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;p&gt;A theme alluded to above is the idea of filling in the blank - you get the bare minimum working, and flesh out the in-between later.&#xA;This is not always appropriate, but when it is, it allows LLMs to serve as a powerful tool to get some momentum on a goal.&#xA;The &amp;ldquo;blank&amp;rdquo; need not be a full project, it may be some increment - so as usual, it does well to at least think through what is required to solve a particular problem.&lt;/p&gt;&#xA;&lt;p&gt;Take, for example, camera support for the &lt;a href=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/#motorola-moto-g-play-2024---fogona&#34; &gt;Moto G Play in Part 1&lt;/a&gt;.&#xA;I had &lt;code&gt;libcamera&lt;/code&gt;, stock camera calibration files, and a working sensor.&#xA;The &amp;ldquo;blank&amp;rdquo; I had to fill was converting these stock calibration files into something that &lt;code&gt;libcamera&lt;/code&gt; could at least begin to use for better camera support.&#xA;The goal (in &lt;a href=&#34;#keep-the-main-thing-the-main-thing&#34; &gt;keeping the &amp;ldquo;main thing&amp;rdquo; the main thing&lt;/a&gt;) was a working camera that at least looked halfway decent.&#xA;The useful increment to get there was to make &lt;a href=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/#go-chromatix2libcamera&#34; &gt;a tool&lt;/a&gt; to read stock calibration files and convert them into something that &lt;code&gt;libcamera&lt;/code&gt; could read, and make &lt;code&gt;libcamera&lt;/code&gt; modifications to support them.&#xA;That way I could go from stock calibration to a working camera without redistributing stock files.&lt;/p&gt;&#xA;&lt;p&gt;This camera case is a good low-stakes example - getting it wrong is both immediately evident and harmless: it&amp;rsquo;s simply a &amp;ldquo;bad&amp;rdquo; picture, no harm done.&#xA;Thus, doing it &amp;ldquo;right&amp;rdquo; isn&amp;rsquo;t terribly important - if it &lt;em&gt;looks&lt;/em&gt; good, it &lt;em&gt;is&lt;/em&gt; by nature an acceptable result.&#xA;It also lent itself well to an iterative approach, wherein I used LLMs to trawl GitHub for relevant source code (i.e., the vendor-distributed camera stack from Qualcomm), read calibration files, approximate that same feature (if new) in &lt;code&gt;libcamera&lt;/code&gt; and then test on a live device.&#xA;The tight development loop meant I could use LLMs to work against both captured RAW images and live camera feed and start to zero in on an acceptable result.&#xA;For more subjective/temporal failures that required human review (unstable brightness, focus breathing) it was still easy to use LLMs to try things, with occasional nudges in the right direction.&lt;/p&gt;&#xA;&lt;h1 id=&#34;i-am-speed&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#i-am-speed&#34;&gt;I Am Speed&lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;p&gt;Once you&amp;rsquo;ve done the &amp;ldquo;make it work&amp;rdquo;, you &lt;em&gt;should&lt;/em&gt; do the &amp;ldquo;make it right&amp;rdquo;, but if it&amp;rsquo;s low stakes and you&amp;rsquo;ve instead done the &amp;ldquo;make it right (enough)&amp;rdquo;, then why not go ahead and do the &amp;ldquo;make it fast&amp;rdquo;?&#xA;LLMs, when combined with good old fashioned profiling, are great for testing things out.&lt;/p&gt;&#xA;&lt;p&gt;The key here is to scope the problem: find a user experience that is slow, make sure it can be profiled (in itself something that LLMs could help set up), then you can dig in.&#xA;It&amp;rsquo;s a low stakes way to try things, and see some of what&amp;rsquo;s &lt;em&gt;possible&lt;/em&gt; for a given problem.&#xA;For example, take &lt;a href=&#34;https://github.com/Snesnopic/flacoutcpp/pull/1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;this PR to flacoutcpp&lt;/a&gt;, a tool that searches for the smallest FLAC encoding of a file.&#xA;Profiling put 93% of its exhaustive mode&amp;rsquo;s runtime in two loops, and reworking just those made it about 3x faster with byte-identical output.&#xA;It also added a search level about 90x faster than exhaustive mode, for about a quarter of a percent in file size.&#xA;Lossless audio kept the stakes low: every change could be checked by decoding and comparing against the source.&lt;/p&gt;&#xA;&lt;h1 id=&#34;hammer-meets-nail&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#hammer-meets-nail&#34;&gt;Hammer Meets Nail&lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail.&lt;/p&gt;&#xA;&lt;p&gt;— Abraham Maslow, &lt;em&gt;The Psychology of Science&lt;/em&gt; (1966) (&lt;a href=&#34;https://en.wikipedia.org/wiki/Law_of_the_instrument#Abraham_Maslow&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Wikipedia&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;LLMs are a hammer; learn to tell what is actually a nail.&#xA;This, depending on experience and personality, will likely be difficult (it is for me).&#xA;As LLMs get better, it will become increasingly difficult.&lt;/p&gt;&#xA;&lt;p&gt;I have no solution for this, and I am not a good example of doing this anywhere close to right.&#xA;For now, I&amp;rsquo;m seeing a lot of nails.&lt;/p&gt;&#xA;&lt;h1 id=&#34;treasured-measurements&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#treasured-measurements&#34;&gt;Treasured Measurements&lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;When you can measure what you are speaking about, and express it in numbers, you know something about it; but when you cannot measure it, when you cannot express it in numbers, your knowledge is of a meagre and unsatisfactory kind.&lt;/p&gt;&#xA;&lt;p&gt;— Lord Kelvin, &amp;ldquo;Electrical Units of Measurement&amp;rdquo; (1883) (&lt;a href=&#34;https://en.wikiquote.org/wiki/William_Thomson&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Wikiquote&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Put another way:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;You can&amp;rsquo;t treasure what you can&amp;rsquo;t measure.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;You must be able to measure several things for a successful project, some of which include:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Features&lt;/li&gt;&#xA;&lt;li&gt;Performance&lt;/li&gt;&#xA;&lt;li&gt;Correctness&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Nail these down as soon as you can, and you&amp;rsquo;ll have more success.&#xA;Acceptance criteria exist for a reason.&#xA;At the same time, if you learn something along the way and the goalposts &lt;em&gt;must&lt;/em&gt; shift, so be it - but be discerning when doing so; LLMs often make it feel like I have more bandwidth than I really do.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;Still a mixed bag, as in &lt;a href=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/&#34; &gt;Part 1&lt;/a&gt;, but here we are anyway.&lt;/p&gt;&#xA;&lt;p&gt;Part 3 someday, likely once I get a bench setup for a spare EV6 head unit (working on getting 64bit boot).&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Notes on LLMs - Part 1</title>
      <link>https://w-floyd.com/2026/10/notes-on-llms-part-01/</link>
      <pubDate>Sat, 17 Oct 2026 00:00:00 +0000</pubDate><author>William Floyd</author>
      <guid>https://w-floyd.com/2026/10/notes-on-llms-part-01/</guid><description>&lt;p&gt;I had written a draft of an anti-LLM post some months ago, and ended up not posting it.&#xA;Since then, I&amp;rsquo;ve used these tools much more during my day job, as well as hobby projects.&#xA;I&amp;rsquo;ve had many thoughts about LLMs, and their impact on my mental health and ability to learn (or the stunting of said growth).&#xA;I&amp;rsquo;ve also experienced many cases where it is undoubtedly an amazing tool that has enabled me to learn new things by reducing the barrier to entry for new fields.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;In all, it&amp;rsquo;s been a mixed bag, and I wish LLMs never existed.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;But the technology is here now, so I thought I&amp;rsquo;d show &lt;em&gt;some&lt;/em&gt; of the things I have managed to do aided by these tools.&#xA;In line with not letting perfect get in the way of good/done, I&amp;rsquo;ll probably post updates in Part 2 and so on.&lt;/p&gt;&#xA;&lt;h1 id=&#34;linux-hacking&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#linux-hacking&#34;&gt;Linux Hacking&lt;/a&gt;&#xA;&lt;/h1&gt;&#xA;&lt;p&gt;The Linux kernel is huge, complicated, amazing, and &lt;em&gt;not&lt;/em&gt; something I have experience in modifying.&#xA;I am however quite comfortable compiling software and figuring out how the pieces fit together (eg &lt;a href=&#34;https://github.com/W-Floyd/solus-deepin&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;here&lt;/a&gt; and &lt;a href=&#34;https://github.com/W-Floyd/solus-lxqt&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;here&lt;/a&gt;).&#xA;That being the case, I&amp;rsquo;ve gone ahead and tried a couple projects with kernel related hacking.&lt;/p&gt;&#xA;&lt;h2 id=&#34;samsung-galaxy-s9---starqltechn&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#samsung-galaxy-s9---starqltechn&#34;&gt;Samsung Galaxy S9 - &lt;code&gt;starqltechn&lt;/code&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;My old phone collecting dust, so why not try to get it running Nura?&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&#xA;There&amp;rsquo;s already a &lt;a href=&#34;https://wiki.nura.eco/wiki/Samsung_Galaxy_S9_%28samsung-starqltechn%29&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;working port&lt;/a&gt;, but lots of peripherals don&amp;rsquo;t yet work, so I figured I&amp;rsquo;d start there.&lt;/p&gt;&#xA;&lt;p&gt;Long story short, using LLMs I was able to get:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Working camera+flash&lt;/li&gt;&#xA;&lt;li&gt;Aperture control&lt;/li&gt;&#xA;&lt;li&gt;Manual focus&lt;/li&gt;&#xA;&lt;li&gt;WiFi+BT (tracked down an existing patch)&lt;/li&gt;&#xA;&lt;li&gt;DisplayPort output&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;figure-row&#34;&gt;&lt;div style=&#34;flex: 0.7529 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-3072.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-3072.avif 3072w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=27)vw, %!d(float64=228)px&#34; alt=&#34;Samsung Galaxy S9 running a camera app, showing a color-bar test pattern from its working rear camera.&#34; title=&#34;Samsung Galaxy S9 running a camera app, showing a color-bar test pattern from its working rear camera.&#34; width=&#34;3072&#34; height=&#34;4080&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&#34;flex: 0.7529 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-3072.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-3072.avif 3072w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=27)vw, %!d(float64=228)px&#34; alt=&#34;Galaxy S9 camera app with the aperture selector open, offering f/1.5 and f/2.4.&#34; title=&#34;Galaxy S9 camera app with the aperture selector open, offering f/1.5 and f/2.4.&#34; width=&#34;3072&#34; height=&#34;4080&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&#34;flex: 1.3281 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-4080.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-3840.avif 3840w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-4080.avif 4080w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=47)vw, %!d(float64=403)px&#34; alt=&#34;Galaxy S9 connected over USB-C to a monitor, which shows the GNOME About screen: postmarketOS edge, Linux 7.1.0-rc1-sdm845, FD630 graphics.&#34; title=&#34;Galaxy S9 connected over USB-C to a monitor, which shows the GNOME About screen: postmarketOS edge, Linux 7.1.0-rc1-sdm845, FD630 graphics.&#34; width=&#34;4080&#34; height=&#34;3072&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;h3 id=&#34;my-code&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#my-code&#34;&gt;My Code&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/W-Floyd/linux/tree/dev&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Kernel tree&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/W-Floyd/pmaports&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;aports&lt;/a&gt; (spread across branches)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;details&gt;&#xA;&#x9;&lt;summary&gt;Vendor Resources&lt;/summary&gt;&#xA;&#x9;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://elektrotanya.com/samsung_galaxy_s9_g9600_service_manual.pdf/download.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Level 3 service manual (SM-G9600)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/droidian-devices/linux-android-samsung-starqlte&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Samsung 4.9 kernel source&lt;/a&gt; (Droidian&amp;rsquo;s tree)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://dumps.tadiphone.dev/dumps/samsung/starqltechn&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Stock firmware dump&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;h2 id=&#34;motorola-moto-g-play-2024---fogona&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#motorola-moto-g-play-2024---fogona&#34;&gt;Motorola Moto G Play (2024) - &lt;code&gt;fogona&lt;/code&gt;&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Fresh on the success of getting progress on an &lt;em&gt;older&lt;/em&gt; phone, I decided to find the cheapest phone that a US resident can just go out and potentially install Linux on.&#xA;At this time, it&amp;rsquo;s the Motorola Moto G Play (2024), which can be had for $100 USD new in box, carrier unlocked and bootloader unlockable.&#xA;There&amp;rsquo;s &lt;a href=&#34;https://wiki.nura.eco/wiki/Qualcomm_Snapdragon_680_%28SM6225%29&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;already SoC support&lt;/a&gt;, but it&amp;rsquo;s somewhat early.&lt;/p&gt;&#xA;&lt;p&gt;After much back and forth, I was able to get:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;GPU support&lt;/li&gt;&#xA;&lt;li&gt;Video decoder acceleration&lt;/li&gt;&#xA;&lt;li&gt;Cameras with PDAF and stock tunings&lt;/li&gt;&#xA;&lt;li&gt;WiFi, BT&lt;/li&gt;&#xA;&lt;li&gt;Modem (data, calls, texts/mms)&lt;/li&gt;&#xA;&lt;li&gt;GPS, accelerometer, compass, rotation, lux, proximity&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;my-code-1&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#my-code-1&#34;&gt;My Code&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/W-Floyd/linux/tree/fogona-mainline&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Kernel tree&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/W-Floyd/linux/tree/exp-pdaf&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Kernel tree with Linuxboot + camera changes&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/W-Floyd/pmaports/tree/fogona&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;pmaports&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;details&gt;&#xA;&#x9;&lt;summary&gt;Vendor Resources&lt;/summary&gt;&#xA;&#x9;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.ifixit.com/Document/ohXytuihYMtgUiFU/Moto-G-Play-XT2413-Level-3-Service-Manual.pdf&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Level 3 service manual (XT2413)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Kernel: &lt;a href=&#34;https://github.com/MotorolaMobilityLLC/kernel-msm/tree/android-13-release-t3tfs33.66-37-3&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Older, more complete&lt;/a&gt;, &lt;a href=&#34;https://github.com/MotorolaMobilityLLC/kernel-msm/tree/android-14-release-u1tf34.100-35-5-3-1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Latest&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Device tree: &lt;a href=&#34;https://github.com/MotorolaMobilityLLC/kernel-devicetree/tree/android-13-release-t3tfs33.66-37-3&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Older&lt;/a&gt;, &lt;a href=&#34;https://github.com/MotorolaMobilityLLC/kernel-devicetree/tree/android-14-release-u1tf34.100-35-5-3-1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Latest&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Subsystem device trees&#xA;&lt;ul&gt;&#xA;&lt;li&gt;display: &lt;a href=&#34;https://github.com/MotorolaMobilityLLC/kernel-display-devicetree/tree/android-13-release-t3tfs33.66-37-3&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Older&lt;/a&gt;, &lt;a href=&#34;https://github.com/MotorolaMobilityLLC/kernel-display-devicetree/tree/android-14-release-u1tf34.100-35-5-3-1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Latest&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;camera: &lt;a href=&#34;https://github.com/MotorolaMobilityLLC/kernel-camera-devicetree/tree/android-13-release-t3tfs33.66-37-3&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Older&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;audio: &lt;a href=&#34;https://github.com/MotorolaMobilityLLC/kernel-audio-devicetree/tree/android-13-release-t3tfs33.66-37-3&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Older&lt;/a&gt;, &lt;a href=&#34;https://github.com/MotorolaMobilityLLC/kernel-audio-devicetree/tree/android-14-release-u1tf34.100-35-5-3-1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Latest&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;nfc: &lt;a href=&#34;https://github.com/MotorolaMobilityLLC/kernel-nfc-devicetree/tree/android-13-release-t3tfs33.66-37-3&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Older&lt;/a&gt;, &lt;a href=&#34;https://github.com/MotorolaMobilityLLC/kernel-nfc-devicetree/tree/android-14-release-u1tf34.100-35-5-3-1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Latest&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;bt: &lt;a href=&#34;https://github.com/MotorolaMobilityLLC/kernel-bt-devicetree/tree/android-13-release-t3tfs33.66-37-3&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Older&lt;/a&gt;, &lt;a href=&#34;https://github.com/MotorolaMobilityLLC/kernel-bt-devicetree/tree/android-14-release-u1tf34.100-35-5-3-1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Latest&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;graphics: &lt;a href=&#34;https://github.com/MotorolaMobilityLLC/kernel-graphics-devicetree/tree/android-13-release-t3tfs33.66-37-3&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Older&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;video: &lt;a href=&#34;https://github.com/MotorolaMobilityLLC/kernel-video-devicetree/tree/android-13-release-t3tfs33.66-37-3&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Older&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;wlan: &lt;a href=&#34;https://github.com/MotorolaMobilityLLC/kernel-wlan-devicetree/tree/android-13-release-t3tfs33.66-37-3&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Older&lt;/a&gt;, &lt;a href=&#34;https://github.com/MotorolaMobilityLLC/kernel-wlan-devicetree/tree/android-14-release-u1tf34.100-35-5-3-1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Latest&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Drivers&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Motorola modules: &lt;a href=&#34;https://github.com/MotorolaMobilityLLC/motorola-kernel-modules/tree/android-13-release-t3tfs33.66-37-3&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Older&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Camera: &lt;a href=&#34;https://github.com/MotorolaMobilityLLC/vendor-qcom-opensource-camera-kernel/tree/android-13-release-t3tfs33.66-37-3&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Older&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Graphics (KGSL): &lt;a href=&#34;https://github.com/MotorolaMobilityLLC/vendor-qcom-opensource-graphics-kernel/tree/android-13-release-t3tfs33.66-37-3&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Older&lt;/a&gt;, &lt;a href=&#34;https://github.com/MotorolaMobilityLLC/vendor-qcom-opensource-graphics-kernel/tree/android-14-release-u1tf34.100-35-5-3-1&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Latest&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Video: &lt;a href=&#34;https://github.com/MotorolaMobilityLLC/vendor-qcom-opensource-video-driver/tree/android-13-release-t3tfs33.66-37-3&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Older&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;h3 id=&#34;prs-that-resulted&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#prs-that-resulted&#34;&gt;PRs that resulted:&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Merged (as of writing):&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://gitlab.freedesktop.org/mobile-broadband/libqmi/-/merge_requests/477&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;mobile-broadband/libqmi | voice: add the pre-alerting call state&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://gitlab.gnome.org/GNOME/gnome-control-center/-/merge_requests/3505&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;GNOME/gnome-control-center | wwan: Restore the APN dialog header bar&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://gitlab.postmarketos.org/postmarketOS/boot-deploy/-/merge_requests/116&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;postmarketOS/boot-deploy | flash vendor_boot: look up the partition before checking its size&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Unmerged:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1503&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;mobile-broadband/ModemManager | qmi: handle the pre-alerting call state&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://gitlab.gnome.org/GNOME/mobile-broadband-provider-info/-/merge_requests/165&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;GNOME/mobile-broadband-provider-info | us: AT&amp;amp;T: add ERESELLER as MVNO APN&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://gitlab.com/kop316/mmsd/-/merge_requests/132&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;kop316/mmsd | service-providers: match the APN case-insensitively&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;projects-that-resulted&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#projects-that-resulted&#34;&gt;Projects that resulted:&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;h4 id=&#34;bootmanager&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#bootmanager&#34;&gt;&lt;a href=&#34;https://github.com/W-Floyd/bootmanager&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;bootmanager&lt;/a&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;Such an inventive name, I know&amp;hellip;&#xA;A Slint GUI + Go backend tailored for Linuxboot+u-root setups, meant to be a beautiful alternative to uboot.&#xA;Supports touchscreen, SSH, fastboot, LUKS decryption, usage in place of &lt;a href=&#34;https://github.com/droidian/unl0kr&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;unl0kr&lt;/a&gt;, and a web GUI built in WASM from same Slint.&lt;/p&gt;&#xA;&lt;div class=&#34;figure-row&#34;&gt;&lt;div style=&#34;flex: 0.7529 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-3072.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-3072.avif 3072w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=36)vw, %!d(float64=313)px&#34; alt=&#34;Moto G Play (2024) in hand, showing the bootmanager Unlock screen with a password field and on-screen keyboard for the UFS userdata partition.&#34; title=&#34;Moto G Play (2024) in hand, showing the bootmanager Unlock screen with a password field and on-screen keyboard for the UFS userdata partition.&#34; width=&#34;3072&#34; height=&#34;4080&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&#34;flex: 0.7529 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-3072.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-3072.avif 3072w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=36)vw, %!d(float64=313)px&#34; alt=&#34;Moto G Play (2024) in hand, showing the bootmanager Choose a system screen with a postmarketOS card marked default, on encrypted UFS userdata.&#34; title=&#34;Moto G Play (2024) in hand, showing the bootmanager Choose a system screen with a postmarketOS card marked default, on encrypted UFS userdata.&#34; width=&#34;3072&#34; height=&#34;4080&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&#34;flex: 0.5625 1 0%; min-width: 0;&#34;&gt;&lt;div data-figure-item&gt;&lt;p&gt;&lt;video controls preload=&#34;none&#34; style=&#34;aspect-ratio:9/16;width:100%&#34; poster=&#34;https://immich.notmy.space/api/assets/ebf60442-44d2-4a6d-a578-b7f413fc37e8/thumbnail?size=preview&amp;slug=bootmanager-fogona&#34; src=&#34;https://immich.notmy.space/api/assets/ebf60442-44d2-4a6d-a578-b7f413fc37e8/video/playback?slug=bootmanager-fogona&#34;&gt;&lt;/video&gt;&lt;br&gt;&#xA;&lt;a href=&#34;https://immich.notmy.space/s/bootmanager-fogona/photos/ebf60442-44d2-4a6d-a578-b7f413fc37e8&#34;&gt;▶ Watch the video&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;!--/figure-item--&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;h4 id=&#34;godot-maps&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#godot-maps&#34;&gt;&lt;a href=&#34;https://github.com/W-Floyd/godot-maps&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;godot-maps&lt;/a&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;Comaps doesn&amp;rsquo;t look great on Linux, and I couldn&amp;rsquo;t find anything else that did what I wanted, so I made a quick and dirty navigation app built on Comaps backend using Godot.&#xA;It compiles to many platforms too, including MacOS and Android.&lt;/p&gt;&#xA;&lt;a href=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-3072.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-3072.avif 3072w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) 100vw, min(100vw - 40px, 860px)&#34; alt=&#34;godot-maps running turn-by-turn navigation on a phone held in a car: a 3D map with buildings, a blue route line, a 0.4 mi right-turn banner, a 35 mph speed limit sign, and a one-minute ETA bar.&#34; title=&#34;godot-maps running turn-by-turn navigation on a phone held in a car: a 3D map with buildings, a blue route line, a 0.4 mi right-turn banner, a 35 mph speed limit sign, and a one-minute ETA bar.&#34; width=&#34;3072&#34; height=&#34;4080&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&#xA;&lt;h4 id=&#34;go-msm-firmware-loader&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#go-msm-firmware-loader&#34;&gt;&lt;a href=&#34;https://github.com/W-Floyd/go-msm-firmware-loader&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;go-msm-firmware-loader&lt;/a&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;Go port of &lt;a href=&#34;https://gitlab.postmarketos.org/postmarketOS/msm-firmware-loader&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;msm-firmware-loader&lt;/code&gt;&lt;/a&gt;, used by &lt;code&gt;bootmanager&lt;/code&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;go-qbootctl&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#go-qbootctl&#34;&gt;&lt;a href=&#34;https://github.com/W-Floyd/go-qbootctl&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;go-qbootctl&lt;/a&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;A static Go replacement for the A/B slot subset of &lt;a href=&#34;https://github.com/linux-msm/qbootctl&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;qbootctl&lt;/code&gt;&lt;/a&gt; so it works in an initramfs, used by &lt;code&gt;bootmanager&lt;/code&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;go-chromatix2libcamera&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#go-chromatix2libcamera&#34;&gt;&lt;a href=&#34;https://github.com/W-Floyd/go-chromatix2libcamera&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;go-chromatix2libcamera&lt;/a&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;Translates Qualcomm Chromatix tuning files to something libcamera (or a fork thereof) can interpret.&lt;/p&gt;&#xA;&lt;h4 id=&#34;go-unbrick&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#go-unbrick&#34;&gt;&lt;a href=&#34;https://github.com/W-Floyd/go-unbrick&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;go-unbrick&lt;/a&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;Swiss army knife that I use to inspect stock firmware images, any files contained therein, and to make some files to help with bricked devices.&lt;/p&gt;&#xA;&lt;h4 id=&#34;go-qshrink4&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#go-qshrink4&#34;&gt;&lt;a href=&#34;https://github.com/W-Floyd/go-qshrink4&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;go-qshrink4&lt;/a&gt;&lt;/a&gt;&#xA;&lt;/h4&gt;&#xA;&lt;p&gt;A reader for Qualcomm QShrink4 hash databases (&lt;code&gt;.qdb&lt;/code&gt; / &lt;code&gt;.qsr4&lt;/code&gt;), mapping the hashes in QShrink&amp;rsquo;d modem diag messages back to their format string, file and line.&lt;/p&gt;&#xA;&lt;h2 id=&#34;2024-kia-ev6-head-unit&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#2024-kia-ev6-head-unit&#34;&gt;2024 Kia EV6 Head Unit&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;New (to me) car, new project!&#xA;Once I got the stock system image (download from Kia, community knows how to decrypt), a root shell on the running unit (others already figured this out), and the vendor source, I was off to the races.&lt;/p&gt;&#xA;&lt;p&gt;Given the ancient (3.18.24, from 2015) vendor kernel (for Android Kitkat!), I used LLMs to do minimal mainline porting for the quad Cortex-A53 Telechips TCC803x SoC, which turned out to almost work first try.&#xA;With a bit of back and forth (and much USB swapping), display out was achieved and I could feed log messages back into the LLM and iterate on fixes.&#xA;Note that stock was never reflashed, this is a &lt;code&gt;kexec&lt;/code&gt; cycle that uses USB data only.&#xA;The old Android version is in some ways a blessing in disguise, because older systems are in some ways much easier to bend to your will.&lt;/p&gt;&#xA;&lt;p&gt;I figured the quickest path to something useful was to get &lt;code&gt;bootmanager&lt;/code&gt; running, which turned out to be trivial.&lt;/p&gt;&#xA;&lt;a href=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-4080.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-3840.avif 3840w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-4080.avif 4080w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) 100vw, min(100vw - 40px, 860px)&#34; alt=&#34;bootmanager running on the Kia EV6 head unit: a Choose a system screen titled Telechips TCC803x AVN, with a single Tools card (services, partitions, log, power).&#34; title=&#34;bootmanager running on the Kia EV6 head unit: a Choose a system screen titled Telechips TCC803x AVN, with a single Tools card (services, partitions, log, power).&#34; width=&#34;4080&#34; height=&#34;3072&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&#xA;&lt;p&gt;Still, after ~3.5min, it would reboot.&#xA;So using LLMs I logged serial transfers from Android and did some decompilation of the MICOM firmware (seems to be some kind of PowerPC VLE chip) and Android apps to see what signals I needed to respond to, and found a hung SoC check that I can respond to to keep from being reset.&#xA;At the same time I found signals for things like power draw of climate, battery state, etc. (I still need to map this out properly).&lt;/p&gt;&#xA;&lt;p&gt;Working:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Display&lt;/li&gt;&#xA;&lt;li&gt;I2C&lt;/li&gt;&#xA;&lt;li&gt;USB&lt;/li&gt;&#xA;&lt;li&gt;eMMC&lt;/li&gt;&#xA;&lt;li&gt;WiFi (and soon, BT)&lt;/li&gt;&#xA;&lt;li&gt;Touch&lt;/li&gt;&#xA;&lt;li&gt;Serial&lt;/li&gt;&#xA;&lt;li&gt;MICOM keepalive + Vehicle data&lt;/li&gt;&#xA;&lt;li&gt;re-kexecing back to stock Android&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;does-it-run-doom&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#does-it-run-doom&#34;&gt;Does it run DOOM?&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;If you saw the cover image, you&amp;rsquo;ll know. Of course it does!&lt;/p&gt;&#xA;&lt;div class=&#34;figure-row&#34;&gt;&lt;div style=&#34;flex: 0.7529 1 0%; min-width: 0;&#34;&gt;&lt;a href=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-3072.avif&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34; class=&#34;image-full&#34;&gt;&lt;img data-rimg src=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-1920.avif&#34; srcset=&#34;https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-3072.avif 3072w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-960.avif 960w&#34; sizes=&#34;(max-width: 768px) %!d(float64=57)vw, %!d(float64=492)px&#34; alt=&#34;DOOM running on the 2024 Kia EV6 head unit at night, a first-person corridor with on-screen touch controls (move, turn, run, fire, use, map) on either side.&#34; title=&#34;DOOM running on the 2024 Kia EV6 head unit at night, a first-person corridor with on-screen touch controls (move, turn, run, fire, use, map) on either side.&#34; width=&#34;3072&#34; height=&#34;4080&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&#34;flex: 0.5625 1 0%; min-width: 0;&#34;&gt;&lt;div data-figure-item&gt;&lt;p&gt;&lt;video controls preload=&#34;none&#34; style=&#34;aspect-ratio:9/16;width:100%&#34; muted poster=&#34;https://immich.notmy.space/api/assets/dd0c904e-5202-4942-9c63-af051766bfa4/thumbnail?size=preview&amp;slug=2024-kia-ev6-doom&#34; src=&#34;https://immich.notmy.space/api/assets/dd0c904e-5202-4942-9c63-af051766bfa4/video/playback?slug=2024-kia-ev6-doom&#34;&gt;&lt;/video&gt;&lt;br&gt;&#xA;&lt;a href=&#34;https://immich.notmy.space/s/2024-kia-ev6-doom/photos/dd0c904e-5202-4942-9c63-af051766bfa4&#34;&gt;▶ Watch the video&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;!--/figure-item--&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&#xA;&lt;details&gt;&#xA;&#x9;&lt;summary&gt;Vendor Resources&lt;/summary&gt;&#xA;&#x9;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.mobis.com/en/tech/rnd.do#open&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Mobis open source&lt;/a&gt;: &amp;ldquo;AVNT STD G50 WIDE R6&amp;rdquo; for &amp;ldquo;EV6 (CV1)&amp;rdquo; (&lt;code&gt;AVNT_STD_G50_WIDE_R6.zip&lt;/code&gt;, 565 MB)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/details&gt;&#xA;&#xA;&lt;h3 id=&#34;my-code-2&#34;&gt;&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#my-code-2&#34;&gt;My Code&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/W-Floyd/linux/tree/2024-kia-ev6&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Kernel tree&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Formerly PostmarketOS&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
  </channel>
</rss>
