Recent changes to this wiki:

DAO person
diff --git a/ikiwiki.setup b/ikiwiki.setup
index ed1b8a8..96638cf 100644
--- a/ikiwiki.setup
+++ b/ikiwiki.setup
@@ -3,7 +3,7 @@
 # Setup file for ikiwiki.
 # 
 # name of the wiki
-wikiname: wesl-ee 🐉
+wikiname: wesl-ee
 # contact email for wiki
 adminemail: w@wesleycoakley.com
 # where the source of the wiki is located
@@ -18,7 +18,7 @@ default_pageext: wiki
 only_committed_changes: 0
 # rcs backend to use
 rcs: 'git'
-add_plugins: [ 'teximg', 'syntax', 'inline', 'goodstuff', 'link', 'date', 'favicon', 'graphviz', 'parentlinks', 'sortnaturally', 'meta', 'linkmap', 'shortcut', 'recentchangesdiff', 'recentchanges', 'autoindex', 'headinganchors', 'img' ]
+add_plugins: [ 'mirrorlist', 'wikitext', 'teximg', 'syntax', 'inline', 'goodstuff', 'link', 'date', 'favicon', 'graphviz', 'parentlinks', 'sortnaturally', 'meta', 'linkmap', 'shortcut', 'recentchangesdiff', 'recentchanges', 'autoindex', 'headinganchors', 'img' ]
 # plugins to disable
 disable_plugins: ['htmlscrubber']
 # additional directory to search for template files
diff --git a/src/index.mdwn b/src/index.mdwn
index 9782078..ac45d6d 100644
--- a/src/index.mdwn
+++ b/src/index.mdwn
@@ -1,7 +1,7 @@
 This site belongs to [Wesley Coakley](https://wesl.ee), also known on
 the Internet as [wesl-ee](https://twitter.com/wesl_ee) and locally known
-simply as [[Me]] (⌒▽⌒) I am a DeFi dev working in the Cosmos
-ecosystem and co-founder of a DAO building on the Juno blockchain.
+simply as [[Me]] (⌒▽⌒) I am building DeFi applications on Cosmos through a
+DAO organizing on the Juno blockchain.
 
 <figure class=profile>
 <img src="/img/avi.jpeg">

merkle tree img
diff --git a/src/Digital_Money/Bitcoin/Merkle_Roots.mdwn b/src/Digital_Money/Bitcoin/Merkle_Roots.mdwn
index 4bfca66..78b0784 100644
--- a/src/Digital_Money/Bitcoin/Merkle_Roots.mdwn
+++ b/src/Digital_Money/Bitcoin/Merkle_Roots.mdwn
@@ -43,7 +43,7 @@ next *depth* of the Merkle tree until there is only one pair to hash. Their
 parent is the Merkle root and is the ancestor of all nodes in the tree.
 
 <figure>
-<img src="https://wesleycoakley.com/img/merkle-tree.svg">
+<img src="/img/merkle-tree.svg">
 <figcaption>Color-mixing example of a binary Merkle tree<br/>
 Notice the content of each parent node is a function of its children</figcaption>
 </figure>
diff --git a/src/img/merkle-tree.svg b/src/img/merkle-tree.svg
new file mode 100644
index 0000000..89e1c67
--- /dev/null
+++ b/src/img/merkle-tree.svg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:67df89153e1c7ef8108f6eceb2207a454e75b64439f178aa6d31e2ca1006a1b0
+size 12765

lmeow
diff --git a/src/Digital_Money/Terra.mdwn b/src/Digital_Money/Terra.mdwn
index 303f6bc..e8272b1 100644
--- a/src/Digital_Money/Terra.mdwn
+++ b/src/Digital_Money/Terra.mdwn
@@ -48,6 +48,3 @@ few days.
 
 I was rekt personally but I came out alive somehow, and am lucky to have
 invested myself in a company that didn't keep its entire treasury in UST.
-Still, I believe in the things I am doing through my work at [[Levana]] and
-look forward to deploying our derivatives on a new chain.
-
diff --git a/src/Digital_Money/The_Problem_With_vAMM_Perpetuals.mdwn b/src/Digital_Money/The_Problem_With_vAMM_Perpetuals.mdwn
index a7ef865..8cc9220 100644
--- a/src/Digital_Money/The_Problem_With_vAMM_Perpetuals.mdwn
+++ b/src/Digital_Money/The_Problem_With_vAMM_Perpetuals.mdwn
@@ -1,10 +1,3 @@
-<div class=info>
-Although I am building a perpetual swap at <a
-href="https://www.levana.finance/">Levana</a>
-nothing I say here is intended to be an official stance of Levana protocol on any
-matter past or present (´ ∀ ` *)
-</div>
-
 Automated Market Makers (AMMs) are a staple of nearly every
 [[DeFi|Digital_Money/Decentralized_Finance]] blockchain
 worth mentioning. Show me a DeFi chain without an AMM and I will show you a
@@ -223,18 +216,5 @@ one party to match orders behind closed doors.
 Designing a new, safe, stable protocol that lets traders enter and exit the
 market freely, exchanging futures around the current spot price, and without fear
 of being forcibly liquidated or "stopped out" by a whale or a market-maker is
-one of the most interesting problems I have the pleasure of working on with the
-Levana team. I am excited that we are rolling out Levana's perpetual swap on the
-Osmosis chain. As we are well-familiar with the dev tools and workflows on
-Cosmos SDK chains, finding a home for our perpetual futures on Osmosis (also a
-Cosmos SDK chain) is a welcome relief.
-
-<figure>
-[[!img img/levana-osmosis.jpeg size=500x]] <figcaption>Sourced from <a
-href="https://twitter.com/Levana_protocol/status/1544381270058205186?s=20&t=0jZTbhaMe1Jx5NX5UDw40Q">Levana's
-Twitter</a></figcaption> </figure>
-
-This was just an overview of some of the troubles that vAMM perpetual swaps
-face. Though I've already hinted at ways we're addressing these issues more
-information, overviews and explainers about Levana's solution to these perpetual
-woes are coming soon™
+one of the interesting problems I had the pleasure of working on with the
+Levana team.
diff --git a/src/Me.mdwn b/src/Me.mdwn
index a1abe72..8f0ab97 100644
--- a/src/Me.mdwn
+++ b/src/Me.mdwn
@@ -2,15 +2,18 @@ Hi, my name is Wesley Coakley (🇯🇵  コークリー・ウェズリー) ☆
 On the Internet and in the crypto-space I use the handle **wesl-ee** because it
 sounds cooler.
 
-I am a core developer on [Levana Protocol](https://levana.finance) and a
-graduate of [[School/North_Carolina_State_University]] with a B.S. in Computer
-Engineering and another B.S. in Electrical Engineering. I also accidentally
-took enough courses during my college tenure to collect my minor in mathematics
-on the way out the door.
+In November 2022 I co-founded a DAO building on the [Juno](https://www.junonetwork.io/)
+blockchain; previously I worked as a core dev at
+[Levana](https://levana.finance) on the [[Terra]] blockchain developing a
+perpetual futures market before the collapse of Terra's native UST.
 
-I began my career as a Software Engineer in NVIDIA's [Networking Business
-Unit](https://www.nvidia.com/en-us/networking/) (NBU) but quickly found a home
-developing financial tools for public, permissionless blockchains.
+Before I took the leap into developing public, permissionless financial tools on
+Cosmos blockchains I worked as a Software Engineer in NVIDIA's
+[Networking Business Unit](https://www.nvidia.com/en-us/networking/) (NBU).
+I graduated from [[School/North_Carolina_State_University]] with a B.S. in
+Computer Engineering and another B.S. in Electrical Engineering. I also
+accidentally took enough courses during my college tenure to collect my minor in
+mathematics on the way out the door.
 
 Learning
 --------
diff --git a/src/img/levana-osmosis.jpeg b/src/img/levana-osmosis.jpeg
deleted file mode 100644
index bf1c839..0000000
--- a/src/img/levana-osmosis.jpeg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:bff2e640871ef0a929fcf6f748323481d3d24278c67e57f4ef68f70f8cdf49ce
-size 72225
diff --git a/src/index.mdwn b/src/index.mdwn
index 750ee26..9782078 100644
--- a/src/index.mdwn
+++ b/src/index.mdwn
@@ -1,7 +1,7 @@
-This site belongs to [Wesley Coakley](https://wesleycoakley.com), also known on
+This site belongs to [Wesley Coakley](https://wesl.ee), also known on
 the Internet as [wesl-ee](https://twitter.com/wesl_ee) and locally known
-simply as [[Me]] (⌒▽⌒) I'm developing a derivatives exchange at [Levana
-Protocol](https://levana.finance).
+simply as [[Me]] (⌒▽⌒) I am a DeFi dev working in the Cosmos
+ecosystem and co-founder of a DAO building on the Juno blockchain.
 
 <figure class=profile>
 <img src="/img/avi.jpeg">

smaller gendo
diff --git a/src/img/avi.jpeg b/src/img/avi.jpeg
index ff9fad7..8ca9da3 100755
--- a/src/img/avi.jpeg
+++ b/src/img/avi.jpeg
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:64d4a4443ef32913daa702e7305603c491dd500ea192378f45a28b932567b067
-size 118643
+oid sha256:19a06e29ee2444def91d2692f01692d54a12bfd19dd6da2a4bfeb0a235681bb9
+size 116722

it's me but it's also gendo
diff --git a/base/avi.jpg b/base/avi.jpg
deleted file mode 100644
index f80a821..0000000
Binary files a/base/avi.jpg and /dev/null differ
diff --git a/src/img/avi.jpeg b/src/img/avi.jpeg
new file mode 100755
index 0000000..ff9fad7
--- /dev/null
+++ b/src/img/avi.jpeg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:64d4a4443ef32913daa702e7305603c491dd500ea192378f45a28b932567b067
+size 118643
diff --git a/src/index.mdwn b/src/index.mdwn
index 3779f61..750ee26 100644
--- a/src/index.mdwn
+++ b/src/index.mdwn
@@ -4,7 +4,7 @@ simply as [[Me]] (⌒▽⌒) I'm developing a derivatives exchange at [Levan
 Protocol](https://levana.finance).
 
 <figure class=profile>
-<img src="avi.jpg">
+<img src="/img/avi.jpeg">
 <figcaption><ul class=net-presence>
 <li class=twitter><a href="https://twitter.com/wesl_ee">Twitter</a></li>
 <li class=github><a href="https://github.com/wesl-ee">GitHub</a></li>

BMW_318ti: clarify grounding consequence
diff --git a/src/BMW_318ti/Short_it_to_Zero.mdwn b/src/BMW_318ti/Short_it_to_Zero.mdwn
index d553156..a605b69 100644
--- a/src/BMW_318ti/Short_it_to_Zero.mdwn
+++ b/src/BMW_318ti/Short_it_to_Zero.mdwn
@@ -152,8 +152,16 @@ fuel pump began to prime and I saw 40 psi in the fuel rail!
 
 [[!img img/318ti-fuel-pressure.jpeg size=400x]]
 
-This is not a permanent solution, or one that will really get me farther than
-the inspection station (my vehicle registration lapsed in July), but it's a
+Shorting to ground (ie shorting it to zero) essentially removed the DME from
+having say as to when the fuel pump should be on: in this configuration the pump
+will run all the time that the key is in position 2 or the engine is spinning,
+which for my purposes is almost all of the time as I don't often idle in my car
+if the engine is off.
+
+This is not a permanent solution however or one that will really get me farther
+than the inspection station (my vehicle registration lapsed in July), but it's a
 problem I enjoyed solving because it taught me a lot and reminded me my EE
 degree is not entirely pointless. I will probably replace the fuel pump in due
-time anyhow as the original one from '96 is still in there.
+time anyhow as the original one from '96 is still in there. Likely I will also
+pull the DME and inspect it for damage, potentially replacing the transistor
+that switches on the ground for the fuel pump relay.

318ti: Short it to zero
diff --git a/src/BMW_318ti/Fuel_Delivery.mdwn b/src/BMW_318ti/Fuel_Delivery.mdwn
new file mode 100644
index 0000000..3930ebd
--- /dev/null
+++ b/src/BMW_318ti/Fuel_Delivery.mdwn
@@ -0,0 +1,19 @@
+The 318ti is a gasoline powered car. With the exception of the
+[316g](https://bmwguide.net/bmw-3-series-e36-316g-compact-natural-gas-1995-2000-specs/)
+which is powered by natural gas all brands on the E36 chassis run on gasoline. I
+have heard my 318ti's [[M44_Engine]] runs best on 93 octane.
+
+Gasoline is stored in a tank underneath the car and is pumped to the fuel
+rail by a fuel pump that physically sits in the gas tank. The fuel rail is
+pressurized to 40 PSI when the car key is turned to position 2, ie the position
+before attempting to crank the car. To achieve pressurization the fuel pump is
+run for 30 seconds. It takes far less than 30 seconds to pressurize the fuel
+delivery system, and any excess gas which is pumped to the rail during this time
+(or anytime the pump is running for that matter) is returned to the tank to
+maintain 40 PSI.
+
+4 fuel injectors sit atop the fuel rail and inject fuel into the engine. The
+M44 is a "port injection" engine meaning fuel is sprayed into the intake
+manifold a brief distance away from the cylinder but not into the cylinder
+itself ("direct injection"). Fuel injectors are a core part of
+the [[Fuel_Injection]] system.
diff --git a/src/BMW_318ti/Fuel_Injection.mdwn b/src/BMW_318ti/Fuel_Injection.mdwn
new file mode 100644
index 0000000..cc6cbe0
--- /dev/null
+++ b/src/BMW_318ti/Fuel_Injection.mdwn
@@ -0,0 +1,26 @@
+The engine of any gasoline-powered car only needs 3 things to run:
+
++ Fuel
++ Air
++ Spark
+
+Air is pulled in through an intake manifold by the negative pressure created
+when post-combustion gases evacuate the engine cylinder. In contrast fuel is
+pushed into the fuel rail by a positive pressure created in the fuel lines that
+constitute the [[Fuel_Delivery]] system by the fuel pump.
+
+Fuel is atomized at the injectors before being injected into the engine cylinder
+for efficient combustion. In the case of computer-controlled combustion engines
+the onboard computer decides when to fire each fuel injector. On a four-cylinder
+engine like my 318ti's [[M44_Engine]] cylinders are fired in the 1-3-4-2 order.
+
+The computer uses a mass airflow sensor to measure the amount of air that is
+entering the intake manifold to determine how much fuel to spray into the
+cylinder. In the case of the M44 this is a hot wire sensor MAF that is situated
+just downstream from the airbox.
+
+Here is the pleasant video that taught me about fuel injection initially:
+
+<figure>
+<iframe width="560" height="315" src="https://www.youtube.com/embed/U2C__4NzVlw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+</figure>
diff --git a/src/BMW_318ti/Knowledge.mdwn b/src/BMW_318ti/Knowledge.mdwn
new file mode 100644
index 0000000..e62372f
--- /dev/null
+++ b/src/BMW_318ti/Knowledge.mdwn
@@ -0,0 +1,6 @@
+[[!map  pages="BMW_318ti/*
+    and !BMW_318ti/Knowledge
+    and !BMW_318ti/Work
+    and !BMW_318ti/Short_it_to_Zero"
+]]
+
diff --git a/src/BMW_318ti/M44_Engine.mdwn b/src/BMW_318ti/M44_Engine.mdwn
new file mode 100644
index 0000000..d67d601
--- /dev/null
+++ b/src/BMW_318ti/M44_Engine.mdwn
@@ -0,0 +1,10 @@
+The 318ti was equipped from the factory with two different types of engines:
+on the early 318ti (1994 〜 1996) this was the M42 engine; on the later
+318ti (1996 〜 2000) the M44 engine succeeded the M42. Both engines are
+inline-4; all M44 engines leverage a dual-length intake manifold (DISA, short
+for DIfferenzierte SaugAnlage) while only some late M42 engines do. DISA
+increases the length of the intake at higher RPM. More systems which do this are
+called "variable intakes."
+
+I have heard the [[M44_Engine]] runs best on 93 octane but truthfully this is
+the only gas I have ever pumped into the car so take that as untested fact.
diff --git a/src/BMW_318ti/Short_it_to_Zero.mdwn b/src/BMW_318ti/Short_it_to_Zero.mdwn
new file mode 100644
index 0000000..d553156
--- /dev/null
+++ b/src/BMW_318ti/Short_it_to_Zero.mdwn
@@ -0,0 +1,159 @@
+In early April this year (2022) my beloved shitbox left me on the side of the
+highway. Despite cruising at a mere 60 mph (take "cruising" to be a figure of
+speech as cruise control was a premium, non-default option you'd buy from the
+BMW factory) the check-engine lamp began flashing and the car began to lose
+power. It always ran a little rough but never rough enough to trigger a critical
+failure like this. I knew this was a serious issue and I immediately took the
+car out of gear then coasted to a stop and turned the thing off. For once reading
+[old, near-dead car forums](http://318ti.org) paid off as I had learned from the
+experience of others that a flashing check-engine light (CEL) on an OBD-II car
+(on OBD-I this is only a minor fault) was bad bad not good and indicitive of
+something that had become seriously fucked.
+
+Not willing to leave it overnight on the side of the road where my beautiful
+windows could be shattered I called a friend and we loaded it onto his trailer.
+We parked the car at his garage and I went to work on it the next weekend. When
+we rolled it off the trailer with the key in [position
+2](https://techinfo.honda.com/rjanisis/pubs/om/ja0707/JA0707O00151A.PDF) a
+strong smell of gasoline appeared; further it seemed some gasoline had dripped onto
+the concrete below. This was the second indication that something was fucked.
+
+[[!img img/318ti-trailer.jpeg size=400x]]
+
+Clearly this was the immediate problem I needed to fix and may have been the
+cause of that loss of power. Because fuel leaked from the car I decided to start
+by diagnosing the car's [[Fuel_Delivery]] system. The fuel lines running from
+the rear of the car to the front were dry. I lifted the car up, crawled
+underneath and traced the wet fuel to the upper intake manifold; I probably
+could have found this without lifting it up but ¯\\\_(ツ)\_/¯
+
+It appeared fuel was leaking from the top of the first cylinder injector and
+dripping down onto the lower intake manifold and finally spilling onto the
+floor. To get to the injectors on the 318ti you need to first remove the upper
+intake manifold.
+
+After pulling the injectors I found that the rubber o-ring that seals the
+injector to the rail was torn so I ordered a rebuild kit and replaced it.
+Perhaps the injector was not seated well, causing fuel to push past the o-ring.
+In any case it was a shame as I already replaced the o-rings two years before
+when I bought the thing. I had recently removed the rail to try swapping in a
+new set of injectors I bought from eBay to cure my rough idle (spoiler: they
+weren't all four from the same car so the thing terrible) so the theory I hadn't
+reseated them correctly makes sense. Plus the injectors are held in place by
+metal clips that I probably installed wrong.
+
+After I fixed this problem I tried to run the fuel pump manually to check for
+leaks by shorting pins 30 and 87 of the [[Fuel_Pump_Relay]]; unfortunately I
+shorted the wrong two pins and then the pump would not prime after turning the
+key. Without pressure in the fuel rail the car would not start.
+
+It was around this time that I was to travel to Israel to meet a handful of
+people at Levana in-person, and with that only flight only a few days away I
+decided to have the car towed to the house I just bought, quite a good drive
+away from the garage where it presently sat. The car stayed in the garage at my
+house even before we'd stayed a full day there.
+
+[[!img img/israel-haifa.jpeg size=400x]]
+
+As an aside, having the car towed twice in a month convinced me to buy a truck,
+but unfortunately I've not at this time acted on that conviction; there are
+very few small US trucks made in the last 15 years and I don't care for a very
+large vehicle, just one that's equipped to tow a trailer with a car weighing a
+US ton or two on top.
+
+The E36 sat for a while until life settled down. We visited Israel,
+[[Digital_Money/Terra]] collapsed, we moved in to the new house, welcomed a 3
+month old puppy into our home over the Summer and finally work became a regular
+cadence some time around September. I finally began to work on the car seriously
+again around this time. When you have at least one "reliable" car you can afford
+to do this instead of rushing to fix it and potentially making things worse. 
+
+I began to diagnose what I had fucked up by shorting pins 30 and 87. Logically I
+started at the fuel pump in the back and worked my way forward. I tore out the
+back seat cushio (surprisingly removable on my car) which gave me access to the
+fuel pump. There are two devices stuck in the fuel tank: on the driver side
+there is a fuel-level sender unit, and on the passenger side is the fuel pump,
+which also has a sender unit attached. For some reason the fuel tank is
+physically separated into two sides with a pump between them; each sender
+measures the fuel level on its corresponding side.
+
+Pulling fuel lines was a reminder that the OEM parts were manufactured and
+installed before I was alive, and the car was rolled onto a lot in November '96,
+probably a few days after my birthday.
+
+<blockquote class="twitter-tweet tw-align-center" data-dnt="true"><p lang="en" dir="ltr">continually reminded the lines in this car are as old as me <a href="https://t.co/nZV5oEI5Pe">pic.twitter.com/nZV5oEI5Pe</a></p>&mdash; wesl-ee 🐉 (@wesl_ee) <a href="https://twitter.com/wesl_ee/status/1573832482641924096?ref_src=twsrc%5Etfw">September 25, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
+
+Anyhow, I did not realize the _sender_ unit is behind the driver and the _fuel
+pump_ is behind the passenger. Pictured above is the top of the sender unit
+behind the driver. I had started working on the wrong side, treating the sender
+unit as if it was the fuel pump. I probed voltage at the sender unit and saw
+voltage; I therefore figured I must have blown out the fuel pump somehow,
+because the unit was getting adequate voltage and should be running but it was
+not. I ordered a new fuel pump, dusted off my hands and called it a day.
+
+When the pump arrived I tore out the old sender unit and went to replace it with
+the fuel pump only to find there was no pump on that side.
+
+[[!img img/318ti-fuel-in-the-tank.jpeg size=400x]]
+
+It was at this moment I realized I fucked up for what felt like the 10th time in
+this arc. I muscled the sender back into the tank (with the o-ring it is a very
+snug fit) and probed the unit in the _other_ side of the tank. As it turns out
+the fuel pump was not getting voltage at all so it's hardly surprising it wasn't
+running.
+
+I tracked the problem back to the fuel pump relay. Here is its electrical
+schematic:
+
+[[!img img/318ti-fuel-pump-relay-wiring-schematic.jpeg size=400x]]
+

(Diff truncated)
GPG w@wesl.ee
diff --git a/src/pubkey.txt b/src/pubkey.txt
index 1b23d8c..ec8f296 100644
--- a/src/pubkey.txt
+++ b/src/pubkey.txt
@@ -5,87 +5,95 @@ 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
-CuwlnqeXIz9KDBF+vKm750TVE344ddsvyDnhABEBAAG0Jldlc2xleSBDb2FrbGV5
-IDx3ZXNsZXlAbGV2YW5hLmZpbmFuY2U+iQFUBBMBCAA+FiEEVIBId3QFHyj2EeD7
-Nh/TNGjQTc4FAmKN/coCGwMFCQfcEUoFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AA
-CgkQNh/TNGjQTc4rSwf/US8FAuryoPe07nISvUd8wY+U+aMVkMl5vB10yHXUOVOK
-R2c8NKZ+UuFu4UOTOaq0PIU2P8WL207Lj/mPbo5GOe3zGVsDza2RE0YBIt5hfu3v
-I2WnhLYayvDHMppUyPX/WUo22usr/DnkhW2V1K7Qb438mkmOxw+4KQGRezQsKcTy
-pDxt4b2xPXn5qvuW1mHRySVtRp06GmxZbfLTXzD6kZDVSW85aQ81owBpEU8aN/N4
-JSNAaQ1W/KApQQC/IJ8Z7b6vuH7cO78lWGVjcHXt4iTZGzOsKb2/28hAnqAAE7bw
-9HccPClFKmEVdMaW9aWOQ6mvEN0zgO2UFXe31QWCZLQkV2VzbGV5IENvYWtsZXkg
-PHdAd2VzbGV5Y29ha2xleS5jb20+iQFXBBMBCABBAhsDBQsJCAcCBhUKCQgLAgQW
-AgMBAh4BAheABQkH3BFKFiEEVIBId3QFHyj2EeD7Nh/TNGjQTc4FAmKOAz0CGQEA
-CgkQNh/TNGjQTc4JtwgAtW4YAEnKbzFlhla6YWjl5dsMkCSVLr7YZo5s8GC6MEJz
-8lPGdphtjk9TjzlHCVwLssS1U/MuGir4M2vUfLZZiO5sDP5gDq6ub2y01+aGTAdD
-gt9ZYyEUg5geOiiffYyBI8gzf9idPOrkEWP84QObzJ29zp91U9/8T1E7+x+xYcDT
-/uFyBRbGHSjiLSpFl5566d06X3RNt/tiFRFJuqfqWwJvU/Sas67e2yVUsWutHp/6
-R5JlORObDSXzZDlyGy0lT4rhLthkIYawE4BQJLILYRXBAoZbvxUSSGv9yEH0w83b
-7v+e5NvQkvgIUGKOtEtzeVioRmLzDv5DlF84kqTmBrkCDQRfseJOARAAuKLm3/zz
-oASM+W3Xn7Pdp+NaiXG5AukqNFl4LQ2y1He+1WieR+n63MCqYMK4gS+rhTMXrFZd
-Orat3F+iZVIAVJWgTKOnSJS8EBZDcm9S9Y36jdcJnfmKRvcjN3Lq3jvod7iELY7D
-kncfOeBlTBP81ve9Zlhi1CJOhZWx1yOgK/Gx1y4iwn5owdT0Hif4vfcDQu0fpxq7
-sVSsAB2bqW9z8WVMRK/TvZYojmW/auguz0BQCl2mB1ATdafB2Ph3RmZK7tAvq9gb
-yeYtcHPxAl8hqAhqs8FObXS22DXf3jJrKv+gs+7FY+fgtcX2V20G7cE9hUoMRCRQ
-jRfd4m/7vPmYp6oADjpzzxCOHNIIUDvxgUAZzDTBdMvJdRc1++lmvNXQKo3Gz4iL
-YG3sz7FFIsHXHFUREaXvAM+H/3MhK5jsxVITC81xWdBrYsprv390+m9DGbGZK5p5
-3dVJKEqRBMhzoTho7URVnvhq9ddujv39VbnIIqFj9raha5AAj1Aab000eb6Y79J/
-rRWSR9OXj6CbDqrXWyrv+0vktxgQ3P/Svpn7a/dIelJb4iu1Z3B5t1ARtXOWi10z
-dIUuKG7aWpUxCxIPSVCwErg3wAUT8ptlExIWi4JrAAjEJd9WsnR6lR34IbLgY7PV
-eZ050x0GKF2m9bqVO8wq8S4cFBBCx/8M5T8AEQEAAYkBPAQYAQgAJgIbDBYhBFSA
-SHd0BR8o9hHg+zYf0zRo0E3OBQJijfzjBQkGnoGVAAoJEDYf0zRo0E3Om+AIALqC
-zqEpSunIefywvPfeXVkqVE4PZzXDm4ZNB84RP5SwCxMMzVNH43Qx036a7Wair3sT
-qaSFZOHgz9IqmY+AyA96iArTwTmQhXV0sVqJV+n8j1NqxBRnk0GnY5N2OEUu3RY7
-OFl1IxlPHip7h3AfuKobOz9LzaMuqXZqkpJEpyidXaR6Mj2GD0FiCdstDur8VP/w
-faEMvkoozvTBnIe4ngzCbudjFpJBQv4Ueuqi9g7v88Be33LgGkmt/rrRWVLYpaQB
-bTl8JV5AnEHQbTw5akSllwTfznDsGhglMem46j9Up9YeJ/aR4xGmwG43292onCgx
-xF/Etj9/nFukiDA9k1W5Ag0EX7HiYAEQAOuglEw0muUD1vRl6bYGMsLqnMZ1j+WW
-04q6rkY+yro99/tIQvNvY7jjgH+Puy4eme8/C7mI0jQR0OSnUwiOevelnIM4ndDm
-udsKqHVTGU+Kr3m0ueLJN4tgibf1vJlppq1Nyd2Fo8i2K2rhmSoVtKMsHVHEain5
-i+neBSuuuQEOxxVOwMoSFYJhEHI2IDub3318Ab+5UykpR9g+x31Ch2WSXRbzifFU
-X3mzH8Gte3ou7ANUU4K477+5ac2ob9tFnD2FeNNmHB1XT4+tOQDK37hp5G1tVl1r
-6xx2XcREsaakXKPukm8Ue0rwHjkQ1OcXDv7D2IxtQLnKnJJS9g2jrRTayAvJkR92
-n2RNL3hPLkP+VkfYDeM0kKIgzrsHDXo3MOCEY2m48LR45ZC/wfDe3HjhPDkMTJd0
-YOXmhuGC9qt32aujCUDA34jkYIYTWC2EPed7KCcGYLADY+fBDz2Eg0zLyTRFszBk
-3KzmSlo1+aW/BQTvedT+luDv+EMMe4wa0wTapx6ppPw2qPdFTDfOcOJQxmLrYrVR
-RSeDAmI5OHk6pzq7Qc2LY+fKm6BTpqqu1RnRU/Ra3bfFfUltaar+nTsTZSxSuIy8
-goGBa+tqDF5aVBZtNmS9cuFwrsqn6R4iMTil5oawWp/J3GAhpyy8YvjWMDPkptgs
-XdxjuIqv7YXJABEBAAGJA3IEGAEIACYCGwIWIQRUgEh3dAUfKPYR4Ps2H9M0aNBN
-zgUCYo384wUJBp6BgwJAwXQgBBkBCAAdFiEEOEH5G9dRVBrgQNhbGBLZAiPpyW0F
-Al+x4mAACgkQGBLZAiPpyW1sYg/8DjB7gfK5gNdYuFHRuUNEiFxGCs6WJIi1Mgvs
-nwVvnUyO/jULTMzBuq/8dh6CneZ5Cnc8R2uFgDX9/3O2nY+2XabFgSWfkVi79vPW
-7uc5uv/2lLpN54iEXvuu2/65gc27zjJBjVeSXRJRGVqr0fZ6SZz0zxOGuWlV7b54
-f8XAQF1eyPrRpokUgEtS5KIUzzDWuu5X91EP0nO/fgXtghe7LhPwrc5kGfT+qZHb
-fmlidGZoqKvLJ6kFZaUPHzsy4cJ15bHlkNKz8FyrqG4g8iEgfNWtvDKg/DHzWjyK
-DVtlPYupGWmsIxmACuaqYCHSmTUFnqe+/4HGZt0Bv/9RpcHHof+1bG5W8lQnfd13
-3sPralhO7/pLEeH4c//BU1QWNoedPmsgMYHezQEPrnW39/iESiGHUsXMIoX580fe
-KVKA8ZSo31AiUYQ4cstmXsf3pnKb5xo8C7vuXpLDdLbfB6JwJZsltPL8tI5s0uke
-ESuOYci/PY+/1BEHQbU5P6bYwl1N3qHtUjfFNghqsJZBw4uN+D2V7MY7BYniBeKc
-qvxBR4+iC1czHiJUEvUYysVbFSymLQ1t+xMFoURNzym+Y1R/wb+pQtrteyvYca8g
-RK4T+083BRV0ceL/sRCQ6s8Yovfxa2ySXTPWPlRyamDOJbzaRLJ7iZP5nlocbt8E
-Y2aL83MJEDYf0zRo0E3OueMIAJuSs1Mp3R/4BkrZOttbgNCtsCXsC0DBLaVe5EN1
-FYEhC4id0jQvZPK+ZAX7GtNoewQuI6KPSS1qPtrX6qAvjuHRrzgTvO608/ypUFyB
-EKCwZnL7lZW6KAY57KK8tgyuE9iLdWwMZcvtl0gUaEAuz8+4Ttj5sWpr6xpOQccg
-gNJ+HAgRQYLOfQEFoT7w/qzcuMoQP9JYr88KGZmfeUSwqSE/PM3E8msLDT7lq3k+
-CRF55HSNgAEi4H+BCfAx6IzQhYi+qEZDuIh3ltnYZCBUL1/yKSKDRf4Fp4meg+67
-HDqMh92vVzwcJcpfw3lvnJS7H7AClEVqbBKiCni212Q+9jm5Ag0EX7HiyAEQAJ3T
-VGP/HNOJduKhSuvDwdXcY5D2t7BQ4JPdp6mbgaq5kJc9J5fhh4rdF3YmI1ln3thX
-C3xt4DNRQY/jxTca3AbiZ9A1L/nrXkwNntMyPSwuxO3OIax4WePv8qXe5Wd4lCaO
-+pUYsLH0gOG6LkGIfkhMRbFRdaGx+wPfPxXbGEWQqYznyom5gpRl2W9KX4hk7GUB
-saor3eRGKM2Kf2Z+ujtNOkqxgGr4nI3taG+8bVuEujfZY7wepQxOtwpqvrh+qLiz
-Okincg85tIcnvgQ2jIYINXfU6brmA3mM8UBKy/RIe5Qnn1/AX3OleHGAZqJOfBx+
-X8IyIV1908ZV4f8m3kdxtPWvO36VwLqYijNDAQ37LEzXmPY+2KLzsgCLAjiGR19N
-4pfasqhi/i7VBzVzpBJsd6cM4fZmq0zY8lI5R8Pb8Pd3R7EGQD6KWMn9SdScMPMa
-YOPNqcW/RdGmhJdSHka0gyZIVW3xsUOn+zf8HLwgcSBhXiuZf9/M6VdU/ymHc8qm
-quqdIcIQKJdMfbHNr6pNlUxBGSIC5jOFH/FEWQKLKag7e9Hemvj6bamk0i8karDV
-ct3GgkoVKjjYxN8H2Kv1gUJuRvHin99pxiZ7Bgam5xMuLzuutwhn6QJAjIqpz5F1
-tsrXH0QpcSksQFNe1fFqX8/sKlyxRjYoPp/v99uZABEBAAGJATwEGAEIACYCGyAW
-IQRUgEh3dAUfKPYR4Ps2H9M0aNBNzgUCYo384wUJBp6BGwAKCRA2H9M0aNBNzrwz
-B/9n80Xrw/EK9CwdGWDbzFM5Tsgo4m8O2NSmFy2pUrqKWD7W4Q2a40uaEJwWF8p9
-GbVI+ipuHkVn7N4/GP6x3ckfcxMxNAGiLBPs/rki6qhdRkdDmiKk9eenkQq/BFsy
-7IpKdVQqKCSj/g19xbhKcc3FnVsGxp9BUU77d93oyM2fP7Vy6y8iVtoM4L5eZs5n
-jvvZMzseqBUmB1wLunh9k72F2DchekEsGTBvhFRPhgnryCYSsJygdsm+OoC1fiMh
-Qoz07U6p8glQFobsfq3FT2XQpPIxQecHKC202TnqZoYtpBIwweSmsbhDgcjqXu2h
-jnZSpVUax3YzwcITscUH0ABP
-=aVNn
+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
+32jvkxxBy+I=
+=Zipn
 -----END PGP PUBLIC KEY BLOCK-----

BMW_318ti: make room
diff --git a/src/BMW_318ti.mdwn b/src/BMW_318ti/index.mdwn
similarity index 100%
rename from src/BMW_318ti.mdwn
rename to src/BMW_318ti/index.mdwn

[[IPFS]] link
diff --git a/src/Hooya.mdwn b/src/HooYa/index.mdwn
similarity index 95%
rename from src/Hooya.mdwn
rename to src/HooYa/index.mdwn
index f8b5494..d54157e 100644
--- a/src/Hooya.mdwn
+++ b/src/HooYa/index.mdwn
@@ -211,7 +211,7 @@ been leased; this data is released once its lease expires.
 ### 2 — Leased Ephemeral Storage
 
 In addition to running the HooYa! daemon which maintains consensus (1) all
-validators are expected to run an <a href="">IPFS</a> daemon. This daemon
+validators are expected to run an [[IPFS]] daemon. This daemon
 connects validators to each other in a private cluster separate from the
 "global" IPFS instance that we often refer to when talking of IPFS. The private
 IPFS cluster provides ephemeral storage of the images that HooYa! has reached
@@ -224,13 +224,14 @@ required to store copies of all data ever indexed by HooYa!, only data whose
 lease is current because that space is reclaimed once the lease for that space
 expires.
 
-To my knowledge no other Cosmos SDK chain (not even <a href="">Stargaze</a>
-which arguably should use this) leverages IPFS like this. I believe this is a
-wonderful decentralized alternative to things like <a
-href="https://www.pinata.cloud/">Pinata</a> for IPFS pinning that is especially
-attractive for NFT projects on Cosmos. *Even if other projects do not use
-HooYa!'s consensus (1) or neural-net prediction + generation (3) they can lease
-ephemeral storage (2) to store NFT metadata and images.*
+To my knowledge no other Cosmos SDK chain (not even <a
+href="https://stargaze.zone">Stargaze</a> which arguably should use this)
+leverages IPFS like this. I believe this is a wonderful decentralized
+alternative to things like <a href="https://www.pinata.cloud/">Pinata</a> for
+IPFS pinning that is especially attractive for NFT projects on Cosmos. *Even if
+other projects do not use HooYa!'s consensus (1) or neural-net prediction +
+generation (3) they can lease ephemeral storage (2) to store NFT metadata and
+images.*
 
 [... more to come here]
 

HooYa! rough
diff --git a/src/Hooya.mdwn b/src/Hooya.mdwn
new file mode 100644
index 0000000..f8b5494
--- /dev/null
+++ b/src/Hooya.mdwn
@@ -0,0 +1,256 @@
+[[!meta title="HooYa! Network"]]
+
+<table class=left-float>
+<tr>
+<th colspan=2>HooYa! Network</th>
+</tr>
+<tr>
+<th>Project Status</th>
+<td>Side-project</td>
+</tr>
+<tr>
+<th>Article Status</th>
+<td>Unfinished</td>
+</tr>
+<tr>
+<th>Funding</th>
+<td>Unfunded</td>
+</tr>
+</table>
+
+HooYa! is a Web3 community for commissioning and supporting manga & dōjin
+artists; it offers leasable storage space for illustrations submitted by artists
+and network users and provides a
+[folksonomy](https://en.wikipedia.org/wiki/Folksonomy) of descriptive,
+searchable tags and metadata for each illustration it hosts. HooYa! maintains
+also a folksonomy for images that are not stored on-chain but that may be
+accessible through other services such as Pixiv and Danbooru.
+
+[[!img img/hooya-slide.jpeg size="x500"]]
+
+It aspires to be rapidly become completely autonomous and self-governing by
+issuing its own governance tokens for use in image proposal / acceptance and
+metadata tagging. It also seeks to incentivize the on-chain commission + minting
+of new artworks by [manga](https://en.wikipedia.org/wiki/Manga) &
+[dōjin](https://en.wikipedia.org/wiki/Doujinshi) artists (hereafter
+"illustrators") via these native utility tokens.
+
+### Background
+
+The service HooYa! provides is not novel; it finds inspiration from a handful of
+Web2 companies (mainly Japanese ones) and from the communities that form around these
+companies and the illustrators they support. I see HooYa! as a combination of
+these two communities in particular:
+
+- [Pixiv](https://pixiv.net), a Japanese-language community of illustrators who
+  connect with fans by posting original and derivative artworks
+- [Danbooru](https://danbooru.donmai.us/posts?tags=rating%3Ageneral+&z=5), a
+  community dedicated to the archive of illustrations like those posted on
+  pixiv, known mostly for its extensive vocabulary of tags used for organizing
+  and labelling these images
+
+The wealth of information provided by Danbooru has helped many [unique
+projects](https://www.gwern.net/Danbooru2021#applications) to create
+machine-learning models that can both (a) predict appropriate tags for a given
+illustration ([example](https://autotagger.donmai.us/),
+[src](https://github.com/danbooru/autotagger)) and (b) generate new
+illustrations that resemble the Japanese style
+([example](https://www.thiswaifudoesnotexist.net/),
+[background](https://www.gwern.net/TWDNE)).
+
+HooYa! will leverage these pioneering predictive models to suggest tags on
+images submitted for inclusion on the network.
+
+### What is Pixiv?
+
+[Pixiv](https://pixiv.net) is a community of primarily Japanese illustrators who
+upload their illustrations, comics and short stories and share them with other
+pixiv members. This is one of the primary ways that illustrators can connect
+with their communities and make their artwork accessible to their fans. It is
+the [10th](https://www.similarweb.com/website/pixiv.net/#overview) most visited
+site in Japan and is most popular among young Japanese illustrators and their
+fans.
+
+Pixiv offers a Patreon-like subscription program called
+[pixivFANBOX](https://www.fanbox.cc/) which connect fans with illustrators
+publishing derivative and original illustrations on a regular basis by providing
+fans in each subscriber tier with special goods, articles and hi-res renders of
+illustrations released by the artist.
+
+Because drawing is a popular hobby in Japan (and one which is gaining popularity
+abroad) the idea of earning a living as an illustrator has attracted many creators,
+both Japanese and internationals, to the Pixiv platform.
+
+<figure>
+[[!img img/pixiv-shiratama-tier-1.jpeg size="x500"]]
+<figcaption>Example of a monthly subscription from <a
+href="https://shiratamaco.fanbox.cc/">Shiratama's</a> pixivFANBOX
+page</a></figcaption>
+</figure>
+
+In addition to subscription services pixiv also provides a space for
+illustrators to sell their illustrations, manga (both short- and long-form) and
+artbooks on its [BOOTH](https://booth.pm/en/browse/Comics) site. These can be
+digital-only releases but there are also physicals for sale which are produced
+through its pixivFACTORY service.
+
+Fans can commission personal works from illustrators by a feature on
+pixiv known as
+[Requests](https://www.pixiv.help/hc/en-us/articles/900002679206-Request-flow).
+Requests can be funded entirely by an individual or can be crowd-funded by many
+fans pooling cash together to commission the piece.
+
+Finally, Pixiv lets fans and illustrators to add a limited set of tags to an image
+(up to 10) to an image. These Pixiv tags are more akin to hashtags on Twitter
+than semantic metadata as seen on sites like Danbooru.
+
+### Danbooru
+
+[Danbooru](https://danbooru.donmai.us/posts?tags=rating%3Ageneral+&z=5) is a
+community that tags and archives images from Pixiv, Twitter, DeviantArt and many
+other platforms. Each image submitted for inclusion on Danbooru goes through a
+3-day review period after which it is either accepted or denied inclusion into
+the Danbooru canon. Danbooru maintains a large
+[vocabulary of tags](https://danbooru.donmai.us/wiki_pages/help:tags) which
+are key-value pairs used to describe an image. This makes the set of images
+easily searchable by specifying (eg) the illustrator, character, franchise or
+any objects in an image.
+
+[[!img img/danbooru-product-placement.jpeg size="x500"]]
+
+As shown above Danbooru lets me search things such as: illustrations of the Love
+Live! franchise which include product placement of some kind, by issuing the
+query <code>love&lowbar;live! product&lowbar;placement</code>. From left to
+right, top to bottom these are the [Subaru
+WRX](https://danbooru.donmai.us/posts?tags=subaru_wrx+rating%3Ageneral),
+[Starbucks](https://danbooru.donmai.us/posts?tags=starbucks+rating%3Ageneral),
+[Coca-Cola](https://danbooru.donmai.us/posts?tags=coca-cola+rating%3Ageneral),
+[Sprite](https://danbooru.donmai.us/posts?tags=sprite_%28drink%29+rating%3Ageneral)
+and the [Yamaha
+Vino](https://danbooru.donmai.us/posts?tags=yamaha_vino+rating%3Ageneral).
+Danbooru limits searches to 2 tags unless the user has purchased a
+[Gold](https://danbooru.donmai.us/upgrade) account, in which case the limit is
+raised to 6. Gold accounts cost a one-time purchase of $20 USD.
+
+<figure class=left-float><video width=300 height=300 loop autoplay controls>
+<source src="/vid/gwern-stylegan-portraits-interpolation-4x4.webm">
+</video>
+</figure>
+
+Danbooru hosts over **4.9 million images** tagged with **162 million tags**, of
+498k unique tags as of the end of 2021. A single copy of this data consumes 4.5
+terrabytes of disk space.
+
+As alluded to earlier, this massive data set has allowed researchers to create
+predictive models leveraging neural networks to label the objects in a brand
+new illustration, thus reducing the workload on a single user tagging an image.
+In addition to predictive models, generative adversarial networks (in particular
+NVIDIA's StyleGAN) have been trained with the Danbooru set to draw brand new
+illustrations when prompted with a series of tags.
+
+To the left is <a
+href="https://www.gwern.net/Faces#portrait-results">Gwern's</a> Danbooru2018
+portrait model trained to generate portraits in the Danbooru style (credit <a
+href="https://www.gwern.net/Faces#portrait-results">Gwern</a> for the model and
+video). Each image in the interpolation is unique in that it is an original
+of the GAN, and though the model was seeded from the images collected on
+Danbooru the portraits are original creations.
+
+HooYa! uses the predictive model and the generative model in a few different
+ways (see below *3: Prediction* and *4: Generation*).
+
+HooYa! — A Decentralized Platform for [Dōjin](https://en.wikipedia.org/wiki/Doujinshi) & Manga Artists
+--------------
+
+Now with some understanding of the context in which HooYa! is being developed I
+can explain the mechanics the HooYa! network.
+
+HooYa! at its core can be broken into three components:
+
+1. Consensus (of metadata, tags, governance, and the image canon)
+2. Leased ephemeral storage (of commissioned images and those minted on-chain)
+3. Prediction (of tags) + generation (of reference images)
+
+The first two of these four components may be familiar to some; the last one is
+a novel component to compute on a blockchain and is one thing (among many) which
+I hope will set HooYa! apart from many other chains, both on Cosmos and beyond.
+
+### 1 — Consensus
+
+HooYa! is a blockchain built on the **Cosmos SDK**. It uses Tendermint (like
+nearly every other Cosmos SDK chain) to maintain network connectivity and
+consensus across a group of validators. Many chains I have seen begin with a
+set of 100 validator slots and so this is what HooYa! adopts initially.
+
+Each node has a perfect copy of *the canon* which refers to the set of:
+
+- Images (uniquely identified by a SHA2-256 <a
+   href="https://github.com/multiformats/multihash">multihash</a>)
+- Ownership of those images
+- Tags describing those images
+- Metadata describing those images
+
+... that HooYa! indexes. HooYa!'s canon is a subset of network state and
+therefore any archival node can retrieve a full copy of the canon at any given

(Diff truncated)
devices: palmtop-tiger
diff --git a/base/local.css b/base/local.css
index 0da682a..e0025a6 100644
--- a/base/local.css
+++ b/base/local.css
@@ -29,6 +29,19 @@ section#content td {
 section#content table {
 	border: 1px solid;
 	margin: auto;
+    empty-cells: hide;
+}
+
+section#content table.no-border {
+    border: 0;
+}
+
+section#content td.spread-img {
+    padding: 0;
+    margin: 0;
+    border: 0;
+    /* Pesky whitespace text nodes */
+    font-size: 0rem;
 }
 
 section#content :is(h1, h2, h3, h4, h5, h6) {
@@ -52,6 +65,10 @@ section#content .longlink {
 	section#content { text-align: initial }
 }
 
+@media only screen and (max-width: 600px) {
+    #content .left-float { float: none !important; }
+}
+
 a { text-decoration: none }
 a { color: blue; transition: color .2s }
 a:hover { color: red }
@@ -125,6 +142,11 @@ figure {
 	display: block;
 	text-align: center;
 	margin: auto }
+#content .left-float {
+    float: left;
+    margin: 0 2ch 2ch 0 !important;
+}
+
 p img {
 	display:block;
 	max-width: calc(100% - 2px);
diff --git a/src/Devices/Pixel_4a.mdwn b/src/Devices/Pixel_4a.mdwn
new file mode 100644
index 0000000..0696027
--- /dev/null
+++ b/src/Devices/Pixel_4a.mdwn
@@ -0,0 +1,230 @@
+This Pixel 4a is hands-down my favorite phone I've ever used, and by-far it has
+offered me the most performance with the least amount of hassle. Plus it was
+hilariously cheap: in total I paid
+$216 for this cute thing, not including the service, which was basically pennies
+compared to other phone plans when I paid a base $20 per month + $10 per
+GiB.
+
+<table class=no-border>
+<tr>
+  <td colspan=2 class=spread-img>
+[[!img img/pixel-4a-sep-2022.jpeg size="x500"]]
+  </td>
+</tr>
+<tr>
+  <th>Device</th>
+  <td>Pixel 4a (<em>sunfish</em>)</td>
+</tr><tr>
+  <th>Hostname</th>
+  <td><a href="https://myanimelist.net/character/12064/Taiga_Aisaka">
+  Palmtop-Tiger</a></td>
+</tr><tr>
+  <th>Dimensions</th>
+  <td>144mm x 69.4mm x 8.2mm</td>
+</tr>
+<tr>
+  <th/>
+  <td>2340 x 1080 (19.5:9)</td>
+</tr>
+<tr>
+  <th/>
+  <td>5.8in screen, 443ppi</td>
+</tr>
+<tr>
+  <th>Weight</th>
+  <td>143g</td>
+</tr>
+<tr>
+  <th>ROM</th>
+  <td>Lineage OS 19.1 (Android 12)</td>
+</tr>
+<tr>
+  <th>Owned</th>
+  <td>February 2021 〜 Now</td>
+</tr>
+<tr>
+  <th>Notable Hardware</th>
+  <td>3.5mm headphone jack</td>
+</tr>
+<tr>
+  <th/>
+  <td>Rear fingerprint scanner</td>
+</tr>
+<tr>
+  <th>Notes</th>
+  <td>Rooted w/ Magisk (v25.2)</td>
+</tr>
+<tr>
+  <th/>
+  <td>Ad-blocking w/ hosts file (AdAway)</td>
+</tr>
+<tr>
+  <th/>
+  <td></td>
+</tr>
+</table>
+
+Despite being marketed mostly as a "budget" phone there are very few features
+missing from this phone that I feel I'd want; it boasts some features over the
+Pixel 4 that I really like: the 3.5mm headphone jack, rear-mounted fingerprint
+scanner and a thinner bezel than both the Pixel 4 and Pixel 4 XL all are
+features only the 4a boasts of the 3 phones in the Pixel 4 family.
+
+Before this I used a Samsung S10e for about a year before technically
+downgrading to this phone; the difficulty of rooting that particular Verizon
+model of the S10e frustrated me as I desperately wanted to install
+[AdAway](https://f-droid.org/packages/org.adaway/) as my system-wide adblocker
+as well as to uninstall the annoying Samsung bloatware apps. Though the hardware
+was nice for the time, I wanted a purer Android experience and the Samsung ROM
+was clearly not that. Plus, rooting a phone (and maybe flashing a custom ROM)
+makes me feel like I truly "own" my own device.
+
+The All-in-One
+--------------
+
+Some lament that we no longer carry single-purpose devices like notebooks,
+stopwatches, flashlights or pagers as often (or at all) anymore. I was in this
+camp too for some time. To me, for a while, I considered phones as all-purpose
+tools and I used my Pixel 4a accordingly: I submitted to the easy modern
+lifestyle and loaded the phone to the brim with apps and used it idly, wasting
+time reading things I thought were important or relevant or communicating with
+people I've never meaningfully talked with anyhow, IRL or otherwise.
+
+For reasons like this many people consider phones to be all-in-one devices. I
+argue that this categorization depends on the person using the phone; I've
+only recently become aware of (and have recently begun practicing) the ability
+to use my phone as many single-purpose devices. At times it is a way to
+communicate with the people I work with, other times it is a convenient way to
+jot a note down so I do not forget, and yet other times it is a tool to dump
+thoughts onto my Twitter feed in basically a write-only fashion. The important
+thing is that I use it for the purpose I intend at the time I pick it up and
+put it down exactly when I am done with the task I ventured to use it for.
+
+Apps
+----
+
+When I flashed the 09.2022 build of Lineage OS onto my phone I took the
+opportunity to wipe my Pixel clean and install this set of apps and tools that
+would allow me to use my phone as I outlined above, ie as many single-purpose
+tools rolled into one:
+
+<table class=no-border>
+<tr>
+  <th>Launcher</th>
+  <td>Blue Line Console</td>
+</tr><tr>
+  <th></th>
+  <td>Nova Launcher</td>
+</tr><tr>
+  <th>Wallpaper</th>
+  <td>Kustom Live Wallpaper (KLWP)</td>
+</tr><tr>
+  <th>System</th>
+  <td>AdAway</td>
+</tr><tr>
+  <th></th>
+  <td>Magisk</td>
+</tr><tr>
+  <th>File Sharing</th>
+  <td>Primitive ftpd</td>
+</tr><tr>
+  <th></th>
+  <td>Share via HTTP</td>
+</tr><tr>
+  <th>VPN</th>
+  <td>IVPN</td>
+</tr><tr>
+  <th>Browser</th>
+  <td>Firefox Focus</td>
+</tr><tr>
+  <th>E-mail</th>
+  <td>K-9 Mail</td>
+</tr><tr>
+  <th>Chat</th>
+  <td>Telegram</td>
+</tr><tr>
+  <th/>
+  <td>Discord</td>

(Diff truncated)
Recover broken images + videos from CDN
diff --git a/.gitattributes b/.gitattributes
index 264185c..ffd08d8 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1 +1,2 @@
 /src/img/** filter=lfs diff=lfs merge=lfs -text
+/src/vid/** filter=lfs diff=lfs merge=lfs -text
diff --git a/src/Routing/FRR_OSPFv2_Plus_GSN3.mdwn b/src/Routing/FRR_OSPFv2_Plus_GSN3.mdwn
index 8e20453..cbce807 100644
--- a/src/Routing/FRR_OSPFv2_Plus_GSN3.mdwn
+++ b/src/Routing/FRR_OSPFv2_Plus_GSN3.mdwn
@@ -23,7 +23,7 @@ east-west traffic between two Alpine tenants. Area 0 is organized in a ring to
 demonstrate how link failures can affect routing around this topology.
 
 <figure>
-<img src="https://wesleycoakley.com/img/frr/gns3-complete.png">
+[[!img img/frr-gns3-complete.png size=500x]]
 <figcaption>GNS3 topology which this article ultimately constructs</figcaption>
 </figure>
 
@@ -128,7 +128,7 @@ open go to "Edit" → "Preferences" → "Docker containers". Then create a new
 container template for the FRR image that was just built or pulled.
 
 <figure>
-<img src="https://wesleycoakley.com/img/frr/gns3-docker-containers.png">
+[[!img img/frr-gns3-docker-containers.png size=500x]]
 <figcaption>Docker container configuration in GNS3</figcaption>
 </figure>
 
@@ -144,7 +144,7 @@ stores its configuration files. The two important files here are `frr.conf` and
 `daemons`.
 
 <figure>
-<img src="https://wesleycoakley.com/img/frr/gns3-docker-advanced.png">
+[[!img img/frr-gns3-docker-advanced.png size=500x]]
 <figcaption>Configuration of the persistent storage</figcaption>
 </figure>
 
@@ -195,7 +195,7 @@ Before networking containers together let's get comfortable working with just a
 single node.
 
 <figure>
-<img src="https://wesleycoakley.com/img/frr/single-node.png">
+[[!img img/frr-single-node.png size=500x]]
 <figcaption>Single-node setup</figcaption>
 </figure>
 
@@ -243,7 +243,7 @@ together using the "Link" option in the left-hand panel; just select which
 interfaces terminate either side of the link when connecting two nodes.
 
 <figure>
-<img src="https://wesleycoakley.com/img/frr/two-node.png">
+[[!img img/frr-two-node.png size=500x]]
 <figcaption>A two-node setup in GNS3</figcaption>
 </figure>
 
@@ -310,7 +310,7 @@ Flapping the `eth0` interface on `r2` will show an exchange of routing
 information in the Wireshark trace.
 
 <figure>
-<img src="https://wesleycoakley.com/img/frr/wireshark-ospfv2-hello.png">
+[[!img img/frr-wireshark-ospfv2-hello.png size=500x]]
 <figcaption>Example exchange of routing information in OSPFv2</figcaption>
 </figure>
 
@@ -329,7 +329,7 @@ Because two routers is never enough let's add two more! I will connect these
 four in a ring topology instead of a full-mesh.
 
 <figure>
-<img src="https://wesleycoakley.com/img/frr/gns3-ring-topology.png">
+[[!img img/frr-gns3-ring-topology.png size=500x]]
 <figcaption>A 4-node Ring Topology</figcaption>
 </figure>
 
@@ -439,7 +439,7 @@ that the subnet may be configured arbitrarily without affecting east-west
 traffic.
 
 <figure>
-<img src="https://wesleycoakley.com/img/frr/gns3-access-layer.png">
+[[!img img/frr-gns3-access-layer.png size=500x]]
 <figcaption>End-devices in the access layer are connected together by the distribution layer</figcaption>
 </figure>
 
@@ -603,10 +603,11 @@ tab of the "Configure" window though I haven't found much use for them yet.
 I also suggest picking a cool icon for your VX!
 
 <figure>
-<img src="https://wesleycoakley.com/img/frr/gns3-cumulus-vx-install.gif">
+<img src="/img/frr-gns3-cumulus-vx-install.gif">
 <figcaption>Installing and Configuring a Cumulus VX in the Ring Topology</figcaption>
 </figure>
 
+
 Since Cumulus Linux uses FRR as its routing suite it's straightforward to
 replace the old FRR container `r1` in the example topology with a CL VX since
 the config is the exact same. Since this is a VM and not an FRR Docker container
@@ -634,7 +635,7 @@ off-load the normal data-plane operations to.
 Anyhow this is the final topology!
 
 <figure>
-<img src="https://wesleycoakley.com/img/frr/gns3-complete.png">
+[[!img img/frr-gns3-complete.png size=500x]]
 <figcaption>Final two-tier topology in GNS3</figcaption>
 </figure>
 
diff --git a/src/Routing/UDP_Holepunch.mdwn b/src/Routing/UDP_Holepunch.mdwn
index 540416c..b659fc8 100644
--- a/src/Routing/UDP_Holepunch.mdwn
+++ b/src/Routing/UDP_Holepunch.mdwn
@@ -83,7 +83,7 @@ router. I have no ports forwarded to my laptop so inbound connections are
 normally dropped at the WAN-side of the router.
 
 <figure>
-<img src="https://cdn.wesleycoakley.com/web-images/go-nat-traversal-demo.jpg">
+[[!img img/go-nat-traversal-demo.jpg size=500x]]
 <figcaption>Demonstration of a NAT traversal across my home router</figcaption>
 </figure>
 
diff --git a/src/School/Embedded_Systems_ECE306.mdwn b/src/School/Embedded_Systems_ECE306.mdwn
index 23abe1f..e591620 100644
--- a/src/School/Embedded_Systems_ECE306.mdwn
+++ b/src/School/Embedded_Systems_ECE306.mdwn
@@ -50,10 +50,7 @@ debugging tools to port software from a lab (Windows) machine to the MSP430
 board.
 
 <figure>
-<a href="https://cdn.wesleycoakley.com/web-images/ece306-p1-board.png">
-<img alt="P1 Board"
-src="https://cdn.wesleycoakley.com/web-images/thumb/ece306-p1-board.jpg">
-</a>
+[[!img img/ece306-p1-board.png size=500x]]
 <figcaption>Example of the outcome of Project 1</figcaption>
 </figure>
 
@@ -99,10 +96,7 @@ reverse-engineering and SPI programming that everyone else missed out on; an
 example of my notes (annotated with my post-analysis) is posted below:
 
 <figure>
-<a href="https://cdn.wesleycoakley.com/web-images/ece306-lcd-dump.jpg">
-<img alt="LCD Dump"
-src="https://cdn.wesleycoakley.com/web-images/thumb/ece306-lcd-dump.jpg">
-</a>
+[[!img img/ece306-lcd-dump.jpg size=500x]]
 <figcaption>An annotated view of the waveform traced from a lab
 oscilloscope; using this (and 10 other sketches) I was able to
 reverse-engineer the entire initialization routine</figcaption>
@@ -642,10 +636,7 @@ requisite part of the course but which I found useful to have), a page of
 which is provided below:
 
 <figure>
-<a href="https://cdn.wesleycoakley.com/web-images/ece306-clk-design.jpg">
-<img alt="P10 Dev"
-src="https://cdn.wesleycoakley.com/web-images/thumb/ece306-clk-design.jpg">
-</a>
+[[!img img/ece306-clk-design.jpg size=500x]]
 <figcaption>A page from my lab notebook detailing clock propagation to
 various subsystems in the RC-Car</figcaption>
 </figure>
@@ -693,10 +684,7 @@ allowing students who actually *drive* their cars to speed ahead in the
 course.
 
 <figure>
-<a href="https://cdn.wesleycoakley.com/web-images/ece306-p10-dev.jpg">
-<img alt="P10 Dev"
-src="https://cdn.wesleycoakley.com/web-images/thumb/ece306-p10-dev.jpg">
-</a>
+[[!img img/ece306-p10-dev.jpg size=500x]]
 <figcaption>My typical development environment (note the coffee)</figcaption>
 </figure>
 
@@ -757,10 +745,7 @@ reverse-engineering the LCD driver and (re)writing the interface I was
 finally able to develop 24/7 on my Linux computer.
 
 <figure>
-<a href="https://cdn.wesleycoakley.com/web-images/ece306-p10-run.jpg">
-<img alt="P10 Run"
-src="https://cdn.wesleycoakley.com/web-images/thumb/ece306-p10-run.jpg">
-</a>
+[[!img img/ece306-p10-run.jpg size=500x]]
 <figcaption>The final obstacle course; no wonder the access points were
 overloaded!... each waypoint of the course is an orange mat barely bigger
 than the car itself (and notice the line-interception portion of the course)</figcaption>
diff --git a/src/School/Senior_Design_ECE484_ECE485.mdwn b/src/School/Senior_Design_ECE484_ECE485.mdwn
index 008009b..c4df60c 100644
--- a/src/School/Senior_Design_ECE484_ECE485.mdwn
+++ b/src/School/Senior_Design_ECE484_ECE485.mdwn
@@ -109,19 +109,13 @@ Laying out these detailed project requirements, we were able to generate over
 choosing a final design. The sketches we generated look similar to the ones below:
 
 <figure>
-<a href="https://cdn.wesleycoakley.com/web-images/snr-design-scope.jpg">
-<img alt="Scope-like" src="https://cdn.wesleycoakley.com/web-images/thumb/snr-design-scope.jpg">
-</a>
+[[!img img/snr-design-scope.jpg size=500x]]
 <figcaption>An oscilloscope-like design</figcaption>
 </figure><figure>
-<a href="https://cdn.wesleycoakley.com/web-images/snr-design-box.jpg">
-<img alt="Box" src="https://cdn.wesleycoakley.com/web-images/thumb/snr-design-box.jpg">
-</a>
+[[!img img/snr-design-box.jpg size=500x]]

(Diff truncated)
wiki → src
diff --git a/.gitattributes b/.gitattributes
index 003e513..264185c 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1 +1 @@
-/wiki/img/** filter=lfs diff=lfs merge=lfs -text
+/src/img/** filter=lfs diff=lfs merge=lfs -text
diff --git a/.gitignore b/.gitignore
index c0b82f7..9fa30c2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,4 @@
 *.swp
-/src
 /www
-/wiki/.ikiwiki
+/src/.ikiwiki
 
diff --git a/default.nix b/default.nix
index c7246e2..0da621f 100644
--- a/default.nix
+++ b/default.nix
@@ -19,6 +19,14 @@ in pkgs.mkShell rec {
     vim
     graphviz
 
+    # teximg
+    imagemagick
+    texlive.combined.scheme-basic
+    ghostscript
+
+    git-lfs
+
+
     perl
     perl534Packages.syntax
     perl534Packages.PathClass
diff --git a/ikiwiki.setup b/ikiwiki.setup
index 525396d..b19c419 100644
--- a/ikiwiki.setup
+++ b/ikiwiki.setup
@@ -12,6 +12,8 @@ srcdir: src
 destdir: www
 # base url to the wiki
 url: https://wesl.ee/
+# extension to use for new pages
+default_pageext: wiki
 # enable optimization of only refreshing committed changes?
 only_committed_changes: 0
 # rcs backend to use
@@ -44,7 +46,7 @@ hardlink: 0
 # extra library and plugin directories
 libdirs: [ 'lib' ]
 # time zone name
-timezone: timezone
+timezone: :timezone
 # cookie control
 # set custom user agent string for outbound HTTP requests e.g. when fetching aggregated RSS feeds
 useragent: ikiwiki/3.20190228-1
diff --git a/wiki/BMW_318ti.wiki b/src/BMW_318ti.mdwn
similarity index 100%
rename from wiki/BMW_318ti.wiki
rename to src/BMW_318ti.mdwn
diff --git a/wiki/Coffee.wiki b/src/Coffee.mdwn
similarity index 100%
rename from wiki/Coffee.wiki
rename to src/Coffee.mdwn
diff --git a/wiki/Digital_Money/Bitcoin/Merkle_Roots.wiki b/src/Digital_Money/Bitcoin/Merkle_Roots.mdwn
similarity index 100%
rename from wiki/Digital_Money/Bitcoin/Merkle_Roots.wiki
rename to src/Digital_Money/Bitcoin/Merkle_Roots.mdwn
diff --git a/wiki/Digital_Money/Decentralized_Finance.wiki b/src/Digital_Money/Decentralized_Finance.mdwn
similarity index 100%
rename from wiki/Digital_Money/Decentralized_Finance.wiki
rename to src/Digital_Money/Decentralized_Finance.mdwn
diff --git a/wiki/Digital_Money/Terra.wiki b/src/Digital_Money/Terra.mdwn
similarity index 100%
rename from wiki/Digital_Money/Terra.wiki
rename to src/Digital_Money/Terra.mdwn
diff --git a/wiki/Digital_Money/The_Problem_With_vAMM_Perpetuals.wiki b/src/Digital_Money/The_Problem_With_vAMM_Perpetuals.mdwn
similarity index 100%
rename from wiki/Digital_Money/The_Problem_With_vAMM_Perpetuals.wiki
rename to src/Digital_Money/The_Problem_With_vAMM_Perpetuals.mdwn
diff --git a/wiki/Distributed_Hash_Table.wiki b/src/Distributed_Hash_Table.mdwn
similarity index 100%
rename from wiki/Distributed_Hash_Table.wiki
rename to src/Distributed_Hash_Table.mdwn
diff --git a/wiki/Firefox/Smart_Searching.wiki b/src/Firefox/Smart_Searching.mdwn
similarity index 100%
rename from wiki/Firefox/Smart_Searching.wiki
rename to src/Firefox/Smart_Searching.mdwn
diff --git a/wiki/HTML/Semantic_HTML.wiki b/src/HTML/Semantic_HTML.mdwn
similarity index 100%
rename from wiki/HTML/Semantic_HTML.wiki
rename to src/HTML/Semantic_HTML.mdwn
diff --git a/wiki/IPFS.wiki b/src/IPFS.mdwn
similarity index 100%
rename from wiki/IPFS.wiki
rename to src/IPFS.mdwn
diff --git a/wiki/Japanese.wiki b/src/Japanese.mdwn
similarity index 100%
rename from wiki/Japanese.wiki
rename to src/Japanese.mdwn
diff --git a/wiki/Me.wiki b/src/Me.mdwn
similarity index 100%
rename from wiki/Me.wiki
rename to src/Me.mdwn
diff --git a/wiki/Meta.wiki b/src/Meta.mdwn
similarity index 100%
rename from wiki/Meta.wiki
rename to src/Meta.mdwn
diff --git a/wiki/Meta/All_Pages.wiki b/src/Meta/All_Pages.mdwn
similarity index 100%
rename from wiki/Meta/All_Pages.wiki
rename to src/Meta/All_Pages.mdwn
diff --git a/wiki/Routing/FRR_OSPFv2_Plus_GSN3.wiki b/src/Routing/FRR_OSPFv2_Plus_GSN3.mdwn
similarity index 100%
rename from wiki/Routing/FRR_OSPFv2_Plus_GSN3.wiki
rename to src/Routing/FRR_OSPFv2_Plus_GSN3.mdwn
diff --git a/wiki/Routing/UDP_Holepunch.wiki b/src/Routing/UDP_Holepunch.mdwn
similarity index 100%
rename from wiki/Routing/UDP_Holepunch.wiki
rename to src/Routing/UDP_Holepunch.mdwn
diff --git a/wiki/School/Embedded_Systems_ECE306.wiki b/src/School/Embedded_Systems_ECE306.mdwn
similarity index 100%
rename from wiki/School/Embedded_Systems_ECE306.wiki
rename to src/School/Embedded_Systems_ECE306.mdwn
diff --git a/wiki/School/North_Carolina_State_University.wiki b/src/School/North_Carolina_State_University.mdwn
similarity index 100%
rename from wiki/School/North_Carolina_State_University.wiki
rename to src/School/North_Carolina_State_University.mdwn
diff --git a/wiki/School/Senior_Design_ECE484_ECE485.wiki b/src/School/Senior_Design_ECE484_ECE485.mdwn
similarity index 100%
rename from wiki/School/Senior_Design_ECE484_ECE485.wiki
rename to src/School/Senior_Design_ECE484_ECE485.mdwn
diff --git a/wiki/School/Sophia_University.wiki b/src/School/Sophia_University.mdwn
similarity index 100%
rename from wiki/School/Sophia_University.wiki
rename to src/School/Sophia_University.mdwn
diff --git a/wiki/Tokyo.wiki b/src/Tokyo.mdwn
similarity index 100%
rename from wiki/Tokyo.wiki
rename to src/Tokyo.mdwn
diff --git a/wiki/Virtual_Reality.wiki b/src/Virtual_Reality.mdwn
similarity index 100%
rename from wiki/Virtual_Reality.wiki
rename to src/Virtual_Reality.mdwn
diff --git a/wiki/favicon.ico b/src/favicon.ico
similarity index 100%
rename from wiki/favicon.ico
rename to src/favicon.ico
diff --git a/wiki/img/318ti-coliseum.jpeg b/src/img/318ti-coliseum.jpeg
similarity index 100%
rename from wiki/img/318ti-coliseum.jpeg
rename to src/img/318ti-coliseum.jpeg
diff --git a/wiki/img/318ti-diagnostics.jpeg b/src/img/318ti-diagnostics.jpeg
similarity index 100%
rename from wiki/img/318ti-diagnostics.jpeg
rename to src/img/318ti-diagnostics.jpeg
diff --git a/wiki/img/318ti-nightcore.jpeg b/src/img/318ti-nightcore.jpeg
similarity index 100%
rename from wiki/img/318ti-nightcore.jpeg
rename to src/img/318ti-nightcore.jpeg
diff --git a/wiki/img/drainage.jpeg b/src/img/drainage.jpeg
similarity index 100%
rename from wiki/img/drainage.jpeg
rename to src/img/drainage.jpeg
diff --git a/wiki/img/ftx-historic-funding.jpeg b/src/img/ftx-historic-funding.jpeg
similarity index 100%
rename from wiki/img/ftx-historic-funding.jpeg
rename to src/img/ftx-historic-funding.jpeg
diff --git a/wiki/img/hayes-stops.jpeg b/src/img/hayes-stops.jpeg
similarity index 100%
rename from wiki/img/hayes-stops.jpeg
rename to src/img/hayes-stops.jpeg
diff --git a/wiki/img/hayes.jpeg b/src/img/hayes.jpeg
similarity index 100%
rename from wiki/img/hayes.jpeg
rename to src/img/hayes.jpeg
diff --git a/wiki/img/levana-osmosis.jpeg b/src/img/levana-osmosis.jpeg
similarity index 100%
rename from wiki/img/levana-osmosis.jpeg
rename to src/img/levana-osmosis.jpeg
diff --git a/wiki/img/luna-brothers.jpeg b/src/img/luna-brothers.jpeg
similarity index 100%
rename from wiki/img/luna-brothers.jpeg
rename to src/img/luna-brothers.jpeg
diff --git a/wiki/img/mahoro.jpeg b/src/img/mahoro.jpeg
similarity index 100%
rename from wiki/img/mahoro.jpeg
rename to src/img/mahoro.jpeg
diff --git a/wiki/img/rubberband-perps.jpeg b/src/img/rubberband-perps.jpeg
similarity index 100%
rename from wiki/img/rubberband-perps.jpeg
rename to src/img/rubberband-perps.jpeg
diff --git a/wiki/img/terra-anchor-ltv.jpeg b/src/img/terra-anchor-ltv.jpeg
similarity index 100%
rename from wiki/img/terra-anchor-ltv.jpeg
rename to src/img/terra-anchor-ltv.jpeg
diff --git a/wiki/img/terra-ibc-to-osmosis.jpeg b/src/img/terra-ibc-to-osmosis.jpeg

(Diff truncated)