commit 35c82a253de7877f4ab9e64dd022b2fde34f36e8
Author: Adam <24621027+adoyle0@users.noreply.github.com>
Date: Sat Feb 4 21:16:39 2023 -0500
don't touch
diff --git a/doordesk/.gitignore b/doordesk/.gitignore
new file mode 100644
index 0000000..a547bf3
--- /dev/null
+++ b/doordesk/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/doordesk/index.html b/doordesk/index.html
new file mode 100644
index 0000000..e0d1c84
--- /dev/null
+++ b/doordesk/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+ April 22, 1958
+ 57 Perry Street
+ New York City
+
+ Dear Hume,
+
+ You ask advice: ah, what a very human and very dangerous thing to do! For to give advice
+ to a man who asks what to do with his life implies something very close to egomania. To
+ presume to point a man to the right and ultimate goal—to point with a trembling
+ finger in the RIGHT direction is something only a fool would take upon himself.
+
+
+ I am not a fool, but I respect your sincerity in asking my
+ advice. I ask you though, in listening to what I say, to remember that all advice can
+ only be a product of the man who gives it. What is truth to one may be a disaster to
+ another. I do not see life through your eyes, nor you through mine. If I were to attempt
+ to give you
+ specific advice, it would be too much like the blind leading the blind.
+
+
+
+ "To be, or not to be: that is the question: Whether 'tis nobler in the mind to
+ suffer the slings and arrows of outrageous fortune, or to take arms against a sea of
+ troubles..."
+
+
+ (Shakespeare)
+
+
+ And indeed, that IS the question: whether to float with the tide, or to swim for a goal.
+ It is a choice we must all make consciously or unconsciously at one time in our lives.
+ So few people understand this! Think of any decision you've ever made which had a
+ bearing on your future: I may be wrong, but I don't see how it could have been anything
+ but a choice however indirect—between the two things I've mentioned: the floating
+ or the swimming.
+
+
+ But why not float if you have no goal? That is another question.
+ It is unquestionably better to enjoy the floating than to swim in uncertainty. So how
+ does a man find a goal? Not a castle in the stars, but a real and tangible thing. How
+ can a man be sure he's not after the "big rock candy mountain," the enticing sugar-candy
+ goal that has little taste and no substance?
+
+
+ The answer—and, in a sense, the tragedy of life—is
+ that we seek to understand the goal and not the man. We set up a goal which demands of
+ us certain things: and we do these things. We adjust to the demands of a concept which
+ CANNOT be valid. When you were young, let us say that you wanted to be a fireman. I feel
+ reasonably safe in saying that you no longer want to be a fireman. Why? Because your
+ perspective has changed. It's not the fireman who has changed, but you. Every man is the
+ sum total of his reactions to experience. As your experiences differ and multiply, you
+ become a different man, and hence your perspective changes. This goes on and on. Every
+ reaction is a learning process; every significant experience alters your perspective.
+
+
+ So it would seem foolish, would it not, to adjust our lives to
+ the demands of a goal we see from a different angle every day? How could we ever hope to
+ accomplish anything other than galloping neurosis?
+
+
+ The answer, then, must not deal with goals at all, or not with
+ tangible goals, anyway. It would take reams of paper to develop this subject to
+ fulfillment. God only knows how many books have been written on "the meaning of man" and
+ that sort of thing, and god only knows how many people have pondered the subject. (I use
+ the term "god only knows" purely as an expression.) There's very little sense in my
+ trying to give it up to you in the proverbial nutshell, because I'm the first to admit
+ my absolute lack of qualifications for reducing the meaning of life to one or two
+ paragraphs.
+
+
+ I'm going to steer clear of the word "existentialism," but you
+ might keep it in mind as a key of sorts. You might also try something called
+ Being and Nothingness by Jean-Paul Sartre, and another little thing called
+ Existentialism: From Dostoyevsky to Sartre. These are merely suggestions. If
+ you're genuinely statisfied with what you are and what you're doing, then give those
+ books a wide berth. (Let sleeping dogs lie.) But back to the answer. As I said, to put
+ our faith in tangible goals would seem to be, at best, unwise. So we do not strive to be
+ firemen, we do not strive to be bankers, nor policemen, nor doctors. WE STRIVE TO BE
+ OURSELVES.
+
+
+ But don't misunderstand me. I don't mean that we can't BE
+ firemen, bankers, or doctors—but that we must make the goal conform to the
+ individual, rather than make the individual conform to the goal. In every man, heredity
+ and environment have combined to produce a creature of certain abilities and
+ desires—including a deeply ingrained need to function in such a way that his life
+ will be MEANINGFUL. A man has to BE something; he has to matter.
+
+
+ As I see it then, the formula runs something like this: a man
+ must choose a path which will let his ABILITIES function at maximum efficiency toward
+ the gratification of his DESIRES. In doing this, he is fulfilling a need (giving himself
+ identity by functioning in a set pattern toward a set goal) he avoids frustrating his
+ potential (choosing a path which puts no limit on his self-development), and he avoids
+ the terror of seeing his goal wilt or lose its charm as he draws closer to it (rather
+ than bending himself to meet the demands of that which he seeks, he has bent his goal to
+ conform to his own abilities and desires).
+
+
+ In short, he has not dedicated his life to reaching a
+ pre-defined goal, but he has rather chosen a way of like he KNOWS he will enjoy. The
+ goal is absolutely secondary: it is the
+ functioning toward the goal which is important. And it seems almost ridiculous to
+ say that a man MUST function in a pattern of his own choosing; for to let another man
+ define your own goals is to give up one of the most meaningful aspects of life—the
+ definitive act of will which makes a man an individual.
+
+
+ Let's assume that you think you have a choice of eight paths to
+ follow (all pre-defined paths, of course). And let's assume that you can't see any real
+ purpose in any of the eight. Then—and here is the essence of all I've
+ said—you MUST FIND A NINTH PATH.
+
+
+ Naturally, it isn't as easy as it sounds. you've lived a
+ relatively narrow life, a vertical rather than a horizontal existence. So it isn't any
+ too difficult to understand why you seem to feel the way you do. But a man who
+ procrastinates in his CHOOSING will inevitably have his choice made for him by
+ circumstance.
+
+
+ So if you now number yourself among the disenchanted, then you
+ have no choice but to accept things as they are, or to seriously seek something else.
+ But beware of looking for
+ goals: look for a way of life. Decide how you want to live and then see what you
+ can do to make a living WITHIN that way of life. But you say, "I don't know where to
+ look; I don't know what to look for."
+
+
+ And there's the crux. Is it worth giving up what I have to look
+ for something better? I don't know—is it? Who can make that decision but you? But
+ even by DECIDING TO LOOK, you go a long way toward making the choice.
+
+
+ If I don't call this to a halt, I'm going to find myself writing
+ a book. I hope it's not as confusing as it looks at first glance. Keep in mind, of
+ course, that this is MY WAY of looking at things. I happen to think that it's pretty
+ generally applicable, but you may not. Each of us has to create our own credo—this
+ merely happens to be mine.
+
+
+ If any part of it doesn't seem to make sense, by all means call
+ it to my attention. I'm not trying to send you out "on the road" in search of Valhalla,
+ but merely pointing out that it is not necessary to accept the choices handed down to
+ you by life as you know it. There is more to it than that—no one HAS to do
+ something he doesn't want to do for the rest of his life. But then again, if that's what
+ you wind up doing, by all means convince yourself that you HAD to do it. You'll have
+ lots of company.
+
+
+ And that's it for now. Until I hear from you again, I remain,
+
+ your friend...
+ Hunter
+
+
diff --git a/doordesk/public/blog/20220506-change.html b/doordesk/public/blog/20220506-change.html
new file mode 100644
index 0000000..1f9158f
--- /dev/null
+++ b/doordesk/public/blog/20220506-change.html
@@ -0,0 +1,54 @@
+
+ May 06, 2022
+ Change
+
+ "Life should not be a journey to the grave with the intention of arriving safely in
+ a pretty and well preserved body, but rather to skid in broadside in a cloud of
+ smoke, thoroughly used up, totally worn out, and loudly proclaiming "Wow! What a
+ Ride!"
+
+ (Hunter S.Thompson)
+
+
+ There comes a time in one's life, perhaps multiple, when there
+ is an unquestionable need for change. Maybe you're not sure how, why, or where it came
+ from, or where even it is you're headed, or how to get there, but here you are taking
+ your first steps toward a new life. A journey into the unknown. I've just set out on one
+ of these journeys, and even as I sit here typing this now I can't help but feel a little
+ bit nervous, but even more excited. I have absolutely no idea where I'm headed to be
+ quite honest. But I know where I've been.
+
+
+ Growing up I would always be taking things apart, I HAD to see
+ what was inside. What makes this thing, a thing. What makes it tick? Can it tick faster?
+ For no particular reason I just had to know every little detail about what made the
+ thing the thing that it was and why it did what it did. It's a gift and a curse of
+ sorts. Quickly this led to taking apart things of increasing complexity, our home
+ computer for instance. Luckily I was able to get it put back together before my parents
+ got home because it was made clear that this was not allowed, and the CPU didn't seem to
+ mind the sudden absence of thermal compound either. I must have been around 7 or 8 years
+ old at that time, and it still puzzles me just what is going on inside there.
+
+
+ I have a better idea now, naturally I had to figure out just
+ what all those pieces were, what they did, and how they did it. What if I replaced some
+ of these parts with other parts? As I honed my web searching skills to try to answer the
+ seemingly endless hows and whys I ended up building myself a little hotrod computer and
+ then raced it against other peoples' computers because why not, right? And I actually
+ won! It was an overclocking contest called the winter suicides, a kind of computer drag
+ race. Highest CPU clock speed wins, you have to boot into Windows XP, open CPU-Z, and
+ take a screenshot. If it crashes immediately after that (and it did) it still counts. I
+ got some pretty weird looks from my father as I stuck my computer outside in the snow
+ but that was a small price to pay for the grand prize which was a RAM kit (2GB of DDR400
+ I believe) and RAM cooler.
+
+
+ After getting comfortable with hardware I started to study the
+ software side of things, I tried teaching myself C++ (and didn't get very far), I did
+ teach myself HTML and CSS, some JavaScript, and started playing around with Linux. It
+ took until only a year or two ago to finally be completely on Linux full time (gaming
+ holding me back), I even have a Linux phone now (Pinephone Pro). At this point I reached
+ high school and my attention moved from computers to cars.
+
+ To be continued...
+
diff --git a/doordesk/public/blog/20220520-nvidia.html b/doordesk/public/blog/20220520-nvidia.html
new file mode 100644
index 0000000..29824b8
--- /dev/null
+++ b/doordesk/public/blog/20220520-nvidia.html
@@ -0,0 +1,13 @@
+
+ Jul 01, 2022
+ It's a post about nothing!
+ The progress update
+
+
+
+ Bots
+
+ After finding a number of ways not to begin the project formerly known as my capstone,
+ I've finally settled on a
+ dataset. The project is about detecting bots, starting with twitter. I've
+ studied a
+ few
+ different
+ methods of bot detection and particularly like the
+ DeBot and
+ BotWalk methods and think I will try to mimic them,
+ in that order.
+
+
+ Long story short, DeBot uses a fancy method of time correlation to group accounts
+ together based on their posting habits. By identifying accounts that all have identical
+ posting habits that are beyond what a human could do by coincidence, this is a great
+ first step to identifying an inital group of seed bots. This can then be expanded by
+ using BotWalk's method of checking all the followers of the bot accounts and comparing
+ anomalous behavior to separate humans from non-humans. Rinse and repeat. I'll begin this
+ on twitter but hope to make it platform independent.
+
+ The Real Capstone
+
+ The bot project is too much to complete in this short amount of time, so instead I'm
+ working with a
+ small dataset
+ containing info about cars with some specs and I'll predict MPG. The problem itself for
+ me is trivial from past study/experience as an auto mechanic so I should have a nice
+ playground to focus completely on modeling. It's a very small data set too at < 400
+ lines, I should be able to test multiple models in depth very quickly. It may or may not
+ be interesting, expect a write-up anyway.
+
+ Cartman
+
+ Well I guess I've adopted an 8 year old. Based on
+ this project
+ I've trained a chat bot with the personality of Eric Cartman. He's a feature of my
+ Discord bot living on a Raspberry Pi 4B, which I would say is probably the slowest
+ computer you would ever want to run something like this on. It takes a somewhat
+ reasonable amount of time to respond, almost feeling human if you make it think a bit.
+ The project uses PyTorch to train the model. I'd like
+ to re-create it using TensorFlow as an
+ exercise to understand each one better, but that's a project for another night. It also
+ only responds to one line at a time so it can't carry a conversation with context,
+ yet...
+
+ Website
+
+ I never thought I'd end up having a blog. I had no plans at all actually when I set up
+ this server, just to host a silly page that I would change from time to time whenever I
+ was bored. I've been looking at
+ Hugo as a way to organize what is now just a list of
+ divs in a single html file slowly growing out of control. Basically you just dump each
+ post into its own file, create a template of how to render them, and let it do its
+ thing. I should be able to create a template that recreates exactly what you see right
+ now, which is beginning to grow on me.
+
+
+ If you haven't noticed yet, (and I don't blame you if you haven't because only a handful
+ of people even visit this page) each time there is an update there is a completely new
+ background image, color scheme, a whole new theme. This is because this page is a near
+ identical representation of terminal windows open my computer and each time I update the
+ page I also update it with my current wallpaper, which generates the color scheme
+ dynamically using
+ Pywal.
+
+ TODO:
+
+ - Code blocks with syntax highlighting
+ -
+ Develop an easy workflow to dump a jupyter notebook into the website and have it
+ display nicely with minimal effort
+
+ -
+ Find a way to hack plots generated with matplotlib to change colors with the page
+ color scheme (or find another way to do the same thing)
+
+ -
+ Automate generating the site - probably
+ Hugo
+
+ - Separate from blog, projects, etc.
+ - Add socials, contact, about
+ - A bunch of stuff I haven't even thought of yet
+
+ That's all for now
+
diff --git a/doordesk/src/App.css b/doordesk/src/App.css
new file mode 100644
index 0000000..6684fbd
--- /dev/null
+++ b/doordesk/src/App.css
@@ -0,0 +1,126 @@
+@import url("colors.css");
+@import url('https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@500&display=swap');
+
+:root{
+ --useless-gaps: 1em;
+}
+
+html, body {
+ background-color: black;
+ background-image: url("bg.png");
+ background-attachment: fixed;
+ background-position: center;
+ background-size: cover;
+ background-repeat: no-repeat;
+ font-family: 'Roboto Mono', monospace;
+ font-size: 14;
+ line-height: 1.7em;
+ color: var(--foreground);
+}
+
+input, textarea {
+ background-color: var(--background);
+ color: var(--foreground);
+ border: 1px solid var(--color6);
+ border-radius: 4px;
+ opacity: 0.8;
+}
+textarea {
+ width: 100%;
+ height: 38.2%;
+ resize: none;
+}
+input[type=text] {
+ font-size: 18;
+ width: 100%;
+}
+input[type=submit] {
+ float: right;
+ font-size: 16;
+ padding: .5em;
+}
+input[type=submit]:hover {
+ background-color: var(--color10);
+}
+img{
+ max-width: 100%;
+ height: auto;
+ }
+
+a {
+ color: var(--color4);
+}
+
+a:hover {
+ color: var(--color5);
+}
+
+h1 {
+ color: var(--color10);
+}
+
+h2 {
+ color: var(--color6);
+}
+
+h3 {
+ color: var(--color3);
+ margin-top: 2em;
+}
+
+p {
+ margin-top: 2em;
+}
+
+
+.content {
+ margin: 3em;
+}
+
+.content-container, .header {
+ margin: auto;
+ margin-top: var(--useless-gaps);
+ background: rgb(0,0,0,.8);
+ border: solid 1px;
+ border-color: var(--color4);
+ max-width: 80em;
+ box-shadow: 5px 12px 20px #000;
+}
+
+.date{
+ color: var(--color4)
+}
+
+.cards {
+ display: -webkit-flex;
+ display: -ms-flex;
+ display: flex;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ max-width: 100%;
+ overflow: hidden;
+ margin: auto;
+ max-width: 80%;
+}
+
+.card {
+ border-style: solid;
+ border-width: 1px;
+ width: 20rem;
+ padding: 0 2em 2em 2em;
+ margin: 2em;
+}
+
+.align-right {
+ text-align: right;
+}
+
+.align-center {
+ text-align: center;
+}
+
+.title {
+ margin-top: -1em;
+}
+
diff --git a/doordesk/src/App.tsx b/doordesk/src/App.tsx
new file mode 100644
index 0000000..16beded
--- /dev/null
+++ b/doordesk/src/App.tsx
@@ -0,0 +1,25 @@
+import { Component } from 'react'
+import './App.css'
+import Header from './components/Header.js'
+import Blog from './components/Blog.js'
+
+const BLOG_POSTS = [
+ 'blog/000000000-swim.html',
+ 'blog/20220506-change.html'
+]
+
+class App extends Component {
+ constructor(props) {
+ super(props)
+ }
+ render() {
+ return (
+