<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.1">Jekyll</generator><link href="https://foxiepa.ws/feed.xml" rel="self" type="application/atom+xml" /><link href="https://foxiepa.ws/" rel="alternate" type="text/html" /><updated>2023-12-30T17:57:10-05:00</updated><id>https://foxiepa.ws/feed.xml</id><title type="html">foxiepaws</title><subtitle>I write words i guess.</subtitle><entry><title type="html">Fakebit is chiptune, period.</title><link href="https://foxiepa.ws/blog/2023/12/29/fakebit-is-chiptune.html" rel="alternate" type="text/html" title="Fakebit is chiptune, period." /><published>2023-12-29T14:26:25-05:00</published><updated>2023-12-29T14:26:25-05:00</updated><id>https://foxiepa.ws/blog/2023/12/29/fakebit-is-chiptune</id><content type="html" xml:base="https://foxiepa.ws/blog/2023/12/29/fakebit-is-chiptune.html"><![CDATA[<p>I keep getting recommended this video on chiptune, both by algorithms
and by friends. I’ve not watched it yet the way it’s framed honestly
squicks me a little. Recently a friend asked if “fakebit vs realbit<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>”
is just elitism and gatekeeping, or if there is something to
it. Thinking about how to answer them has made me have to dig these
feelings out from deep in me. Things I’ve not thought about since I
was still making SID and Adlib tunes. What follows is completely
subjective thought.</p>

<h2 id="what-even-is-fakebit">What even is fakebit?</h2>

<p>To me, fakebit is an aesthetic. It’s similar to demakes and “real
chiptune” but without the limitations that come to that. I throw away
the “realness” of the hardware to create something that sounds exactly
how I want. That is the point, that is intentional. It sounds like it
could be chiptune but it’s refined, without limits. I like the term to
describe this likely because I create both, so having a term to
separate my stuff that is made within the limits is very useful for
me.</p>

<p>When fakebit is this, It’s deeply creative, everything you make is a
homage to your love to that sound and style, it’s fake in the same way
that fake fur is, Able to emulate the look and feel, but without
needing to use the real thing.</p>

<p>It seems like, to many others, especially outsiders, fakebit has
become a rallying cry to “call out inauthentic” works, a means to
elitism. A value judgement. They don’t understand that the limitations
are not the art.</p>

<h2 id="what-even-is-this-argument-then">What even is this argument then?</h2>

<p>The argument is that fakebit harms chiptune because it’s
inauthetic. The idea that it makes the really wild things people have
managed to get out of the hardware look less amazing, and at the same
time make the really bad examples look more common and easy.</p>

<p>The truth is, it is more difficult to make something that sounds good
in the limitations of hardware. Their argument is because it’s not
real hardware, real limitations, it’s not real art Q.E.D. That “fake
art” thus, harms “real art”.</p>

<p>I don’t agree with this at all. There is more than one way to make
art, and not all of the output ever put out on the hardware was art
either. For every Tim Follin putting out rad prog rock on the
hardware, there was another programmer just making it play a public
domain song (or sometimes just stolen melodies) to make the game have
music. It simply being on the real hardware doesn’t make it good.</p>

<h2 id="what-is-true-of-the-harm">What <em>is</em> true of the harm.</h2>

<p>Back when “8-bit” was a bit of a massive thing everywhere. There
certainly was a lot of people trying to put out 8bit covers and
demakes and post them to YouTube to maybe get popular. I remember in
that space, “fakebit” vs chiptune was a huge thing because people were
creating and upload awful midislaps<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup> to release tons of these to
YouTube and hope they built a following.</p>

<p>But the harm of midislap songs actually go far beyond fake chiptune,
you see it in every single genre and style. Think back to those low
effort “techno remix” or the current mess of eurobeat and bardcore
remixes. When your goal is to chase whats popular, make <em>content</em> to
make money…</p>

<p>It’s a deeply cynical reason to create, channels like that still
create today. They don’t care if the thing sounds right or wrong, they
don’t even care if people comment on the thing to tell others that
it’s fake. They care about the view and the engagement. Your negative
comment is just as good for them as someone getting “tricked” and
thinking that this is what “real chiptune” sounds like.</p>

<h2 id="why-do-people-care-about-the-limitations">Why do people care about the limitations?</h2>

<p>As always, whenever there is people calling out this kind of
thing, be it plagarism, ai art, or midislaps, people take away, and
give the wrong argument towards this kind of thing. The argument
becomes performative, no longer is it calling out that the art was
done cynically… it becomes that they didn’t use the right tool to
make their cynical trash. As has happened with the retro game revival,
it’s now all about authenticity of the tools, not the authenticity of
the purpose.</p>

<p>Art, Writing, Music… the general person doesn’t really understand
how these things really work. How things are made. When it comes to
electronic music and digital art, people tend to hyperfixate on the
tools, of the trade, much like they did with the traditional forms of
these before. A guitarist is a god because they put the work into
learning how to move their fingers just right on the fretboard and
strings, A painter is a genius because they learned how to mix the
paints on the palette just right to get the perfect texture… How do
you reconcile this with digital work that you don’t understand?
Clearly the limitations MUST be the art otherwise what separates them
from everyone else.</p>

<h2 id="oh-god-youre-gonna-make-it-about-capitalism-now">oh god you’re gonna make it about capitalism now.</h2>

<p>Capitalism has taught so many people that the arts are like pro
sports. that things they perceive as easier literally makes doing it
that way inauthentic or cheating.</p>

<p>That’s the wrong way to think about art, but I understand. When you
see someone making something “just for the money” with as low effort
as possible, it sucks. You don’t need to bring anything in but that
though. Instead of questioning if something sucks because it’s not
using the right limitations, ask if it’s really that it’s a low effort
money grab.</p>

<h2 id="conclusion">conclusion</h2>

<p>Chiptune has always been loose in what it meant, it’s only much more
recent that folks started to separate “fakebit” from chiptune. Some of
the earliest things called chiptune or chipmusic was literally just a
soundalike, made with samples on the amiga. While I absolutely accept
that words change meaning, this style has always been part of
it.</p>

<p>I don’t agree that we should banish the word fakebit, it clearly has
worth, there are dozens of musicians you can find on soundcloud and
youtube that unironically use the term to describe their own
music. Instead I think the right take is to say, loudly, fakebit is
good actually, as time goes forward there is no point to keep
ourselves stuck to the old hardware. Limitations are not a thing to
stay static, creating music that sounds like it’s from soundchips has
never been easier, with furnace tracker<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote" rel="footnote">3</a></sup> as well as VSTs and DAWs that
are actually within reach by normal people.</p>

<h2 id="thanks-and-other-thoughts">Thanks and Other thoughts.</h2>

<p>Thanks to Zia for reading over and giving me a “+1” response.</p>

<p>Thanks to FreeFull for reading over and reminding me the fact that
chiptune/chipmusic’s definition has changed over time.</p>

<p>I wish that the YouTube algorithm didn’t fool people into watching
videos on topics by people who aren’t part of that community. The
video that caused this from what I’ve heard from two people who
are… is honestly pretty awful.</p>

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p>I’ve never heard anyone within the community actually use the term realbit. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:2" role="doc-endnote">
      <p>midislap, a mildly perjorative way of referring to low effort songs where someone downloads a free midi and uses some VSTs to make a “remix” without changing any arrangement. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:3" role="doc-endnote">
      <p><a href="https://tildearrow.org/furnace/">furnace tracker</a> can be used to make music for actual soundchips, but it can also be used to make music for impossible combinations and even a fantasy soundchip. <a href="#fnref:3" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name></name></author><summary type="html"><![CDATA[I keep getting recommended this video on chiptune, both by algorithms and by friends. I’ve not watched it yet the way it’s framed honestly squicks me a little. Recently a friend asked if “fakebit vs realbit1” is just elitism and gatekeeping, or if there is something to it. Thinking about how to answer them has made me have to dig these feelings out from deep in me. Things I’ve not thought about since I was still making SID and Adlib tunes. What follows is completely subjective thought. I’ve never heard anyone within the community actually use the term realbit. &#8617;]]></summary></entry><entry><title type="html">Learning Rust, Part 2: Personal Projects</title><link href="https://foxiepa.ws/blog/2022/11/22/learning-rust-personal-projects.html" rel="alternate" type="text/html" title="Learning Rust, Part 2: Personal Projects" /><published>2022-11-22T17:17:00-05:00</published><updated>2022-11-22T17:17:00-05:00</updated><id>https://foxiepa.ws/blog/2022/11/22/learning-rust-personal-projects</id><content type="html" xml:base="https://foxiepa.ws/blog/2022/11/22/learning-rust-personal-projects.html"><![CDATA[<p>After gaining a fairly reasonable comfort level with the syntax of
rust, I decided to embark on my preferred way of learning. Doing. I
think I learned a lot more about the pitfalls of rust with the
training wheels off. A seasoned rust programmer or a well educated
newbie may not have made the same falls I did. A reminder that this
post is going to be Opinion, do not take my <strong>opinion</strong> as a
representation of fact.</p>

<!--more-->

<h2 id="systemsdesktop-programming">Systems/Desktop Programming</h2>
<p>Perhaps I made a bit of a huge mistake undertaking a project where I
have to handle fake times in rust. It’d have been an annoying project
in C too, but nonetheless, My systems programming project was a
timekeeper for my RPG sessions. My goal was simple, but I feel it
really taught and showed me the holes in my understanding.</p>

<h3 id="documentation-mathematics-vs-programming">Documentation, mathematics vs programming</h3>
<p>You have to know what to ask, where to look, and what you’re actually
looking for to find a lot of the documentation in rust. The
documentation is right there but its hard to find. Using a community
discord might be a good option but that’s really not for me<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>.</p>

<p>For me? my first real wall was trying to find out how to do integer
modulo and floor. Both of these are fairly simple questions to answer
if you know where exactly to look. As someone who’s been coding rust
for… not even a week… That was not me, In the end venting about
this on my discord’s #tech channel was what got me the right answer.</p>

<p>These are easy questions so why were they so hard to answer? Because I
didn’t know two key important things</p>
<ul>
  <li>rust doesn’t always call things the same thing that standard
programmer convention does.</li>
  <li><a href="https://doc.rust-lang.org/std/">rust std documentation</a> often has
the info, you need to really search it first and assume what you are
looking for exists.</li>
</ul>

<p>If I had known these two things going in, I wouldn’t have gotten
frustrated. I would have just found the things. Instead I used a
search engine, like I think most people do when trying to find
documentation for a language. This was painful, the game Rust, and
rust being a fairly quickly moving target made this much more
difficult than other languages.</p>

<p>The modulo operator <code class="language-plaintext highlighter-rouge">%</code> is a great example of where rust doesn’t use a
typical programmer convention, This is described as the “remainder”
operator. This is mathematically correct, <code class="language-plaintext highlighter-rouge">%</code> in other languages is
really remainder too. If you need a real modulo that handles negative
numbers correctly, you have to write your own. Thing is, I don’t think
most programmers actually know the difference<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote" rel="footnote">2</a></sup>. When I searched for
info on rust modulo… I got posts telling me rust didn’t have one
built in, not “Rust implements <code class="language-plaintext highlighter-rouge">%</code> just like C, as a remainder
function.” or recognising that typical bit of convention at all. This
ended up confusing me immensely. Compiler errors I got implied <code class="language-plaintext highlighter-rouge">%</code>
didn’t exist (see the next section on compiler errors for more on that
front), but it was actually that both sides needed to match. Blog
posts and stack overflow implied modulo didn’t exist unless you
implemented it. I was about ready to give up there.</p>

<p>The <code class="language-plaintext highlighter-rouge">.floor()</code> method is a great example of knowing where you need to
read the docs. If you search for it in a typical search engine, you
end up getting a rather old crate<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">3</a></sup>. If I had known it was a method
for <code class="language-plaintext highlighter-rouge">f32</code> and <code class="language-plaintext highlighter-rouge">f64</code> and i should search the docs for it instead of
looking for a <code class="language-plaintext highlighter-rouge">math.floor</code> or <code class="language-plaintext highlighter-rouge">floor()</code> function, I would have known
exactly what documentation to look for, This is quite a chicken/egg
problem.</p>

<h3 id="the-compiler-errors-are-not-as-clear-as-evangelists-think-they-are">The compiler errors are not as clear as evangelists think they are.</h3>
<p>Rust evangelists often praise the compiler errors and warnings as
being a “killer feature”. The thing is, They still suffer from the
same problems as any LLVM compiler does. You will get confusing errors
that you cannot solve by just reading it. Over time you will
familiarise yourself with certain kinds of errors, you will learn what
it means despite what it says. You are not the same as a new
programmer.</p>

<p>A new programmer won’t understand why <code class="language-plaintext highlighter-rouge">?</code> causes a type error the
first time it comes up. A new programmer may not understand what they
are doing wrong with the mod keyword. Even as you work through the
book. Only with making every single possible mistake can you
understand what you did wrong, often including having to search an
error because it makes no sense. The errors I’ve seen so far that do
make sense? those are often the same kinds of errors that LLVM based
compilers like clang actually catch too.</p>

<p>This isn’t really a fault of the compiler, compilers don’t know what
you <em>mean</em>, they can make some assumptions and try to be helpful but
in the end, if they could do what you <em>mean</em>, without you <em>clarifying</em>
by fixing your code, they would just have done it in the first place.</p>

<h3 id="crates-for-everything-stable-apis-be-damned">Crates for everything, stable APIs be damned.</h3>
<p>In rust, nearly everything you could possibly want is a crate. This
isn’t a bad thing per say, I come from perl and everything there is a
perl module and uploaded to CPAN. What’s scary is the amount of things
that you would think are included as a helper… but aren’t. Basic
things like unix signals (to catch SIGTERM for example) are relegated
to crates instead.</p>

<p>Crates have features, you can read something and not enable a required
feature, Serde and Clap but have a <code class="language-plaintext highlighter-rouge">derive</code> feature that has to be
enabled, the examples don’t always make it clear this may require a
feature flag or an additional module. This was actually a cause of a
lot of the compiler errors that made no sense.</p>

<p>Crates seem to be a moving target that hurts to follow. I mentioned i
started with a book this time, in that book we learned to use
<a href="https://crates.io/crates/clap">clap</a>. What it did was pretty neat, a
programmatic method of handling args for your program. It does still
do this. The thing is, the API changed a while ago, and they only
promise not to change the api every 6-9 months. I had to relearn how
to use it. While this problem is not unique to Rust it does seem to be
a common issue I’ve noticed as clap wasn’t even the only one that did
this.</p>

<h3 id="extern-libc-and-reality">extern, libc, and reality</h3>
<p>Talking with someone who jumped on the rust train earlier than most
has taught me one massive thing. The hypetrain around rust often
doesn’t reflect reality. A good example of this is the “rust std
completely 100%ly replaces libc” lie. This is only true on <code class="language-plaintext highlighter-rouge">no-std</code>
targets, and even then you might be linking your own C stuff for
that. It makes sense when you think about it, If you were required to
use rust for everything, rust would be far less useful. The ability to
interop with libraries and programs written in C and C++ is one of the
things that makes it compelling.</p>

<p>It’s nice that I can use things like libc or Qt or ncurses. These are
mainstays of development in a world that has been doing GUI computing
in the mainstream for a good 40 years. We have tools that work, and
moving away from them will be a more difficult reality than allowing
us to use what we already got. People are even still using openssl
with rust. They probably shouldn’t be, but nonetheless it is there and
ready to use.</p>

<h2 id="web-programming">Web Programming</h2>
<p>I did not poke at rust for web programming. I will use Elixir or Ruby
for this pretty much always. It’s what fits my use cases the best and
I see no point using a language like rust for this. I know rust has
been seeing use in this space, perhaps if I find myself liking it
further on down the line I might experiment with something that isn’t
fast enough or is too memory intensive in elixir or ruby. Doubt it
though. This section is here mostly to address this “blind spot” for
the reader.</p>

<h2 id="embedded-programming-microcontrollers">Embedded Programming [Microcontrollers]</h2>
<p>Rust on my microcontrollers for the most part became a bit of a
nonstarter. While I found countless modules for every single chip, I
didn’t find HALs that were still in development for what I have. Rust
feels quite incomplete in this space, people will say “but there is a
crate for that”, but a concerning amount of times it’s just a svd2rust
conversion without a HAL. Due to this lack of hardware, I ended up
writing no code and looking at and compiling examples.</p>

<p>I was rather interested in rust on esp8266, it was one of the
situations I saw rust doing very well in. The problem is, I don’t have
time for “experimental” code for my projects. When I saw that the
ESP8266-hal crate had been moved on from to focus on the ESP32
stuff. I have no problem with focusing on the ESP32, I just don’t own
one and didn’t want to source one for experimenting with rust.</p>

<p>The amount of code it does generate is quite impressive, It’s about on
par with C, that said I did not have a quite a fair test because the C
I had on hand to compare it was for a different more complex mcu.  I
couldn’t find examples and code for the EXACT boards I have in rust
either [well, that didn’t use C as well], and I didn’t really
get to see if it’d flash and it’s real size…</p>

<h2 id="ending-thoughts">Ending Thoughts</h2>
<p>I can see how and why people like rust. My opinion on it is softened
but I don’t see myself reaching for it first. I can see its
potential. I’m going to keep my eye on it, and maybe with some age and
time… things will be less in a state of flux.</p>

<p>Thanks to the rustaceans I sent my drafts to to catch factual
errors. If you find a <em>factual error</em> (read: not an opinion) that is
not related to an updated version of rust in this post, You can try
get ahold of me and I’ll probably fix it. I probably won’t update this
beyond a few months due to the moving target-ness beyond saying things
may have changed in a minor version.</p>

<p>This post is part of a series: <a href="/blog/2022/11/17/rust-learning-rust-in-action.html">Previous
Article</a></p>

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p>Considering the point of view I have is fairly negative towards
  rust, I think a lot of people would be either far less likely to
  help me or far more likely to read my questions as directly
  confrontational. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:3" role="doc-endnote">
      <p>I’m sure that all of you college math/programming dual majors
  knew this, but I thought rust was supposed to be programming for
  everyone? <a href="#fnref:3" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:2" role="doc-endnote">
      <p>Why does this even exist??? was older rust using libc for math
  functions? Was it just a toy? It didn’t seem to use generics even. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Nicky</name></author><category term="rust" /><category term="programming" /><category term="tech" /><summary type="html"><![CDATA[After gaining a fairly reasonable comfort level with the syntax of rust, I decided to embark on my preferred way of learning. Doing. I think I learned a lot more about the pitfalls of rust with the training wheels off. A seasoned rust programmer or a well educated newbie may not have made the same falls I did. A reminder that this post is going to be Opinion, do not take my opinion as a representation of fact.]]></summary></entry><entry><title type="html">Learning Rust, Part 1: New Impressions via Rust in Action</title><link href="https://foxiepa.ws/blog/2022/11/17/rust-learning-rust-in-action.html" rel="alternate" type="text/html" title="Learning Rust, Part 1: New Impressions via Rust in Action" /><published>2022-11-17T23:30:02-05:00</published><updated>2022-11-17T23:30:02-05:00</updated><id>https://foxiepa.ws/blog/2022/11/17/rust-learning-rust-in-action</id><content type="html" xml:base="https://foxiepa.ws/blog/2022/11/17/rust-learning-rust-in-action.html"><![CDATA[<p>About a year ago I bought some programming books and one of the books
I bought was <a href="https://www.manning.com/books/rust-in-action">Rust in Action, by Tim
McNamara</a>. I chose this
one because at the time I was considering doing what I’m doing now and
I didn’t want to go in on my own with just free resources. Free
resources while they often can be good on a technical level are
generally full of proselytizing. They often do not want to call out
the cons of the language or anything that may turn off a possible
future user, and leave the user to find the foot guns, most books tend
to be better about this.</p>

<p><em>Rust in Action</em> does seem to be a bit better about this, even
admitting in the “cons” section about the rust hype that lead to me
digging in so hard to anti-rust. However it does still reek of the
rust missionary scent. It sometimes feels unrealistic in
recommendations such as with recommending rust for microcontrollers
after admitting language size as a con. I do like that it leans into
reminding you that rust is not a panacea for all bugs though.</p>

<p>A downside of <em>Rust in Action</em> is the errors. Every book will have
errata, it’s just a reality of writing. Every book will also have
things that just go out of date, but some of the errors are VERY
obvious and should have been caught before publication. Errors like
code that won’t compile, examples that are just plain wrong.</p>

<p>Lets actually talk about language and syntax now. What do i like:</p>

<ul>
  <li>The promise of pattern matching</li>
  <li>The promise of higher-order functions</li>
  <li>deeper type-safety</li>
  <li>Immutability by default</li>
  <li><code class="language-plaintext highlighter-rouge">cargo fmt</code></li>
  <li>Templates/Generics</li>
</ul>

<p>I mostly write in functional programming languages, and elixir at
that, for the majority of projects I write these days. I also used to
write a lot of typed Racket. These features in a language actually
designed to be useful would be killer.</p>

<p>Things I dislike so far:</p>
<ul>
  <li>
    <dl>
      <dt>no dynamic casting for Number (or at least integer) types</dt>
      <dd>In my opinion, you shouldn’t have to cast numbers as other numbers,
the compiler could cast smaller datatypes to bigger datatypes (of
the same datatype). I understand wanting users to be direct in what
they want but, this is a little over the top IMHO. I shouldn’t have
to ask it nicely at the very least to treat a u16 as a u32. That
said, I can understand having to ask it nicely to treat a u16 as an
f16.</dd>
    </dl>
  </li>
  <li>
    <dl>
      <dt>cargo’s use of TOML</dt>
      <dd>It’s a mostly small nitpick, but I… really dislike TOML. if i
wanted something like ini, which I don’t, I’d use ini. I don’t know
what I’d replace it with exactly for rust, I’m a bit spoiled with
elixir and mix I think.</dd>
    </dl>
  </li>
  <li>first order functions don’t work exactly as expected.</li>
  <li>
    <dl>
      <dt>do we… really need <code class="language-plaintext highlighter-rouge">unwrap()</code> everywhere?</dt>
      <dd>okay so elixir has the same concept in some ways, but we tend to do
it with something like <code class="language-plaintext highlighter-rouge">{:ok, thingwewant} = called_function</code>
instead, maybe using some guards as well. I just find <code class="language-plaintext highlighter-rouge">.unwrap()</code> at
the end of many lines to be <em>supremely ugly</em></dd>
    </dl>
  </li>
</ul>

<p>That said, I dislike the language far less than I did last time
around. Sort of surprised, This is not at all what I remembered it
being like when I was playing around with those pre-1.0 builds. I
still don’t know how it plays in the realms that I tend to work in
though.</p>

<p>This post is part of a series: <a href="/blog/2022/11/17/rust-learning-a-preface.html">Previous
Article</a> <a href="/blog/2022/11/22/learning-rust-personal-projects.html">Next
Article</a></p>]]></content><author><name>Nicky</name></author><category term="rust" /><category term="programming" /><category term="tech" /><summary type="html"><![CDATA[About a year ago I bought some programming books and one of the books I bought was Rust in Action, by Tim McNamara. I chose this one because at the time I was considering doing what I’m doing now and I didn’t want to go in on my own with just free resources. Free resources while they often can be good on a technical level are generally full of proselytizing. They often do not want to call out the cons of the language or anything that may turn off a possible future user, and leave the user to find the foot guns, most books tend to be better about this.]]></summary></entry><entry><title type="html">Learning Rust, Part 0: I don’t like rust</title><link href="https://foxiepa.ws/blog/2022/11/17/rust-learning-a-preface.html" rel="alternate" type="text/html" title="Learning Rust, Part 0: I don’t like rust" /><published>2022-11-17T01:04:18-05:00</published><updated>2022-11-17T01:04:18-05:00</updated><id>https://foxiepa.ws/blog/2022/11/17/rust-learning-a-preface</id><content type="html" xml:base="https://foxiepa.ws/blog/2022/11/17/rust-learning-a-preface.html"><![CDATA[<p>This is the beginning of a new set of things. Inspired by my post on
“certain kinds of guys” in hacker culture. In this post I’m going to
lay out the reasons I have in the past not liked rust, why I became
immensely hostile to it, and what spaces I operate in that made rust
so inaccessible to me.</p>

<p>While I doubt that I will find myself liking rust this time around, I
think in doing this I can at least better explain myself better.</p>

<h1 id="why-i-havent-liked-rust">Why I haven’t liked rust</h1>
<h2 id="it-didnt-even-run-where-i-needed-it-to-run">It didn’t even run where I needed it to run</h2>
<p>So if there is anything I am somewhat known for, it has got to be my
freebsd fangirling. A previous version of this site had it front and
centre. My hostcloak on freenode before the fall was
<code class="language-plaintext highlighter-rouge">freebsd/lover/alliefox</code>… and rust didn’t run on freebsd. It test
suite wouldn’t pass, it could compile without a standard library and
that’s about it. On top of that a lot of projects that I’ve had since
are embedded projects for micro-controllers like the msp430. Rust’s
code size was much larger than C’s and this was a problem, it wouldn’t
fit in the tiny micro-controllers we had specced out for the project.</p>

<h2 id="i-dont-like-its-optics">I don’t like it’s optics</h2>
<p>Everything around the language is all about how the language makes
“safety” easy, and coming from a C perspective and an infosec
perspective, I find that claim infuriating because memory safety
errors while common, are not the <em>only</em> kind of error in existence,
and errors in logic can be far more damaging.</p>

<p>In the earlier days there was also this aura of unearned elitism as
well. It couldn’t run everywhere, almost nothing of value was written
in it (which in many ways can still be said today.) and yet people
were acting like it was already the best thing ever made and was
changing everything.</p>

<h2 id="i-dont-like-its--version-080-structure">I don’t like it’s (~ version 0.8.0) structure</h2>
<p>I found rust back when I last used it to be somehow both very terse
and very verbose. Additionally, the push to throw more stuff into the
compiler through macros was a “bad code smell” to me as someone who
was writing C and C++. I felt like “wasn’t this exactly the kind of
thing they complained about us doing?” whenever i saw a <code class="language-plaintext highlighter-rouge">!</code>, It always
felt too <em>clever</em>, and <em>clever</em> code was never a good thing.</p>

<h2 id="i-dont-like-its-fans">I don’t like it’s fans</h2>
<p>Rust users have this annoying tendency to essentially recreate
everything, and ask you why you aren’t using rust. This gets very
annoying, especially if you are primarily a C programmer. But they
aren’t the worst, they in the end are still programmers, the worst are
the people who don’t even write code, they just hear through the
aforementioned optics I mentioned, that rust is better in every way,
even in places where rust at the time DIDN’T EVEN RUN.</p>

<h1 id="why-i-became-so-hostile">Why I became so hostile.</h1>
<p>I didn’t start out hostile. I actually was very interested in the
language during 0.7.0~0.8.0. I wrote a script that continuously tried
to build it’s patches until tests passed on my servers (which ran
FreeBSD). This lasted about a month without ever passing. I tried to
learn it with a build on my linux box, and I found the syntax clear as
mud.</p>

<p>I put it down and just went back to doing what I normally did at the
time, C and Perl, and didn’t think much about it for a long while. It
grew. Suddenly I’m getting asked in IRC chats when talking about
projects why I’m not writing them in rust, and there is a refusal to
take “it doesn’t run there” as an answer.</p>

<p>I got tired of seeing take after take about how people who write in C
and C++ are the problem, and the world would be better if everyone
would just switch to rust. Ignoring the fact that still, at the time,
<em>rust did not run on most micro-controllers</em>. I started digging in
deeper and deeper, every single time I saw something like
that. OpenSSL being OpenSSL caused a massive amount of these as it
still does to this day.</p>

<div class="system-say system-kari">
<img src="/images/KariIcon.png" title="Kari" alt=" " class="pride-lesbian" /> 
<blockquote> 
<span class="nametag">Kari:</span> Honestly, I feel it says more about
OpenSSL than it does about C, but asking people to stop using OpenSSL
is literally impossible
</blockquote> 
</div>

<p>Today it’s just all of these feelings swirled together. I find it hard
to not stubbornly stay in this space. It’s been literal years of
refusing to try it again.</p>

<h1 id="why-i-dont-think-ill-like-it">Why I don’t think I’ll like it</h1>
<p>For rust to really blow my mind and for me to love it, It has a heck
of a task ahead of it. These days I don’t program as much anymore, and
when I do I’m working in Elixir. I’ve grown an appreciation for C++
working on a couple of projects of a partner of mine’s especially with
Qt.</p>

<p>We as a whole like languages where the code we need to write just
flows like water from our mind. Everything we’ve seen of rust code
doesn’t seem to be that and likely would cause us deep frustration
instead.</p>

<p>But we will try, and even more difficult, we will try to open our mind
a bit instead of stubbornly refusing it.</p>

<p>This post is part of a series: <a href="/blog/2022/11/17/rust-learning-rust-in-action.html">Next
Article</a></p>]]></content><author><name>Nicky</name></author><category term="rust" /><category term="programming" /><category term="tech" /><summary type="html"><![CDATA[This is the beginning of a new set of things. Inspired by my post on “certain kinds of guys” in hacker culture. In this post I’m going to lay out the reasons I have in the past not liked rust, why I became immensely hostile to it, and what spaces I operate in that made rust so inaccessible to me.]]></summary></entry><entry><title type="html">on Hacker IRC Culture</title><link href="https://foxiepa.ws/blog/2022/11/17/hacker-cuture-irc-bad.html" rel="alternate" type="text/html" title="on Hacker IRC Culture" /><published>2022-11-17T00:34:06-05:00</published><updated>2022-11-17T00:34:06-05:00</updated><id>https://foxiepa.ws/blog/2022/11/17/hacker-cuture-irc-bad</id><content type="html" xml:base="https://foxiepa.ws/blog/2022/11/17/hacker-cuture-irc-bad.html"><![CDATA[<p>Okay lets talk about a kind of guy</p>

<p>The kind of guy that was sardonic, probably drunk, and took glee in
shitting on anything and everything and just making everyone
miserable.</p>

<!--more-->
<blockquote style="background-color: #000; color: #0D0; padding-left: 5em;">
<pre>
23:00 &lt; newbie~&gt;: hey i made this, i think its pretty cool! :D
23:01 &lt;+that guy&gt;: Here is all the reasons its bad, you're shit and you should feel bad.
</pre>
</blockquote>

<p>This guy was everywhere on IRC, there were usually multiple ones of
these guys on every single IRC channel everywhere, and they were just
part of the “vibe” of every single one.</p>

<p>Something I’m starting to realise is that I’ve slowly been becoming
one of these guys. I see elements of that kind of behaviour
everywhere, especially in how I handle discussions around technology.
It’s like every ounce of joy and excitement about tech has been stolen
away. I don’t even realise I’m doing it.</p>

<p>IRC put this in my head as a right way to act. The same kind of people
are ostensibly the reason that IRC died for anything but tech
discussions. It seemed on IRC, the right way to be a hacker was to be
the person most able to shit on everyone else.</p>

<p>I need to remove this behaviour from myself, seeing it in myself has
made me realise just how toxic it is and how toxic I can be as a
person. It wasn’t okay, and it isn’t okay that I perpetuate it. I
can hide behind the fact I was bullied in school, I can say it’s just
part of how I grew a “thicker skin”. It’s not, it’s toxic behaviour, I
just became a bully like everyone else, it doesn’t matter that it was
done to me first.</p>]]></content><author><name>Nicky</name></author><category term="irc" /><category term="hacker-culture" /><category term="assholes" /><category term="the-vibes-were-bad" /><summary type="html"><![CDATA[Okay lets talk about a kind of guy]]></summary></entry><entry><title type="html">Whats This About</title><link href="https://foxiepa.ws/blog/2022/11/13/whats-this-about.html" rel="alternate" type="text/html" title="Whats This About" /><published>2022-11-13T04:14:23-05:00</published><updated>2022-11-13T04:14:23-05:00</updated><id>https://foxiepa.ws/blog/2022/11/13/whats-this-about</id><content type="html" xml:base="https://foxiepa.ws/blog/2022/11/13/whats-this-about.html"><![CDATA[<p>First we think it’d be easier to say what this isn’t.</p>

<p>This is not</p>
<ul>
  <li>a tutorial blog</li>
  <li>a tech first blog</li>
  <li>journalism</li>
  <li>a sanitised view of us</li>
</ul>

<p>Posts about tech stuff will often focus more on the journey we took to
get to the result than the code. While we recognise the need for
tutorial posts, we’re not interested in that.</p>

<p>Technology has been becoming less and less intersting to us, and while
there is absolutely going to be posts about tech, we really don’t want
to be seen as “a tech blogger” or a “games blogger”. Thats such a
narrow intersection of our interests.</p>

<p>We’re not a journalist, what we write will be deeply based in
opinion. Nothing we write should be taken as hard fact. Draw your own
conclusions and think for yourself. Check and Verify.</p>

<p>We’re tired of hiding who we are. We want to be the queer, plural,
disabled, mad furry kin that we are on the internet. We see no reason to
hide it anymore. Be mad.</p>]]></content><author><name></name></author><category term="meta" /><summary type="html"><![CDATA[First we think it’d be easier to say what this isn’t.]]></summary></entry></feed>