🏡 index : 7800.io.git

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <title>Jacob Walchuk's Landing Page</title>
  <meta name="description" content="CV, projects, and contact information." />
  <script src="email.js"></script>
  <style>
    :root{
      --bg:#2b2b2b;          /* dark grey */
      --fg:#d3d3d3;          /* light grey */
      --accent:#e0e0e0;
      --maxw:800px;
    }
    *{box-sizing:border-box}
    html,body{height:100%}
    body{
      margin:0;
      font:16px/1.6 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
      background:var(--bg);
      color:var(--fg);
      -webkit-font-smoothing:antialiased;
      -moz-osx-font-smoothing:grayscale;
    }
    .wrap{
      max-width:var(--maxw);
      margin:0 auto;
      padding:6rem 1.25rem;
    }
    h1,h2{margin:0 0 0.5rem}
    h1{font-size:2.25rem}
    p{margin:0 0 1rem}
    .cta{
      display:inline-block;
      padding:.75rem 1rem;
      border:1px solid var(--accent);
      text-decoration:none;
      color:var(--fg);
      border-radius:8px;
    }
    .centre{
	text-align: center;
    }
    a{
	color:white;
    }
    #personalEmail, #academicEmail {
	font-style: italic;
    }
    #screenfetch {
	font-size: 0.7rem;
	display: flex;
    }
    #screen_one, #screen_two {
	flex: 1;
    }
  </style>
</head>
<body>
  <main class="wrap" role="main">
    <img src=heading.svg id=headimg />
    <br><br>
    <p>
      I'm <b>Jacob Walchuk</b>, a final-year philosophy student at the University of St Andrews. Right now, this site contains some basic information about me and links to past technical projects.</p>
    <h2>Contact</h2>
    <ul>
      <li>Personal Email: <a id="personalEmail" href="#">[click to reveal]</a></li>
      <li>Academic Email: <a id="academicEmail" href="#">[click to reveal]</a></li>
      <li>LinkedIn: <a href="https://www.linkedin.com/in/walchuk/">/in/walchuk</a>.</li>
      <li>Github: <a href="https://github.com/yaqubroli">@yaqubroli</a>. Note that most of my projects are <a href="https://git.bql.7800.io/">selfhosted</a>.</li>
    </ul>
    <h2>Curriculum Vitae</h2>
    <div class="centre">
      <a class="cta" href="cv.pdf">PDF Format</a>
      <a class="cta" href="cv.docx">DOCX Format</a>
    </div>
    <h2>Projects</h2>
    <ul>
      <li>I wrote a <a href=>YAML Parser in VBA</a> to generate my CV from a YAML source, and updated the <a href=>VBASync</a> C# application, which detaches VBA from its associated document for version control, so that it could be compiled on modern systems.</li>
      <li>Wrote a <a href="https://sprightly-malabi-9b60b5.netlify.app/booktracker/all/">book tracker</a> in node.js, which pulled together the SQLite databases of <a href=https://www.orgroam.com/>org-roam</a> and <a href=https://www.zotero.org/></a> and generated a static "app" which showed progress and notes. I am not actively using it to track readings anymore, although it might be revived someday. Neither zotero or org-roam document their schemas well, so I had to reverse-engineer them!</li>
      <li>Wrote a combination <a href=https://git.bql.7800.io/old_projects/url_shortener.git/tree>URL shortener and pastebin</a> in Rust + tokio which included its own <i>very</i> basic templating engine.
      <li>Wrote a <a href=https://git.bql.7800.io/old_projects/demo_old.git/tree>basic wireframe 3D renderer</a> in Java, which includes a linalg library.</li>
    </ul>
    <h2>Homelab</h2>
    I currently run a homelab with the following specs, which hosts various selfhosted services at <a href=https://bql.7800.io>bql.7800.io</a>.


    <div id="screenfetch">
      <div id="screen_one">
      <pre>
<span style="color:purple;"></span><span style="font-weight:bold;color:purple;">         -/oyddmdhs+:.
     -o</span><span style="font-weight:bold;color:gray;"></span><span style="font-weight:bold;">dNMMMMMMMMNNmhy+</span><span style="color:purple;"></span><span style="font-weight:bold;color:purple;">-`
   -y</span><span style="font-weight:bold;color:gray;"></span><span style="font-weight:bold;">NMMMMMMMMMMMNNNmmdhy</span><span style="color:purple;"></span><span style="font-weight:bold;color:purple;">+-
 `o</span><span style="font-weight:bold;color:gray;"></span><span style="font-weight:bold;">mMMMMMMMMMMMMNmdmmmmddhhy</span><span style="color:purple;"></span><span style="font-weight:bold;color:purple;">/`
 om</span><span style="font-weight:bold;color:gray;"></span><span style="font-weight:bold;">MMMMMMMMMMMN</span><span style="color:purple;"></span><span style="font-weight:bold;color:purple;">hhyyyo</span><span style="font-weight:bold;color:gray;"></span><span style="font-weight:bold;">hmdddhhhd</span><span style="color:purple;"></span><span style="font-weight:bold;color:purple;">o`
.y</span><span style="font-weight:bold;color:gray;"></span><span style="font-weight:bold;">dMMMMMMMMMMd</span><span style="color:purple;"></span><span style="font-weight:bold;color:purple;">hs++so/s</span><span style="font-weight:bold;color:gray;"></span><span style="font-weight:bold;">mdddhhhhdm</span><span style="color:purple;"></span><span style="font-weight:bold;color:purple;">+`
 oy</span><span style="font-weight:bold;color:gray;"></span><span style="font-weight:bold;">hdmNMMMMMMMN</span><span style="color:purple;"></span><span style="font-weight:bold;color:purple;">dyooy</span><span style="font-weight:bold;color:gray;"></span><span style="font-weight:bold;">dmddddhhhhyhN</span><span style="color:purple;"></span><span style="font-weight:bold;color:purple;">d.
  :o</span><span style="font-weight:bold;color:gray;"></span><span style="font-weight:bold;">yhhdNNMMMMMMMNNNmmdddhhhhhyym</span><span style="color:purple;"></span><span style="font-weight:bold;color:purple;">Mh
    .:</span><span style="font-weight:bold;color:gray;"></span><span style="font-weight:bold;">+sydNMMMMMNNNmmmdddhhhhhhmM</span><span style="color:purple;"></span><span style="font-weight:bold;color:purple;">my
       /m</span><span style="font-weight:bold;color:gray;"></span><span style="font-weight:bold;">MMMMMMNNNmmmdddhhhhhmMNh</span><span style="color:purple;"></span><span style="font-weight:bold;color:purple;">s:
    `o</span><span style="font-weight:bold;color:gray;"></span><span style="font-weight:bold;">NMMMMMMMNNNmmmddddhhdmMNhs</span><span style="color:purple;"></span><span style="font-weight:bold;color:purple;">+`
  `s</span><span style="font-weight:bold;color:gray;"></span><span style="font-weight:bold;">NMMMMMMMMNNNmmmdddddmNMmhs</span><span style="color:purple;"></span><span style="font-weight:bold;color:purple;">/.
 /N</span><span style="font-weight:bold;color:gray;"></span><span style="font-weight:bold;">MMMMMMMMNNNNmmmdddmNMNdso</span><span style="color:purple;"></span><span style="font-weight:bold;color:purple;">:`
+M</span><span style="font-weight:bold;color:gray;"></span><span style="font-weight:bold;">MMMMMMNNNNNmmmmdmNMNdso</span><span style="color:purple;"></span><span style="font-weight:bold;color:purple;">/-
yM</span><span style="font-weight:bold;color:gray;"></span><span style="font-weight:bold;">MNNNNNNNmmmmmNNMmhs+/</span><span style="color:purple;"></span><span style="font-weight:bold;color:purple;">-`
/h</span><span style="font-weight:bold;color:gray;"></span><span style="font-weight:bold;">MMNNNNNNNNMNdhs++/</span><span style="color:purple;"></span><span style="font-weight:bold;color:purple;">-`
`/</span><span style="font-weight:bold;color:gray;"></span><span style="font-weight:bold;">ohdmmddhys+++/:</span><span style="color:purple;"></span><span style="font-weight:bold;color:purple;">.`
  `-//////:--.</span>
      </pre>
      </div>
      <div id="screen_two">
	<pre>
<span style="font-weight:bold;"></span><span style="font-weight:bold;color:purple;">yaqub</span>@<span style="color:purple;"></span><span style="font-weight:bold;color:purple;">bql</span> 
--------- 
<span style="color:purple;"></span><span style="font-weight:bold;color:purple;">OS</span>: Gentoo Linux aarch64 
<span style="color:purple;"></span><span style="font-weight:bold;color:purple;">Host</span>: HUAWEI QingYun W515x-B056 W515x 
<span style="color:purple;"></span><span style="font-weight:bold;color:purple;">Kernel</span>: 5.10.97-arm64-desktop-custom
<span style="color:purple;"></span><span style="font-weight:bold;color:purple;">Packages</span>: 1 (dpkg), 1037 (emerge) 
<span style="color:purple;"></span><span style="font-weight:bold;color:purple;">Shell</span>: bash 5.2.37 
<span style="color:purple;"></span><span style="font-weight:bold;color:purple;">Resolution</span>: 2560x1440 
<span style="color:purple;"></span><span style="font-weight:bold;color:purple;">Terminal</span>: /dev/pts/1 
<span style="color:purple;"></span><span style="font-weight:bold;color:purple;">CPU</span>: ARM Cortex-A510 (12) @ 1.530GHz 
<span style="color:purple;"></span><span style="font-weight:bold;color:purple;">Memory</span>: 15248MiB 

<span style="color:dimgray;"></span><span style="color:dimgray;background-color:black;">   </span><span style="color:red;background-color:black;"></span><span style="color:red;background-color:red;">   </span><span style="color:green;background-color:red;"></span><span style="color:green;background-color:green;">   </span><span style="color:olive;background-color:green;"></span><span style="color:olive;background-color:olive;">   </span><span style="color:blue;background-color:olive;"></span><span style="color:blue;background-color:blue;">   </span><span style="color:purple;background-color:blue;"></span><span style="color:purple;background-color:purple;">   </span><span style="color:teal;background-color:purple;"></span><span style="color:teal;background-color:teal;">   </span><span style="color:gray;background-color:teal;"></span><span style="color:gray;background-color:gray;">   </span>
<span style="filter: contrast(70%) brightness(190%);color:dimgray;"></span><span style="filter: contrast(70%) brightness(190%);color:dimgray;background-color:black;">   </span><span style="filter: contrast(70%) brightness(190%);color:red;background-color:black;"></span><span style="filter: contrast(70%) brightness(190%);color:red;background-color:red;">   </span><span style="filter: contrast(70%) brightness(190%);color:green;background-color:red;"></span><span style="filter: contrast(70%) brightness(190%);color:green;background-color:green;">   </span><span style="filter: contrast(70%) brightness(190%);color:olive;background-color:green;"></span><span style="filter: contrast(70%) brightness(190%);color:olive;background-color:olive;">   </span><span style="filter: contrast(70%) brightness(190%);color:blue;background-color:olive;"></span><span style="filter: contrast(70%) brightness(190%);color:blue;background-color:blue;">   </span><span style="filter: contrast(70%) brightness(190%);color:purple;background-color:blue;"></span><span style="filter: contrast(70%) brightness(190%);color:purple;background-color:purple;">   </span><span style="filter: contrast(70%) brightness(190%);color:teal;background-color:purple;"></span><span style="filter: contrast(70%) brightness(190%);color:teal;background-color:teal;">   </span><span style="filter: contrast(70%) brightness(190%);color:gray;background-color:teal;"></span><span style="filter: contrast(70%) brightness(190%);color:gray;background-color:gray;">   </span>
</pre>

</div>
</div>
    You may notice that the kernel version is quite out-of-date. This is because the SoC that my server uses (the <a href=https://www.hisilicon.com/en/products/kirin/kirin-flagship-chips/kirin-9000>Kirin 9000c</a>) does not have kernel source available for it.

    In order to run an unsupported distribution, I had to debug anomalous behaviour at the kernel level, gained insight into how Huawei used proprietary <a href=https://en.wikipedia.org/wiki/Linux_Security_Modules>linux security modules</a> for security on their enterprise offerings, and communicated with kernel devs in Mandarin to obtain a custom-compiled kernel that did not contain Huawei's security features. Hopefully, I'll write a blog post about this in the future. 
  </main>
</body>
</html>