2023-02-05 18:02:19 -07:00
#!/bin/sh
2023-07-06 07:50:30 -06:00
#llllmmmm11234567892123456789312345678941234567895123456789612345678971234567890
2023-10-14 14:43:48 -06:00
# vim: syntax=:ts=8
2023-02-20 08:46:03 -07:00
set -ex
2023-07-19 21:27:46 -06:00
<"$0" python3 -c '
2023-07-16 08:20:48 -06:00
import os, sys
2023-07-19 21:27:46 -06:00
class File:
2023-07-21 10:19:18 -06:00
attributes = []; content = ""; substitutions = dict()
figurative = True; stub = True
def addattribute(self, *args):
for a in args: # sloppy but works
if a == "stub": self.stub = True
elif a == "verbatim": self.stub = False
elif a == "figuratively": self.figurative = True
elif a == "literally": self.figurative = False
2023-07-19 21:27:46 -06:00
def __init__(self, **kwargs):
for key in kwargs:
2023-07-21 10:19:18 -06:00
if key == "attributes": self.addattribute(*kwargs[key])
else: setattr(self, key, kwargs[key])
2023-07-28 12:46:47 -06:00
files = dict()
2023-07-19 22:46:51 -06:00
for part in reversed(sys.stdin.read().split("\n\n\n")):
name = "." + part.split("\n")[0]
2023-07-19 21:27:46 -06:00
if "\t" in "." + name:
attributes = name.split("\t")[1].split(",")
name = name.split("\t")[0]
2023-07-19 22:46:51 -06:00
else: attributes = []
2023-07-28 12:46:47 -06:00
if len(name) <= 1 or name[1] != "/" or "ignore" in attributes:
continue
2023-07-19 22:46:51 -06:00
content = part.split("\n\n")[0].split("\n")
substitutions = dict()
if(len(content) > 1):
for s in content[1:]:
s = s.split("\t")
if len(s) == 2: substitutions[s[0]] = s[1]
2023-07-21 10:19:18 -06:00
mode = "replace"
2023-07-28 12:46:47 -06:00
for attribute in attributes:
if attribute in ["append", "replace"]:
mode = attribute
2023-07-21 10:19:18 -06:00
attributes = list(set(attributes) ^ {"append", "replace"})
2023-07-19 23:09:34 -06:00
content = part[len("\n".join(content))+2:]
2023-08-05 09:05:36 -06:00
file = File(attributes = attributes, content = content + "\n",
2023-07-19 22:46:51 -06:00
substitutions = substitutions)
2023-07-21 10:19:18 -06:00
if mode == "append":
2023-07-19 21:27:46 -06:00
if not(name in files):
sys.stderr.write(sys.argv[0] + ": " + name + ": "
+ "appending to nothing\n")
else:
2023-07-19 22:46:51 -06:00
file.content = files[name].content + file.content
files[name] = file
2023-07-19 21:27:46 -06:00
for name in files:
2023-07-21 10:19:18 -06:00
if files[name].stub:
2023-07-28 12:46:47 -06:00
p = ""; s = ""; d = name
while True:
2023-08-03 17:15:58 -06:00
d = os.path.dirname(d)
if (p == ""
and os.path.join(d, "Prefix")
in files.keys()):
p = files[os.path.join(d, "Prefix")].content
if (s == ""
and os.path.join(d, "Suffix")
in files.keys()):
s = files[os.path.join(d, "Suffix")].content
2023-08-05 09:05:36 -06:00
if d == "." or (not(p == "") and not(s == "")):
break
2023-07-28 12:46:47 -06:00
files[name].content = p + files[name].content + s
2023-07-21 10:19:18 -06:00
if files[name].figurative:
2023-07-19 21:27:46 -06:00
content = files[name].content
for s in files[name].substitutions:
instances = []
i = 0
while True:
instance = content.find(s, i)
if instance == -1: break
2023-07-19 22:46:51 -06:00
instances += [instance]
2023-07-19 21:27:46 -06:00
i = instance + len(s)
if len(instances) == 0: continue
2023-07-19 22:46:51 -06:00
for i in reversed(instances):
content = (content[:i]
+ files[name].substitutions[s]
2023-07-19 21:27:46 -06:00
+ content[i+len(s):])
files[name].content = content
2023-07-28 12:46:47 -06:00
# TODO error checking
if not(os.path.isdir(os.path.dirname(name))):
os.makedirs(os.path.dirname(name))
2023-07-19 22:46:51 -06:00
with open(name, "w") as fd: fd.write(files[name].content)
2023-08-03 17:15:58 -06:00
d = ""; bucket = "#!/bin/sh\n"
for name in files:
d = name
while True:
if os.path.dirname(d) == ".":
mop = ("rm "
+ "-r " * os.path.isdir(d)
+ name # yeah this sucks
+ "\n"
)
if not(mop in bucket): bucket += mop
break
else:
d = os.path.dirname(d)
if len(bucket.split("\n")) > 2:
2023-07-19 21:27:46 -06:00
with open("./cleanup.sh", "w") as fd:
2023-08-03 17:15:58 -06:00
fd.write(bucket)
2023-07-19 21:27:46 -06:00
'
2023-08-06 15:21:32 -06:00
test -x homepage.local \
2023-07-15 21:44:35 -06:00
&& exec ./homepage.local \
2023-08-06 15:21:32 -06:00
|| test -e homepage.local \
&& exec sh ./homepage.local \
2023-07-15 21:44:35 -06:00
|| exit 0
2023-07-15 21:07:11 -06:00
2023-07-15 21:44:35 -06:00
/homepage.html
2023-07-19 21:27:46 -06:00
$!TITLE "homepage" documentation
$!DESCRIPTION one file, one website
2023-07-15 21:44:35 -06:00
<H1>"homepage" documentation</H1>
<H2>the forest</H2>
<P>
homepage is a single-file static site generator written in UNIX sh(1) shell
script, the goal being to contain a website with heirarchical page
organization within a single file that can be run to extract it out to the
filesystem, almost like a self-extracting UNIX tape archive that documents its
own layout in a UTF-8 script closer to English.
</P>
<H2>trees</H2>
<H3>files</H3>
<P>
To add a file to your homepage, append three newlines ('\n', or the
Enter/Return key on your keyboard) to the end of the homepage file, followed
by the path of the file to add. A homepage file path starts with a slash ('/')
and is followed by the path to the file relative to the prefix directory (the
directory containing homepage). A file path that starts with a hash ('#') is
discarded. For all non-slash- non-hash- prefixed file paths, the behavior of
homepage is undefined.
</P>
2023-07-16 08:20:48 -06:00
<H4>file attributes</H4>
<P>
On the same line as the file path, if, after the path, a tab ('\t') is
present, the substring following the first tab in the line and spanning to
and excluding the next tab or newline describes the attributes of the file as
it is exported to the file system. These file attributes are delimited by
commas (',') and there's no limit to the amount of attributes a file can
have, though in the event of conflicting attributes the later attribute
"wins" the conflict.
</P>
2023-07-28 12:46:47 -06:00
<TABLE>
<TR><TH>attribute</TH> <TH>default?</TH><TH>action</TH></TR>
<TR><TD>"figuratively"</TD><TD>yes</TD>
<TD>Indicates the file should be subject to macro expansion.</TD></TR>
<TR><TD>"ignore"</TD> <TD>no</TD> <TD>Ignore the current entry.</TD>
</TR>
<TR><TD>"literally"</TD> <TD>no</TD>
<TD>Opposite of "figuratively".</TD></TR>
<TR><TD>"stub"</TD> <TD>yes</TD>
<TD>Indicates the file should be exported to the filesystem with the
appropriate Prefix and Suffix files prepended or appended.</TD>
</TR>
<TR><TD>"verbatim"</TD> <TD>no</TD> <TD>Opposite of "stub".</TD></TR>
</TABLE>
2023-07-15 21:44:35 -06:00
2023-07-19 21:27:46 -06:00
/praise/index.html append,literally
<LI>[<TIME datetime="2023-07-18 12:27">2023</TIME>] Doctor Eli Selig !!JQHA6kqyl91: >Maid Phone user / >mfw / ["Heart hands.jpg"]</LI>
2023-08-03 17:15:58 -06:00
/praise/Prefix verbatim
2023-07-19 23:09:34 -06:00
2023-07-19 21:27:46 -06:00
<!DOCTYPE html>
<HTML lang="en-US">
<HEAD>
<LINK HREF="https://trinity.moe/_PAGE" REL="canonical" />
<LINK HREF="/img/icons/favicon.ico" REL="shortcut icon" TYPE="image/x-icon" />
<META CHARSET="UTF-8" />
<META CONTENT="dtb" NAME="author" />
<META CONTENT="praise for trinity / dot moe" NAME="description" />
<META CONTENT="width=device-width, initial-scale=1" NAME="viewport" />
<META CONTENT="img/trinnow.bmp" NAME="og:image" />
<META CONTENT="noindex" NAME="googlebot" /> <!-- FUCK GOOGLE -->
<META CONTENT="interest-cohort=()" HTTP-EQUIV="Permissions-Policy" /> <!-- FUCK GOOGLE -->
<STYLE>
li { font-family: monospace }
</STLYE>
<TITLE>praise</TITLE>
</HEAD>
<BODY>
<P><A HREF="..">~ www.trinity.moe</A></P>
<UL>
/praise/index.html literally
2023-07-19 23:09:34 -06:00
2023-07-19 21:27:46 -06:00
<LI>[<TIME datetime="2004-12-09">2004</TIME>] Dr. Gene Ray: <A HREF="https://web.archive.org/web/20041209065507/http://timecube.com:80/index.html">Life rotation debunks Trinity.</A></LI>
<LI>[<TIME datetime="2021-03-27 04:44">2021<TIME>] 🛸UFO🛸: I wanna hug trinity</LI>
<LI>[<TIME datetime="2021-05-03">2021</TIME>] Вероника Заглотова: <A HREF="https://invidious.tube/watch?v=fUpZO9LnNo0">my computer is making mustard gases</A></LI>
<LI>[<TIME datetime="2021-05-10 10:47">2021</TIME>] Аноним: [<I>screenshot of this website next to a screenshot of a wojak</I>]</LI> <!-- https://web.archive.org/web/20210510123535mp_/https://2ch.hk/s/res/2981671.html -->
<LI>[<TIME datetime="2021-05-15 08:49">2021</TIME>] Anonymous: deven's website is the best~!</LI>
<LI>[<TIME datetime="2021-05-15 09:17">2021</TIME>] Anonymous: this is what developing mental illness in teen years looks like</LI>
<LI>[<TIME>2021</TIME>] MetaMask/eth-phishing-detect: <A HREF="https://github.com/MetaMask/eth-phishing-detect/issues/5119">This domain was blocked for its similarity to dfinity.org, a historical phishing target.</A></LI>
<LI>[<TIME datetime="2022-05-11 21:43">2022</TIME>] Eminav_B: Never watching a movie with trinity</LI>
<LI>[<TIME datetime="2022-09-15 21:11">2022</TIME>] Milady Sonora Sprite: hi</LI>
/praise/Suffix
</UL>
</BODY>
</HTML>
2023-07-15 23:57:04 -06:00
/x200t/index.html
2023-07-19 21:27:46 -06:00
$!TITLE Thinkpad X200 Tablet
2023-07-15 23:57:04 -06:00
<SCRIPT TYPE="application/javascript">//<!--
window.onload = window.initializesheets;
//--></SCRIPT>
<H1>Thinkpad X200 Tablet</H1>
<H3>updated 2022-08-11</H3>
<HR ALIGN="left" SIZE="1" WIDTH="25%" />
<P>Contents</P>
<UL>
<LI><A HREF="#seealso" >See also</A></LI>
<LI><A HREF="#camera" >Integrated camera</A></LI>
<LI><A HREF="#drive" >SATA drive</A></LI>
<LI><A HREF="#drivecaddy" >Drive caddy</A></LI>
<LI><A HREF="#memory" >Memory</A></LI>
<LI><A HREF="#screws" >Screws</A></LI>
<LI><A HREF="#software" >Software</A></LI>
<LI><A HREF="#stylus" >Stylus</A></LI>
</UL>
<P ID="seealso">See also</P><UL>
<LI><A HREF="https://wiki.archlinux.org/title/Lenovo_ThinkPad_X200">Lenovo Thinkpad X200</A> (Arch Wiki)</LI>
<LI><A HREF="https://download.lenovo.com/pccbbs/mobiles_pdf/45n3683_04.pdf">Thinkpad X200 Tablet and X201 Tablet Hardware Maintenance Manual (fifth edition)</A> (<A HREF="https://web.archive.org/web/20210203043936/https://download.lenovo.com/pccbbs/mobiles_pdf/45n3683_04.pdf">Archive link</A>)</LI>
<LI><A HREF="https://linux-hardware.org/?view=computers&model=ThinkPad+X200+Tablet+(All)">Thinkpad X200 Tablet (All)</A> (Linux Hardware Database)</LI>
<LI><A HREF="https://www.thinkwiki.org/wiki/Category:X200_Tablet">X200 Tablet Overview</A> (Thinkwiki)</LI>
</UL>
<H2 ID="camera">Integrated camera</H2>
<P>
This is FRU 2060 in the hardware maintenance manual.
</P>
<P>
Some models have the camera, some don't.
It will be in the middle of the top of the screen bezel (looking at the screen with the <I>lenovo</I> logo oriented normally); some have a black plastic trapezoidal cover, some have the camera option.
Camera kits are available on-line for the X200 Tablet for around US$15 or so at time of writing.
</P>
<H2 ID="drive">SATA drive</H2>
<P>As far as I know, any 2.5" SATA laptop-sized drive will work.</P>
<P>
To replace the drive, locate the drive cover between the stylus holder and RJ-11 modem port on the right side of the laptop.
Unscrew the screw holding in the cover, to which the hard drive icon on the bottom of the laptop under the stylus holder is pointing.
Lift out the cover and there the drive will be exposed.
</P>
<H2 ID="drivecaddy">Hard drive caddy</H2>
<P>
Most of the eBay listings for X200 Tablets don't have hard drive covers or caddies.
You will want a caddy because it makes it much easier to get a drive out, and because it spaces out the drive in the space provided and provides some (minimal) amount of shock protection.
This is especially good for hard disks as you don't want those moving around in your laptop chassis, even if there's no risk of them being disconnected.
</P>
<P>
In a <I>pinch</I> you can use cardboard to space out a drive.
I made out okay using folded cardstock given that my X200 Tablet was going nowhere except my desk.
You should <I>not</I> do this for long periods, not really because there's some risk that increases as time wears on but just because in general it's stupid.
</P>
<P>
The same rubber rails that go around the hard drive, and the same metal thing that you screw onto the drive that has the black ribbon attached used to pull the drive out, are used for the X200, X200S, X200 Tablet, X201, X201S, X201 Tablet, T420, T420S, T430, and T430S, as far as I know.
Rubber rails for the X220 Tablet did not work, nor did the bay cover for the X220 Tablet work for the X200 Tablet.
</P>
<H2 ID="memory">Memory</H2>
<P>
This is FRU 1040 DIMM in the hardware maintenance manual.
The system memory modules and the access panel <I>only</I> have to be removed if the modules specifically are being replaced or if the system mainboard is getting replaced.
</P>
<P>
<A HREF="https://thinkpads.com/forum/viewtopic.php?f=43&t=113310">RealBlackStuff says</A>
the X200 Tablet is compatible with <CODE>DDR3-1066 (PC3-8500)</CODE> and <CODE>DDR3-1333 (PC3-10600)</CODE>.
It's possible to have 8GB memory installed.
<A HREF="https://www.ebay.com/usr/laptopused">eBay seller laptopused</A> correlates that <CODE>DDR3-1333</CODE> dual-rank memory should work.
Apparently for technical reasons the X200 Tablet must take 2Rx8 memory; two ranks of eight chips, and for 8GB memory, 256MB per chip (divide 8192MB by 2 modules * 2 ranks * 8 chips).
</P>
<P>
OEM-configured laptops can have <CODE>DDR3-1066</CODE> memory from Elpida or Samsung.
<A HREF="https://www.laptopmag.com/reviews/laptops/lenovo-thinkpad-x200-tablet">Laptop Mag says</A> the laptop came with 2GB RAM by default and is upgradeable to 4GB but most laptops for sale secondhand have 4GB memory installed.
Types 7449-43U and 7450-EYU came with 2x2GB <CODE>DDR3-1066 SO-DIMM (PC3-8500)</CODE>.
</P>
<P>
I got in touch with eBay seller <A HREF="https://ebay.com/seller?sid=woosterpsu">woosterpsu</A> who was auctioning off an X200 Tablet to benefit the Electronic Frontier Foundation with 8GB RAM installed and reported in the BIOS.
The seller sent me an image of the installed memory: a Hynix 4GB 2Rx8 PC3-10600S and a Dell P/N SNPX830DC/4G, both scavenged from other laptops.
These are <I>confirmed working</I> in a Core2 Duo L9400 X200 Tablet.
</P>
<H2 ID="screws">Screws</H2>
<P>
Per the hardware maintenance manual (page 225), the following screws are necessary for full assembly of the X200 Tablet:
</P>
<TABLE>
<TR><TH>Quantity</TH> <TH>Head</TH> <TH>Length</TH> <TH>Style</TH> <TH>Color</TH> </TR>
<TR><TD>1</TD> <TD>M1.6</TD> <TD>6mm</TD> <TD>Wafer head</TD> <TD>Silver</TD></TR>
<TR><TD>1</TD> <TD>M2</TD> <TD>2.5mm</TD> <TD>Wafer head</TD> <TD>Black</TD> </TR>
<TR><TD>11</TD> <TD>M2</TD> <TD>3mm</TD> <TD>Flat head</TD> <TD>Black</TD> </TR>
<TR><TD>18</TD> <TD>M2</TD> <TD>3.5mm</TD> <TD>Wafer head</TD> <TD>Silver</TD></TR>
<TR><TD>1</TD> <TD>M2</TD> <TD>3.5mm</TD> <TD>Wafer head</TD> <TD>Black</TD> </TR>
<TR><TD>3</TD> <TD>M2</TD> <TD>6mm</TD> <TD>Wafer head</TD> <TD>Silver</TD></TR>
<TR><TD>13</TD> <TD>M2</TD> <TD>6mm</TD> <TD>Wafer head</TD> <TD>Black</TD> </TR>
<TR><TD>1</TD> <TD>M2</TD> <TD>3mm</TD> <TD>Stud (height=4.2mm)</TD> <TD>Black</TD> </TR>
<TR><TD>1</TD> <TD>M2</TD> <TD>3mm</TD> <TD>Stud (height=5.5mm)</TD> <TD>Black</TD> </TR>
<TR><TD>6</TD> <TD>M2.5</TD> <TD>6mm</TD> <TD>Wafer head</TD> <TD>Black</TD> </TR>
<TR><TD>9</TD> <TD>M2.5</TD> <TD>8mm</TD> <TD>Wafer head</TD> <TD>Black</TD> </TR>
<TR><TD>1</TD> <TD>M3</TD> <TD>3mm</TD> <TD>Wafer head (HDD screw)</TD> <TD>Black</TD> </TR>
</TABLE>
<P>
Additionally listed are 9 circular screw caps and 6 square screw caps.
</P>
<P>
Two screw kits are listed with part numbers <CODE>45N3139</CODE> and <CODE>60Y4164</CODE>.
The difference is that <CODE>45N3139</CODE> has one more M2x3.5mm silver wafer head screw listed (18 versus 17).
<CODE>45N3139</CODE>'s contents in particular are reflected in the table above.
</P>
<P>On page 79 of the hardware maintenance manual some very rarely-noted screw notices are listed that are worth repeating, though it's up to the maintainer to follow the practices they so choose:</P>
<UL>
<LI>Always use new screws. (This is repeated earlier in the page; according to the manual, ThinkPad Notebooks have "special nylon-coated screws" that should be used only once.)</LI>
<LI>Use a torque screwdriver if you have one.</LI>
<LI>When tightening plastic against plastic, turn an additional 90 degrees after the screw head touches the surface of the plastic part.</LI>
<LI>When tightening logic cards against plastic, turn an additional 180 degrees after the screw head touches the surface of the plastic part.</LI>
<LI>If you have a torque driver, refer to the "Torque" column for each step.</LI>
<LI>
Make sure that you use the correct screw.
If you have a torque screwdriver, tighten all screws firmly to the torque shown in the table.
<B>Never use a screw that you removed. Use a new one. Make sure that all of the screws are tightened firmly.</B>
</LI>
</UL>
<H2 ID="software">Software</H2>
<P>
For some procedures in the hardware maintenance manual a ThinkPad Hardware Maintenance Diskette is needed.
This was available only to licensed dealers.
</P>
<P>
Here's a chart of executable names relevant to the X200 Tablet as provided from Lenovo and their product names.
A lot of this is sourced from hearsay and olden lore so it may not be fully accurate, and definitely isn't complete.
Also, I trimmed down redundant sections of product names - for example, <CODE>7wuj45uc.iso</CODE> is actually <I>BIOS Update Bootable CD <B>for Windows 7 (32-bit, 64-bit), Vista (32-bit, 64-bit), XP - ThinkPad</B></I> but if it's bootable itself operating system compatibility likely doesn't matter.
</P>
<TABLE>
<TR><TH>Executable</TH> <TH>Product name</TH> <TH>Version</TH> </TR>
<TR><TD>6itr02ww.zip</TD> <TD>BIOS Settings Capture/Playback Utility</TD> <TD>4.01</TD> </TR>
<TR><TD>7wuj45uc.iso</TD> <TD>BIOS Update Bootable CD</TD> <TD>3.21</TD> </TR>
<TR><TD>7wuj45u6.exe</TD> <TD>BIOS Update Utility for Windows 7 (32-bit, 64-bit), Vista (32-bit, 64-bit), XP</TD> <TD>3.21</TD></TR>
<TR><TD>6ea118ww.exe</TD> <TD>Conexant Audio Driver for Windows Vista (32-bit, 64-bit), XP</TD> <TD>4.92.15.0 / 3.64.15.0</TD></TR>
<TR><TD>6ea160ww.exe</TD> <TD>Conexant Audio Software for Windows 7 (32-bit, 64-bit)</TD> <TD>4.92.12.0</TD></TR>
<TR><TD>maint150.exe</TD> <TD>IBM Thinkpad Hardware Maintenance Diskette (HMD)</TD> <TD>1.50</TD> </TR>
<TR><TD>maint160.exe</TD> <TD>IBM Thinkpad Hardware Maintenance Diskette (HMD)</TD> <TD>1.60</TD> </TR>
<TR><TD>maint169.exe</TD> <TD>IBM Thinkpad Hardware Maintenance Diskette (HMD)</TD> <TD>1.69</TD> </TR>
<TR><TD>i7tm23us.exe</TD> <TD>IBM Thinkpad Hardware Maintenance Diskette (HMD)</TD> <TD>1.75</TD> </TR>
<TR><TD>i7tm25us.exe</TD> <TD>IBM Thinkpad Hardware Maintenance Diskette (HMD)</TD> <TD>1.77</TD> </TR>
<TR><TD>i7tm37us.exe</TD> <TD>Unknown</TD> <TD>Unknown</TD> </TR>
<TR><TD>i7tm38us.exe</TD> <TD>IBM Thinkpad Hardware Maintenance Diskette (HMD)</TD> <TD>1.89</TD> </TR>
<TR><TD>83ts04ww.exe</TD> <TD>ThinkPad BIOS Settings for Windows 7 (32-bit), Vista (32-bit), XP, 2000</TD> <TD>3.03</TD></TR>
</TABLE>
<P>
Lenovo's X200 Tablet downloads won't last forever.
Here's a JavaScript that allows a user to download arbitrary executables from Lenovo's download servers.
</P>
<INPUT ID="executable" VALUE="i7tm38us.exe" />
<INPUT ONCLICK="window.location.href = 'http://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles/' + document.getElementById('executable').value;" TYPE="button" VALUE="Download" />
<P>The following operating systems were available pre-installed by the OEM, depending on the variant:</P>
<UL>
<LI>Microsoft Windows XP Tablet (32 bit)</LI>
<LI>Microsoft Windows Vista Home Premium (32 bit)</LI>
<LI>Microsoft Windows Vista Business (32 bit)</LI>
<LI>Microsoft Windows Vista Business (64 bit)</LI>
<LI>Microsoft Windows Vista Ultimate (32 bit</LI>
<LI>Microsoft Windows 7 Home Basic (32 bit)</LI>
<LI>Microsoft Windows 7 Home Premium (32 bit)</LI>
<LI>Microsoft Windows 7 Home Premium (64 bit)</LI>
<LI>Microsoft Windows 7 Professional (32 bit)</LI>
<LI>Microsoft Windows 7 Professional (64 bit)</LI>
</UL>
<P>9front system usage is described in the <A HREF="http://fqa.9front.org/fqa3.html#3.2.5.2.1">9front FQA, section 3.2.5.2.1</A>.</P>
<P>Linux system usage is described in detail on the <A HREF="#seealso">Arch GNU+Linux wiki</A> - any Linux or UNIX specific knowledge I have I add to the Arch wiki rather than putting on this page.</P>
<H2 ID="stylus">Stylus</H2>
<P>
The X200 Tablet originally came with a single-button stylus with a gray "eraser".
I found some single-button stylus from eBay, with a red "eraser", and that worked too.
I have a two-button stylus that came with another X200 Tablet but it's as of yet untested.
The Fujitsu T-5000 digitizer pen does work, identically according to <CODE>xev(1)</CODE>.
</P>
<P>
<B>Do not</B> try to insert two-button Thinkpad styluses into the stylus holder of the X200 Tablet as they'll become stuck in there because of how the buttons are shaped.
To remove a stuck stylus the digitizer pen case (part number <CODE>45N3146</CODE>) must be unscrewed and removed from the chassis.
Following the hardware maintenance manual, remove FRUs "1020 Battery pack" and "1060 Keyboard" and follow steps 6 and 7 of the removal process of FRU "1180 DC-in connector, fan, digitizer pen case, and pen switch assembly".
No other FRUs need to be removed, nor do any other steps of the removal process of FRU 1180 need to be followed.
</P>
/hacker-howto/index.html
2023-07-19 21:27:46 -06:00
$!TITLE How to Become A Hacker
2023-07-15 23:57:04 -06:00
<H2>How to Become A Hacker</H2>
<H3>Deven Trinity Blake</H3>
<P><CODE><<A HREF="mailto:trinity@trinity.moe">trinity@trinity.moe</A>></CODE></P>
<P>No Copyright 🄯 2021 Deven T. Blake</P>
<HR />
<H2>Why This Document?</H2>
<P>
A lot of hackers consider Eric S. Raymond's original <A HREF="http://www.catb.org/~esr/faqs/hacker-howto.html"><I>How to Become A Hacker</I></A> to be definitive, for good reason.
It explains the "hacker philosophy", some key things at which one should be good, and is a good compass that points to What to Learn Next.
I myself stumbled upon the document maybe a decade or so ago, when I was a small impressionable child, and know half of what I do because of where it pointed me.
I think, however, that <I>How to Become A Hacker</I> is a bit dated, so I'm writing this to be a nice complementary piece for those to read <B>after they read esr's original</B>.
</P>
<P>
If you are reading a snapshot of this document offline, the current version lives at <A HREF="http://www.trinity.moe/hacker-howto">http://www.trinity.moe/hacker-howto</A>.
</P>
<H2>Basic Hacking Skills</H2>
<H3>1. Learn how to program</H3>
<P>
Python is an okay first language as long as you don't take it too seriously.
As said by smarter people than me, Python is a glue language.
It's slow and a bit basic, but its errors are often easy to solve, so do as much as you can with Python and Python libraries, and do the rest in faster languages.
</P>
<P>
Never touch Java.
Not even once.
While at one point it was promising, it's become a monstrous beast and it must be slain through attrition.
</P>
<P>
When you are good at programming you will think <I>outside</I> of programming languages.
Programming languages are tools for a job.
Some are better suited to some tasks than others.
For example, I would use C as a language for building utilities for myself, as I want them to be blisteringly fast and I know that's easier to do in C than Python.
I've written utilities in Python to know how I want them to behave, and then perfected them by rewriting them in C.
This being said, when learning a language for the first time, <I>master</I> it, <I>then</I> move on.
</P>
<H3>2. Get one of the open-source Unixes and learn to use and run it.</H3>
<P>
<B>Don't</B> try to program on Microsoft Windows.
Seriously.
This is the one mistake almost all beginners make; they'll install fifty different tools onto their MS Windows system in order to make a simple program that doesn't really work because their tutorial only works for UNIX.
Just install a Free UNIX-clone ("clone" in this context is not a bad thing; most Free UNIX-clones are much more practical in this world than the original) and learn how to work in it.
In fact, you may want to learn <I>shell</I> before anything else.
When you know how to
<OL>
<LI>Make a directory,</LI>
<LI>Make an empty file within that directory,</LI>
<LI>Overwrite the file with exactly 500B of random data,</LI>
<LI>Mark the file as executable,</LI>
<LI>Print the file to the terminal as readable, hexadecimal data,</LI>
<LI>And remove the directory and the file,</LI>
</OL>
you will know enough to start on your journey into hacking.
</P>
<P>
BSDs are awesome and I use a BSD myself, but perhaps start with Linux as there's a much bigger community to help you there.
There are no longer any good non-UNIX operating systems.
The importance of choosing a Free operating system cannot be understated.
It's hard to learn from your OS's code when your OS's code is only readable by those within the corporation that made the OS.
</P>
<P>
Don't use Ubuntu as it suffers from many of the flaws that drive non-hacker Windows users to Linux-based systems.
Instead, try Linux Mint, which is based on Ubuntu but without the more annoying issues.
</P>
<H3>3. Learn how to use the World Wide Web and write HTML.</H3>
<P>
View the source code of the original <I>How to Become A Hacker</I> and then read the source code to this webpage.
</P>
<H3>4. If you don't have functional English, learn it.</H3>
<P>
It's unfortunate that English has become the lingua franca of the Internet.
But it's true, it has, and it's more or less required learning if you want to become a hacker.
</P>
<H3>5. Learn to use a search engine.</H3>
<P>
This is my own tip.
<B>This is the most important thing on this page</B>.
How to accomplish this is an exercise left to the reader.
</P>
/home/index.html
2023-07-19 21:27:46 -06:00
$!TITLE home
2023-07-15 23:57:04 -06:00
<P><A HREF="/">~ www.trinity.moe</A></P>
<UL>
<LI><A HREF="https://discord.com/app">Discord</A></LI>
<LI><A HREF="https://duckduckgo.com/">DuckDuckGo</A></LI>
<LI><A HREF="https://kingpossum.com:8000/radio.mp3">King Possum Radio</A></LI>
<LI><A HREF="https://mail.cock.li/">Mail</A></LI>
<LI><A HREF="https://text.npr.org/">NPR</A></LI>
<LI><A HREF="https://timewarple.com/">Wordle</A></LI>
<LI><A HREF="https://wttr.in/?m">wttr.in</A></LI>
<LI><A HREF="https://yandex.ru/">Яндекс</A></LI>
<LI><A HREF="https://yewtu.be/">YouTube</A></LI>
</P>
2023-11-22 00:58:31 -07:00
/style.css verbatim
2023-11-22 00:49:07 -07:00
2023-11-22 01:15:34 -07:00
@font-face {
2023-11-22 00:49:07 -07:00
font-family: "unscii16";
src: url("unscii-16.ttf") format("ttf"),
url("unscii-16.woff") format("woff");
}
2023-11-22 01:15:34 -07:00
@media (prefers-color-scheme: light) {
body { background: #eee; color: #000; }
}
2023-11-22 01:12:35 -07:00
@media (prefers-color-scheme: dark) {
2023-11-22 01:15:34 -07:00
a { color: #fff; }
2023-11-22 01:12:35 -07:00
body { background: #000; color: #ffdbdb; }
}
2023-11-22 01:15:34 -07:00
pre { font-family: "unscii16", monospace; }
2023-11-22 00:49:07 -07:00
2023-11-18 15:49:31 -07:00
/blah/2023-11-18.html
One of the details about Slipstream and its universe of media (that I will
eventually get around to expressing) is that computers are largely invisible,
relegated to the spaces in the walls or servers in cities far away.
Technological literacy, like the skill to repair a car or radio, only persists
among the very highly educated so they may design the infrastructure through
which the Restovus live. This is a time that resembles a hundred years ago more
than today, despite being hundreds of years in the future, with minor details
lost in the fog of sight such as entropy being in places reversed. This also
explains airily notions of "magic" and "time travel". Slipstream in particular
is hard to follow in terms of understanding the underlying technologies, but
they're less to understand and more to accept, like all things far from one's
reality.
/blah/2023-11-17.html
installing the internet archive `ia' client
$ python3 -m pip install internetarchive
/blah/2023-11-16.html
: adding a user to feeling.murderu.us, an alpine linux host
https://wiki.alpinelinux.org/wiki/Setting_up_a_new_user
$ scp id_ed25519.pub feeling.murderu.us:/home/trinity/
$ ssh feeling.murderu.us
$ doas su -
# adduser -D user
# adduser user wheel
# mkdir -p /home/user/.ssh
# mv id_ed25519.pub /home/user/
# chown -R user:user /home/user/.ssh
# exit
$ exit
$ exit
2023-11-15 08:48:24 -07:00
/blah/2023-11-15.html
It is hard to cope with happiness. This is the best period of my life ever, bar
none. I have time to learn, discuss, work, clean, I'm wearing clean clothes and
can take regular showers. I don't know how to process it. I've never in my life
been in such a good environment with such good friends and I don't know how to
cope with getting rides everywhere, having meals made for me, my laundry done
by someone else.
I've been very self sufficient for a little while now. I did my laundry at
either a laundromat with money I had earned from work or with my own hands in a
work sink with soap purchased with money I had earned from work. Often the
latter so I could afford to eat food I had prepared with ingredients I had
purchased with money I had earned from work, or food I had prepared during
work. A washing machine doesn't fit in a backpack, nor a dryer, though in a
pinch when walking I could hang clothes off the backpack to get at least a side
of them dry before getting to where I could change out of what I was wearing.
In order to change my clothes I had to find a public bathroom, ideally a Burger
King because I was an employee there but in a pinch if I was fast enough a gas
station would work, put my backpack and clothes on the often dirty floor, and
strip down in a stall or in better cases when a stall was a room a full
restroom. I had to do it fast because gas station attendants and fast food
workers can smell homelessness on you, the hopelessness and stench of hand
washed clothing. It is in the modern era equivalent to smelling addiction and
on occasion I would be accused of taking so long in the bathroom to shoot up
heroin. There was never sympathy or understanding or even acceptance. Because I
was homeless, noticeably so, I was considered subhuman, vermin.
There was no way to take a shower. Gym bathrooms work if you're cisgender or
living in a generally trans-friendly area. I was not. A shower for me was the
bathroom at work, before work, where I used my laundry soap and a bandanna to
swab my arms, face, neck, chest, and armpits. I had to be quick because the
morning workers liked to spread rumors about my being a homeless addict,
an immediately obvious falsehood to those who knew me but slander for those who
didn't. I wasn't troubled that people knew I was homeless because while
violence likes to come for those on the streets, vermin that can be tortured
and killed the same way rats and cockroaches are in apartments, I was charming,
witty, somewhat educated or seemingly, and tried to be as kind as possible to
others. I tried to be a representable member of the unhoused and of the
trannies, to appeal to those cretins with their ceilings and simpler thoughts.
In order to change my clothes, if in the apartment, I take my clothes off and
put different clothes on. In order to take a shower I go to the bathroom, take
my clothes off, and turn the shower tap. Less pain, less ink. Can I get used to
this? Should I? When I see Subarus outside I wonder if I could have survived
the winter. It was cold as fuck sleeping outside in October. Sometimes I wonder
if I did die in that car. If this is heaven. I wonder if I did die in that car
and so now if I am a different person than who entered. I wonder if Toni is
still where I left her in the parking lot, if she's rotting from disuse and if
the cardboard I used to seal the rear window is molding. The picture of Dorian
Grey.
/blah/2023-11-12.html
Happy birthday my dears.
Oedipus
1 Iam nocte Titan dubius expulsa redit
now night Titan doubt expel I return
1 I return at night now to dubious Titan
2 et nube maestus squalida exoritur iubar,
& to cloud sad foul become radiance
2 and to the foul, sorry smog that had become its radiance,
3 lumenque flamma triste luctifica gerens
4 prospiciet avida peste solatas domos,
5 stragemque quam nox fecit ostendet dies.
2023-11-08 11:36:10 -07:00
/blah/2023-11-06.html
2023-07-15 21:44:35 -06:00
2023-11-08 11:36:10 -07:00
Some stuff is failing in Rust. I'll put this stuff here which is part of the
Hearth running processs as a note but I still don't have this working. I got a
job and have been working the last couple days.
2023-07-15 21:44:35 -06:00
2023-11-08 11:36:10 -07:00
$ cargo install cargo-update
$ cargo install cargo-xtask
$ rustup target add wasm32-unknown-unknown
$ git clone https://github.com/hearth-rs/kindling
$ sh -c 'cd kindling; cargo build-root'
I don't remember what I was doing on here. I see these errors:
= note: clang-16: warning: argument unused during compilation: '-no-pie' [-Wu
ld: error: unable to find library -lssl
ld: error: unable to find library -lcrypto
ld: error: unable to find library -lz
clang-16: error: linker command failed with exit code 1 (use -v to se
In installing cargo-update, so I guess I'll try
# apk add openssl-devel # did nothing; is installed
# apk add libssl3 # did nothing; is installed
Okay I give up. Whatever.
--> src/main.rs:23:48
|
23 | if let Ok(val) = if let Ok(val) = reqwest::blocking::get(jasima_remote
|
Cargo.toml:
- reqwest = "0.11"
+ request = { version = "0.11", features = ["blocking"] }
/blah/2023-11-03.html
Rest in peace Jayden Cho-Sargent. 2003-2016.
[05:33] q66: sanchan: that's not a solution and you should not do that
[05:33] q66: libgcc-chimera exists purely for compatibility with prebuilt
binary software
[05:34] q66: you should fix whatever to not link gcc_s instead
FROM: ckie
TO: trinity
SUBJECT: why do thaaattt
DATE: 2023-11-03 05:36:26 +0200
why do thaaattttttttttttttttttttttttt
~>~:::
😭
why do that
Why OD THAT ~???
Why Do that.
That's so evil trinity, you could . Like., Not do that. Please?
[cirno_actually_plays_zelda_in_terminal.png]
WH??? y...y....
🥺 🥹 🥹 🥹 😭
x∅x∅
[return address]
ne hone ronnewrn nenh..n rkmrawr ) :
WA waoo ohoooo o
w hy yyy mREAWmmmmm
cc [...] says u might'v listenef in so hi u hearxd me ig maybe
( only if fae not wearin heapdohn )
FROM: trinity
TO: ckie
SUBJECT: Re: why do thaaattt
DATE: 2023-11-03 07:09:06 +0000
do i have permission to put this on my blah https://trinity.moe/blah/
FROM: ckie
TO: trinity
SUBJECT: Re: why do thaaattt
DATE: 2023-11-03 14:31:44 +0000
sure maybe leave the attachment out it's meow [...]
[...]
Friendship formed! Hell yeah!
Readers should e-mail me stuff I can respond to on my blah like I'm a real
Buzzfeed journalist or as if I was writing the next Dracula. Epistular
storytelling.
$ ssh root@all.evil
ssh: Could not resolve hostname all.evil: Name does not resolve
allevil.org is available but I don't have money to blow on domains right now.
E-mailing entities like ckie is delightful. What is "e-mail" in toki pona?
toki pona la E-mail pi toki inli li seme? Maybe toki lipu kiwen - metal
documented speech? How can uncertainty be represented in toki pona?
They discussed continental philosophy last night at Sangha. I'm gonna need to
read Anti-Oedipus. Or actually Descartes.
There's a project some friends of mine are working on called Hearth. It just
merged in a sister project, Flue, last night. It's written in extraordinarily
clean Rust and is the reason I'm learning Rust. It's going to be a big deal.
$ git clone https://github.com/hearth-rs/hearth
$ cd hearth
$ cargo build
error: failed to run custom build command for `msdfgen-sys v0.2.1`
Caused by:
process didn't exit successfully: `/home/trinity/hearth/target/debug/build/ms
dfgen-sys-3ee3a8b654b57797/build-script-build` (exit status: 101)
--- stderr
thread 'main' panicked at /home/trinity/.cargo/registry/src/index.crates.io-6
f17d22bba15001f/msdfgen-sys-0.2.1/build.rs:33:13:
No prebuilt bindings. Try use `bindgen` feature.
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
$ cp hearth/crates/font-mud/Cargo.toml hearth/crates/font-mud/Cargo.toml.orig
$ <hearth/crates/font-mud/Cargo.toml >hearth/crates/font-mud/Cargo.toml.orig \
sed '8c msdfgen = {version = "0.2.1", default-features = false, features = ["bindgen", "ttf-parser", "png"]}'
$ cargo build
error: failed to run custom build command for `msdfgen-sys v0.2.1`
Caused by:
process didn't exit successfully: `/home/trinity/hearth/target/debug/build/ms
dfgen-sys-80b011bd235771f0/build-script-build` (exit status: 101)
--- stdout
cargo:rerun-if-env-changed=TARGET_SYSROOT
cargo:rerun-if-env-changed=CXX_STDLIB
--- stderr
thread 'main' panicked at /home/trinity/.cargo/registry/src/index.crates.io-6
f17d22bba15001f/bindgen-0.63.0/./lib.rs:2338:31:
Unable to find libclang: "the `libclang` shared library at /usr/lib/libclang.
so.16.0.6 could not be opened: Dynamic loading not supported"
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
$ doas su -
# apk add clang-devel
$ cargo build
$ # [no dice]
2023-07-15 21:44:35 -06:00
2023-11-03 00:52:18 -06:00
/blah/2023-11-02.html
$ ldconfig -p
$
Oh, right. Hm.
https://pkgs.chimera-linux.org/packages > contents > "ldconfig"
ldconfig belongs to apk:musl-progs.
# apk fix musl-progs
fetch https://repo.chimera-linux.org/current/contrib/aarch64/APKINDEX.tar.gz
fetch https://repo.chimera-linux.org/current/main/aarch64/APKINDEX.tar.gz
(1/1) Reinstalling musl-progs (1.2.4-r4)
OK: 2623 MiB in 982 packages
# ls -l $(which ldconfig)
lrwxrwxrwx 1 root root 4 Nov 2 09:48 /bin/ldconfig -> true
Hm.
# unlink /bin/ldconfig
# ls -l $(which ldconfig)
lrwxrwxrwx 1 root root 4 Nov 2 09:49 /bin/ldconfig -> true
Uh. I guess I'll ask OFTC#chimera-linux.
This being caused by a system upgrade would explain the initial timestamp of
yesterday at 1700, when probably I ran `# apk -U upgrade` out of habit. I can't
find much on the package browser or anything so I guess I'll just wait for
somepony to get back to me on IRC.
[09:52] sanchan: hey how come ldconfig is linked to true by musl-progs?
[09:53] sanchan: i think this happened after a recent update. i'm on aarch64
but a $ unlink /bin/ldconfig; doas apk fix musl-progs re-links
ldconfig->true
[10:17] q66: it's supposed to be, what else would it be
[10:18] q66: it always was too
[10:46] sanchan: i'm trying to get some rust stuff working and cargo is failing
to compile a C dependency for lack of -lgcc_s
[10:46] sanchan: i installed gcc-chimera or whatever it's called but still no
dice
[10:47] q66: okay
[10:48] sanchan: ,/lib/libgcc_s.so.1 exists so it seems like an ldconfig issue,
online troubleshooting said ldconfig -p might tell me what's
going on
[10:49] sanchan: this isn't my area of expertise
[10:49] q66: i don't understand how you get to that conclusion
[10:49] q66: ldconfig isn't a thing with musl
[10:49] q66: libgcc_s isn't a thing with compiler-rt
[10:49] sanchan: blindly following troubleshooting guides
[10:49] sanchan: i see
[10:51] q66: glibc has a dynamic linker cache for library lookups, ldconfig
controls that cache
[10:51] q66: musl doesn't have a cache
[10:52] q66: that's why ldconfig is a symlink to true
[10:52] q66: so that when something hardcodes calling it, it's a noop
[10:54] sanchan: interesting
[10:55] sanchan: cargo must just not be checking the right dirs or something.
i'll play around with it
[10:55] sanchan: thank you!
[10:55] q66: <@q66> libgcc_s isn't a thing with compiler_rt
[10:55] q66: something hardcoding lgcc_s is wrong
[10:55] q66: it shouldn't be doing that
The Chimera Linux IRC channel is really valuable for figuring out system
weirdness but I always feel weird bugging the Professionals^TM for my awful
computer issues.
Rust tickles my brain so I'm gonna work on that instead of this.
Rust says: Package openssl was not found in the pkg-config search path.
I say: # apk add openssl-devel
And so it worked.
Rust says: = note: ld: error: unable to find library -lgcc_s
I say: Shit.
Okay, so this is an ld error (actually an error in that -lgcc_s shouldn't be
required but whatever).
fn jasima_get() -> Result<json::JsonValue> {
if let Ok(val) = if let Ok(val) = reqwest::blocking::get(jasima_remote()) {
let file = File::create(jasima_local());
file.write_all(val.text());
Ok(val.text())
} else if let Ok(val) = read_to_string(jasima_local()) {
Ok(val)
} else {
Err("Unavailable")
} {
json::parse(val)
} else {
Err("Unavailable")
}
}
MARS: That should compile, but also, what the fuck is wrong with you?
I'm never going back to C.
Marcie checked out my cargo stuff and said "Hmm. Wack" or the equivalent dog
noise.
Burgered king; regiphagia.
Beat Mars at 2048. I feel accomplished. Also I got a job today.
I am just sort of here. I don't live here or anywhere else or anywhere in
particular and just come with my hosts when they do cool stuff and chip in
however I can in terms of housework or finances. This is a really pleasing
existence but I can't help thinking I can and should be doing more.
$ ld -L/usr/lib -lgcc_s
ld: error: unable to find library -lgcc_s
https://stackoverflow.com/questions/335928/ld-cannot-find-an-existing-library
>A quick hack is to symlink libmagic.so.1 to libmagic.so
# ln -s /usr/lib/libgcc_s.so.1 /usr/lib/libgcc_s.so
# ^D
$ ld -L/usr/lib -lgcc_s
ld: warning: cannot find entry symbol _start; not setting start address
You're fucking shitting me.
We're all just chilling in Samsara.
2023-11-01 23:39:57 -06:00
/blah/2023-11-01.html
Rabbit rabbit.
$ doas su -
# apk del rust cargo
# ^D
$ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf >rustup.sh
2023-11-01 23:41:30 -06:00
$ more <rustup.sh # DO NOT PIPE CURL INTO SH!!!
2023-11-01 23:39:57 -06:00
$ sh rustup.sh
I went with a default installation because whatever. I just hope this doesn't
fuck up my system because I quite like my system as it's installed.
$ . .cargo/env
$ rustc --version
Error loading shared library libgcc_s.so.1: No such file or directory (needed b
Error loading shared library libgcc_s.so.1: No such file or directory (needed b
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Error relocating /home/trinity/.rustup/toolchains/stable-aarch64-unknown-linux-
Hmmm.
$ doas su -
# apk add libgcc-chimera
# ^D
$ rustc --version
rustc 1.73.0 (cc66ad468 2023-10-03)
Cool.
Consultation with hosts: print!("{}", var); uses the display trait of var while
print!("{:?}", var); uses the debug trait of var.
At night I like to look around and feel the air on my skin. The air is still
but flowing because this place is well ventilated yet well heated and feels
nice, is a nice temperature. I like to look around at the walls and how they
blend into the ceiling, distinct only by texture and shade. There are no gaps
between them. Nor between the wall and the floor. The walls are clean here. So
is the floor. So is the ceiling. There are fire alarms and carbon monoxide
detectors and blinds on the windows and the air is nice but most importantly
the space is so big. A month ago I was waking up in a car, freezing. I was
freezing because the car had nearly no insulation and nearly no ventilation, so
my breath would condense onto any object that had some warmth to give it like
the windows or my blankets or sleeping bag. The condensation would cool me in
the night. I would wake up often in the very early morning hours shivering and
unable to get warm, kept awake by Kami insisting we not fall asleep or we could
die of hypothermia. I'd read Alias Grace or another book on my tablet, the
glass cold to the touch and foggy, wishing I was somewhere else, somewhere far
away where I couldn't touch the clean ceiling even if I stretched my arm out to
as far away as my fingertips could reach. Now I am here, the place of which I
dreamed. The walls are so far away and yet the air here, so much air, is so
warm. It's comfortable. I'm laying on a couch which is comfortable and using my
laptop comfortably and using wall electricity and laying in warmth and there's
a sink in this room or adjacent to get water on demand and there is fucking
laundry! I can do my fucking laundry! I can take a shower when I wish to! And
every night out of joy I cry myself to sleep. I sob like a little piss baby,
muffling my cries with my mouth or my will or when those fail the sleeping bag
in which I lay because I'm terrified that I will be back on the street again
and without the car and unable to get comfortable on hard surfaces anymore.
I met Toni in February, a 1999 green Subaru Forester or Forrester or something.
She was driven by my sidekick and in fine shape except for some difficulties
making it up hills. At the time my sidekick was considerably less so and I was
coming off some bad decisions with drugs and we were discussing some stuff and
I was in love with that car but never thought I would end up living in it. The
best weekend I'd ever lived.
I met Toni in a different light in September or so. I'd slept near a pile of
nearly unidentifiable corpses, the same hill about a hundred paces away, and
then went to work and pretended I hadn't. Then I scootered a ways down a hill
and up another to a different Burger King than the one at which I had worked
and crawled through the rear of the car, fringed with broken glass which did
cut me once or twice, and slept in the passenger seat in my sleeping bag. It
wasn't comfortable compared to where I am now but it was better than any of the
places I'd tried to sleep over that week and I got nine or so hours. I woke up
and went to work, the other Burger King, chipper. None of my coworkers knew I
was homeless but I didn't hide it. When I was homeless (technically I still am)
in Lewiston I wanted to actually let people know I was homeless because I
dispelled a lot of classic stereotypes about homeless people - I was educated,
sober, and employed. But rent money is not simply money but money in a bulk I
didn't have. The purpose of that job was to get the money to get where I am now
but I still can't believe I am actually here.
Sometimes when I close my eyes I see them, the corpses torn apart by something
of the forest, and I feel the exhaustion that rooted itself into my bones. And
I wake up and I'm hear under a clean ceiling and the walls are so far away. In
Toni I couldn't sit up without hitting my head, I had to duck or bend my back
somehow. I couldn't extend my legs. Here I can extend my legs however I want in
whatever direction I want. And pee as soon as I wake up.
I feel so fucked. My body is safe but my mind will not stop feeling like there
is something from which to run. I can't forget what I saw and what I felt and
who I was and what I did and being chased and losing trails and playing with
trails and tracers and the falling down hills and sirens and sillhouettes in
red and blue and making my way through dark alleys full of knives and shopping
knives and losing knives and cutting, others and myself, and biting belts as I
repaired my own mechanical faults and shocking myself until I forgot why and
waking up to screaming and waking up to screaming and waking up to screaming.
This is peace. What is peace?
Peace is the two library books I've read and returned since getting a library
card here. What If (2014) and What If 2 (2022). Neither really books I needed
to read or was recommended. Just books I wanted to enjoy. Peace is learning
Rust to contribute to friends' projects, using my laptop, drinking clean water
straight from the tap. Peace is riding in the car behind a few of the smartest
people I know who seem happy I'm here and safe, or at least that my body is
safe, but I don't tell them about the memories I can't get out of my head, just
the memories that haunt me but that are allowed to escape, to be forgotten
momentarily, that alone haunt my hosts. I still feel like I'm in the car
sometimes. I feel the old seat felt against the backs of my arms as I come to
from my sleeping bag. I see my breath fog in front of me. I don't but I do, I
see without seeing. Kami shakes me until I wake up. It's not safe. But it's
never safe, it's never safe because I'm still in the car and the lights are
pouring through the windows but it's the sun's light and it's through apartment
windows and it is safe here but it's not safe because the light is pouring
through the windows and I can be seen and someone is about to start yelling
that they will kill me because they don't see me as human and this was the only
secluded place I could find but it's not secluded because it's a floor behind a
locked door but it's not secluded so it's not safe and I'm taking up too much
space so my hosts are going to hate me but they tell me I can take up more
space certainly but I'm taking up too much space.
And I just want to go to sleep. I want peace. Peace was taken from me by those
who wage war on the proletariat. Whatever. I'm too tired. Could this even be
real? What happy existence? Am I really allowed to relax? Isn't it a trick?
o tenpo pimejo pona
= note: ld: error: unable to find library -lgcc_s
clang-16: error: linker command failed with exit code 1 (use -v to se
e invocation)
error: could not compile `clap_derive` (lib) due to previous error
# apk add gcc-aarch64-none-elf
# ^D
$ cargo run
Compiling clap_derive v4.4.7
error: linking with `cc` failed: exit status: 1
|
= note: LC_ALL="C" PATH="/home/trinity/.rustup/toolchains/stable-aarch64-unkn
[many lines abridged]
Okay, so Rust is having issues with the lack of gcc here. It kinda sucks that
clap is using C stuff. I'm not sure if I should get this C stuff working first
or switch to a pure Rust argument parser.
Looking at this command line, it's LC_ALL=C PATH=[...] VSLANG=1033 cc [and then
a whole bunch of bogus] [cflags] -lgcc_s lc [and then more cflags]. What
provides gcc_s?
$ ls /lib | grep gcc
drwxr-xr-x root root 4.0 KB Fri Sep 8 05:26:01 2023 gcc
.rwxr-xr-x root root 70 KB Wed Oct 25 16:41:53 2023 libgcc_s.so.1
Presumably libgcc_s.so.1 was put there by libgcc-chimera (I'm not gonna bother
checking). I'm just gonna search this error text because I'm not sure why the C
compiler wouldn't be checking /lib.
$ ldconfig -p
$ ldconfig
$ ldconfig --help
$ echo $?
0
$ ls $(which ldconfig)
lrwxrwxrwx root root 4 B Tue Oct 31 17:08:41 2023 🔖 /bin/ldconfig ⇒ true
Hahahahhahahaha. What. Where's ldconfig?!?!?!?!?!?!! I would assume this is the
root of the issue at hand.
At my most boring I have wished for a life worse than the one I have now. This
is the most enjoyable my life has ever been and yet it is unrelentingly
chaotic and I don't know how to get the pieces to fit. I feel irredeemable and
unable to relate to anyone or anything except perhaps a pebble being kicked
across the asphalt of the road or leaves falling off the trees, ripening,
wrinkling, from a soothing green to a reminder of the loss of youth.
One day I expected rain overnight so I slept in the passenger seat so I could
see the rain fall down the windshield. It was a view I had romanticized in my
head, one I wanted to pause and view for eternity. My sidekick did not. They
have places to go and things to do naturally so when it happened that we were
caught in rain and got to see rain fall over Toni we watched for a moment or
two and then drove onward toward the future, beckoning it without letting it
take its time. I was excited to be able to take this moment, though
unfortunately in solitude, at the pace by which I wanted to experience it. So I
fell asleep against the bitter cold of that parking lot and awoke to the pitter
patter of droplets against the glass before me and that was peaceful and I was
for a moment happy. But then I heard a colder, shriller tap from behind, and
turned around to find the cover for the rear window I'd fashioned out of
cardboard and plastic leaking by the seams, forming a puddle that would
inevitably fill with mildew and rot. I stared at this and realized my time in
Toni was limited. Toni would mildew, rot, and disintegrate, as had all my
relationships and all of my chances at housing.
After work I got back to the car and the puddle in the back was bad but in
getting into the car I had left my wet boots on the floor of the passenger seat
so the back was the only place in which I could sleep. My head curved away from
the active dripping I heard the clack clack behind me of rain making its way
through half a dozen layers of duct tape and mockig me before I sat up and just
fucking broke down. I couldn't stay in Toni but couldn't stay anywhere else and
I was out of options and just so fucking tired and cold and damp. There was no
one to comfort me and no solace to be had. My sidekick had left for another
style of adventure, everyone in my life had been either implicitly or
explicitly transphobic towards me, and I had inconsistent access to electricity
and clean water and hadn't showered in a week. It was the lowest point of my
life. To be wet and unable to be dry, to be cold and unable to be warm, to be
so tired and unable to sleep, to be so alone with nobody left. I sobbed like a
baby and didn't care who could hear me, the rain covered the sound and whomever
it revealed my cries could kill me for all I cared - I did genuinely want
someone to just open the car door and stab me, clutch me in a warm embrace and
spill my hot blood over me so I could just be warm for one fatal instant.
Nobody came. I fell asleep.
And from this dream I wake up to a ceiling so high and a floor so dry and air
unknowing of the sound of dripping agony but acclimated to my sobs which,
though muffled, do still call silently into the night after my hosts have
hopefully fallen asleep. And I don't know how to process being thrown from the
frigid shackles in which I'd been locked into the shocking freedom of domestic
cookie cutter monotony. I don't know how to fathom the stillness. I no longer
need to run but my muscles refuse to atrophy, instead slowly cycling in my
slumber lest I rise back to the street and to another abandoned car in another
parking lot. The gray pavement on which parking lots are drawn knows me better
than any four walls. Ceiling is not my usual blanket.
2023-10-31 22:57:48 -06:00
/blah/2023-10-31.html
: trinity writes a rust hello world
Where I now find myself living (though to say I live here would be a lie) I am
surrounded by a couple of the smartest people I know, and through some days of
wearing me down I am donning the programmer socks and writing a Rust Hello
World program.
I am now actually wearing thigh highs.
# apk add rust
I don't actually know how to get the Rust build system going but this seems
like the best option so I'll go with this which is already packaged for
Chimera.
Oh, I'll need cargo(1) too.
# apk add cargo
One of my friends built the Rust book PDF for me which is nice because I can
consult it on my tablet while programming on the laptop.
>Foreword
>It wasn't always so clear, but the Rust programming language is fundamentally
>about *empowerment*...
Okay, I get why so many chan-types are so against Rust. But seeing how people
who know Rust use Rust I am sort of starting to get it. It's a high level
language that can be used well for systems programming, basically?
>To check whether you have Rust installed correctly, open a shell and enter
>this line:
$ rustc --version
Okay.
rustc 1.73.0 (cc66ad468 2023-10-03) (Chimera Linux)
Awesome!
I don't have rustup so I can't read the Rust docs but I'll probably be around a
web browser when programming so I think it's fine?
Rust wants me to make a Hello, World! to start, but that's not super practical
code for me. I think I'm gonna start smaller and make a true(1) implementation.
```rs
fn main() {
}
```
Works.
```rs
```
Does not work; there's no `main` function so the program doesn't know how to
execute:
error[E0601]: `main` function not found in crate `r#true`
|
= note: consider adding a `main` function to `true.rs`
error: aborting due to previous error
For more information about this error, try `rustc --explain E0601`.
I really like the `rustc --explain` thing, this reminds me of Shellcheck.
Compare to the clang error message when compiling the same file:
ld: error: undefined symbol: main
>>> referenced by crt1.c:18 (../crt/crt1.c:18)
>>> /lib/Scrt1.o:(_start_c)
>>> referenced by crt1.c:18 (../crt/crt1.c:18)
>>> /lib/Scrt1.o:(_start_c)
clang-16: error: linker command failed with exit code 1 (use -v to see invocati
on)
There's a lot going on here that the beginner (or even proficient C programmer)
doesn't know and doesn't know how to start to know.
Alright, what about this:
```rs
fn main();
```
error: free function without a body
--> true.rs:1:1
|
1 | fn main();
| ^^^^^^^^^-
| |
2023-11-01 23:39:57 -06:00
| help: provide a definition for the function: `{ <body> }`
2023-10-31 22:57:48 -06:00
error: aborting due to previous error
Okay, so `fn main() { }` seems to be the simplest way to do this. How do I
return an exit code explicitly, though, so I can make a false(1)
implementation?
It was at this point one of the people I know who knows Rust came by and I told
them how I was coming along and they were really supportive of my very meager
progress.
I found some stuff here:
https://doc.rust-lang.org/std/process/struct.ExitCode.html
So instead of understanding everything that's happening I'll try just plugging
some code in, StackOverflow style:
```rs
use std::process::ExitCode;
fn main() -> ExitCode {
ExitCode::from(0)
}
```
TRIN: Can I name you in my blog? Or should I keep saying "it was at this point
one of the people with which I'm staying walked through on its pacing
route"?
MARS: You can say Mars, that's fine.
TRIN: So you can put a constant on the last line of a function
without a trailing semicolon to return that value?
MARS [paraphrased]: Yeah. It's less to say, "return that value" than it is to
say "this function has this value". Rust is a functional
language disguised as a procedural language.
Okay, that fucks. ExitCode has a SUCCESS constant I could also use, meaning the
equivalent to C's `E_OK` or whatever the constant provided by stdio.h is, but
I'm wary about using a library-defined constant less it changes because POSIX
does not change (much). So I think this is a good Rust true(1) implementation.
It can be found in src/true/true.rs. And src/false/false.rs:
```rs
use std::process::ExitCode;
fn main() -> ExitCode {
ExitCode::from(1)
}
```
I just had supper which was delicious, vegan hot dogs and some macaroni my
hosts had left over. They are really delightful.
Now I wanna make echo(1). This will serve as my HelloWorld as it uses stdout
printing and, beyond the usual HelloWorld, very light argument handling. The
book mentions cargo(1) which I will be using but for now I'll stick to single
.rs files because echo(1) shouldn't have any dependencies.
It looks like std::env will give me stuff relating to arguments, std::env::args
or std::env::args_os. According to StackOverflow the difference is in typing.
I've heard docs.rs has some documentation but looking at the site it looks like
it only documents third party cargo crates, which are like C libraries but (I
think) included per-project so as to not muck up the system (I hope). I looked
up "rust std env" and found docs.rust-lang.org which has /std/env which was
what I needed.
The Rust documentation summarizes more thoroughly but, basically, an OsString,
the type instances of which are iterated through by (oh my god this sentence is
a prepositional mess I give up) an OsString is a fat pointer or whatever the
Rust equivalent is while a String is probably just a nul-terminated sequence of
bytes. Implementation-defined of course but Rust documentation notes that
OsString should be converted to a CStr before being used in UNIX system calls.
A nice detail I'm happy to know! I shouldn't have to do any string conversion;
echo(1) should spit out *exactly* what it's given (opinion; implementations
differ) just with space delimiting and newline ending. Hopefully there's a way
for me to print out an OsString without conversion or anything. I need to `use
std::ffi::{OsStr, OsString};` or something like that I think but I'm gonna try
with just `use std::env;` at first.
2023-11-01 23:39:57 -06:00
The use of echo(1) is defined for argc<2 (print a newline alone; argc can be
2023-10-31 22:57:48 -06:00
zero without consequence here) and argc>=2, so it won't be necessary to return
a value from main(), Rust can just use the default successful value.
It looks like OsStr and OsString are from std::ffi which provides tools for FFI
bindings. This also notes that the Rust String is also fat and not nul
-terminated. It looks like the difference is that OsString represents an "owned
platform string" and an OsStr represents a "borrowed reference to a platform
string". This, I think, relates to memory management and a Borrow Checker
(spooky) about which I haven't gotten around to learning. Rust's std::ffi is
fascinating but while learning Rust I wanna be doing things oxidatiously or
whatever and not doing a thin Rust wrapper and then my usual C bullshit. One of
the things about Rust that excites me is that it seems to be able to make
guarantees about project stability C can't but I don't know much about that
except the stuff Mars has shown me that I don't quite understand.
So how do I iterate through env::args_os? According to its reference page,
```rs
use std::env;
fn main() {
for argument in env::args_os() {
println!("{argument:?}");
}
}
```
Wow! What the fuck is a println!? According to the Rust book all we need to
know is that the `!` suffix is some Hungarian notation esque marker that
println!() is a macro. The Rust documentation provides a definition, I think,
of println:
```rs
macro_rules! println {
() => { ... };
($($arg:tt)*) => { ... };
}
```
I think the `{ ... }` notes abridged portions and the [...]` => { ... };`
indicates that one case is triggered by println receiving no arguments and the
other case is triggered by println receiving any other amount of arguments. I
don't know if this is actual code or anything but yeah uh... Rust macros. Cool.
What I was actually interested in is how to print without a newline. I think
there's a macro for that too.
```rs
macro_rules! print {
($($arg:tt)*) => { ... };
}
```
Interesting. The documentation notes:
>Prints to the standard output.
>
>Equivalent to the `println!` macro except that a newline is not printed at the
>end of the message.
>Note that stdout is frequently line-buffered by default so it may be necessary
>to use `io::stdout().flush()` to ensure the output is emitted immediately.
I like the note that `fflush(stdout);` is needed because this bites C beginners
a lot when writing stuff that does something like `printf("> ");
fgets([...]);`.
I see stuff in here about `.unwrap()` and `stdout().lock()` but I hope I don't
need that because I don't understand it yet. I'm just gonna use print!. So how
2023-11-01 23:39:57 -06:00
do I print! an OsString? And how do I handle argc<2?
2023-10-31 22:57:48 -06:00
The book chapter 12 actually touches on a lot of this and I stumbled upon it
looking at std::env stuff. Here's a test I can run from the book:
```rs
use std::env;
fn main() {
2023-11-01 23:39:57 -06:00
let args: Vec<String> = env::args().collect();
2023-10-31 22:57:48 -06:00
dbg!(args);
}
```
I'll modify that a little:
```rs
use std::env;
fn main() {
2023-11-01 23:39:57 -06:00
let args: Vec<OsString> = env::args().collect();
2023-10-31 22:57:48 -06:00
dbg!(args);
}
```
$ rustc echo.rs
error[E0412]: cannot find type `OsString` in this scope
--> echo.rs:4:19
|
2023-11-01 23:39:57 -06:00
4 | let args: Vec<OsString> = env::args().collect();
2023-10-31 22:57:48 -06:00
| ^^^^^^^^
--> /builddir/rust-1.73.0/library/alloc/src/string.rs:365:1
|
= note: similarly named struct `String` defined here
|
help: a struct with a similar name exists
|
2023-11-01 23:39:57 -06:00
4 | let args: Vec<String> = env::args().collect();
2023-10-31 22:57:48 -06:00
| ~~~~~~
help: consider importing this struct
|
1 + use std::ffi::OsString;
|
error: aborting due to previous error
For more information about this error, try `rustc --explain E0412`.
Okay.
2023-11-01 23:39:57 -06:00
$ sed -e '1a use std::ffi::OsString' <echo.rs >echo.2.rs
2023-10-31 22:57:48 -06:00
$ rustc echo.2.rs
2023-11-01 23:39:57 -06:00
error[E0277]: a value of type `Vec<OsString>` cannot be built from an iterator
2023-10-31 23:00:08 -06:00
over elements of type `String`
2023-10-31 22:57:48 -06:00
--> echo.rs:5:43
|
2023-11-01 23:39:57 -06:00
5 | let args: Vec<OsString> = env::args().collect();
| ^^^^^^^ value of type `Vec<OsStri
ng>` cannot be built from `std::iter::Iterator<Item=String>`
2023-10-31 22:57:48 -06:00
|
2023-11-01 23:39:57 -06:00
= help: the trait `FromIterator<String>` is not implemented for `Vec<OsString>`
= help: the trait `FromIterator<T>` is implemented for `Vec<T>`
2023-10-31 22:57:48 -06:00
note: required by a bound in `collect`
--> /builddir/rust-1.73.0/library/core/src/iter/traits/iterator.rs:2049:5
error: aborting due to previous error
For more information about this error, try `rustc --explain E0277`
Oh shit, I forgot to change env::args to env::os_args.
2023-11-01 23:39:57 -06:00
$ sed -e '5s.args.os_args.' <echo.2.rs >echo.rs
2023-10-31 22:57:48 -06:00
$ rustc echo.rs
error[E0425]: cannot find function `os_args` in module `env`
--> echo.rs:5:36
|
2023-11-01 23:39:57 -06:00
5 | let args: Vec<OsString> = env::os_args().collect();
2023-10-31 23:00:08 -06:00
| ^^^^^^^ help: a function with a similar
name exists: `args_os`
2023-10-31 22:57:48 -06:00
--> /builddir/rust-1.73.0/library/std/src/env.rs:793:1
|
= note: similarly named function `args_os` defined here
error: aborting due to previous error
For more information about this error, try `rustc --explain E0425`.
Oops.
2023-11-01 23:39:57 -06:00
$ sed -e '5s.os_args.args_os.' <echo.rs >echo.2.rs
2023-10-31 22:57:48 -06:00
$ rustc echo.2.rs
$
So presumably it compiled.
$ ./echo
[echo.rs:6] args = [
"./echo",
]
Okay, that debug macro is kinda awesome. The 500K binary makes me kinda weirded
out, what's the size of the actual echo.c (which is the complete program) when
compiled for arm64 (my current architecture)?
.rwxr-xr-x trinity trinity 9.8 KB Tue Oct 31 21:01:27 2023 🏗 a.out
This output is prettier than usual because I'm using lsd(1), a reimplementation
of the standard POSIX ls(1). My girlfriend in Florida uses it and it's really
pleasant and color codes some stuff in a way that's very useful.
10K is a lot less than half a meg. I wonder if Rust is statically compiling
versus relying on system library stuff. I don't wanna bother looking this up so
I'll go ask Mars.
Its door is closed so I'll look this up. "why are rust binaries so big" popped
up a StackOverflow post that started with "Rust uses static linking" so that
answers my question. I would assume a statically linked C executable would be
about that big, from memory I think this is true but don't wanna bother testing
because I don't have the energy to look up clang arguments.
$ cc -static echo.c
ld: error: unable to find library -l:libunwind.a
ld: error: unable to find library -latomic
ld: error: unable to find library -lc
clang-16: error: linker command failed with exit code 1 (use -v to see invocati
on)
Yeah, I'm not sorting that out, I'm not building C stuff on here to distribute.
I think vec.len() will tell me how many arguments I've received?
```rs
use std::env;
use std::ffi::OsString;
fn main() {
2023-11-01 23:39:57 -06:00
let args: Vec<OsString> = env::args_os().collect();
2023-10-31 22:57:48 -06:00
dbg!(args);
dbg!(args.len());
}
```
$ rm echo.2.rs
$ rustc echo.rs
error[E0382]: borrow of moved value: `args`
--> echo.rs:7:10
|
2023-11-01 23:39:57 -06:00
5 | let args: Vec<OsString> = env::args_os().collect();
| ---- move occurs because `args` has type `Vec<OsString>`, which doe
2023-10-31 22:57:48 -06:00
s not implement the `Copy` trait
6 | dbg!(args);
| ---------- value moved here
7 | dbg!(args.len());
| ^^^^ value borrowed here after move
|
error: aborting due to previous error
For more information about this error, try `rustc --explain E0382`.
Okay, so now I'm talking to the borrow checker. Maybe if I assign the length to
a variable it'll work? I don't know what I'm doing.
```rs
use std::env::args_os;
use std::ffi::OsString;
fn main() {
2023-11-01 23:39:57 -06:00
let args: Vec<OsString> = args_os().collect();
2023-10-31 22:57:48 -06:00
let argc = args.len();
dbg!(args);
dbg!(argc);
}
```
$ rustc echo.rs
$ ./echo
[echo.rs:7] args = [
"./echo",
]
[echo.rs:8] argc = 1
Okay. I don't know why that works but it does. Something to do with memory
management. That's not a big deal to me because I understand when I do fucky
wucks like
```py
try: print("c = " + str(
(float(input("a = ")) ** 2
+ float(input("b = ")) ** 2)
** 0.5))
except ValueError: print("input must be a number")
except: pass
```
there's a lot of memory shit happening behind the scenes I don't have to worry
about, unlike in the equivalent C where I would have to handle buffer overflows
(I personally would toss the excess and skip to the newline) and string to
float conversion. Rust requiring some steps Python wouldn't makes sense to me
because while Rust is less pedantic it doesn't lie to me (much).
Let me try something now:
```rs
use std::env::args_os;
use std::ffi::OsString;
fn main() {
2023-11-01 23:39:57 -06:00
let argv: Vec<OsString> = args_os.collect();
2023-10-31 22:57:48 -06:00
let argc = argv.len();
2023-11-01 23:39:57 -06:00
if argc < 2 {
2023-10-31 22:57:48 -06:00
println!();
} else {
dbg!(argv);
}
}
```
$ rustc echo.rs
$ ./echo | hexdump -C
00000000 0a |.|
00000001
$ ./echo piss shit
[echo.rs:11] argv = [
"./echo",
"piss",
"shit",
]
Cool stuff. I don't think Rust has ternaries so I'm not gonna be able to do
language tricks to make the code really compact like my C implementation:
```c
2023-11-01 23:39:57 -06:00
#include <stdio.h> /* NULL, fprintf(3), putc(3) */
#include <stdlib.h> /* stdout */
#include <sysexits.h> /* EX_OK */
2023-10-31 22:57:48 -06:00
int main(int argc, char **argv){
if(*argv == NULL || *++argv == NULL){
argc = 1;
putc('\n', stdout);
}
while(--argc)
fprintf(stdout, "%s%c", *(argv++), argc > 1 ? ' ' : '\n');
return EX_OK;
}
```
Something I really like is that whereas in C I note what I use from headers in
comments like a total tool, Rust lets me bring individual structures and
functions in so I can keep track of my dependencies in code alone.
I wonder if I can
```rs
use std::env::args_os;
fn main() {
let argc = args_os().collect().len();
dbg!(argc);
}
```
$ rustc echo.rs
error[E0282]: type annotations needed
--> echo.rs:5:26
|
4 | let argc = args_os().collect().len();
| ^^^^^^^ cannot infer type of the type parameter `B
` declared on the method `collect`
|
help: consider specifying the generic argument
|
2023-11-01 23:39:57 -06:00
4 | let argc = args_os().collect::<Vec<_>>().len();
2023-10-31 22:57:48 -06:00
| ++++++++++
error: aborting due to previous error; 1 warning emitted
For more information about this error, try `rustc --explain E0282`.
Okay, how about
```rs
use std::env::args_os;
use std::ffi::OsString;
fn main() {
2023-11-01 23:39:57 -06:00
let argc = args_os().collect::Vec<OsString>().len();
2023-10-31 22:57:48 -06:00
dbg!(argc);
}
```
I guess function::type() specifies the type of which function should be
returning. That sort of makes sense? C doesn't have generic functions like that
but I think I understand some of what's happening there.
$ rustc echo.rs
error: generic parameters without surrounding angle brackets
--> echo.rs:5:35
|
2023-11-01 23:39:57 -06:00
5 | let argc = args_os().collect::Vec<OsString>().len();
2023-10-31 22:57:48 -06:00
| ^^^^^^^^^^^^^
|
help: surround the type parameters with angle brackets
|
2023-11-01 23:39:57 -06:00
5 | let argc = args_os().collect::<Vec<OsString>>().len();
2023-10-31 22:57:48 -06:00
| + +
error: aborting due to previous error
Okay. I'm changing that without copying my code because I'm not motivated to do
so. Also the actual errors are probably not byte-for-byte if for whatever
reason you're following along at home (why would you? I don't know what I'm
doing) because my code actually has a ton of snippets commented out so I don't
need to retype everything.
I made the changes it suggested and the program works. Neat. But do I need that
local variable?
```rs
use std::env::args_os;
use std::ffi::OsString;
fn main() {
2023-11-01 23:39:57 -06:00
if args_os().collect::<Vec<OsString>>().len() < 2 {
2023-10-31 22:57:48 -06:00
println!();
} else {
}
}
```
$ rustc echo.c
$
No I don't! Only if I'm using it more than once, which makes sense. I'd like to
forego println!() though because I have a feeling this prelude-provided macro
will do platform-specific things and differ on NT vs UNIX due to line ending
conventions. I don't like that for a program that's supposed to follow POSIX.
It looks like std::io::Stdout exists so I'm gonna use that and put a lock on
std::stdout so I can write to it. I think this works?
```rs
use std::env::args_os;
use std::io::{Write, stdout};
use std::ffi::OsString;
fn main() {
let mut stdout = stdout().lock();
2023-11-01 23:39:57 -06:00
if args_os().collect::<Vec<OsString>>().len() < 2 {
2023-10-31 22:57:48 -06:00
stdout.write(b"\n"); // Rust wants a 'b' prefix
} else {
}
}
```
$ rustc echo.rs
warning: unused `Result` that must be used
--> echo.rs:8:9
|
8 | stdout.write(b"\n");
| ^^^^^^^^^^^^^^^^^^^
|
= note: this `Result` may be an `Err` variant, which should be handled
= note: `#[warn(unused_must_use)]` on by default
help: use `let _ = ...` to ignore the resulting value
|
8 | let _ = stdout.write(b"\n");
| +++++++
warning: 1 warning emitted
Okay, a note that I should handle the possibility of an error. I don't know how
to do that so I won't, like a true in-the-field professional.
I guess b"\n" is a Rust byte string. I don't think it's super important just
yet for me to know what that is so I'm gonna assume I'm fine.
I'm feeling devious.
```rs
use std::env::args_os;
use std::io::{Write, stdout};
use std::ffi::OsString;
fn main() {
let mut stdout = stdout().lock();
2023-11-01 23:39:57 -06:00
if args_os().collect::<Vec<OsString>>().len() >= 2 {
2023-10-31 22:57:48 -06:00
for argument in args_os() {
stdout.write(argument);
stdout.write(b" ");
}
}
stdout.write(b"\n")
}
```
$ rustc echo.c
error[E0308]: mismatched types
--> echo.rs:9:26
|
9 | stdout.write(argument);
| ----- ^^^^^^^^ expected `&[u8]`, found `OsString`
| |
| arguments to this method are incorrect
|
note: method defined here
--> /builddir/rust-1.73.0/library/std/src/io/mod.rs:1461:8
error: aborting due to previous error
For more information about this error, try `rustc --explain E0308`.
So I could look up how to turn an OsString into a `&[u8]` but I need to know
what that is because echo(1) shouldn't be dependent on "proper input" (UTF-1
should work as well as UTF-8). I checked the std::ffi::OsString methods but
none of them really told me anything I think I can use so I'm gonna look at
std::io.
Looking at the primitive u8, it's an 8-bit unsigned integer which should be
fine for my uses. The method into_os_str_bytes() should work to convert
2023-11-01 23:39:57 -06:00
std::ffi::OsString into a Vec<u8> but the documentation notes that this is
2023-10-31 22:57:48 -06:00
"a nightly-only experimental API". Whatever, probably fine.
```rs
use std::env::args_os;
use std::io::{Write, stdout};
use std::ffi::OsString;
fn main() {
let mut stdout = stdout().lock();
2023-11-01 23:39:57 -06:00
if args_os().collect::<Vec<OsString>>().len() >= 2 {
2023-10-31 22:57:48 -06:00
for argument in args_os() {
stdout.write(argument.into_os_str_bytes());
stdout.write(b" ");
}
}
stdout.write(b"\n");
}
```
$ rustc echo.c
error[E0658]: use of unstable library feature 'os_str_bytes'
--> echo.rs:9:35
|
9 | stdout.write(argument.into_os_str_bytes());
| ^^^^^^^^^^^^^^^^^
|
2023-11-01 23:39:57 -06:00
= note: see issue #111544 <https://github.com/rust-lang/rust/issues/111544> f
2023-10-31 22:57:48 -06:00
or more information
error[E0308]: mismatched types
--> echo.rs:9:26
|
9 | stdout.write(argument.into_os_str_bytes());
| ----- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `&[u8]`, fou
2023-11-01 23:39:57 -06:00
nd `Vec<u8>`
2023-10-31 22:57:48 -06:00
| |
| arguments to this method are incorrect
|
= note: expected reference `&[u8]`
2023-11-01 23:39:57 -06:00
found struct `Vec<u8>`
2023-10-31 22:57:48 -06:00
note: method defined here
--> /builddir/rust-1.73.0/library/std/src/io/mod.rs:1461:8
help: consider borrowing here
|
9 | stdout.write(&argument.into_os_str_bytes());
| +
error: aborting due to 2 previous errors
Some errors have detailed explanations: E0308, E0658.
For more information about an error, try `rustc --explain E0308`.
Okay, I'll add that ampersand the borrow checker desires. I'm not sure how this
works still.
$ rustc echo.rs
error[E0658]: use of unstable library feature 'os_str_bytes'
--> echo.rs:9:36
|
9 | stdout.write(&argument.into_os_str_bytes());
| ^^^^^^^^^^^^^^^^^
|
2023-11-01 23:39:57 -06:00
= note: see issue #111544 <https://github.com/rust-lang/rust/issues/111544> f
2023-10-31 22:57:48 -06:00
or more information
error: aborting due to previous error
For more information about this error, try `rustc --explain E0658`.
So how do I use an unstable library feature? I'll use the rustc facilities.
$ rustc --explain E0658
This brought me into a manual snippet shown in my configured pager (I think)
with instructions on how to add a feature flag. I then did what it said and
wasn't anywhere better so I wonder if there's another way to turn an OsString
into a &[u8].
Then Mars came into the room and greeted me and I asked it how to make this
shit work. Apparently an issue is I'm running stable rustc and in order to use
nightly rustc stuff I need nightly rustc provided by using rustup instead of
the packaged rust toolchain. I don't really wanna do that but I also don't
really wanna give up so I think I'm just gonna make this a shitty echo(1)
implementation that limits input to UTF-8. But first I wanna see how someone
else has done this already.
https://github.com/uutils/coreutils.git src/uu/echo/src/echo.rs L119:
2023-11-01 23:39:57 -06:00
>pub fn uumain(args: impl uucore::Args) -> UResult<()> {
2023-10-31 22:57:48 -06:00
> let args = args.collect_lossy();
> let matches = uu_app().get_matches_from(args);
>
> let no_newline = matches.get_flag(options::NO_NEWLINE);
> let escaped = matches.get_flag(options::ENABLE_BACKSLASH_ESCAPE);
2023-11-01 23:39:57 -06:00
> let values: Vec<String> = match matches.get_many::<String>(options::STRING
2023-10-31 22:57:48 -06:00
) {
> Some(s) => s.map(|s| s.to_string()).collect(),
> None => vec![String::new()],
> };
>
> execute(no_newline, escaped, &values)
> .map_err_context(|| "could not write to stdout".to_string())
>}
Those rat bastards did std::env::args.collect_lossy()! Those utter tools! I
imagine this doesn't work for binary data but I don't know and I'm not building
this because I don't wanna figure out how to right now.
Everyone is going to sleep now except me so I now feel like I need to get an
echo(1) implementation working on this, the first day I've actually started to
learn Rust. I'm just gonna go with std::env::args and Strings.
Mars also mentioned some Rust types stuff, namely &[u8] being a borrowed slice
of u8s or something. I sort of got it and sort of didn't, I did at the time I
just forgot. Sorry!
Also it came back out after I wrote that to greet me and then promptly
disappeared.
This spits out a lot of warnings:
```rs
use std::env::args;
use std::io::{Write, stdout};
fn main() {
let mut stdout = stdout().lock();
2023-11-01 23:39:57 -06:00
if args().collect::<Vec<String>>().len() >= 2 {
2023-10-31 22:57:48 -06:00
for argument in args() {
stdout.write(&argument.as_bytes());
stdout.write(b" ");
}
}
stdout.write(b"\n");
}
```
This is nice but print!() handles errors I think so I'm just going back to
that.
```rs
use std::env::args;
fn main() {
2023-11-01 23:39:57 -06:00
if args().collect::<Vec<String>>().len() >= 2 {
2023-10-31 22:57:48 -06:00
for argument in args() {
print!(argument);
print!(" ");
}
}
print!("\n");
}
```
$ rustc echo.c
error: format argument must be a string literal
--> echo.rs:6:20
|
6 | print!(argument);
| ^^^^^^^^
|
help: you might be missing a string literal to format with
|
6 | print!("{}", argument);
| +++++
error: aborting due to previous error
Okay.
```rs
use std::env::args;
fn main() {
2023-11-01 23:39:57 -06:00
if args().collect::<Vec<String>>().len() >= 2 {
2023-10-31 22:57:48 -06:00
for argument in args() {
print!("{}", argument);
print!(" ");
}
}
print!("\n");
}
```
$ rustc echo.c
$ ./echo hello world
./echo hello world
The issue is the first argument is coming along for the ride in that for loop.
How do I skip the first iteration of an iterator?
[trial and error with .rs files and rustc omitted]
Oh.
```rs
use std::env::args;
fn main() {
2023-11-01 23:39:57 -06:00
if args().collect::<Vec<String>>().len() >= 2 {
2023-10-31 22:57:48 -06:00
for argument in args().skip(1) {
print!("{} ", argument);
}
}
print!("\n");
}
```
$ rustc echo.c
$ ./echo Hello, world!
Hello, world!
$ ./echo Happy Halloween!
Happy Halloween!
That's where I'm leaving my Rust education today. And this is day 1. Pretty
good!
2023-10-31 17:13:05 -06:00
/blah/2023-10-29.html
Another journal, in its entirety
2023-09-??
TODO
TODAY
x WORK 1130-2000
x GRANDPARENTS
* PRACTICE Sx Sy ? S S S Sy S S S [I was practicing writing Ses to make my
handwriting look more like Ditko's]
* DOWNLOAD "PI"
* DOWNLOAD "TRINITY"
* DOWNLOAD "BARBIE"
* DOWNLOAD "OPPENHEIMER"
TOMORROW
x CLEAN [...]'S LAPTOPS
x REPACK + DECIDE WHAT GOES TO C.O.
* TEXT [...]?
LEWISTON
* MAIL [...] EDIBLES
x MAIL [...] LAPTOPS
x MAIL COLORADO
* MAKE SURE MAL'S OK
2023-09-30
x 2W NOTICE
2023-10-14
x LEAVE FOR [...]
LEWISTON
x FLIPPER x MODEM
x REPACK x BAG + BIVY
[...] x SD ADAPTER
MAL x CABLES
CALEB x SCOTT
GRANDPARENTS x GOIN POSTAL
[...] [...]
x [...] x [...]
x [...] ~~[...]~~
x ~~[...]~~ [...]
x [...]
2023年09月24日
Beginning to plot my way out of here...
I'm back because I was overencumbered. Now I've mostly repacked, not
enough to leave but enough to be mobile. I still have too much stuff.
Old socks stick to the bottom of your feet. Your soles meld with the
thread and ache from the dull torture. Old underwear's seams dig into you and
leave marks or acne on your ass. It's unavoidable.
The worst parts of homelessness are the lack of regular showers or
laundry. You can survie without regular showers. Your body stops stinking so
much, your hair stops being oily to compensate for your shampoo, your learn to
live without that feeling of dry freshness. But your clothes rot. Not your good
clothes, if you were smart enouugh to plan ahead and get a wool shirt and
sturdy pants, but the clothes you don't think about - socks, underwear, bras.
Cycling through articles only delays the inevitable.
"du" followed by 17 'h's. "Du"+17*"h"
2023-09-??
Looking at me ' up and down
thick left thigh, '' pupils blown out
I'm leaning onto brick and his pace changes tempo
2023-11-01 23:39:57 -06:00
- -- bitch keep walking \<
2023-10-31 17:13:05 -06:00
decelerates, ' my voice decrescendoes
VV I'll tear your neck open and piss in your windpipe
song of the city plays still and I \<
take out my bubble gum, my flavor's out \<
swallow, chew another, passing kid begins to
open his mouth
bitch keep walking ||
and the time goes by \<
leaning onto brick imagining piss in a windpipe
pneumonia \<
car ' after car ' after car \<
bitch keep walking '
butterfly knife in my pocket \<
no I do not have spare change \<
I don't open my wallet '
wish I was back in the office '
yes it's dark and damp but at least \<
there's free coffee '
bitch keep walking '
bitch keep walkking \< (don't stop) \<
anywhere other than here \< (there's nothing here) \<
I do not want to fight \<
but if I fight it'll be ^ (quick) \<
but if I fight then I will ^ (win)
->bitch keep walking<-
everyone packs heat but I pack nothing ''
how many will die ' for a fucking macguffin
t's so pointless but it's a check and my assignment ''
don't ask me again \<
bitch keep walking | ||
six foot three built like a bee
~~~~~~~~~~~
twelve large holes around my abdomen
~~~~~~~~~~~
can't touch me
my nest is rot infested
my head is shedding centipedes
call me Blowfly Girl
I want my pestilence degree
bee threesome
poly pollinators
2023-??-??
it's the end of the line
the line down the road
and I am so thirsty
and I'm so alone
my crimson elegy
falls to the floor
the blood isn't clotting
and I'm letting go
I've made my fair share
of crossings the street
and all for attention
but it never mattered to me
when I needed space
I was given so little
when I hit my rock bottom
you said it was the middle
and I walked the line
the line down the road
because I was so hungry
now I'm so alone
the rations were scarce
and the others hardly rational
I need unconditional love
but to you it's transactional
it's the end of the line
the line down the road
I used a rusty knife
I'm not worried about tetanus anymore
and I've formed a puddle
I'm curled in a ball
everything's uncomfortably sticky
but I'm not worried at all
and when one day they ask
if my passing was mourned
you better look them in the eye
and say you wish you caught the warnings
and the casket carriers marched
me from my rest to my grave
and I lay there lazily motionless
as you'd say, I slept too late
and now I'm late and they've formed a line
the line down the road
to witness my drained body
as I'm still, so alone
2023-??-??
one don't you touch me
don't you
don't you touch me
don't you
ding ding ding ding ding ding ding ding
don't you fucking cross that line
dark avenue alley
three hundred year old
don't you fucking cross that line
I'm a Hollywood star
you ungreatful little
A-------------------
this night
is the last night
is the last night
I'm alone
there is no one
baby no one
I am the one
so alone
wretched
in my harbor
and my dark
dark avenue
and the needle
sewing needle
I'm your pillow
in you go
~~~~
don't you
fucking touch me
fucking touch me
warm pillow
don't you
fucking touch me
fucking touch me
warm ~~~~~ below
~~~
don't you
fucking hurt me
fucking hurt me
down below
don't you
fucking shoot me up
your loading
gun below
2023-??-??
I LIE HERE IN A POOL OF MYSELF
THE WATER IS COLD AND DROWNS THE NOISE OUT
I FOLLOWED THE LINE JUST TO GET HERE TODAY
NOW THE BLADE'S ON THE FLOOR AND I LINGER IN PAIN
I LIE HERE IN A POOL OF MYSELF
THE CHOIR IS FAINT AND THE SIRENS FADE OUT
IT'S THE END OF THE LINE AND SO DESPERATELY
I TRACED IT INTO THE FAINTLY BLUE VEIN
WHO KILLED ME? YOU KILLED ME
WHO PULLED THE YOU PULLED THE
TRIGGER AT NOON? TRIGGER AT NOON
WHO KILLED ME? YOU PUSHED ME
ANGELS BECKON ME INTO THIS HELL
INTO THE GLOOM BECKONING YOU TOO
IT'S SO MURKY IT'S SO MURKY
I'M RUNNING OUT OF TIME I'M RUNNING OUT OF TIME
TO KNOW WHODUNNIT TO SAY I'M SORRY
JUST TELL ME I'M NOT READY
PREACH MY FATE TOUCH MY FACE
AND HAIL TO THE SUN AND THEN SAY IT'S DONE
I LIE HERE IN A POOL OF MYSELVES
RECKLESS DICHOTOMY NEVER WORKED OUT
IT'S THE END OF THE SHOW AND THE CURTAINS COME DOWN
I'M THIRSTY BUT IT'S QUIET NOW
2023-10-23
panel 1: [person running], thinking: GOD DAMN NECESSARY EXERCISE
panel 2: [person in baseball cap behind other person, under a starry night]
panel 3: [person in baseball cap]: I WONDER HOW MUCH BLOOD THAT GUY HAS
panel 4: [x]
[5 legged cat cartoon]
[happy kitty cartoon]
2023-10-26
TEXT [...] [x] P.O. BOX [-]
V / | V
APPLY FOR JOBS [x] | I.D.
| V
[...]'S TIRE [ ] | MEDICAID
V PHOTOGRAPHY [x] |
PINEPHONE OS [ ] | [...] LUNCH [-] TOMORROW
| V
MOP [ ] CASH [x] \ LIBRARY
V V
[...] LIBRARY CARD
[...] 1072
[...]
1068
[...]
2023-10-??
P.O. BOX
|
'----> get proof of having
P.O. box
|
V
https://dmv.colorado.gov/documents
"Homeless applicants without a residential
address must provide a letter from
a government entity, or not-for-
profit organization with its letterhead
showing the facility's name, address,
and telephone number, including the
legal representative's name, signature,
and signature date. The letter must
state, 'will accept delivery of mail
for the customer.'"
2023-10-26
THURS 10-27
[...] lunch
FRI 10-28
SAT 10-29
[...] & [...] out for party afternoon/eve
SUN 10-30
2023-10-??
Emulsify, motherfucker!
-- Mx. Clean
2023-10-??
Deven Trinity Blake is currently
physically resident at
2023-10-??
PINEBUDS
_____ _____
| . . | | . . |
| . ._|_ _|_. . |
| / \ / \ |
|_L_\_*_/ \_*_/_R_|
TX RX TX RX
5V Gnd 5V Gnd
2023-10-??
[...] [...]
[...] [...]
2023-10-24 07:25:56 -06:00
/blah/2023-10-27.html
Someone killed a couple dozen people in my hometown a week or two after I left.
They did it with an assault rifle and went to the bowling alley where in my
childhood I attended birthday parties and a bar or something near a place at
which I used to work.
My gut reaction is very callous because I was treated very poorly in this
hometown. I and many of my friends were harrassed by the police that are now
being lauded for their unsuccessful work on finding the perpetrator of this
mass killing who fled or possibly committed suicide. On one of the streets on
which innocent people were shot en mass I was chased out of tree cover under
which I was sleeping by someone who yelled at me that they were going to kill
me because I was homeless. I know more people than were killed who died from
lack of resources and lack of help in the same town who were equally innocent.
I feel for the residents of Lewiston, Maine. I feel for the families and
friends of those who lost their lives and I am sad for those who died. But
rather than draw attention to the mental health crisis and resulting drug
crisis in Maine and helping those who are needy and suffering this slaughter
which is unprecedented in Maine history will likely be used to argue for
stricter gun laws in a refreshingly free state, and I find that really
unfortunate. However I will not ever return to Lewiston, Maine, ever, for any
reason. Once I'm established here I'm going to make a fake background and
forget I ever came from Maine. I want to never again be associated with the
place that bore me. I say this as a Mainer and as a Mainer this will be my last
thought.
I'm finding employment here, far away from Maine, and I have found a happiness
I have never known and didn't know existed. I am now of here and here is
beautiful.
2023-10-26
[1307] trinity: mountain far above
rising against the sun's fall
tell me where it's home
/blah/2023-10-25.html
Trinity: The [Pinephone] will turn on in your pocket and then die.
Mars: It's just like me, narcoleptic and suicidal.
2023-10-23 21:54:09 -06:00
/blah/2023-10-23.html
: i just want to play the cannibalism game
Here's the current plan
__ Linux (arm64) ______________________________________
| Chimera |
| __ X11 ____________________________________________ |
| | __ QEMU _______________________________________ | | ; # apk add qemu-\
| | | | | | ; system-arm
| | | __ Linux (armhf) __________________________ | | | ; $ git clone \
| | | | | | | | ; https://github.com\
| | | | | | | | ; /dhruvvyas90/qemu-\
| | | | | | | | ; rpi-kernel
| | | | Raspberry Pi OS | | | | ; $ curl -O http://\
| | | | | | | | ; downloads.\
| | | | | | | | ; raspberrypi.org/\
| | | | | | | | ; raspios_full_armhf\
| | | | | | | | ; /images/raspios_\
| | | | | | | | ; full_armhf-2021-11\
| | | | | | | | ; -08/2021-10-30-\
| | | | | | | | ; raspios-bullseye-\
| | | | | | | | ; armhf-full.zip
| | | | | | | | ; $ unzip 2021-10-30\
| | | | | | | | ; -raspios-bullseye-\
| | | | | | | | ; armhf-full.zip
| | | | __ X11 ________________________________ | | | |
| | | | | __ Box86 __________________________ | | | | |
| | | | | | __ WINE _______________________ | | | | | |
| | | | | | | | | | | | | |
| | | | | | | The Coffin of Andy and Leyley | | | | | | |
| | | | | | |_______________________________| | | | | | |
| | | | | |___________________________________| | | | | |
| | | | |_______________________________________| | | | |
| | | |___________________________________________| | | |
| | |_______________________________________________| | |
| |___________________________________________________| |
|_______________________________________________________|
Nevermind, I used [...]'s computer to boot Windows 10 and play it. It took me
two hours and I finished in one sitting. What an excellent game.
[ 8:59 PM] trinity: finished episodr 1
[ 9:00 PM] trinity: fuck. i should make andy my pfp
[ 9:00 PM] [...]: real
[ 9:00 PM] trinity: doing it
[ 9:00 PM] trinity: l8r
[ 9:00 PM] trinity: gotta play gamez
[ 9:00 PM] [...]: @[...] see u can match w/ trin now too
[ 9:04 PM] [...]: wyh
[ 9:04 PM] [...]: huh
[ 9:04 PM] [...]: hfbd
[ 9:04 PM] [...]: hsha
[10:16 PM] trinity: kin andy
[...]
[10:19 PM] trinity: god FUCK
[10:20 PM] trinity: how can there be such a perfect game
[10:20 PM] [...]: I KNOW
[10:20 PM] trinity: took me 2hrs to finish
[10:20 PM] [...]: it's so fucking good
[10:21 PM] [...]: can i be the third sibling
[10:21 PM] trinity: third?
[10:21 PM] trinity: kin andrew*
I cannot describe my thoughts on this game here where it will be associated
with my real identity.
2023-10-22 20:29:47 -06:00
/blah/2023-10-22.html
: more adventures trying to run a .exe file
So long as you can get QEMU.
qEMU?
qEmu?
QEMU according to its website.
I grabbed the RAR file of this Windows game and now I desperately want to run
it because it looks really cool. Now that I figured out unRARing it's time to
play it. However WINE (an API conversion layer from Win32 to Linux+other OSes)
won't work on the Raspberry Pi because this is an ARM processor which can't
execute x86 code, even if the API calls are translated. So I've decided this
game warrants mucking around in a lot of complicated compatibility shims.
The stack will look something like this:
__ Raspberry Pi 4B+ 8GB _______________________________
| |
| __ Linux __________________________________________ | ; I'm including the
| | | | ; kernel as its own
| | Chimera | | ; layer-maker
| | __ X11 server _________________________________ | | ; because QEMU will
| | | | | | ; be booting the
| | | WINE display<---------------------------------------. ; kernel image
| | | __ urxvt __________________________________ | | | | ; itself without a
| | | | | | | | | ; bootloader and
| | | | __ QEMU amd64 _________________________ | | | | | ; from the kernel
| | | | | | | | | | | ; init etc will be
| | | | | __ Linux __________________________ | | | | | | ; spawned. The
| | | | | | | | | | | | | ; Raspberry Pi also
| | | | | | Alpine | | | | | | | ; basically just
| | | | | | __ WINE _______________________ | | | | | | | ; boots the kernel
| | | | | | | ^-(X11 client)--------------------------' ; image sans loader
| | | | | | | | | | | | | | ; because U-Boot.
| | | | | | | The Coffin of Andy and Leyley | | | | | | | ; The details
| | | | | | | | | | | | | | ; mentioned are the
| | | | | | |_______________________________| | | | | | | ; ones I expect to
| | | | | | | | | | | | ; add non-trivial
| | | | | |___________________________________| | | | | | ; overhead to
| | | | | | | | | | ; processor load,
| | | | |_______________________________________| | | | | ; which might be a
| | | | | | | | ; problem in
| | | |___________________________________________| | | | ; practice.
| | | | | |
| | |_______________________________________________| | |
| | | |
| |___________________________________________________| |
| |
|_______________________________________________________|
This seems fine!
I had sex four times tonight and this is what I'm doing with the clarity.
So the first order of business is QEMU. This is packaged for Chimera in
multiple variants. I don't know what I'm doing so I looked it up and I think I
need qemu-system-* because I'm emulating the processor as well as the software.
# apk add qemu-system-x86_64
Now I need Alpine. I think it comes in really small images for containers.
$ curl -O https://dl-cdn.alpinelinux.org/alpine/v3.18/releases/x86_64/\
alpine-virt-3.18.4-x86_64.iso
Let's try booting.
$ qemu-system-x86_64 -cdrom alpine-virt-3.18.4-x86_64.iso
Error relocating /lib/libspice-server.so.1: __aarch64_ldadd4_acq_rel: symbol no
Error relocating /lib/libspice-server.so.1: __aarch64_ldset4_acq_rel: symbol no
Error relocating /lib/libspice-server.so.1: __aarch64_ldclr4_acq_rel: symbol no
Error relocating /lib/libspice-server.so.1: __aarch64_cas4_acq_rel: symbol not
Hm. Same thing as root. Maybe I need a kernel image outside of the ISO? Let me
try something:
$ curl -O https://dl-cdn.alpinelinux.org/alpine/v3.18/releases/x86_64/\
alpine-minirootfs-3.18.4-x86_64.tar.gz
$ tar tf alpine-minirootfs-3.18.4-x86_64.tar.gz | head
./
./sys/
./srv/
./run/
./root/
./opt/
./mnt/
./media/
./media/usb/
./media/floppy/
$ mkdir amd64
2023-10-22 20:32:16 -06:00
$ <alpine-minirootfs-3.18.4-x86_64.tar.gz gzip -cd | tar x -C amd64
2023-10-22 20:29:47 -06:00
$ man -k qemu
qemu(1) - QEMU User Documentation
qemu-img(1) - QEMU disk image utility
qemu-storage-daemon(1) - QEMU storage daemon
virtfs-proxy-helper(1) - QEMU 9p virtfs proxy filesystem helper
qemu-block-drivers(7) - QEMU block drivers reference
qemu-cpu-models(7) - QEMU CPU Models
qemu-ga-ref(7) - QEMU Guest Agent Protocol Reference Contents 0.0 • 2 QEMU Gu
qemu-qmp-ref(7) - QEMU QMP Reference Manual Contents 0.0 • 2 QEMU QMP Referen
qemu-storage-daemon-qmp-ref(7) - QEMU Storage Daemon QMP Reference Manual Con
qemu-ga(8) - QEMU Guest Agent
qemu-nbd(8) - QEMU Disk Network Block Device Server
$ man qemu # brb...
$ ls amd64 | grep linux
$ # fuck... I'm just gonna look up a tutorial
The good news is I don't think X forwarding will be necessary so that saves a
lot of trouble. The bad news is I don't know what I'm doing and am tired so
this will wait for tomorrow.
https://git.sr.ht/~sircmpwn/builds.sr.ht/tree/master/item/images/alpine/genimg
How does Drew do it?
It was at this point the file got corrupted so here's my reconstruction of this
section based on the nvim swapfile:
I return well rested, ten hours later.
# apk add qemu-img
[ 1:20 AM] trinity: trying to figure out qemu
[ 1:20 AM] trinity: not going well
[ 1:21 AM] trinity: trying again with the sun up
[ 1:21 AM] [...]: I remember I used that for the class where we
re-implemented a lobotomized risc-v operating system
[ 1:22 AM] trinity: i just wanna play this rpgmaker game
[ 1:24 AM] [...]: which one?
[ 1:29 AM] trinity: coffin of andy and leyley
[ 1:29 AM] trinity: i think i can figure this out tomorrow
[ 1:29 AM] trinity: \/when i wake up
[ 1:29 AM] [...]: why do you need qemu to run a rpgmaker game?
[ 1:30 AM] [...]: they run in wine
[ 1:30 AM] [...]: someone must have built some wrapper for them if
wine/proton does not work
[ 1:30 AM] [...]: you just need the fonts
[ 1:31 AM] [...]: also I remember running touhou mother in easyrpg on my
steam deck
[ 1:31 AM] trinity: not on arm64
[ 1:31 AM] [...]: oh i see
[ 1:32 AM] [...]: WHYYYYYYYY
[ 1:32 AM] [...]: WHY HAS THIS SPREAD SO FAR
[ 1:32 AM] [...]: is that the incest canibalism one?
[ 1:33 AM] [...]: no comment
[ 1:33 AM] [...]: :3
Drew bootstraps an extremely minimal Alpine x86_64 image with just enough
packages to self-host. However in the genimg script there is this one line:
30 dd if=/usr/share/syslinux/mbr.bin of=/dev/nbd0 bs=1 count=440
which relies on there being an existing SYSLINUX installation on the host. This
won't work on ARM64 for which there is no SYSLINUX and Chimera doesn't have a
GCC x86_64 cross compiler packaged and I don't wanna have to compile gcc for
this so I'm just gonna find a way that's different from Drew's way.
I'm gonna try using the standard ISO now because that should have a kernel and
means to boot on x86_64 already. I wonder if I can boot it as a live system and
no shit it has no X server. Maybe it wouldn't be too bad to install?
Fuck this shit. I'm just gonna figure out Box86.
Actually Box64 because I don't wanna figure out armhf stuff today.
; doas gmake
[ 1%] Building C object CMakeFiles/interpreter.dir/src/emu/x64run.c.o
/usr/local/src/box64/src/emu/x64run.c:1351:47: error: expected expression
emu->segs[_ES] = *(__uint16_t*)(((char*)ED)+4);
^
/usr/local/src/box64/src/emu/x64run.c:1351:36: error: use of undeclared identif
ier '__uint16_t'
emu->segs[_ES] = *(__uint16_t*)(((char*)ED)+4);
^
/usr/local/src/box64/src/emu/x64run.c:1364:47: error: expected expression
emu->segs[_DS] = *(__uint16_t*)(((char*)ED)+4);
^
/usr/local/src/box64/src/emu/x64run.c:1364:36: error: use of undeclared identif
ier '__uint16_t'
emu->segs[_DS] = *(__uint16_t*)(((char*)ED)+4);
^
4 errors generated.
gmake[2]: *** [CMakeFiles/interpreter.dir/build.make:76: CMakeFiles/interpreter
.dir/src/emu/x64run.c.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:113: CMakeFiles/interpreter.dir/all] Error
2
gmake: *** [Makefile:166: all] Error 2
it is all so tiresome. This also matters less because I'm gonna need Box86
anyway. Maybe I should make a QEMU virtual machine for Raspberry Pi OS, install
Box86 and Box86's packages on that, and then have it all nice and dandy?
# apk add qemu-system-arm
# apk del qemu-system-x86_64
End recovered segment.
I'm gonna use the armhf image because I don't think this EXE is 64-bit and
it'll cut out all of the compat stuff.
$ curl https://downloads.raspberrypi.com/raspios_armhf/images/\
raspios_armhf-2023-10-10/2023-10-10-raspios-bookworm-armhf.img.xz \
| xz -cd \
>2023-10-10-raspios-bookworm-armhf.img
1238MB... jeez... time to plug in the laptop fan
The tutorial I'm following provided a link to a GitHub repo with a Raspberry Pi
QEMU Linux kernel image which is awesome. Except there's no Linux 6.1 so I'm
gonna have to go a version behind. This is all to play one video game so we can
move fast and break things without risking all hell breaking loose.
$ rm 2023-10-10-raspios-bookworm-armhf.img
Except where are the old OS versions? I can't find them on the Raspberry Pi
website.
Found by looking up, good old no-TLS HTTP: http://downloads.raspberrypi.org/
The newest kernel provided by the GitHub repo is 5.10.63, which corresponds
according to the Raspberry Pi OS Full armhf release notes (raspios_full_armhf
/release_notes.txt) to the 2021-10-30 release. But that download isn't in this
HTTP source. I think 5.4.51, which is provided in the repo, will work with
2020-08-24, though that version isn't mentioned in the release notes, because
the release notes' mentioned 2020-08-20 does have that version. The issue is
the release notes' dates don't line up with the actual downloads provided.
Strange. Whatever. Let's just try this and hope it works.
Oh, what the fuck? The dates in the folders are different? fucking hell
look at this fucking URL:
http://downloads.raspberrypi.org/raspios_full_armhf/images/
2023-10-22 20:32:16 -06:00
raspios_full_armhf-2020-08-24/ <- 2020-08-24
2020-08-20-raspios-buster-armhf-full.info <- WTF?????
2023-10-22 20:29:47 -06:00
I'm so tired and just want to read about hot cartoon characters butchering
people. Kernel 5.10.63! 2021-10-30! Of course, in the 2021-11-08 folder! I
should have known!
$ curl -O http://downloads.raspberrypi.org/raspios_full_armhf/images/\
raspios_full_armhf-2021-11-08/2021-10-30-raspios-bullseye-armhf-full.zip
$ # .zip? are you kidding me? 3.0GB??? This is gonna be an hour download...
Fucking hell. See you tomorrow.
/blah/2023-10-21.html
: fuck unrar
I run Chimera Linux, an Alpine-based operating system still in its very early
stages but stable enough that I trust it for my meager, mostly console and X11
based workflow. It can run a C compiler, so good enough for me. The only issue
is, despite being based on Alpine, a popular operating system not for desktop
but for embedded environments like containers, for which a lot of software is
packaged and available in system repositories, Chimera does not have a lot of
packages. I'm going to package UNRAR, a non-free ("freeware") tool that has no
dependencies aside from the C++ standard library, to get a feel for Alpine
packaging.
UNRAR is an almost delightful little tool with the unfortunate, heinous problem
of being non-free, and its license forbidding the use of the provided source
code for reimplementation - otherwise I would just rewrite it in sane C89
without encumbrence. But we don't need to read the source code in order to
compile the C++.
The Alpine Wiki section on Creating an Alpine package says to apk add
alpine-sdk but Chimera has no such thing so hopefully that's fine. It says to
check out the aports tree but I don't want to put my packages upstream (dealing
with large software projects is tiresome and I know Chimera is in a constant
state of flux).
I did this:
# mkdir -p /var/cache/distfiles
# chmod a+w /var/cache/distfiles
I now need abuild-keygen according to the wiki but it isn't installed.
$ apk search abuild-keygen
pulled up nothing. Nor did a package contents search. Maybe it's fine? On a
whim I searched cbuild* in the contents search and found apk:base-cbuild-progs.
# apk add base-cbuild-progs
(1/1) Installing base-cbuild-progs (0.1-r2)
OK: 2083 MiB in 896 packages
On the Chimera Linux website I found the Chimera-specific packaging stuff.
There is a cports repository with Packaging.md but it's kind of long so I'll
use it as a reference while following the less complete Alpine guide. This is
the rat bastard approach to software but I am doing this for my own uses and
for pleasure and I don't wanna spend five hours contributing to this project
right now because I am tired.
I need newapkbuild but don't have it so I'll try to find the default template
on-line or go off an existing thingy.
I found contrib/jq/template.py so I'll copy that.
pkgname = "unrar"
What's the pkgver?
$ cd /usr/local/src/unrar
-sh: 5: cd: can't cd to /usr/local/src/unrar
$ cd /usr/local/src
$ ls
$
Connection to tebibyte.media closed.
; # oops
; cd /usr/local/src/unrar
; cat version.hpp
#define RARVER_MAJOR 6
#define RARVER_MINOR 24
#define RARVER_BETA 1
#define RARVER_DAY 17
#define RARVER_MONTH 9
#define RARVER_YEAR 2023
# apk del qemu-system-x86_64
2023-10-21 14:56:12 -06:00
/blah/2023-10-21.html
: fuck unrar
I run Chimera Linux, an Alpine-based operating system still in its very early
stages but stable enough that I trust it for my meager, mostly console and X11
based workflow. It can run a C compiler, so good enough for me. The only issue
is, despite being based on Alpine, a popular operating system not for desktop
but for embedded environments like containers, for which a lot of software is
packaged and available in system repositories, Chimera does not have a lot of
packages. I'm going to package UNRAR, a non-free ("freeware") tool that has no
dependencies aside from the C++ standard library, to get a feel for Alpine
packaging.
UNRAR is an almost delightful little tool with the unfortunate, heinous problem
of being non-free, and its license forbidding the use of the provided source
code for reimplementation - otherwise I would just rewrite it in sane C89
without encumbrence. But we don't need to read the source code in order to
compile the C++.
The Alpine Wiki section on Creating an Alpine package says to apk add
alpine-sdk but Chimera has no such thing so hopefully that's fine. It says to
check out the aports tree but I don't want to put my packages upstream (dealing
with large software projects is tiresome and I know Chimera is in a constant
state of flux).
I did this:
# mkdir -p /var/cache/distfiles
# chmod a+w /var/cache/distfiles
I now need abuild-keygen according to the wiki but it isn't installed.
$ apk search abuild-keygen
pulled up nothing. Nor did a package contents search. Maybe it's fine? On a
whim I searched cbuild* in the contents search and found apk:base-cbuild-progs.
# apk add base-cbuild-progs
(1/1) Installing base-cbuild-progs (0.1-r2)
OK: 2083 MiB in 896 packages
On the Chimera Linux website I found the Chimera-specific packaging stuff.
There is a cports repository with Packaging.md but it's kind of long so I'll
use it as a reference while following the less complete Alpine guide. This is
the rat bastard approach to software but I am doing this for my own uses and
for pleasure and I don't wanna spend five hours contributing to this project
right now because I am tired.
I need newapkbuild but don't have it so I'll try to find the default template
on-line or go off an existing thingy.
I found contrib/jq/template.py so I'll copy that.
pkgname = "unrar"
What's the pkgver?
$ cd /usr/local/src/unrar
-sh: 5: cd: can't cd to /usr/local/src/unrar
$ cd /usr/local/src
$ ls
$
Connection to tebibyte.media closed.
; # oops
; cd /usr/local/src/unrar
; cat version.hpp
#define RARVER_MAJOR 6
#define RARVER_MINOR 24
#define RARVER_BETA 1
#define RARVER_DAY 17
#define RARVER_MONTH 9
#define RARVER_YEAR 2023
I guess it doesn't matter because the download link says 6.12.2, so I'll just
put that. Maybe I have a different version. I don't care.
pkgver = "6.12.2" #
pkgrel = 0 # default
build_style = "makefile"
make_cmd = "gmake" # this probably doesn't matter, it worked with bmake too
make_dir = "."
hostmakedepends = [ "gmake" ]
pkgdesc = "Extracts from RAR archives"
2023-10-22 20:32:16 -06:00
maintainer = "trinity <trinity@trinity.moe>"
2023-10-21 14:56:12 -06:00
# license is tricky. how does alpine do it?
# checked. alpine does not do it, because unrar is non-free
What is this license, anyway?
; cat license.txt
****** ***** ****** UnRAR - free utility for RAR archives
** ** ** ** ** ** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
****** ******* ****** License for use and distribution of
** ** ** ** ** ** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
** ** ** ** ** ** FREE portable version
~~~~~~~~~~~~~~~~~~~~~
The source code of UnRAR utility is freeware. This means:
1. All copyrights to RAR and the utility UnRAR are exclusively
owned by the author - Alexander Roshal.
2. UnRAR source code may be used in any software to handle
RAR archives without limitations free of charge, but cannot be
used to develop RAR (WinRAR) compatible archiver and to
re-create RAR compression algorithm, which is proprietary.
Distribution of modified UnRAR source code in separate form
or as a part of other software is permitted, provided that
full text of this paragraph, starting from "UnRAR source code"
words, is included in license, or in documentation if license
is not available, and in source code comments of resulting package.
3. The UnRAR utility may be freely distributed. It is allowed
to distribute UnRAR inside of other software packages.
4. THE RAR ARCHIVER AND THE UnRAR UTILITY ARE DISTRIBUTED "AS IS".
NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. YOU USE AT
YOUR OWN RISK. THE AUTHOR WILL NOT BE LIABLE FOR DATA LOSS,
DAMAGES, LOSS OF PROFITS OR ANY OTHER KIND OF LOSS WHILE USING
OR MISUSING THIS SOFTWARE.
5. Installing and using the UnRAR utility signifies acceptance of
these terms and conditions of the license.
6. If you don't agree with terms of the license you must remove
UnRAR files from your storage devices and cease to use the
utility.
Thank you for your interest in RAR and UnRAR.
Alexander L. Roshal
Line omitted before signature because of how this blah is formatted.
This is fucking bullshit. I'm already in violation of clause 6 because I wish
Alexandar L. Roshal to eat flaming death and be obliterated from this mortal
plane but I won't be fucking anyone over legally by copying the code.
2021-10-20
[ 9:52 PM] trinity: bsdtar WORKS ON FUCKING RAR FILES?????
[ 9:52 PM] trinity: 7z DID NOT DO THE JOB BUT bsdtar DID?
[ 9:58 PM] [...]: that's shocking actually wtf
[10:03 PM] trinity: bsdtar errors out too :(
[10:03 PM] trinity: no unrar package for chimera
[10:04 PM] trinity: not pkgsrcing it because 500 deps compiling on a raspberry
pi
[10:18 PM] trinity: figured out how to build unrar from source. NO DEPS!
[10:18 PM] trinity: for nonfree software it sure is easy build
[10:21 PM] [...]: why somebody would ever use a nonfree compressed archive
format is beyond me
[10:21 PM] [...]: .tar.gz is standard. .arc and .zpaq are fucking insane with
compression ratios.
2021-10-21
[12:12 AM] trinity: i really dont understand use of rar
[12:12 AM] trinity: as mainstream archives go 7z is a lot better
[12:13 AM] [...]: yeah
[12:13 AM] [...]: I see rar used a lot in piracy stuff and I'm not rlly sure
what that's about
[12:19 AM] [...]: wait i can use bsdtar for unrar
[12:19 AM] [...]: pog
[12:20 AM] trinity: unrar works better
[12:20 AM] [...]: i dont have any way to unrar things atm because i
uninstalled unrar for being nonfree
[12:20 AM] trinity: unrar for nonfree software is not very bad. i oughtta just
rewrite it in C
[12:20 AM] [...]: someone has done that
[12:21 AM] [...]: you could build on their work
[12:21 AM] trinity: wouldnt that be free software
[12:21 AM] trinity: fuck actually i dont like unrar's everything i should just
make my own unrar based on the nonfree code
[12:22 AM] trinity: license forbids this :(
[12:22 AM] [...]: violating proprietary licenses is based
[12:23 AM] [...]: unrar (super illegal edition!!)
[12:23 AM] [...]: it doesnt currently work afaik. it works for older rar files
[12:24 AM] trinity: is there much difference
[12:26 AM] trinity: REing rar seems to not be that useful because soon everyone
that uses it will be dead and everyone will be using
something open
[12:27 AM] [...]: idk
[12:27 AM] [...]: rarverse engineering
[12:28 AM] [...]: ill probably just write a wrapper for bsdtar that can be
called on rar files
2023-10-22 20:32:16 -06:00
[12:28 AM] [...]: rawrverse engineewing~ >.<
2023-10-21 14:56:12 -06:00
[12:29 AM] trinity: because unrar, while proprietary, can be compiled with any
C++ compiler and make tool and works with standard POSIX
APIs, i don't think the ability to decompress will be
threatened any time soon. best rebellion is just to decomp
and recomp rar files into better formats
[12:30 AM] trinity: did you know that rawr means i love you in dinosaur
AAAA I give up.
Chimera docs say very little about -doc packages, which should have the license
file for the current software if the license is custom, which UnRAR's is. So
license.txt should go in "$pkgdir"/usr/share/licenses/$pkgname/COPYING
Wait I get it. The cbuild will automagically add that license to the -doc
package for me. Nevermind. So I just have to
license = "custom"
def post_install(self):
self.install_license("license.txt")
url = "https://www.rarlab.com/rar_add.htm"
source = f"https://www.rarlab.com/rar/unrarsrc-{pkgver}.tar.gz"
Okay, this would probably work, but I don't care to actually button this up and
PR it so that's all it will be. Here's how it looks in my src/Makefile which
works better for my uses:
# depends on
# apk:g++
$(PREFIX)/bin/unrar:
git clone https://github.com/pmachapman/unrar.git "$(PREFIX)"/src/unrar
$(MAKE) -C "$(PREFIX)"/src/unrar
$(INSTALL) -Dm0755 "$(PREFIX)"/src/unrar/unrar "$(PREFIX)"/bin/unrar
To be honest, I copied the install(1) permission from somewhere else. Not sure
if 0755 is the best config. But I don't care because FUCK UNRAR!!!!
2023-10-14 14:43:48 -06:00
/blah/2023-10-14.html
: no filter
When I started at Burger King in 2020 I started at a location I would learn was
known for its bigotry, low food quality, and exceptionally shitty workforce.
Though most could be known for this, this Burger King in particular was quite
bad at all of those things and I would come to learn its employees gave zero
shits about even the barest of standards. I would see employees drop bottles of
sauce on the ground and pick them up without cleaning them or even changing
their gloves in the process, contaminating food with floor bacteria. Employees
dropping raw chicken using their gloves and no tongs and continuing to make
sandwiches with the same gloves used to touch raw chicken. Cross contamination
between all raw and cooked food and often between their phones, and the floor,
and the food. After the age of 17 I started eating at restaurants a lot less.
I applied to Burger King as a joke while on call with my Information Technology
class in school in 2020. School during 2020 was, due to the COVID-19 pandemic,
virtual and hosted on-line in Zoom meetings, so on one monitor (a 70Hz NEC
MultiSync) I had Zoom running and on another (a slightly newer, higher-
resolution Acer monitor) I had the Carrols application process. I needed money.
A job - a legitimate job, which I had never had before, nor one where the end
wasn't defined at the start - seemed like an easy solution. I set my
availability to 1700-2000 after school days so I could get 15 hours a week in
three hour spurts, not much but enough to wet my whistle and get a taste for
the work if I wished to continue.
They gave me a call that day maybe, or the day after. I sounded good on the
telephone so I was brought in for an interview. I arrived an hour early and sat
in a nearby parking lot playing Chocolate Doom on my netbook running Debian, I
think, and trying to page through Simulations and Simulacra though it took me a
month to get through the first paragraph because of how dense it is and the
confusing nature of the initial parenthetical statement. But the general
manager who interview me didn't know that, instead he saw a book with a
confusingly worded cover and a high school student who was also attending two
colleges (officially; taking classes at one and dually enrolled in the other)
and a technical school (for Information Technology) and who wanted to learn to
cook. After forty-five minutes of waiting I went into the building, told them I
had an interview, waited twenty minutes (five minutes past when the interview
was set), and interviewed for ten minutes where the manager clarified some
stuff on my application and hired me on the spot. I accepted.
The job was meant to be a temporary job, at least when I accepted. It was close
to Staples where I could apply my IT certifications once I finished them and
then mosey my way onto better jobs while going to college. Then while I was
working there the Staples went out of business and I watched one of my
classmates a year ahead of me quit the computer store nearby because the
management was abusive. So I would have no computer-related job.
My first day, Halloween 2020, a Saturday if I recall correctly, I was sat in
front of a computer after walking across town to the job (this was something
like a ninety minute walk because I was at the time very fat, very out of
shape, and very slow) and spent three hours first filling out my application
and then watching videos explaining the job.
When prompted for my gender I filled out "Prefer not to say" on the computer,
knowing I was a woman but could not safely come out especially in that school
with those parents and knowing those people. I later watched the same manager
get prompted by the computer to answer the question I didn't. He chose Male.
I memorized the cards hanging from the ceiling showing how to build the
sandwiches. The Whopper: mayo, lettuce, tomato, onion, ketchup, pickle. Wrong,
actually; mayo, lettuce, tomato, pickle, ketchup, onion. And later the meat
came before the mayo rather than before the pickle. But this explanation is
best for another time. Yesterday, my last day, a co-worker who was there my
first day that Halloween remembered me standing there trying to memorize the
cards. I was green and wet behind the ears and everything else that applies to
those who are new to what they are doing but think they will not only have fun
but quickly become very good at their job. I did neither.
My first day on the job I was placed in a little-used area of the kitchen and
trained with a classmate from the year behind me on making the Whopper. Grab a
five-inch sesame bun, toast it, take out a paper and place it on the board.
Place the bun, spread mayo on the top bun, add a dusting of lettuce, two
tomatoes, get the patty, four pickles, three rings of ketchup, and three rings
of onion. My turn. The mayo hard a hard time staying on the spatula and I had
to dip the spatula many times to finish spreading it on the bun. The lettuce I
couldn't figure out, I always did too much or too little. Tomatoes, fine, but I
went and grabbed one and placed it, grabbed the other and placed it. Meat,
fine. Pickles, I always grabbed too many or too few, and it took me a moment to
place them. Ketchup I used my forearm to move the bottle rather than the wrist
as I should have. Onions I couldn't grab correctly and it took me a moment to
spread them. My initial time spent making one Whopper was three or four
minutes.
I came in at probably 1500 or so and left at 1800. I can't say for sure but
that's what I would imagine because my first many shifts were three-hour stints
and this would be from a little after I got out of high school to when the
kitchen started to get busy. The person with which I trained left Burger King
maybe a couple months ago.
After proving my ineptitude when it came to the kitchen, but being too socially
awkward to interact with customers, I was put on videos again. The videos
explained simple things about sanitation that even at first were clearly not
accurate to what was happening in the kitchen. I naively assumed this
difference came from my coworkers not knowing the contents of the videos and so
started to mention these differences in hopes we could make food properly and
safely. After a little while these corrections started to be less and less well
received.
I don't remember much of Winter 2020 because I was busy with school, struggling
with my parents - about whom I write very little, because I try not to speak
ill of others - and trying to figure out how to get out of my current and
stifling situation.
My coworkers frequently used slurs of ableist, homophobic, and transphobic
natures. Among them r-----, f-----, and tr---- were common utterances and I
pretended they didn't affect me despite falling into the categories
particularly insulted by all three profanities. It was the heyday of anti-
Capitalist Twitter and the same time period in which I started engaging with
higher level philosophical thingies like gender accelerationism, anarchism,
juche. The time period where I discovered nuances even in things where I didn't
expect them like the DPRK's place within the world. I knew what the "triggered
Liberal" acted like and I knew what the stereotypical tr---- looked like. My
gender identity was expressed only in private among friends with the exception
of losing a bet I knew I couldn't win and wearing a dress in class. However I
was too fat for it and ended up getting stuck in the dress. I've lost 55 pounds
in the years since.
2023-10-14 15:36:04 -06:00
Things came to a head when, one day when I mentioned to a co-worker that they
should use tongs rather than their gloved hands to scoop chicken nuggets into a
bag for a customer, that co-worker started to rant about how slow I was in the
kitchen and how customers didn't need their food made well, they needed it made
fast. I responded with my own soapboxing saying that while my food was made
slowly I was one of few that could actually meet basic standards and that a
sandwich made missing a tomato or pickle or with the wrong amount of ketchup,
or a chicken nugget bag missing a chicken nugget or a fry pod filled with too
few fries couldn't justify even the minimum wait for the food and that making a
customer come back to get correctly made food would take even longer than my
making the food slowly but correct the first time. The assistant manager agreed
with me but admitted that management had been discussing ways to get rid of me
because I took too long in the kitchen and was too adamant about things not
being picked up off the ground and tongs being used.
When, a week later, I mentioned I was thinking about trying another store, they
sent me to the other Burger King location in the town for a 9.5 hour shift, the
longest shift I had worked at that time. When I said I liked it they sent me
for a second shift. That manager said it was great to have me there as one of
their own, and I said that would be cool, wouldn't it, and he looked confused
and asked me if I knew I had been transferred permanently.
2023-10-14 14:43:48 -06:00
2023-10-13
[ 4:36 PM] trinity: this burger king is so funny. it's amazing it functions
[ 4:38 PM] trinity:
ricky: "i say what i want, i have no filter. i dont
care who i offend"
trin: "wow ricky you're so cool for having no self
control"
ricky: "okay, this shit is seriously starting to piss
me off."
**WALKS OUT OUT OF ANGER AT MY JOKE**
[ 4:38 PM] trinity: the assistant manager said holy shit did that really just
happen and this morning told the gm and the gm thought it
was funny as fuck
[ 4:39 PM] [...]: lmfaoo
[ 4:39 PM] [...]: ricky sounds like such a guy
[...]
2023-10-14 15:36:04 -06:00
[10:18 PM] [...]: he got offended
2023-10-14 14:43:48 -06:00
2023-10-08 11:17:59 -06:00
/blah/2023-10-08.html
An angel commits to sin...
I'm hallucinating, just a little. I think it's exhaustion. Everything is just a
little unreal.
Yesterday I had a cigarette. The day before I did too. That's four since
starting to quit.
Today I read Blood Stained Teeth #2-5 (2022). I've recently read The Vampyr
(1816), Tales to Astonish #1-2 (1958), #3-9 (1959), #10-17 (1960), #18-29
(1961), #30-41 (1962), Fantastic Four #1-3 (1961), #4-5 (1962), The Incredible
Hulk #1-4 (1962), V for Vendetta #1-6 (1988), #07-10 (1989), and the entirety
of Death Note. Oh, also Injection #1-5 (2015), #06-10 (2016), #10-15 (2017), No
Longer Human (2019), and some other stuff. Reading Alias Grace (1996) and quite
enjoying it.
I've been reading a lot lately. I have a lust for passive but self-paced
entertainment and adult-oriented comic books have been hitting the point
between candy for eyes and food for thought. Particularly V for Vendetta, which
has excellent and distinct artwork, and Blood Stained Teeth which is a visual
fever dream very different from but reminiscent of Panty and Stocking with
Garterbelt, an animation from Gainax. Art overflowing with passion.
I think Anarchism most closely resembles my political beliefs but I'm not sure.
I don't particularly care about labels but as a word-as-summary they are
useful. When someone falls in the mosh pit you help them up, there's no more to
it.
[...] has been discussing Zen Buddhism in [...] and it's fascinating, and not
quite what I had thought it was from pop culture education.
I've been learning Toki Pona passively and it is a very fun language.
I have my Raspberry Pi set up perfectly. Absolutely perfectly. This is my ideal
setup for a computer. It's such a shame that this is a temporary setup; it will
be replaced by my ClockworkPi uConsole when it comes ("this" being a CrowPi2
with the disadantage of not having a battery and thus being tethered either to
the wall (via AC adapter) or my power pack (via DC 5525 or whatever it is)
which can't injest power while delivering voltage out of the barrel jack
("power pack" being the Shargeek Storm2 or whatever it's called now).
I discovered strerror(3) recently and my life has become a lot easier.
Fight or flight? I flap my angel wings and am spirited away.
I talked to Usagi for the first time in a while. I was so weird to her. So
weird. And she is still my friend. I was so weird and she has no problem with
it whatsoever. Acceptance is so rare.
Yesterday I wanted to die. Today I am ready to accept death should it happen to
me, but I will do what I can to prevent it. I don't think I'll ever fear death
but I don't long for it when I'm doing decently. Yesterday I was not doing
decently. I have been cold and nervous for a long while now and have not known
genuine safety since August. My body is in fight or flight mode and has been
for a while. I am less a rabbit and more a hare.
I've been using Chimera Linux and absolutely love it.
2023-10-04 22:35:54 -06:00
/blah/2023-10-05.html
Today taking my bag of trash out I noticed my old kitchen manager, one of those
partly to blame for my training, doing the same with the restaurant's trash. He
asked me if I'd heard from my sidekick using a name that while attributable to
her was not her herself - too formal and she would say in more words
incongruous [is that a word?] to her being. This was my first red flag of the
day but the person himself is a walking one his own, a Lady Gaga song glorifier
and notorious gossip not to mention lacking in empathy or humbleness, afflicted
even worse by the latter two than myself.
I cannot think of him without thinking of my training in 2021 when I was
seventeen and he in twenties and I pulled a trash can from one inaccessible
location to a better one and I by himself was pulled aside and told unkindly
not to meddle with any sort of kitchen organization whatsoever, because he was
running the kitchen and his food making ship needed to be tight and
disciplined. Perhaps this was true, but whatever discipline he taught was yet
unaware of the basics of food safety as he gripped the trash bag liner to bring
the can back and forth on wheels from under the preparation table where he kept
it, contaminating the gloves with which he would make food with the retch
byproducts from the junk we organized.
The same supposed manager, at that time technically the same role as my own
though given authority by that which did have it to give, that would tell me I
was a fool for going from chicken to beef - both cooked - without changing my
gloves and washing my hands, would go from raw meat to cooked comfortably with
contaminated tongs sitting in the no doubt E. Coli plentiful meat well
protecting food from bacteria, and do the same when tending to chicken between
frozen bird and fried. This is extremely common in food preparation and I
encourage any reader not to consume that which you did not produce or at least
prepare. I've never seen the use of preventing food from touching food when
both are flesh and both thoroughly dead and thoroughly cooked, nor have I ever
seen the sense in crossing the dead and preserved with the dead whose food
safety is preserved. Nor have I ever seen how his taking me out of line and
chewing me out for moving a trash can was justified when I was trying to
guarantee the food safety that was not my responsibility but his.
TRINITY: She's not doing well- I thought it was kind of obvious. You
should talk to her yourself.
[...]: You and she both have this thing where you're rude- whatever, I
guess I'll just go fuck myself.
TRINITY: Enjoy fucking yourself then.
And then I left on my scooter and heard him say something behind me. My
assumption though not charitable is he made a remark either about my being
transgender or being homeless, both things that while he may accept he is glad
certainly to not experience. But I can't say for sure. And I could say while I
may not have a ceiling or roof, at least I have my heart.
2023-10-04 21:29:34 -06:00
/blah/2023-10-04.html
2023-09-28 I woke up a little after midnight at my workplace to my coworkers
finishing close. I put my backpack on and scooted out and down the hill to find
the old lookout point one of my former roommates had mentioned once.
The path was blocked by three boulders placed so as to prevent automobile
through-traffic. I walked by them and up the hill through the path. The
streetlight faded behind me and soon I was alone among the dark silence save
for the chatter of the crickets and varied twig-snapping of unseen nocturnal
creatures, the friends of Nowhere, Maine.
I came to a pile of strewn trash among, if it had been warmer, which would have
been flies I suppose and bits of nastiness that are begotten by nastiness.
Hoping this was the only bit decrepid in this desolation I walked further. It
was cold and I was tired so when I saw the needles and blood I made no reaction
even after my slow realization of what had happened there.
It was not a place of honor, there was nothing to be had or found there, and
had I known better I would have fled immediately to avoid the fate that had
befallen what was left of whomever that had found ruin among the brush and
uncaring wilderness. This was the fate of the addict when they find an
apathetic owner of a chainsaw and these were the pieces that, should I chose to
indulge in mainlined drugs, will compose myself as well. Dogs or cats or foxes
or wolves had got to what was left but what had happened was apparent. The baby
stroller and diapers and formula pouches told the rest of the story. I stood
for a while comprehending this mess, processing without being able to process.
Nor it being safe to do so.
My grandmother has no sympathy for addicts though even she wishes they'd get
better and supports the free dispersal of naloxone for those that need it. She
doesn't see why an addict should redose rather than purchase warmth or water,
not to mention inhabit a crack shack rather than find work and hearth and life.
She's smart. She's never looked down drunkenly at an empty bottle or
experienced lethargic purple haze and stupefied daze that accompanies the
shortening of a rolled joint. She's never craved a cigarette like I have. She
couldn't imagine it. She couldn't imagine my knowing the feeling. She can't
answer my questions for her - how sober lukewarm shelter could compare to pure
happiness coursing through a vein, or how hydration could compare to not
needing to care about any need, physical or emotional. Perhaps money can't buy
one love, but there are things a person enjoys more. At least at first.
I've been through the downward spiral slipping from shelter to smaller shelter
like a sieve, looking only for acceptance and a place to sleep and finding
scarce the former and only more expensive the latter while my pay doesn't
increase nearly as quickly as the cost to live. One shot would kill me years
later after hundreds more, perhaps not as directly the first as the last, but
the first would be my death all the same. I know this. The sound ice makes when
it hits water and feels the sharp difference in temperature accompanied by the
whoosh of butane and naked laugh of the crazed fiend hungry for more pleasure,
more solace, a hoard of catharsis never to be experienced, only kept like a rat
keeps food for winter, and the drawing in of the needle and the flick and snap
of the glass and rubber band and push of it in and the mind out and let the
reason bleed out of you in transparent drool and snot and let the eyes droop
and heart swell with unearned passion. As much as it would be my comfort then
it is my recurring nightmare now. And it's not inevitable, because I will make
it out of this hell before it chains me and loses the key.
Hyperlinks relating to moulage
https://www.atlasobscura.com/places/narrenturm
https://en.wikipedia.org/wiki/Moulage
https://www.unmc.edu/newsroom/2014/01/07/unmc-history-101-medicine-in-wax/
https://blog.unmc.edu/2013/09/04
/dan-brick-lays-the-foundation-for-realistic-simulation/
https://upload.wikimedia.org/wikipedia/commons/b/bd
/The_Dead_Pearl_Diver_by_Benjamin_Paul_Akers_2.jpg
https://www.aoc.gov/explore-capitol-campus/art/ulysses-s-grant-statue
Hyperlinks relating to CrowPi2 programming
https://github.com/WiringPi/WiringPi
http://wiringpi.com/examples/blink/
https://github.com/Elecrow-RD/CrowPi2/tree/main/known_issues
https://github.com/Elecrow-RD/CrowPi/blob/master/Examples/segment.py
https://www.adafruit.com/product/877#description
https://github.com/adafruit/Adafruit_LED_Backpack
https://cdn-shop.adafruit.com/datasheets/ht16K33v110.pdf
http://wiringpi.com/reference/i2c-library/
[Xlib](https://www.x.org/releases/X11R7.7/doc/libX11/libX11/libX11.html)
/blah/2023-10-03.html
everything sucks so fucking hard
So. Roommates got evicted. Seeing the writing on the wall I packed my shit up
and left. Now that my repack's done I am now comfortably contained in a
backpack with strapped on sleeping bag and scooter on my shoulder. Where to go
next, though, was complicated.
2023-09-26 I got out of work and went back to my roommates. They were squatting
and for lack of space elsewhere I slept in the kitchen in my clothes and jacket
next to the litter box. The cats kept staring at me. It smelled like shit and
piss and the cats would paw at the litter to toss it on me. I got an hour of
sleep and went to work early.
2023-09-27 I got out of work and scooted up the street to a Dollar Tree around
which I scooted and found a nice clear area behind a railing next to a parking
lot. At work I had debated leaving the scooter. It's weight and something else
to carry. Eventually I just brought it though and it lay next to me in the
brush.
I laid out my sleeping bag, opened a book on my tablet, and silently and
comfortably if a little bit chilly read Hulk comics until I heard a distant
yell.
You mother fuck!
I looked up but I couldn't see the source.
Get out of here!
Perhaps it was voices. Perhaps it was a trick of the air. I laid back down. I
was wearing all black and my bivy was green against the olive brush. They
couldn't see me.
I see you out there! If you're still there I'm going to fucking kill you!
Night had by this time fallen. I sat up and got out my telescope.
At work I had also considered leaving it behind.
Two camoflouged cameras against the walls and two doors. The second one opened
and then closed. I was visible and I had probably been made. I began to pack my
stuff, quickly. Then the SUV arrived. Black, big, and it circled the parking
lot like a cat about to pounce on me. It's at this point I strap my sleeping
bag on halfway and with a glance at my former spot I got on my scooter and
sped. It started following me.
I scooted for a cliff, jumped off my scooter and jumped down onto the wet grass
sliding to a stop. I took the time to strap the rest of my sleeping bag on and
then from that ledge jumped down and scooted down a side street. Left. Right.
Left. Right. Left onto Lisbon St and eventually I was back at work.
[10:46 PM] trinity: outran an suv on a kick scooter
[10:46 PM] trinity: i am so swag
[11:03 PM] [..1]: i read that in your voice and it made me smile
[11:05 PM] [..2]: gayass
I was huffing and puffing and tuned my UV-5R to the county dispatch but there
was nothing, city dispatch is encrypted and I don't wanna bother figuring it
out so I assume whoever was after me was not police.
2023-03-06
post meta coital meta cigarette
pixelated bodies having meta sex
meta kids meta hacking both our meta eyes
peeping meta Toms in the same meta lie
/blah/2023-09-26.html
01 "It's pretty nice." Nice didn't begin to cut it. In fact, it was the
most beautiful wax sculpture I had ever seen. It depicted a life-sized nude
woman with intricate detail: hair so fine you could trace individual strands
down to their split ends, make out the scoring of her flesh and the lines in
her palms - including wrinkling that on the animate would indicate lack of
moisture. "Why the injury?"
3: Is your dog nice?
?: All dogs are nice.
3: Like. Can I pet your dog?
?: That's up to the dog.
2023-09-25 06:11:52 -06:00
/blah/2023-09-25.html
horizontal six letters; poly pollinators
that's a bee threesome. right!
shit you sunk my battleship
red peg in hole strike
vertical nine letters; alley alligators
that's a crocodile dealer. nice,
i want a pet reptile
but the vet bills are so high
i keep pissing washing my hands stepping out
my fly is down
i can't finish jack shit
and it's written on my frown
can you bind my knees together and sit me at my writers chair
and bring me coffee daily
and can you pet my floofy hair? no!
well i can't write about that
in a magazine like this
you're describing graphic violence
I write a nature column for the kids
you're reprehensibe
defending serial killers who pass laws
it's upsetting to my senses
from my cat ears to my paws
pin me by my bee wings 'cause the hive is dying out
repopulate our hexing nest babe breed me til the sun is down
no really! i'm so fucking weak i don't work out and i'm so pettable
tie me up take out a knife and then do something reprehensible
2023-09-23 21:25:03 -06:00
/blah/2023-09-23.html
My paycheck was $548.
no tape assembly
easy carry handles with lift off lid
strong, double wall construction
reusable
no tape
we're sticky ourselves
while our words bounce off your skin
they reflect and cut into our shells
so many razor blades in my back
i look like i lost a saw trap
easy carry so easy to get carried away
last time i was told to make them get the message
they almost got carried away on a stretcher
bury a stray
bullet in your heart and lift off the lid
see the lead beat with your organs
warm metal surgery
the wall is textured like the painter didn't care
because he didn't
your wallet's empty like your broke ass didn't work
because you didn't
bitch keep walking
bitch keep walking
butterfly knife in my right hip pocket
button quietly pops a scooter handle off it
and i have an EMP just in case shit gets rough
you never know what could happen getting groceries
times is tough
bitch keep walking
AC hum
a hostess apple pie gets eaten in a rush
"become ungovernable" bitch that's us
sisyphus in zeno's paradox only rolls up
twenty million sisyphuses surrounding the top
any rookie with a boulder is a threat
sell space at the zenith make amateurs pay rent
get defenestrated by straight finesse
another has been for the history texts
and yet
the only ones with the truth
are the ones who can't use it
or the ones who are useless
or the ones who have interests so vested
they can't wrestle their mind away. they lose it
to multibillion dollar trademarked facelessness
empathy's a weapon and capital can't stop testing it
and your heaven sent neolib is already in the dem trenches
"thank bernie for giving the overton window to leftists"
puppet parrot puppy left it for lobby dollar moral debting
netorare
i've been having car troubles bang bang
from the engine keeps me up bang bang
in the streets keeps me up bang bang
when i find my crew slacking bang bang
knock at the door, classy bang bang
bitch too loud, so i slap him bang bang
in the head disrespecting me bang bang
in the head dissecting me bang bang
in the head expecting me bang bang
in a bitch's head for testing me bang bang
and i'm home and in bed and free bang bang
the metal arm strikes the bell bang bang
shoes hit doorstep on the way out bang bang
get in and start the car bang bang
/blah/2023-09-19.html
I'm tired and I'm not recovering from things from which I should be recovering.
Everything hurts and the bruises are only ever replaced with new wounds. The
bruises aren't even from anything cool like [...] with [...] or [...].
I need headpats.
The Ballad of Sean and Josh
Sean is forty-eight
and Josh was twenty that
when Sean took Josh away
from the closet in the flat
where Josh had made his home
with a dealer selling crack
Sean lived with his ma
and Josh would live alone
in Sean's house room he'd lay
until fin'ly to Sean he said hello
they learned about each one's
/blah/2023-09-18.html
WITH THIS TECHNOLOGY
[kim jong un holding a floppy disk]
WE WILL BRING THE UNITED
STATES TO ITS KNEES
The first time I saw this image macro was in 2012 and I thought it was so funny
I laughed about it for a week.
Today [...] posted horg.com in [...].
The DPRK is kinda swag.
Once I transcribe all my GitHub repos to either this blah or src I can delete
them and finally have nothing on GitHub. I'm still keeping my account to track
contributions to GitHub repositories but I'm no longer using GitHub for even
things that aren't meaningful. I'm not super up to date on everything with it
but I don't like that CoPilot could be trained on my code and I don't like that
it looks like social media when I log in nowadays. Gotta remove all my stars...
2018-05-20
# GUESSNEXT
A guessing game for the TI-83/84(+).
## Installation
### Required software:
- [TI-Connect](https://education.ti.com/en/products/computer-software
/ti-connect-sw "ti.com")
- [TokensIDE](https://www.ticalc.org/archives/files/fileinfo/433/43315.html
"ticalc.org")
### Installing from the source code:
01. Download GUESSNXT.txt.
02. Install TokensIDE.
03. Open GUESSNXT.txt in TokensIDE.
04. Delete the documentation (lines preceded by a "//").
05. Remove any empty lines.
06. Compile the program by pressing F5 or going into the BUILD MENU and
selecting 8X>8XP.
08. Install TI-Connect.
09. Plug in your calculator.
10. Open TI-Connect.
11. Open your file explorer and navigate to the directory with GUESSNXT.8XP in
it.
12. Copy GUESSNXT to your calculator.
13. Wait for the copy process to finish and wait an additional ten seconds for
TI-Connect to finish calibration.
14. Unplug your calculator.
15. Enjoy your game!
## Compatibility
TI-83 - Unsupported
TI-83+ - Should work; untested
TI-84+ - Tested working
TI-84+ SE - Should work; untested
2018-05-20
40 - Disp "OUT OF GUESSES.
40 + Disp "OUT OF GUESSES.","IT WAS:",B
2018-05-22
16 16 //Main loop
17 17 Lbl B
18 18 Disp D," TO",E,"","YOUR GUESS?
19 - Input "> ",C
19 + Input "> ",Str0
20 + If Str0="B
21 + Then
22 + Disp "CHEATER!!!
23 + Return
24 + End
25 + expr(Str0)->C
26 + Delvar Str0
20 27 A-1->A
21 28 If C=B
22 29 Disp "CORRECT","
2018-05-30
6 6 ### Required software:
7 7 - [TI-Connect](https://education.ti.com/en/products/computer-software
/ti-connect-sw "ti.com")
8 - - [TokensIDE](https://www.ticalc.org/archives/files/fileinfo/433/
43315.html "ticalc.org")
8 + - [TokensIDE](https://www.ticalc.org/archives/files/fileinfo/433/
43315.html "ticalc.org") (if installing from the source code)
9 9
10 10 ### Installing from the source code:
11 11 01. Download GUESSNXT.txt.
[...]
22 22 13. Wait for the copy process to finish and wait an additional ten
seconds for TI-Connect to finish calibration.
23 23 14. Unplug your calculator.
24 24 15. Enjoy your game!
25 +
26 + ### Installing a release:
27 + 01. Go to the releases page and grab GUESSNXT.8xp.
28 + 03. Install TI-Connect.
29 + 04. Plug in your calculator.
30 + 05. Open TI-Connect.
31 + 06. Open your file explorer and navigate to the directory with GUESSNXT
in it.
32 + 07. Copy GUESSNXT to your calculator.
33 + 08. Wait for the copy process to finish and wait an additional ten
seconds for TI-Connect to finish calibration.
34 + 09. Unplug your calculator.
35 + 10. Enjoy your game!
26 - Delvar Str0
26 + DelVar Str0
2023-09-17 22:53:58 -06:00
/blah/2023-09-17.html
[10:33PM] trinity: i like puzzling out timeframes. the more the past makes
sense the more the present does
I'm twenty years old. Two decades old. No longer teenage by any stretch of the
word.
Dear future self -
you better be kicking as much fucking ass as I have kicked and am
presently kicking. We have a reputation to keep.
I was hoping to have a book published by the time I turned 20. I think I tossed
the manuscript. The plot was meandering and while it was serviceable I think
I'm just gonna write something else.
My paycheck last Friday was $555.28.
I read Tank Girl and liked it. Tank Girl 2 I liked less but liked a whole lot
more high than sober. Chronologically the next one is the movie novelization
but it's a little harder to find for download and my texts SD card shattered
due to high stress (I get it).
We arrived at the Orlando Greyhound station, kissed, and I went inside to
double check whether my bus was there yet. They had a different time listed for
my bus than what I had on my ticket so I went to the information desk for help.
They said I needed to jet over to the address on my ticket, which, rather than
the place at which I had been dropped off, that place, which I had foolishly
assumed was the same place I should depart, was a small bus tours business in
an Asian marketplace. So we went over there.
The car ride took a bit and it was stressed about me missing my bus. I was
stressed too but pretended not to be. I asked if I could get my ticket
rescheduled and the clerk told me in broken English I should catch the bus at
the station we had just left. I said it would be impossible to catch the bus
because it had left by the time we got to Atlanta Bus Tours and the clerk said
that was a real shame because I couldn't reschedule my ticket or get a refund,
but that I should check the Greyhound website. The website was barren except a
cancellation page that errored on my ticket number.
However before determining I was stranded in Orlando Florida I, heroically,
told my girlfriend it could drop me off and I would Figure It Out. I am averse
to asking for help, severely and perhaps it is terminal without intervention.
But then I would have to bother someone to intervene. I slept that night under
a palm tree across from an abandoned Magic Outlet Mall. I thought this was a
franchise but looking it up it is in fact the one and only Magic Outlet Mall.
The reviews are good.
The original plan for Orlando was to spend my time browsing the city and visit
a friend in the area (now girlfriend) and the plan slowly morphed into spending
most of the week in a bed and being really well rested. It felt really good to
be well rested, actually. My head was clear. The plan was originally to sleep
in forgotten areas of Orlando but I couldn't have imagined how sparse the city
is. Cities should be dense, naturally developed, zoned curiously and built
vertically where space was no longer available otherwise. Orlando is the
opposite. My time in Florida was the best week of my life despite all of this.
Easily.
Spotify Playlist: florida
Billy Knows Jamie 100 gecs
Kiss My Own Dick David Shawty, Yungster Jack
dui estelle allen
CREEP U Black Dresses
Tell Me Your Secret death's dynamic shroud
うずまき Machine Girl
I Slept With Someone in Fall Fall Out Boy
Out Boy And All I Got Was This
Stupid Song Written About Me
Somebody's Watching Me Rockwell
Revenge Captainsparklez, Tryhardninja
N95 Kendrick Lamar
Nightcall Kavinsky
Cops and robbers underscores
Loansharks underscores
Old money bitch underscores
2023-08-28
[ 8:53 AM] trinity: fuck plato
[ 8:53 AM] trinity: plato would fuck a mcchicken and say hey guys look i had sex
[ 8:55 AM] trinity: stupid motherfucker
2023-08-29
[12:33 AM] [...]: wgat
[12:33 AM] [...]: what
[12:33 AM] [...]: real
[ 9:05 PM] trinity: full moon. spooky
[ 9:05 PM] trinity: why was i so angry at plato
[ 9:05 PM] trinity: i think i wrote that at a wendys
[ 9:05 PM] trinity: wendys seasoned potatoes sorta fuck
[ 9:19 PM] [...]: cause plato sux
2018-05-20
Disp "GUESSNEXT","CODED BY","DEVEN BLAKE 2018
Pause
ClrHome
2023-09-17 22:58:02 -06:00
5->A
2023-09-17 22:53:58 -06:00
//Prepper
Lbl A
2023-09-17 22:58:02 -06:00
5+A->A
2023-09-17 22:53:58 -06:00
Disp "GUESSES:",A
Pause
2023-09-17 22:58:02 -06:00
randInt(1,100)->B
1->D
100->E
2023-09-17 22:53:58 -06:00
ClrHome
//Main loop
Lbl B
Disp D," TO",E,"","YOUR GUESS?
2023-09-17 22:58:02 -06:00
Input "> ",C
A-1->A
2023-09-17 22:53:58 -06:00
If C=B
Disp "CORRECT","
//Seperate IFs so as to avoid memory leakage
If C=B
Goto A
2023-09-17 22:58:02 -06:00
If C<B
2023-09-17 22:53:58 -06:00
Then
Disp "TOO LOW
2023-09-17 22:58:02 -06:00
If C>D
C->D
2023-09-17 22:53:58 -06:00
End
2023-09-17 22:58:02 -06:00
If C>B
2023-09-17 22:53:58 -06:00
Then
Disp "TOO HIGH
2023-09-17 22:58:02 -06:00
If C<E
C->E
2023-09-17 22:53:58 -06:00
End
2023-09-17 22:58:02 -06:00
If A<1
2023-09-17 22:53:58 -06:00
Then
Disp "OUT OF GUESSES.
Return
End
Goto B
2023-09-16 21:03:29 -06:00
/blah/2023-09-16.html
The pages got disorganized in my backpack, so here they are as I dig them out.
The View from Halfway Down is definitely from before any of the other pages, I
decided to change the name after the person for which I went to Florida noted
it was the name of a Bojack Horseman episode.
---
Homelessness is a crime few want to commit. Dear vagabonds and ruffians, the
former being my category, do, though I thought carefully before deciding. Most
don't. Human beings need creature comforts, consistency, safety. Maybe I'm not
a __real__ vagabond. I'd like housing. I just can't fathom honest safety;
acceptance.
Salsa shark.
I'm not a real programmer, not a real writer, not a real vagabond, not a real
human, not a real woman, barely a cook - a bad one, and a burden on my loved
ones. The voices in my head disagree. When did I become the negative one?
I imagine if I don't catch a bus in 7 hours I will be swept into the ocean. I
understand - no, kin - Dostoevsky.
I will start asking others to help me. I sort of wish my ancestors stayed in
Finland. But I wouldn't have met [...], [...], [...]...
Draft kinlist
- Patrick Bateman
- Ryan Gosling
- ANARCHY Stocking
- IBUKI Maya
- AMANE Misa
- My friend Lily from Maine
- Saul Goodman
- Mike from Breaking Bad
- Mr. Triangle from Gravity Falls
- Charlie Chaplin
- Dostoevsky
- Franz Kafka
- Abandoned Magic Outlet
- Randall from Clerks
- Rorshach
---
Rules for the road: charging
Charge your biggest battery first. Use it last. Batteries before devices.
If near a power source, use it. 1% is a text message.
Charge as much as possible; if there are as many power sources as you have
devices, all your devices should be charging.
Use 1 device at a time, if necessary, if you can help it.
Internet takes battery. Cell networks take more.
2117: Departing Jacksonville
---
THE VIEW FROM HALFWAY DOWN (pg. 1)
My job is to separate the bones. I stand at South Station in front of a
conveyer belt - my conveyer belt, just for me - and dip my hands through the
skim and pick the bones out of the line. The bones go to the vat to my right,
to level twenty-something, where the marrow is extracted and they make the
jelly. The meat, the fat, and most importantly, the blood, go further down the
line and to level 31 which I can see below me. Level 31 is where the content is
homogenized.
I saw and talked to someone when I was in training. I don't remember its name.
It handed me my scalpel and taught me where to cut. The torso is handled by
those before me, whose work I admire. I admired the eyes to whose nose I
talked. The stainless steel. Smell of warmth. Blood from limb.
Those before me cut a Y into the chest and take the organs. My turn is already
hollowed so I use my scalpel to - efficiently - extract the bones from the
forearm, the upper arm, calves, thighs. Cut dip pull move. Cut dip pull move.
I can tell when a new hire takes over. The cuts aren't as neat, more is taken
with the organs than necessary.
It's so loud. Something always needs chopping, grinding. I hear dremels above
me sawing through bone. Everything is red.
I separate the bones because I was told to do so, and separating the bones is
how I am let live, let breathe, let sip, let eat the meat. My first day is my
breath, my second water, my third my apartment, my fourth this. This meat.
It is ground and turned to food. People beget people beget me. Simply. I
remember it that begot me. My handcuffs were unlocked in front of a
blue-painted skyscraper, my home.
---
Today I woke up next to [...]
and the [...]
oh, to think, since it's been 48 hours
today's four days long shoulda already been home
I can't remember yesterday, it's sure been a while
Since I asked did we - did you - while reaching for my phone
[...]
it's been two days since yesterday and I still haven't seen [...]
I missed my bus, shit, went to the wrong station
the agent told me there wasn't any way to change it
$250 down the drawin and I slept under a palm tree
a friend booked the next ticket, owed me, now I'll pay the difference
---
machine
and no there won't
be a sequel
---
[grossly inaccurate drawing of the fifty United States
---
THE VIEW FROM HALFWAY DOWN (pg. 2)
From the top of the skyscraper I heard the bellows of the heavens. The distance
made the roar fade and twist into a melodious drone that seemed to be the tone
of the local crimson soil and the resonance of being. I clutched the railing of
the lift upwards, 33 stories minus none, that carried me into the low ashen
clouds. The noise crescendoed.
It was halfway up that lift, 16 stories or so, that I met my predecessor. We
made eye contact, me slowly going up and it, stained all over in various films
of scarlet, swiftly descending. In a second I heard vague yowls of excitement
far below me.
Suicide is the most natural way to die. By choice rather than by chance. In my
opinion to die in such a way as to mix impure brain or spine with meat is to
end in selfishness, to ensure death with one's calories.
To say nothing of the crime. I stayed on the lift because that is my job and my
duty, and I realize that now. I committed a heinous act. I don't remember it
and naturally could not therefore defend myself. I now commit all my heinous
acts to memory.
I was a cook. My job was to render meat into meals; patties, stew, sausage, and
sometimes delicacies if a person to me noble came to the kitchen. I thought the
work was difficult.
I like to think about dying. To be separating my own bones on line. When I die
I'd like my cuts to be beautiful, sharp and clean, by those professional
processors that have honed their craft with their blade.
Sometimes the bones are broken. Sometimes all the bones are broken. Nothing was
not deafening. But nothing, too, became deafening. The drone joined my silence,
residue in my riddled brain. I lie awake at night, if for nothing else then the
cacophony.
---
THE VIEW FROM HALFWAY DOWN (pg. 3)
I have been chauffered from place to place, as if I am cattle, since I was very
young. Perhaps it has been this way forever. I love my job. I love the smell.
It may seem unbelievable but it's true, I was raised in the smell, I know the
scent of blood better than flesh, I love the smell. I have also made my peace
with the unending mechanical thunder. I can't hear much else. My fingers may as
well have been tattooed red. Cut dip pull move.
I don't know where the people came from. Nor do I know whom I would ask. I live
just as well.
---
2023-08-19 T 1400
ON A GREYHOUND...
An hour or so ago, between Lewiston (Maine) & Portland (Maine), the driver
stopped the bus, opened the door, stepped out, took some paces into Maine's
ubiquitous forest, and out of our sight, pissed.
There's something about commercial transit in this state that makes ya gotta
go, I suppose.
I'm sitting wedged against my pack and carryon, Lynn, never before mentioned
stuffed IKEA shark, above me, wondering when I can smoke my next cigarette.
I imagine Lynn is wondering when I'll again quit.
Greyhound is comfortably, perhaps haphazardly, disorganized. I was hoping I
could stow my pack under the bus. Funny thing about hope... I've been rereading
Watchmen and listening to the driver's radio. 80s? 60s-80s?
I wanna see [...]. 150mins down. 2790mins to go. At least by my small mental
scratchpad. I'm embarrassed to do the math out on this real pad. I have 3
calculators...
---
PHONE ATT.
------------- -------------
| INT SDA SCL | | SCL SDA INT |
| DCIN 5V GND | | GND 5V DCIN |
------------- -------------
-------------
| 1 _ DCIN ___|
| 2 _ VOUT ___|
| 3 _ GND ____|
| 4 _ SCL ____|
| 5 _ SDA ____|
| 6 _ INT ____|
-------------
---
2023年08月27日
I SHOULD BE ON A GREYHOUND...
Today is sunday so I guess I'll start from last Monday.
On the 21st, 1300 or so, I arrived in Orlando Florida, city - city? - of dear
hearts and weak knees. I was here to see a beloved someone and soak up some sun
and have a good time. I've never been to Florida before - in fact, I'd only
been as far as Virginia, which I didn't particularly like. I remember being
disappointed we couldn't go to a Kentucky KFC. How goals change...
I called an ex-roommate and we spoke about how things were up in Maine: not
great. Then I called [...] who was on its way over to pick me up, on a car trip
longer than I would expect (20mins? 30?). After confusion about where it was
going (the nearest Family Dollar so I could get deodorant after spending 49
hours on a bus) it arrived.
It was shorter in meatspace than I expected. More beautiful. We met on-line in
[...] after a video call in which I noticed it and got flustered at how hot it
was and it got flustered at my calling it fucking stunningly gorgeous and
everyone else in the video call in the programming community sat in silence. I
threw my backpack and carry-on in the back of the car and got in the passenger
seat and I got flustered and it got flustered still more than half a year later
for the same reasons.
Every siren makes me nervous. I know how this city treats its homeless. City?
---
Orlando isn't what I, a Mainer, imagine a city to be. Before Florida's
colonization and sterilization it was just a swamp or something like that -
every presence, as well as every absense, is deliberate. It's strange how much
absence there is. Sprawling empty parking lots, five-lane roads, lines of palm
trees and now cars and the empty Magic Outlet in front of me. A city is dense.
You can walk to another restaurant in less than five minutes if you're not
enjoying your meal. People talk to you, maybe not in your language but a little
gesturing goes a long way. There is nobody in Orlando except the sun and the
heat.
1730. No new text messages. I'm considering pawning my sleeping bag.
1804. 1 new text message.
On the 21st, 1500 or so, after some typical affection - as in, the act, not as
in what it meant to me - I took my first shower since about 2300-0100 between
the 18th and 19th in Maine. The water in Orlando is excellent. Ice is a must as
most taps only allow a selection between hot and lukewarm due to the
temperature.
Then I don't remember. And what I can remember doesn't belong here.
I thought nechan was eye-chan, but eye is me [this is Japanese; pronounced
"meh"]. Its eyes are beautiful. Much of this week I was paralyzed in awe at how
beautiful my girlfriend is. It is also just in general an excellent person. We
cooked dinner together nearly every night, it learning my rat bastard scarcity
recipes and I learning what real food tastes like and how to pronounce
jalape~no (hah lah peh nyo).
"There's something inside you. It's hard to explain. They're talking about you,
boy, but you're still the same."
---
I think it's going to rain and I have no shelter. Maybe I could figure a way
into that Magic Outlet but I have too much in my backpack to hop a fence and no
decent tools for lockpicking.
1833. No new text messages.
Received SMS from ??? ([...]) at 2023-08-27T17:07:38-0400:
stay as safe as you can please
TRINITY: Would you still love me if I was a worm?
[...]: No.
TRINITY: ...
I would still love you if you were a worm.
[...]: You love me?
I'm sorry for not showing it with my actions. Of course I love you. That was
what I was figuring out while I disappeared.
I don't know how to ask for what I need.
Magic Outlet Mall: Brand Names for Less
says the sign's faded vestige on tan-gray bricks
above palm trees yellow tape abandoned commerce sign
the magic outlet tapped out ain't that just the way
I don't miss my bed because I never had a bed
I had an air mattress flattened every morning by seven
then I got a foam slab but I'd still feel the bedframe
I don't miss my bed, I miss having my own space.
Magic Outlet Mall: Brand Names for Less
now here we both lie in the dirt at sunset
the light here is different prettier in many ways
better home than my last home, no roaches or sleeping bag cat spray
1-800-FL-LEGAL I just keyed a Tesla
my magic outlet sleeping space saw a rich asshole intruder
where will you deport me bitch barely of this earth
I'm from an orbiter of mars and polycule network
---
2004. No new messages.
I just heard a cicada for the first time. They're deafening. Like a car alarm
in immediate proximity. They make a piezo buzz like they're charging up a
missile and continue to target you with an otherworldly humm until the sun
finishes its descent.
The sun and his heat are gone. It is me and Luna and Gaia that remain. Lights
are on at the magic outlet. I guess it had a little more power.
I did not need my laptop, tech repair kit, phone parts, or two tablets. I
should have brought 1 tablet, my phone, and that's it. I needed a UV5R with
extended battery. I did not need the condoms. Gay sex is better anyway. I miss
my 5.11 RUSH 48. The ALICE's organization isn't great and it's harder to pass
unnoticed. Better would be TSA carry-on sized, then I wouldn't need to part
with my luggage. Greyhound never searched me. I'm covered in mosquito bites.
---
2023年08月28日
Hurricane Idalia - maybe only a tropical storm, I'm not sure - hits Florida
tomorrow, and for that I will need to either stay with a friend or find a
strong umbrella.
My bivy didn't survive the night, kinda shit but makes good insulation from the
ground. I could have roughed it but I wanted to be comfortable and I was
worried about bugs. I'm really unfamiliar with the local flora and fauna.
I had tickets to Billy Joel and Arctic Monkeys. I was only excited to see the
friend with which I booked them. And now the plan is to go back to our
hometown.
I'm scruffy and my hair is wack. We - as in, my girlfriend and I, which is a
delight for me to write - were planning on watching a lot of vampire movies:
Nosferatu, Only Lovers Left Alive, and Shadow of the Vampire. We ended up
watching the old classics American Psycho, Clerks, and Drive. It had never seen
Clerks and I had never seen Drie. Nor had [...] who was there Saturday. I
didn't catch a lot of the plot of Drive as I was distracted but [...] explained
it in the morning and it seems like a good movie. I was surprised at how
graphic [...]'s death in the movie was, it was a little triggering to be
honest.
It feels good to be bitten. Bitten hard. Bitten so hard you have a mark the
next day, a bruise after a week. It feels good to bite. I bite weakly,
cautiously. I bite worried about the mark and tearing flesh and the pain. It
feels better to be bitten by one that does not care. But I feel bad when I
don't care.
/blah/2023-09-09.html
western mysticism influencers stick
dispensing business stickers onto crosswalk notices
and say that mary jane is the merriest trick
and that egotistic bourgouis corpos shouldn't be so rich
2023-09-04 15:48:55 -06:00
/blah/2023-09-04.html
Regarding something I read.
I feel some guilt for not really having a lot of trans pride.
I grew up on /b/. Post golden era, when /pol/ started festering in its second
coming and pseudoanons started spiking the machine, everything got a lot more
transphobic. I didn't give a shit what the r/greentext exiles bore in prejudice
but I knew their opinions roughly reflected the 20% or so and life would be
easier if I lived without making them piss and shit themselves. But being
dishonest with myself, or being honest with myself but hiding who I was, didn't
work for me. I felt nothing as I breathed nothing and I worked on hidden
projects and scum agendas with the pitch hands of a tear in space, wordlessly
and heartlessly to test the limits to which a person could influence. Rage
against the biomass. I also wasn't able to safely come out in meatspace but to
a few at the time friends who still misgender me after years.
My dream was not to be accepted and trans, but to be ignored and a cis woman.
Or pass as a cis woman.
I too started programming on graphing calculators but I felt invalid, not a
true programmer, so I called it coding, and myself a coder, as evident by the
splashes I put before my TI-BASIC programs. Deven Blake is not my deadname, by
the way - I had my name changed when I was very young. I still don't see myself
as a programmer. Insecurities.
I had other thoughts but I forgot them.
2023年06月27日
When I started learning to program all I had was FreeBASIC and I just. Didn't.
Get it. Nor did I get PetitComputer which I got for my DSi XL. The first time I
made anything was when I was 11, 3 years after I started learning, and made a
simple drawing demo in Processing.JS.
I was not a natural programmer. Lacking any sort of lessons or guidance or a
lot of motivation I floundered, and floundered, and floundered, and tried and
failed a dozen times. Pascal, Fortran, Petit Computer, FreeBASIC, Microsoft
Batch, SmileBASIC, a dozen more. Now I work in C and shell, only because I
learned shell to script tasks and learned C to understand my scripts better.
A lot of people see expert programmers and get discouraged. My advice: Pick a
_good_ tool ~~(C or shell)~~ and stay until you know it. Python!
OK I'm done shitting
need more fiber
I'm elsewhere, AFK - I wanna add this to the blah though.
Undated; maybe from a year ago? Written on a paper bag in black sharpie
soy sauce -> dill
-> teriyaki
-> avocado
-> salt
no too
Na
coffee
avocado -> ? brown ?
chai honey
blueberry lemon
green tea maple
pineapple -> oat soggy?
-> grape
key of C cheese
cream cheese
sat atop a
speaker playing
435Hz until
the Cc is
extra soft
"dream cheese"
-> orange zest
mainly -> chamomile
-> green tea
lemon
honey
"mean cheese"
-> jalapeno
chili powder
cinnamon?
orange zest?
~~paprika?~~
~~turmeric?~~
pumpkin?
cinnamon?
kale?
salt?
pepper?
mint -> lavendar
-> coconut
-> garlic?
garlic rosemary
licorice + lavendar?
malta cream cheese
-> how?
[ -> why? ]
dandelion?
dandelion maple?
wasabi?
birthday cake?
bubblegum?
matcha!
cinnamon ginger
cola?
moxie!!!
mountain dew?
doritos?
fritos?
"team cheese" blueberry
for olympics strawberry
season (2024?)
2023年07月03日
07-05 wisdom
teeth recheck
8AM be there @ 7
commie gets fucked by capitalist,
well he was so hot
can't afford the rent
and he drives mercedes benz
and we did it in the parking lot
all of the fucking jacked in bullshit
went to law school on daddy's nest egg
and I'm stealing toilet paper out of the store
I had a good thing and I fucked it up
everyone I know has gone
came down into the mosh pit so I can push you away
just hit your head get out and run
I had a good thing and fucked everything up
all my friends moved on
I'm still here sleeping on the floor
yeah didn't we have so much fun
2023年07月04日
July 4 - when the
USA declared independ[...]
from Monarchist cunts.
I'm hiding in a parking
lot far from the hordes
that have invaded the
~~areas of~~ usual areas
of congregation. Loungi[...]
against my backpack
among Razor scooter
and Sony camera
watching the st[...]
sky
Amateur pyrotechnicians,
like teenagers on prom
night, put all their
effort into the first
five minutes of their
shows that blaze
occasionally during
twilight. The pre-show
to the fireworks
demonstration - paid
for by your tax dollars
- performed by the
city. I'm considering
breaking into an old
mill to see sky from
roof.
But that's so much
effort and the crisp
air hasn't yet cooled
me after my frantic
dash on two cheap
wheels from unnerving,
unthinking, unpredictable
crowds. A pack of
wild children crosses
my turf before deciding
to continue up Canal St.
My face itches. The
sweat and my
moisturizer are
considering waging
war on my dry skin.
2023年07月12日
[...] appt 18日1000
2023年07月13日
methamphetamine
took all his molars
and then crack cocaine
only left his front teeth
Paul always yearns
for steak medium rare
but the man only has
cans of soup to eat
consumption begets
more of the same
when it doesn't,
it's illegal
give me your money,
shoes, or brain
you're not allowed
to call me evil
I am the capital
meth took my molars
crack took my canines
lying on a park bench
what took my mind
i can't sleep in a bed
won't sleep in a bed
i can't sleep in a bed
what took my mind
the gray matter bubbled
bends made me all fried
I keep tossing & turning
what took my mind
how do you fix that?'
death
but I love life and I love
sex
my friends all died and I'm
left
but it's not now my turn to
end
I just want a steak
but crack took my canines
my destructive consumption
what the hell took my mind
methamphetamine
took my molars
crack cocaine
took my canines
then life decided to
dissolve my gray matter
please, Gaia
who took my mind?
destructive consumption
oh how badly I crave steak
all I've got's my two front teeth
can't eat even if I have my cake
my nerves shoot my eyes
head won't stop. someone end my pain
please, Gaia
who did this to my brain
2018-08-30
Disp "SCHEDULE","CODED BY","DEVEN BLAKE 2018
Pause
ClrHome
//Menu
Lbl M
0→Z
Menu("LHS SCHEDULE","VIEW SCHEDULE",A,"EDIT SCHEDULE",B,"QUIT",C
Stop
//View
Lbl A
ClrHome
For(A,1,8
"!D:→Str1
A
Asm(prgmLBLRW
Output(A,1,Ans
End
0
While Ans≠21
getKey
If Ans≠0
Output(8,1,"2ND TO QUIT
Goto M
//Edit
Lbl B
ClrHome
Output(1,1,"1-8 TO EDIT
Output(2,1,"OTHERS TO QUIT
0→A
0
While Ans=0
getKey
If Ans=72
7→A
If Ans=73
8→A
If Ans=82
4→A
If Ans=83
5→A
If Ans=84
6→A
If Ans=92
1→A
If Ans=93
2→A
If Ans=94
3→A
End
If A=0
Goto M
ClrHome
Disp "ENTER NEW DATA
Input "",Str1
"D:"+Str1→Str1
A
Asm(prgmLBLRW
ClrHome
Disp "DATA CHANGED!
While Ans≠21
getKey
End
Goto M
//Quit
Lbl C
ClrHome
Stop
//Data
Lbl D
PERIOD ONE
PERIOD TWO
PERIOD THREE
PERIOD FOUR
PERIOD FIVE
PERIOD SIX
PERIOD SEVEN
PERIOD EIGHT
2023-08-26 16:26:35 -06:00
/blah/2023-08-25.html
the voices in my head just gave me a pep talk
i was wondering if my presence had done harm
because my host just went away said they thought they felt pent up
now i'm sitting here in the dark on my laptop
i can't justify my presence if i've done harm
can't justify existing if my presence won't let pain stop
i worry about hurting everybody i love
they say it's not my fault but would say the same if it was
i'm not feeling great it's not my stomach it's my head i
think it's the static state of my location i've been in i
was wondering if i could get some space for a minute i
am going out i'll be back or if not i will text you back bye
i cleaned the room i'm staying in it's not my room it's its
it's its near institution living space i've invaded and its
floor is taken over by my shit from my backpack it is
now in the corner so it's not so claustrophobic inducing
i should shit or get off the pot but i still won't turn the light on
i would rather sit in darkness than walk over to the switch my
laptop is light enough and i don't like disturbing the air
2023-08-23 18:37:31 -06:00
/blah/2023-08-23.html
roses are red
the warmest color is blue
holy fuck i'm in florida
and i'm on your todo
it's so nice to be normal
but there's nothing normal about you
you are so fucking special
and i know you're kind of weird too
I feel good. Really good. This is the best vacation of my life.
2023-08-23 14:50:49 -06:00
/blah/2023-08-20.html
On a Greyhound...
I'm in South Carolina, or maybe Georgia. A long way from Maine - don't remind
me. Or do.
I have made it out of Lewiston.
The most tearful goodbye was my sidekick with whom I have resolved to join in
four months. I'm considering returning to Lewiston because I am so worried
about her alone in the colloquial "dirty Lew". Atlanta is 130 miles away, so
this must not be Georgia.
I wouldn't go to Hell if it was the only way I could see her. But if it was the
only remaining way to see my sidekick I would think about departing every hour.
Now the notion for myself is out of the question, completely, absolutely, not
even by accident. I'm more careful now. Fewer risks taken. Healthier choices.
Which isn't to say our separation would destroy us. We take measures to ensure
minimal if any codependency. But a wrongful separation, too soon or too early,
would.
The skyline has McDonald's, Arby's, Exxon. It could be a Maine skyline if the
Makku didn't have neon on its fringe, if the gas station was by a different
name, if there wasn't also a Waffle House. I hadn't seen a BP gas station in
my life until Virginia or so when I first noticed a "green Irving".
Anderson, South Carolina. I need to take my estrogen. Done. I am so thoroughly
farther from the place from which I was I can already scarcely remember the
sparse urbanoid environment. The forested ghetto.
The local accent has in common with mine that Atlanta is "et LANna". I wonder
what the older, thicker Maine accent would say.
Next stop: Gainsville, Georgia, if I spelled it right. I'd like to go to a
Waffle House. I wonder if they have vegan options.
2023-08-15 16:04:19 -06:00
/blah/2023-08-14.html
2021-01-12
sitcom.txt
CARLOS walks into the room.
FELL: So, how'd it go?
CARLOS: It went well. It went pretty well.
CARLOS faints onto the sofa. FELL grabs a bottle of water and pours a
third of it on CARLOS.
FELL: Well? Just well? Did you...
CARLOS (sputtering from the water): Yeah. Yeah we did. It was... sexy.
FELL: Sexy?
CARLOS: I mean, I almost died. But it was sexy.
FELL: How?..
CARLOS: Ah.. strangulation?
FELL: Strangulation?
CARLOS: I was suspended from her ceiling fan by a rope.
FELL: Oh.
CARLOS: I just need to take a quick nap to recuperate here.
FELL: Is that why you have a new turtleneck?
CARLOS: Yeah. She gave it to me when she took me out to Dennys.
FELL: Oh, well that was nice of her.
CARLOS: On a leash.
FELL: A leash?
CARLOS: I was fortunately wearing a paper bag, so it's okay. No embarrassment.
FELL: How did you eat?
CARLOS: I didn't. She said she was going to peg me later.
FELL: Did she?
CARLOS: Yes.
FELL: Was it your first time?
CARLOS: No. Thank god. She pulled out a nine-incher-
FELL: Jesus, a nine-incher?
CARLOS: That's what she called it. It was more than a foot though.
FELL: The nine inches was...
CARLOS: The nine inches was its girth. Yeah.
FELL: Did it hurt?
CARLOS: Not really, she gave me some drugs or something-
FELL: Let me see your eyes.
FELL shines a bright light into CARLOS'S eyes. Their pupils shrink.
FELL: Your eyes aren't dilated.
CARLOS: Yeah, I'm not still high or anything.
FELL: So, she hanged you up like a pin~ata-
CARLOS: Like some kind of French pin~ata-
FELL: and then after she was done with you there, doing?..
CARLOS: She put a vibrator in my ass.
FELL: So you were swinging around by your neck with a vibrator in your ass?
CARLOS: In my ass and two on my nipples.
FELL (concerned): Was all of this consensual?
CARLOS: What, does she seem like a fucking monster to you? Of course it was.
FELL: I was just checking.
CARLOS: I loved that shit. We're going on our second date next Friday.
FELL: That was the first date?
CARLOS: That was me coming over to play video games. Things just snowballed.
2021-12-03
priongod.odt
I am rotting. I can feel it. My brain eats at my skull at my eyes at my
tongue my tongue. Left arm gone. GOne. I am sitting in this freezer rotting.
The flies cannot find me but it doesn’ t matter. In the years after I am gone
the precipitation the weather the wind the rain the snow the sleet the hail
will fall will reign will blow will fall will fall will destroy this building
not today not tomorrow not in a hundred years but. IN a hundred years. Plus
one. Plus one day. The rust, the rot, the rot of the barrier between me and the
world will become rot in here with me with what used to be me. And my rot, my
sacred rot, will join the world’ s. And the flies will find me will find what’ s
left and they will love me and I shall bE THEIR GOD. But now as I sit I a,m no
GOD no MESSIA the messiah came and I was weak as were everyone ELSE. We are all
dead. I am merely the last animate in a sea of death.
I was seven days younger when the fast moving slow destroying
harbringer of harrowing horror bit flipped and started eating a cow a hundred
magnitudes’ faster. Deus ex bovem venit.
Nobody at work read the news. Then half the cows in Canada died in the
span of eight hours. Nobody at work could afford to hide from the news anymore.
Fast food. Our lives were made from the deaths and consumption of cows.
By the time the corporation that owned the building in which I made my
living determined the price of the new scarce burger the rest of the cows in
Canada had died too, and half the people had died with them. It was at this
point that people started to worry.
Six days ago I woke up to an alarm clock that would never ring again to
a world that had changed and to the realization that I could not feel my left
foot.
2021-12-23
epilogue.odt
I woke up at dawn to the peace of my home, got out of bed, without
making it, a single pillow and blankets on a tatami mat, next to some books,
found in the basement of a church, some of its stones even still standing,
whatever denomination it was wiped away with its believers, said good morning
to my mother and father, whom I love, and who taught me love, love the only
thing I know, war wiped away, destroyed not by itself but by something smaller,
greater, got out the door, spoke my hello to the cow, the chicken, the grass,
the flowers, and began my stroll through the green, my daily walk, through the
once urbanus field, the only thing remaining being the dust of concrete and
glass, metal, lithium, my stroll my favorite exercise, through the peace of the
outside, from the peace of my home, in this piece of the world.
With the ascending sun today to my starboard, I walked through my field
of soy and wheat and potatoes, almost undisturbed by rot. I kept beatpace until
it reached halfway between the heaven and the dirt which was when I came to the
barrier, new, of the century, that had bothered me last moon. There it stood.
Moss had yet to take its rightful place and no cracks were in its boulders.
Enough powder we had to take us again to this season, more than enough barrels,
yes, but I’ d have liked more soy just in case. More soy in that place. Now
there were only stones and flowers.
By the sun’ s peak I’ d returned home, and knowing my father had known
this land before I’ d known this life, I found him in a rocking chair in the
pasture, rocking back and forth, staring at a lone tree in the shadow, his hand
fallen to his side, fingers brushing the cow, whose own chest rose and fell, as
he rocked, the cow laying next to him in the same peace. “Father, do you know
the edifice, beatpace eighth the right sun from home, new as it stands?”
He didn’ t open his eyes. “Yes, if you can call it that. My own father
built it. Do you know why it stands?”
“No.”
My father took his hand from the cow and traced the air. “It…” he
trailed off. “The words flee. Where are we to Sol?”
“Nine suns past its solstice.”
He smiled. “Bo; go back to the stones. You’ ll see why your ancestor
erected them.”
I returned to the stones by the time evening started to take its toll,
sat by the flowers, and waited for epiphany. It came after the sun’ s set, when
a low roar rose from the sun’ s resting place. I lay staring up at the brilliant
night sky when the roar swallowed me all at once. Jumping to my feet, I saw it
all around me, a black mass, running past me towards the sea. A herd of cattle.
I’ d never seen one before, nor had I seen so many fauna in the same place,
twenty or thirty cows running towards what I had never known. I and the moon
above me stood upright watching them go.
After I slept I returned to my father, still in the pasture. The cow’ s
chest was stationary.
“Miles, did you find what you sought?”
“Yes.”
My father seemed weary. “Would you say it’ s been nice, to be here? To
exist in this world?”
The tree’ s leaves were as green as I remembered. “Yes. It’ s a good
world.”
Father smiled. “I’ m glad you see it this way.”
/blah/2023-08-12.html
Five more days.
The tubes are in the process of being packed. I'm gonna do some cleaning this
morning (maybe). I have a shit ton of Thinkpad X200 Tablets from work I was
doing and I was gonna give one or two to locals but I think our government
provided tablets are enough for everyone.
I don't have the energy to explain. Through some government program the needy,
after filling out half a dozen forms, are given a free ten-inch tablet and a
15GB/month 4G LTE data plan that will be paid for until whatever act provides
it expires. Or you can bribe the person handing them out. $20 bought me a ten-
inch tablet and 15GB/month indefinite data plan. I don't feel bad because I
most likely qualify, I just hate forms. I can't figure them out. Something in
my noggin just can't do paperwork. I've been using the government tablet for
piracy. Breaking the law with government approval works pretty well for the
CIA, at least.
I got new Doc Martens and I feel scummy about it. They're a leather product. A
cow died so my feet could be dry. They don't make 1460 SRs (slip resistants)
vegan and I need them for kitchen jobs - while regular 1460s are good enough
for a kitchen, I need my boots to be unimpeachably adequate, which these
standards-compliant boots are. And they cost an arm and a leg but hopefully
they're worth it.
2023-08-06 15:16:37 -06:00
/blah/2023-08-06.html
The blah/ works now as well as it did early July, but is based on homepage, my
fucky single file static site generator. This was something I needed to take
care of before I left or I wouldn't get around to it; if I'm using some shitty
interface to edit the git repository instead of good old UNIX (which may happen
if my tech breaks down) I don't wanna figure out how to manage directories and
new files and stuff. I just want to edit the same old file and hope the web
interface doesn't fuck everything up. Granted, I don't know if Sourcehut has a
web interface. So that could be like 50 hours of work down the drain. But I'm
happy with homepage and it's another quirky little project of mine.
/homepage.local verbatim
#!/bin/sh
set -x
for f in ./blah/*.html
do
awk '
BEGIN { n = 0; }
/^\$!NAVIGATION$/ {
if(++n == 1){
print $0 "\n\n" substr(FILENAME, 8, 10) "\n"
}else
print "\n" $0;
}
!/^\$!NAVIGATION$/ { print $0 }
' "$f" >"$f.tmp" \
&& mv "$f.tmp" "$f" \
|| rm "$f.tmp"
f="$(printf '%s\n' "$f" | sed -e 's,./blah/,,' -e 's,\.html$,,')"
test -n "$last" \
&& sed -i "./blah/$last.html" \
-e "s,\$!NAVIGATION,$nav<A HREF=\"$f.html\">\></A>,g" \
&& nav="<A HREF=\"$last.html\">\<</A>" \
|| true
nav="$nav<A HREF=\"index.html\">^</A>"
last="$f"
done
sed -i "s,\$!NAVIGATION,$nav,g" "./blah/$last.html"
ls ./blah/*.html \
| sed -e 's_.*/__g' \
-e 's/\.html$//g' \
| sort -r \
| tee ./feed.xml \
| sed -e 's_.*_<A HREF="/blah/&.html">&</A>_g' \
-e "1i\
2023-11-22 00:49:07 -07:00
<!DOCTYPE html><HEAD><link rel=stylesheet href=/style.css />\
<TITLE>blah</TITLE></HEAD>\
2023-08-06 15:16:37 -06:00
<BODY><PRE><A HREF=\"..\">..</A>" \
-e '$a</PRE></BODY></HTML>' \
>./blah/index.html
sed -i feed.xml \
-e "1i\
<?xml version=\"1.0\" encoding=\"utf-8\"?><rss version=\"2.0\">\
<channel><title>trinity.moe/blah</title><link>https://trinity.moe/blah</link>\
<lastBuildDate>$(date)</lastBuildDate>" \
-e "s,^....-..-..\$,<item>\
<title>&</title>\
<link>https://trinity.moe/blah/&.html</link>\
<description>blah post for &</description>\
<pubdate>&</pubdate></item>," \
-e '$a</channel></rss>'
2023-11-22 00:49:07 -07:00
curl -OL http://viznut.fi/unscii/unscii-16.ttf
curl -OL http://viznut.fi/unscii/unscii-16.woff
2023-08-06 15:16:37 -06:00
2023-08-05 09:05:36 -06:00
/blah/2023-08-05.html
On August 19 I'm taking a Greyhound away from Lewiston, Maine and I'm probably
not coming back. The only thing that could precipitate my return is my sidekick
being in trouble here.
Since walking out of work I've been picking around and working on clearing out
the stuff I'm not taking with me. It's been difficult. Sidekick left June 22 or
so and I haven't seen her since. Called regularly until recently. For the last
couple weeks she'd be here the day after we called so we could hang out before
I leave. Now I think I've lost that hope. If I'm being honest with myself I
knew 2023-07-07T1300 that I wasn't gonna see her again. But I also knew I'd
been wrong before. She said she'd be here yesterday. We didn't call to extend
the promise.
I feel like a divorcee. But if she walks through the apartment door between now
and the nineteenth she's welcome certainly and without a second thought. But I
know she doesn't read this blog. Few if any do.
/Suffix verbatim
</BODY>
</HTML>
/blah/2023-08-04.html
when I'm unrepairable I need you to not break
I may be your dependency but I can't change my fate
you don't understand me or that I'm just pushing you away
I promise it's not your fault I just can't bear to leave you chained
chained to my lifeless corpse, cadaver floating in the sea
waterlogged and bloated, pirate pacific devotee
swiss army woman drifting, you're still holding onto me
please just let me go so you yourself can go be free
your self sabatoge got to me and my life got to you
i don't know how arrange the words that'll get it through
buddy dear I love you and I'm hopelessly now due
for my seven years of bad luck month of hell condemned volume
2023-08-03 17:15:58 -06:00
/blah/2023-08-03.html
The Ballad of Sean and Josh
Sean is forty eight
Josh was twenty that
when Sean took Josh away
from the closet in the flat
where Josh had made his home
what home among the smack
and Sean lived with his ma
and Josh would live alone
in Sean's house room he lay
and Josh would stay alone
but then he said hello
to Sean in Sean's room
they learned about each one's
life in the dirty Lew
and Josh hadn't too much
and Sean had much to do
in Sean's big old house
Sean's Josh there could have grew
When Sean's ma passed away
in those hospital sheets
the world shut down the same
day Josh and Sean would grieve
and then the money dried up
and so did the sinks
and so did the savings
and so did their things
apartment to apartment
while Sean worked at Burger King
then an eviction was sent
and Sean and Josh moved in
to Sean's car.
And Josh didn't work and Sean said that it was fine
but Sean was working and conversing
and trying to get scheduled overtime
and Josh would smoke all of Sean's weed
and barely chip in from the check
the state sent him every month
because Josh's mom knew the system
and Sean could barely survive
his ankles swelled to tree trunk size
and Josh didn't take a job on his endless break
sleeping in Sean's car passenger side
and Sean cared deeply for his quote-friend
unquote because Sean didn't want Josh
2023-08-03 20:26:03 -06:00
to go sleep at a homeless shelter
2023-08-03 17:15:58 -06:00
in case he'd get stuff stolen from his cot
and Josh just bitched and complained
2023-08-03 20:26:03 -06:00
about the situation at hand and didn't take a fucking job
2023-08-03 17:15:58 -06:00
and sat there watching Tubi on his data plan
and all while Sean could barely stand!
And ten years was a hell of a sunk cost
but Sean didn't take out all this trash
because a human is a human
Josh had a soul, the two had a past
Josh is thirty eight
and now I'm sleeping on Sean's floor
and across from Sean's empty doorway
is Josh's dirty door
I'm twice Josh's age
take twice Josh's pay a week
because he won't take any hours
he just stays at home and sleeps.
The man is able bodied, heck
you should see him smoke a pack
of cigs he bought with Sean's new paycheck
and for which he forgot to pay Sean back
Don't give a mouse a cookie
or give a rat a joint
because Josh got a new girlfriend
and might move 'cause of his groin.
Based on a true story.
I've gotta get out of Lewiston I've gotta get out of Lewiston I've gotta get ou
2023-08-03 20:26:03 -06:00
the songs i softly sing myself
as i'm beaten so blue
are the songs i wish i sang myself
instead of playing them for you
we have come so far apart
like cotton balls unfurled
piece component piece a part
each scattered across the world
2023-08-03 17:15:58 -06:00
2023-07-16 08:20:48 -06:00
/knowledge/true/index.html verbatim
2023-07-15 21:44:35 -06:00
<!DOCTYPE html>
<HTML>
<BODY>
<P>
Oops! I didn't realize I broke so many links. This article was moved to
<A HREF="https://be.murderu.us/unix#posix#true(1)">
https://be.murderu.us/unix#posix#true(1)</A>.
</P>
</BODY>
</HTML>
/k/gacc.html
2023-07-19 21:27:46 -06:00
$!TITLE on the gender acceleration blackpaper
2023-07-15 21:44:35 -06:00
<H1>on the gender acceleration blackpaper</H1>
<H3>updated ⏬?⏬?⏬</H3>
<HR ALIGN="left" SIZE="1" WIDTH="25%" />
<P>
There are some little bits of the
<A HREF="https://vastabrupt.com/2018/10/31/gender-acceleration/">
Gender Acceleration Blackpaper
</A> on which I'd like to elaborate.
</P>
<UL>
<LI>"In 1958, Dwight D. Eisenhower appoints MIT president James Killian as
Presidential Assistant for Science and creates ARPA (later to become DARPA)."
<UL>
<LI>This is technically twice correct. From Wikipedia (because I'm
lazy): <A HREF="https://en.wikipedia.org/wiki/DARPA">"The name of the
organization first changed from its founding name, ARPA, to DARPA, in March
1972, changing back to ARPA in February 1993, then reverted to DARPA in March
1996."</A>
</LI></UL></LI>
<LI>"Despite the consensus among academics at the time that computer science
was essentially an oxymoron..."<UL>
<LI>Even in the mid twentieth century it was clear that computers
would change the world; they could execute complex mathematical operations
near-instantly without error.
However I don't have a source for this (yet; <B>TODO</B>).
</LI></UL></LI>
<LI>"Ultimately, Multics development was scrapped by Bell Labs in 1969"<UL>
<LI><A HREF="https://multicians.org/myths.html#fail69">When Bell Labs
pulled out of Multics development, MIT and others stayed on</A>.
</LI></UL></LI>
<LI>"This new operating system would later be named Unix — phonetically,
'eunuchs' — for being a castrated Multics."<UL>
<LI>The "eunuchs" homonym is interesting and ironic but neither of
the three sources on Wikipedia for the "Unics" name being related to "eunuchs" mentions "eunuchs" at all.
As far as I know, "Unics" was only a pun on "Multics" in terms
of UNIX not yet being multiplexed, and the "EUNUCHS" puns came from outside the UNIX team - not really official as the blackpaper suggests.
See <A HREF="https://www.cs.vu.nl/~ast/brown/">ast's
"Some Notes on the 'Who Wrote Linux' Kerfuffle, Release 1.5"</A>,
<A HREF="https://motz.antville.org/stories/1948963/">"Emasculated Multics is
Unics"</A>.
</LI></UL></LI>
<LI>"GNU was ultimately completed in 1991 with Linus Torvalds' development of
the Linux kernel"<UL>
<LI>Linus's Linux was not the first attempt at a Free kernel.
See the GNU HURD, which was originally intended to be the
final puzzle piece to the complete GNU system; GNU+Linux systems, while Free,
are not full GNU systems as originally intended.
</LI></UL></LI>
<LI>"Today, nearly the entirety of the Web runs on GNU/Linux"<UL>
<LI>A technicality: it's a bit better to say "GNU+Linux" to
communicate that one is running a GNU environment on top of the Linux kernel,
in the same way one can run "GNU+FreeBSD" (a GNU system on top of FreeBSD).
This can disambiguate discussions of "GNU+Linux" (an
operating system) from "GNU" (an organization or its operating environment)
and "Linux" (a kernel).
But this is totally insignificant and pedantic to the point
where
<A HREF="https://duckduckgo.com/?t=ffab&q=i%27d+like+to+interject+for+a+moment">
it's meme fodder</A>. Who cares.
</LI></UL></LI>
<LI>"almost every personal computing device in the world runs on Android,
which is built on the Linux kernel"<UL>
<LI>It should be noted that Android is Google capital.
</LI></UL></LI>
</UL>
<P>
The rest of the paper is of a more social aspect of which I don't believe I
have much to say.
</P>
2023-07-16 08:20:48 -06:00
/zelda.sh verbatim
2023-07-15 21:07:11 -06:00
#!/bin/sh
printf "what, are you crazy? you're gonna get us all killed!\n" >&2
2023-07-16 08:20:48 -06:00
/zeldb.sh verbatim
2023-07-15 21:07:11 -06:00
#!/bin/sh -x
set -e
if ! command -v curl >/dev/null 2>&1; then
printf "This script depends on curl.\n"
exit 64 # sysexits(3) EX_USAGE
fi
ZELDA="https://archive.org/download/cirno_actually_plays_zelda_in_terminal\
/zelda.wav"
CURL="curl -Ls"
if command -v aplay >/dev/null 2>&1; # ALSA
then $CURL "$ZELDA" | aplay
elif ls /dev/dsp >/dev/null 2>&1; # OSS
then curl -L "$ZELDA" >/dev/dsp
elif command -v audioplay >/dev/null 2>&1; # NetBSD audio(4)
then $CURL "$ZELDA" | audioplay -f -e ulinear -P 16 -s 48000
else
printf "Unknown sound device. Sorry!\n"
exit 70 # sysexits(3) EX_SOFTWARE
fi
2023-02-05 18:02:19 -07:00
exit 0
2023-07-15 21:07:11 -06:00
2023-07-28 12:46:47 -06:00
/blah/2023-07-26.html
https://en.wikipedia.org/wiki/Tank_Girl
https://tankgirl.fandom.com/
Tank Girl
https://web.archive.org/web/20160303193237/
http://comicbookdb.com/title.php?ID=2006
https://en.wikipedia.org/wiki/Deadline_(magazine)
- Deadline (1988-1995)
- First appearance - issue #1 (1988).
https://tankgirl.fandom.com/wiki/Comics
- In issues 1-3,5,7-10,12,13,15-17,19-21,23,25,26,29-31,39,40,45-47,50,
| 55,56,58,59,61,63,66.
http://web.archive.org/web/20230726144832/
https://www.mycomicshop.com/search?TID=125641
- Deadline USA (1991-1992)
- Appears in all three issues.
- Tank Girl (1991)
- #1 (May) to #4 (August).
- Tank Girl 2 (1993)
- #1 (June) to #4 (September).
- Tank Girl - The Movie (1995)
- 1995-03-28 according to Wikipedia.
https://en.wikipedia.org/wiki/Tank_Girl_(film)
- Tank Girl [Movie] (1995)
- 1995-03-31 according to Wikipedia.
- Tank Girl: The Odyssey (1995)
- #1 (June) to #4 (November)
- Tank Girl: Apocalypse (1995-1996)
- #1 (November 1995) to #4 (February 1996).
https://www1.thepiratebay3.to/torrent/11327499/
Tank_Girl_Ultimate_Mega_Collection
- Tank Girl 3 (1996)
- Tank Girl: The Gifting (2007)
- #1 (May) to #4 (August).
https://archive.org/details/tankgirlarmadill0000mart/
- Tank Girl: Armadillo! And a Bushel of Other Stories (2008)
- Not a comic book but instead a novel(?)
- Inside cover mentions Tank Girl 1-3, Odyssey, Apocalypse, and The
| Gifting as other Tank Girl publications.
- Internet Archive copy has a date on the inside cover of 2008-04-07.
- Tank Girl: Visions of Booga (2008)
- #1 (May) to #4 (August).
http://web.archive.org/web/20101017222217/http://rufusdayglo.blogspot.com/2008/
07/cream-of-tank-girl.html
https://www.angusrobertson.com.au/books/the-cream-of-tank-girl-alan-c-martin/p/
9781845769420
https://www.goodreads.com/en/book/show/4241646
- The Cream of Tank Girl (2008)
- Angus & Robertson lists a publication date of 2008-10-24.
- Per "Jennifer" on Goodreads:
> This book...does fill in a few missing pieces. ...it's a much
| broader history of the authors and the comic, but told in
| short bursts of text wedged between lots of art, including
| storyboards for an animation that never came to be, lots of
| design drawings for the movies, comic covers, and a side
| project comic about pirates.
https://www.suicidegirls.com/girls/nicole_powers/blog/2680051/
alan-martin-tank-girl-resurrected/
http://web.archive.org/web/20101017203627/http://rufusdayglo.blogspot.com/2008/
11/exclusive-tank-girl-art-on-suicide.html
http://web.archive.org/web/20101017215352/http://rufusdayglo.blogspot.com/2008/
12/second-suicide-girls-exclusive-up-on.html
http://web.archive.org/web/20101017201911/http://rufusdayglo.blogspot.com/2009/
03/new-tankie-pin-up-on-suicide-girls.html
http://web.archive.org/web/20101017214638/http://rufusdayglo.blogspot.com/2009/
04/easter-pin-up.html
http://web.archive.org/web/20090416013112/http://suicidegirls.com:80/members/
TankGirl_TGonSG/
http://web.archive.org/web/20090725162238/http://www.hypergeek.ca/2009/07/
thrill-power-thursday-the-weekly-droid-watch-july-23rd-2009.html
- Suicide Girls appearance (2008-2009)
- Promotional pages done monthly.
- Eight total; pg. 1 (November 2008) to pg. 8 [presumably June 2009?].
- Tank Girl: Skidmarks (2009-2010)
- #1 (November 2009) to #4 (February 2010).
- Collects stories originally published in Judge Dredd Megazine.
- Tank Girl: Dark Nuggets (2009)
- One-shot (December).
- Tank Girl: The Royal Escape (2010)
- #1 (March) to #4 (June).
- Tank Girl: Dirty Helmets (2010)
- One-shot (April).
- Tank Girl: Hairy Heroes (2010)
- One-shot (August).
- Tank Girl & Booga Split! (2010)
- One-shot (November).
- Tank Girl: Bad Wind Rising (2011)
- #1 (January) to #4 (June).
- Tank Girl: Carioca (2011-2012)
- Three issues in print, six in digital.
- Digitally, #1 (November 2011) to #6 (January 2012).
- Collected in Dirty Old Tank Girl (2019).
- Everybody Loves Tank Girl (2012)
- #1 (August) to #3 (October).
- Collected in Total Tank Girl (2017).
- The Hole of Tank Girl (2012)
- Collects Tank Girl 1-3 with bonus material.
- Solid State Tank Girl (2013)
- #1 (June) to #4 (November).
- Collected in Total Tank Girl (2017).
- 21st Century Tank Girl (2015)
- #1 (July) to #3 (September).
- Tank Girl: Two Girls, One Tank (2016)
- #1 (June) to #4 (September).
- Collected in The Legend of Tank Girl (2018).
- Tank Girl: Gold (2016-2017)
- #1 (September 2016) to #4 (March 2017).
- Collected in The Legend of Tank Girl (2018).
- World War Tank Girl (2017)
- #1 (May) to #4 (September).
- Collected in The Legend of Tank Girl (2018).
- The Wonderful World of Tank Girl (2017-2018)
- #1 (November 2017) to #4 (May 2018).
- The Way of Tank Girl (2018)
- Art book.
- A Brief History of Tank Girl (2018)
- One-shot (June).
- Tank Girl All Stars (2018)
- #1 (July) to #4 (October).
- Tank Girl Coloring Book (2018)
- Tank Girl: Action Alley (2019)
- #1 (January) to #4 (May).
- #1-4 of Tank Girl Ongoing.
- Tank Girl Forever (2019)
- #1 (August) to #4 (December).
- #5-8 of Tank Girl Ongoing.
https://comicvine.gamespot.com/king-tank-girl-1/4000-813470/
- King Tank Girl (2020-2021)
- #1 (October 2020) to #5 (June 2021).
You were good to me and now you're good to go
still, I lie awake at night dreaming 'bout the wendigo
Its forsaken autophagic mind control
Will we meet again or have I eaten at your soul
Everyone wants someone else for whom they can profess
An undying love eternal worship, egoless
All I want is an unending episodic mess
of a serialized formatted wacky hinjinks-based friendship
Now I'm a recycling center wage slave, who'd have guessed
that I'd be doing unskilled labor in ten hour shifts
And everyone else has already had their life condensed
into the other fourteen hours where they simply rest
Yet
When do I get to live among the cans that we all press?
Take the bottle bags off the trucks, feed them into baler vents
One fifteen minute pause and then a thirty minute break
Work six hundred minutes then a hundred twenty's made
Can you blame the homeless bum, confined to a park bench?
At least he gets to think without breaking his back and neck
/blah/2023-07-22.html
2020-10-27
+ +
o +
+ +
o
o o o
+ o o
o +
+ o
o
0 o
o o +
+ o o
+ + +
p
+ +
o +
+ +
o
o o o
+ o o
0 +
o +
+ o
o
0 o
o o +
+ o o
+ + +
p
+ +
o +
+ +
o i d k o i d k o i d k o i d k
d k o i d k o i d k o i d k o
o i d k o i d k o i d k o i d
\
k o i d k o i d k o i d k o i
o i d k o i d k o i d k o i d k
d k o i d k o i d k o i d k o
\
doki doki
\
that's the sound my heart makes when i
think of her
\
she occupies every thought i think eve-
ry neuron in my brain leads to a neuro-
n that leads to another neuron that le-
ads me to her
\
symlinked to every single file
\
when i wake up i imagine her next to m-
e i imagine her perfect hair her perfe-
ct smile her perfect being her perfect
flaws that make her human more human t-
han anything else on the planet i'd se-
nd a thousand helens of ships a hundre-
d thousand a thousand thousand a milli-
on million i'd send so many ships the
historians put the number in scientifi-
c notation it's the only notation fit
to describe her
\
there are four hundred seventy thousan-
d words in the merriam webster third n-
ew international dictionary if you inc-
lude its nineteen ninety three (that i-
s a date) addenda section there are th-
at many words and not a single one cou-
ld describe the feeling that feeling i-
'd get from running my fingers through her hair. it makes me feel real.
: ships.txt
i'd send those ships out if she
went missing
what the hell would i do
if she did
i can't imagine a world without her
when i do tears near my eye-lids
\
the earth, too, may sigh
when she leaves its sights
the sky, too, will shake
retch acid at the end of her wake
but the oceans, thankfully, may stay
calm
because poseidon will sympathize
with my longing
and i'll voyage on my own if need be
for the most beautiful girl
to come back to me
\
if she leaves on her own
i'll cry and i'll groan
though it's her choice and one
i respect
but if she's forced by those forces
that see joy and put out the torches
i will not cease until she is well
2023-07-21 10:19:18 -06:00
/blah/2023-07-21.html
2023-07-28 12:46:47 -06:00
2019? 2020?
2023-07-21 10:19:18 -06:00
: the usual situation in eurasia, from a distance
say thanks to my wife for making this meal
she toiled all day cooked this supper with zeal
and we feast and we feast and we eat with the wars
on tv movie screen pictring blood and al gore
turn that goddamn thing off i can't hear jamie talk
dad wait please we lost greece now they're storming iraq
say thanks to the machines they are filling the screen
fighting proxy wars over capital regimes
no more deaths no more fights only systems tonight
will be killed hard drives milled turned into bits and bytes
there's a person onscreen they aren't real let them be
shredded hair collarbone now the drones go take rome
dad agrees history will be written by 3
but now's not the time turn it off o k fine
: Waiting for your return
I found,
and shot,
your dog that sat at the door to your luxury condo
waiting for your return.
He was old
wizened
gray, thin hair on his back
and I felt bad doing it
but I wanted to see your face
your reaction
your black short hair shine in the setting sun
as you had read my neat handwriting on college ruled paper
"Turn around"
pinned by one red tack to your dead dog's ear
and as you turned you put your hand to your thigh
where sat a holstered pistol
far too late to lift your arm or pull the trigger
before I put a nine millimeter round
in your forehead
heart
and left kneecap (for good measure)
and watched you collapse on your newly tarred driveway
and watched your blood drip out your head and torso and leg
and drip down onto the hot, black surface,
and watched the blood make that interesting splatter.
It's too bad
that your dog had to die this way
before he died I gave him a nice steak I picked up on the drive over
a small steak, maybe a half-dollar's size
but nice nevertheless and better than any food you'd ever given him
and I took him to your living room and he and I sat on your couch and
he sat his head on my lap
and I shed a tear
I always shed a tear
for the souls I take (I only took one that day).
I am sorry
your dog had to die this way
but it was a better death than could be had
in that airless, sterile condo
and one your dog was happy to receive
pressing his head against my silencer.
: Autumn
The best thing my parents ever did for me was neglect to raise me,
because if they raised me I'd surely be an even worse person.
They seem to hate me, and I do too,
but it's odd that they seem to be under the illusion that they did
raise me. Because then wouldn't it be their fault
that I turned out like this?
: TempleOS
hey davis terry a temple codin every day
jesus christ on systemd
fading through reality
modern 64 bit fight
commodore and kilobytes
glowing hard and nothing more
switch statements power in C
user programmed commodore
small town train fatality
hey terry whyd you leave us so many mysteries
we don't understand your code
insane man or god, who knows?
how could one guy ever make a
self hosting OS ISO
: In a sky without a sun
there are a bunch of people falling from the sky
including me
and if you maneuver your arms a bit
against the pressure of a forceless wind
that is so powerful in the absence of a sun, or stars,
or planet
you can look up and see It
it has a face but its face will make you vomit in the \
air that is passing by you
it's best not to think about it or try to comprehend it
see tony over there
no, to your left
yeah, there
and how his face is white as a sheet?
illuminated, clearly visible in a \
world without light
he Understood it
it has eyes but we don't know how something so big
could have anything to see
/
it has a mouth but no teeth, or maybe teeth, maybe we \
could see
its teeth if so much blood wasn't falling out of it
fortunately newton's laws still apply
it's falling at the same rate we are
you'll never have to touch it
but there is no ground on which we can land, and be freed from this \
life
no way out
but to Understand
so what do we do
sheila and i play tic tac toe, we can keep the squares in our head
/
i prefer to maneuver myself to face away from the thing in the sky
because if i squint a little bit
it looks like me
/blah/2023-07-20.html
2023-07-10
[2:13 PM] [...]: Hey what happened you don't bk no more???
[2:18 PM] trinity: what happened is u owe me $80 and i will never see u
again after august 20 so i need that money pronto
[2:18 PM] trinity: where can i meet u for it
[2:18 PM] trinity: i walked out cuz i decided fuck it we ball
[2:18 PM] [...]: Why?
[2:19 PM] [...]: You leaving?
[2:19 PM] [...]: Maine
[2:19 PM] trinity: august 20 i'm moving on from maine
[2:19 PM] [...]: Ah
[2:19 PM] [...]: Noice
[2:19 PM] [...]: Where you off too?
[2:19 PM] [...]: Random or picked place?
[2:19 PM] trinity: colorado
[2:20 PM] trinity: but if i find a cool town i'm just gonna live there
instead
[2:21 PM] trinity: btw if u know any quick work i need money
[2:23 PM] trinity: within walking distance of blake st. i'm down as long
as it's not me getting fucked
[2:23 PM] [...]: Ah well I don't blame you honestly I wanna do similar
things and just kinda go around every where and go
where life takes me but I'll lyk about any work if I
find any
[2:24 PM] [...]: My plan is next year after my birthday I'm getting in
my car and driving and not looking back for a awhile
Sent SMS to ??? ([...]) at 2023-07-07T14:25:54-0400:
this is trinity btw
hey [...], i just walked out. [...]'s gonna need coverage for 11-6ish tomorrow.
i think the way [...] talks to me isn't appropriate considering what i
contributed in terms of labor. if you want i can work at lisbon st from now on,
i can make it on time and for whatever shifts they want. i've been working at
bk main st nearly a year and before that it had been another and i think my
time there has now come to an end
i didn't walk out out of anger but a realization that the things i want to be
changed won't be and even if i made it through today tomorrow (a saturday on
main st) would be as bad if not worse, and the same thing would happen week
after week. i'm planning on moving to colorado and will be in late august or so
with no plans as to what i'll be doing there when i arrive
until then, i'm at lisbon st when you need me, if you need me. if not i'll
start looking for different work tonight. i like burger king but i don't like
being understaffed and micromanaged when i came in to a poor kitchen setup in
the first place.
i already texted [...] and told him if he's the night manager kim would
appreciate it if he came in early. i'm not super sure if that was the right
move but i know he can text whomever it may concern
thanks
2023-07-06
[6:38 PM] trinity: [...]
[6:38 PM] trinity: i wanna move to [...]
[6:38 PM] trinity: Eventually. like end of year maybe
[6:39 PM] trinity: first of all is that cool with u. cuz it's ur turf. i'm
the crazy bitch u know on the internet who's slightly
unstable and notoriously abrasive. if ur like what no
what the fuck that is a fair reaction
[6:40 PM] [...]: i would love it if you moved here
[6:40 PM] [...]: we could smoke together
[6:40 PM] [...]: legal weed :3
[6:41 PM] trinity: i'm bored of maine. i like it but the people can be
dangerous and the wild can be dangerous and although
it's an honest place it can be a cruel place
[6:41 PM] trinity: oh i missed u typing
[6:42 PM] [...]: Colorado is nice
[6:42 PM] [...]: but the big city is scary a little bit
[6:42 PM] [...]: im just a country girl
[6:44 PM] trinity: weed is legal here too. and i too am meh on cities. but
i need to never be recognized again by anyone with
which i went to high school and i know 4 good people in
this state and the rest are somewhere between neutral
and evil once ive gotten to know them
[6:45 PM] trinity: i know u a little, i know [...] a little, i know how to
sleep outside and live out of a backpack, and i know
burger king kitchens like the back of my hand. so i'm
fine wherever and [...] seems kinda fuckin swag
[6:47 PM] trinity: that makes 2 decent people 0 known bad people and 1 big
metropolitan area to explore
[6:47 PM] trinity: could i receive mail where u guys are while i get a new
id and then po box?
[6:49 PM] trinity: if not thats fine ill figure it out
[6:51 PM] [...]: yea thats fine
[6:51 PM] [...]: awa
[6:52 PM] [...]: we could put you up
[6:52 PM] trinity: up?
[6:52 PM] [...]: like you could crash here
[6:52 PM] [...]: lol
[6:52 PM] trinity: nah i prefer to sleep in nature or abandoned areas
[6:53 PM] [...]: based
[6:53 PM] trinity: colorado will be difficult because snow. but i can
figure it out
[6:53 PM] [...]: it also feels about 10° colder than it is due to the air
thinness
[6:54 PM] trinity: damn
[6:54 PM] [...]: it has gotten up to 34°C here and i still havent had to wear
shorts
[6:55 PM] trinity: i just need to be free. from stuff from being known and
from existing on so much paper
[6:55 PM] [...]: yea
[6:55 PM] [...]: good luck
[6:55 PM] [...]: i feel that
[6:57 PM] trinity: i've been stagnant for the last nearly 2 years and i
have barely any friends and recently a friend of mine
turned out to be totally wacked out and now i have 2
friends less than in january and i barely was friends
with anyone in the first place
[6:58 PM] trinity: which would be fine but bumfuck nowhere maine doesn't
exactly have a strong people that exist demographic
[7:01 PM] trinity: that's my rant ive been thinkin bout this at work
[7:01 PM] [...]: yea
[7:02 PM] [...]: ily
[7:03 PM] trinity: i love you too
[7:03 PM] [...]: you could definitely find friends here
[7:03 PM] [...]: its a big city
[7:03 PM] [...]: and people are really friendly
[7:03 PM] [...]: its like it was in the midwest
[7:03 PM] [...]: but bigger
[7:04 PM] trinity: i mostly wanna know fewer bad people
[7:04 PM] [...]: i get that
[7:04 PM] [...]: its hard sometimes especially when you stumble into a
friend group that has some people you feel are being
wacky but you cant say anything really cause youre new
[7:04 PM] [...]: at least that has happened to me
[7:05 PM] trinity: lead in the water and drugs in the streets. everyone i
know has been abused brutally and takes their rage out
by abusing others. it's like a mosh pit of cruelty.
even people i know that are intent on breaking their
cycle still don't. maybe i'm one of them but maybe if
i'm no longer surrounded by bad i'll be less bad
[7:05 PM] trinity: not even good drugs just crack coke and opioids
[7:07 PM] [...]: circumstances are important
[7:07 PM] [...]: material conditions
2019-10-10
Bridge English
Gatsby Journal #2 (Journal #3)
I don’ t know if I can relate to Gatsby. I’ m sure I have an ego that I’ m
not aware of (but that everyone else is) - but I guess I’ ll probably
know if I was like him when I age out of this stage of my life. I used
to make YouTube videos, a while ago, and for a couple weeks when I
started out I was trying to play a character in front of the camera
because I felt people would like me more. I don’ t think there’ s an easy
way to say it, but, hell, nobody liked me anyway, and I decided that
I’ d be as genuine as possible - but for a time I guess there was a
disconnect between how people saw me and who I was. It probably wasn’ t
a lot of people, though. My videos averaged fifty or so views. But it
was enough to scare me straight. It’ s dangerous to pretend to be
someone who you aren’ t, because you begin to lose sight of who you are.
I don’ t see myself as “destined” for something in my life, either. I’ ll
probably get a degree in Computer Science a couple years after I
graduate high school but after that I have no plans. My opinion is that
Lewiston, Maine, is a curse rather than a destiny. I know very few
people who have left this city, even after planning to, and I know very
many people who wish to leave every single day. Maybe by the nature of
where I live (and I’ d say you, too, but teaching is a respectable job
and you don’ t live in Lewiston anyway) I’ m “destined” to get a minimum
wage job and become a puppet for the bourgeoisie until I die. Maybe the
only reason I feel this is cynicism; after you live in the same place