fixed layout flow
This commit is contained in:
parent
22ec7abe89
commit
cf314bc0ec
3 changed files with 330 additions and 284 deletions
|
@ -26,12 +26,6 @@ html {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 1000px) {
|
|
||||||
html {
|
|
||||||
font-size: 0.8rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
html * {
|
html * {
|
||||||
color: var(--font-color);
|
color: var(--font-color);
|
||||||
box-sizing: inherit;
|
box-sizing: inherit;
|
||||||
|
@ -46,13 +40,7 @@ body {
|
||||||
}
|
}
|
||||||
|
|
||||||
body > * {
|
body > * {
|
||||||
padding: 0 4%;
|
padding: 0 4vw;
|
||||||
}
|
|
||||||
|
|
||||||
@media (min-width: 1000px) {
|
|
||||||
body > * {
|
|
||||||
padding: 0 25%;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
header {
|
header {
|
||||||
|
@ -61,9 +49,14 @@ header {
|
||||||
|
|
||||||
main {
|
main {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-flow: row wrap-reverse;
|
flex-flow: row;
|
||||||
justify-content: space-around;
|
justify-content: space-around;
|
||||||
gap: 2rem;
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 600px) {
|
||||||
|
main {
|
||||||
|
flex-flow: row wrap-reverse
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
article {
|
article {
|
||||||
|
@ -113,10 +106,8 @@ h5,
|
||||||
h6 {
|
h6 {
|
||||||
margin-top: 1rem;
|
margin-top: 1rem;
|
||||||
margin-bottom: 1.2rem;
|
margin-bottom: 1.2rem;
|
||||||
|
|
||||||
overflow-wrap: break-word;
|
overflow-wrap: break-word;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
|
|
||||||
line-height: 1.1;
|
line-height: 1.1;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
@ -132,6 +123,7 @@ a {
|
||||||
text-decoration: underline solid var(--link-color) 10%;
|
text-decoration: underline solid var(--link-color) 10%;
|
||||||
text-underline-offset: 3.8px;
|
text-underline-offset: 3.8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
a:hover {
|
a:hover {
|
||||||
background-color: var(--link-color);
|
background-color: var(--link-color);
|
||||||
color: var(--font-inverted);
|
color: var(--font-inverted);
|
||||||
|
@ -157,7 +149,6 @@ table {
|
||||||
border-radius: 0.5rem;
|
border-radius: 0.5rem;
|
||||||
border-spacing: 0px;
|
border-spacing: 0px;
|
||||||
overflow: scroll;
|
overflow: scroll;
|
||||||
|
|
||||||
background-color: var(--primary);
|
background-color: var(--primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,11 +205,9 @@ meter {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0em 0.2em 0.1em 0.2em;
|
padding: 0em 0.2em 0.1em 0.2em;
|
||||||
|
|
||||||
background-color: var(--secondary);
|
background-color: var(--secondary);
|
||||||
border: 1px solid var(--border);
|
border: 1px solid var(--border);
|
||||||
border-radius: 1px;
|
border-radius: 1px;
|
||||||
|
|
||||||
font-family: inherit;
|
font-family: inherit;
|
||||||
font-size: 100%;
|
font-size: 100%;
|
||||||
}
|
}
|
||||||
|
@ -233,6 +222,8 @@ button:active {
|
||||||
|
|
||||||
/* custom */
|
/* custom */
|
||||||
.profile {
|
.profile {
|
||||||
|
width: 70%;
|
||||||
|
height: auto;
|
||||||
margin-bottom: 1rem;
|
margin-bottom: 1rem;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
}
|
}
|
||||||
|
@ -240,7 +231,6 @@ button:active {
|
||||||
.articles {
|
.articles {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-flow: column nowrap;
|
flex-flow: column nowrap;
|
||||||
max-width: 70%;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.info {
|
.info {
|
||||||
|
@ -249,11 +239,3 @@ button:active {
|
||||||
flex-flow: column nowrap;
|
flex-flow: column nowrap;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.email::after {
|
|
||||||
content: attr(data-domain);
|
|
||||||
}
|
|
||||||
|
|
||||||
.email::before {
|
|
||||||
content: attr(data-user) "\0040";
|
|
||||||
}
|
|
||||||
|
|
BIN
src/assets/palmoe.png
Normal file
BIN
src/assets/palmoe.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.1 KiB |
570
src/index.html
570
src/index.html
|
@ -1,259 +1,323 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
|
||||||
<!-- metadata -->
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
||||||
<title>Home | Frederik Palmø</title>
|
|
||||||
<meta name="description" content="palmoe.dk | Frederik Palmø" />
|
|
||||||
<meta name="author" content="vodofrede" />
|
|
||||||
<meta property="og:title" content="Frederik Palmø" />
|
|
||||||
<meta property="og:description" content="" />
|
|
||||||
<meta property="og:url" content="https://palmoe.dk" />
|
|
||||||
|
|
||||||
<!-- assets -->
|
<head>
|
||||||
<link rel="stylesheet" href="/assets/main.css" />
|
<!-- metadata -->
|
||||||
<link rel="icon" type="image/x-icon " href="/assets/favicon.ico" />
|
<meta charset="utf-8" />
|
||||||
<script src="/assets/localization.js" type="text/javascript"></script>
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
</head>
|
<title>Home | Frederik Palmø</title>
|
||||||
<body onload="localize();" lang="en-gb" class="no-localize">
|
<meta name="description" content="palmoe.dk | Frederik Palmø" />
|
||||||
<header>
|
<meta name="author" content="vodofrede" />
|
||||||
<h1><a href="/">Frederik Palmø</a></h1>
|
<meta property="og:title" content="Frederik Palmø" />
|
||||||
</header>
|
<meta property="og:description" content="" />
|
||||||
|
<meta property="og:url" content="https://palmoe.dk" />
|
||||||
|
<!-- assets -->
|
||||||
|
<link rel="stylesheet" href="/assets/main.css" />
|
||||||
|
<link rel="icon" type="image/x-icon " href="/assets/favicon.ico" />
|
||||||
|
<script src="/assets/localization.js" type="text/javascript"></script>
|
||||||
|
</head>
|
||||||
|
|
||||||
<main>
|
<body onload="localize();" lang="en-gb" class="no-localize">
|
||||||
<section style="flex-grow: 1" class="articles">
|
<header>
|
||||||
<h2 lang="da-dk">Projekter</h2>
|
<h1><a href="/">Frederik Palmø</a></h1>
|
||||||
<h2 lang="en-gb">Projects</h2>
|
</header>
|
||||||
|
<main>
|
||||||
|
<section style="flex-grow: 1" class="articles">
|
||||||
|
<h2 lang="da-dk">Projekter</h2>
|
||||||
|
<h2 lang="en-gb">Projects</h2>
|
||||||
|
<div lang="da-dk">
|
||||||
|
<article>
|
||||||
|
<b>Redskaber til planlægning af spilkarakterer</b>
|
||||||
|
<span
|
||||||
|
style="display: flex; justify-content: flex-end; gap: 0.5rem">
|
||||||
|
<a href="https://erdtree.palmoe.dk" target="_blank"
|
||||||
|
rel="noopener noreferrer">projekt</a>
|
||||||
|
<a href="https://git.palmoe.dk/vodofrede/erdtree"
|
||||||
|
target="_blank" rel="noopener noreferrer">
|
||||||
|
kildekode
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
<p>
|
||||||
|
Dette projekt gør brug af grundlæggende webteknologier
|
||||||
|
såsom HTML, CSS og JavaScript.
|
||||||
|
Formålet var at gøre det nemmere at planlægge en
|
||||||
|
karakter til spillet Elden Ring. Til
|
||||||
|
udvindelse af data blev der gjort brug af et
|
||||||
|
python-script som konverterede data fra spillet
|
||||||
|
til JSON-format.
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<b>Implementering af hashing-algoritmer</b>
|
||||||
|
<span
|
||||||
|
style="display: flex; justify-content: flex-end; gap: 0.5rem">
|
||||||
|
<a href="https://crates.io/crates/lore" target="_blank"
|
||||||
|
rel="noopener noreferrer">
|
||||||
|
projekt
|
||||||
|
</a>
|
||||||
|
<a href="https://git.palmoe.dk/vodofrede/lore"
|
||||||
|
target="_blank" rel="noopener noreferrer">
|
||||||
|
kildekode
|
||||||
|
</a>
|
||||||
|
<a href="https://docs.rs/lore/latest/lore/"
|
||||||
|
target="_blank" rel="noopener noreferrer">
|
||||||
|
dokumentation
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
<p>
|
||||||
|
Formålet med dette projekt var implementeringen af en
|
||||||
|
simpel API til at generere
|
||||||
|
hashbeskeder ud fra vilkårlig inputdata. Projektet er
|
||||||
|
udformet som en Rust-pakke, og gør
|
||||||
|
brug af unit-testing for at sikre at outputtet er
|
||||||
|
korrekt. En del af øvelsen for mig var
|
||||||
|
også at skrive god dokumentering, så at det var nemt at
|
||||||
|
komme i gang med at anvende pakken
|
||||||
|
for en ikke-erfaren bruger.
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<b>Simpel, effektiv parsing</b>
|
||||||
|
<span
|
||||||
|
style="display: flex; justify-content: flex-end; gap: 0.5rem">
|
||||||
|
<a href="https://crates.io/crates/eyes" target="_blank"
|
||||||
|
rel="noopener noreferrer">
|
||||||
|
projekt
|
||||||
|
</a>
|
||||||
|
<a href="https://git.palmoe.dk/vodofrede/eyes"
|
||||||
|
target="_blank" rel="noopener noreferrer">
|
||||||
|
kildekode
|
||||||
|
</a>
|
||||||
|
<a href="https://docs.rs/eyes/latest/eyes/"
|
||||||
|
target="_blank" rel="noopener noreferrer">
|
||||||
|
dokumentation
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
<p>
|
||||||
|
Mange opgaver i det årlige
|
||||||
|
<a href="https://adventofcode.com" target="_blank"
|
||||||
|
rel="noopener noreferrer">
|
||||||
|
Advent of Code
|
||||||
|
</a>
|
||||||
|
event består af at parse noget data og transfomere det
|
||||||
|
til en ønsket output. Denne crate
|
||||||
|
består af en rudimentær parser som kan transformere sit
|
||||||
|
output til specifikke datatyper.
|
||||||
|
Dette gør det nemt at parse input med kun ét macro-kald,
|
||||||
|
hvilket simplificerer mine
|
||||||
|
opgaveløsninger markant.
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<b>IoT udendørs lyskæde</b>
|
||||||
|
<span
|
||||||
|
style="display: flex; justify-content: flex-end; gap: 0.5rem"></span>
|
||||||
|
<p>
|
||||||
|
Dette projekt omhandlede en løsning til at have udendørs
|
||||||
|
LED RGB lyskæder til brug i et
|
||||||
|
udendørs overdækket sofaområde. Projektet gør brug af
|
||||||
|
billige, ikke-smarte RGB lyskæder samt
|
||||||
|
en WiFi microcontroller (ESP32) som gør en kontrolflade
|
||||||
|
tilgængelig over hjemmenetværket
|
||||||
|
(gennem bl.a. Apple HomeKit og Home-Assistant). Gennem
|
||||||
|
dette projekt har jeg lært om
|
||||||
|
IoT-protokoller og programmering af microcontrollere.
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<b>Kloner af Galaga og Breakout</b>
|
||||||
|
<span
|
||||||
|
style="display: flex; justify-content: flex-end; gap: 0.5rem">
|
||||||
|
<a href="https://github.com/vodofrede/DIKUGames"
|
||||||
|
target="_blank" rel="noopener noreferrer">
|
||||||
|
kildekode
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
<p>
|
||||||
|
Dette projekt var en del af kurset Softwareudvikling,
|
||||||
|
som løb i forårssemesteret 2022. I
|
||||||
|
dette projekt har jeg arbejdet sammen med to andre som
|
||||||
|
en del af min studiegruppe. Projektet
|
||||||
|
er udført i C\# og gør brug af mange forskellige
|
||||||
|
softwareudviklingsprincipper (SOLID,
|
||||||
|
testing, diagrammering og arkitekturplanlægning).
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<b>Server</b>
|
||||||
|
<span
|
||||||
|
style="display: flex; justify-content: flex-end; gap: 0.5rem"></span>
|
||||||
|
<p>
|
||||||
|
Fra min hjemmeserver leverer jeg alle de hjemmesider som
|
||||||
|
jeg bruger. Dette involverer brug
|
||||||
|
af Linux (specifikt Debian) og en god blanding af
|
||||||
|
prælavede pakker, Docker containers og
|
||||||
|
selvkompilerede pakker, samt orkestrering med SystemD.
|
||||||
|
Herfra har jeg god erfaring med hvad
|
||||||
|
det vil sige at tage et projekt fra en bunke kode til et
|
||||||
|
leveret produkt på en webadresse.
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
<div lang="en-gb">
|
||||||
|
<article>
|
||||||
|
<b>Tools for planning game characters</b>
|
||||||
|
<span
|
||||||
|
style="display: flex; justify-content: flex-end; gap: 0.5rem">
|
||||||
|
<a href="https://erdtree.palmoe.dk" target="_blank"
|
||||||
|
rel="noopener noreferrer">project</a>
|
||||||
|
<a href="https://git.palmoe.dk/vodofrede/erdtree"
|
||||||
|
target="_blank" rel="noopener noreferrer">
|
||||||
|
source
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
<p>
|
||||||
|
This project makes use of fundamental web technologies
|
||||||
|
such as HTML, CSS and JavaScript. The
|
||||||
|
lack of good build planning tools for the game Elden
|
||||||
|
Ring made me embark on this project,
|
||||||
|
which consists of simple calculators for characters
|
||||||
|
statistics, armor efficiency and weapon
|
||||||
|
damage. Beyond the simple calculations, this project
|
||||||
|
also entailed extracting the item
|
||||||
|
values from the game files. This was done using Python,
|
||||||
|
and the resulting values were
|
||||||
|
converted to JSON files for ease of use with JavaScript.
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<b>Implementation of hashing algorithms</b>
|
||||||
|
<span
|
||||||
|
style="display: flex; justify-content: flex-end; gap: 0.5rem">
|
||||||
|
<a href="https://crates.io/crates/lore" target="_blank"
|
||||||
|
rel="noopener noreferrer">
|
||||||
|
project
|
||||||
|
</a>
|
||||||
|
<a href="https://git.palmoe.dk/vodofrede/lore"
|
||||||
|
target="_blank" rel="noopener noreferrer">
|
||||||
|
source
|
||||||
|
</a>
|
||||||
|
<a href="https://docs.rs/lore/latest/lore/"
|
||||||
|
target="_blank" rel="noopener noreferrer">
|
||||||
|
docs
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
<p>
|
||||||
|
With this project I wanted to focus on implementing a
|
||||||
|
simple API that would make it easy to
|
||||||
|
generate message digests for any data in Rust. I was
|
||||||
|
dissatisfied with the APIs of existing
|
||||||
|
packages, and sought reduce the amount of function calls
|
||||||
|
necessary to get a hash value.
|
||||||
|
Other focuses of this project were well-written
|
||||||
|
documentation and testing.
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<b>Simple, efficient parsing library</b>
|
||||||
|
<span
|
||||||
|
style="display: flex; justify-content: flex-end; gap: 0.5rem">
|
||||||
|
<a href="https://crates.io/crates/eyes" target="_blank"
|
||||||
|
rel="noopener noreferrer">
|
||||||
|
project
|
||||||
|
</a>
|
||||||
|
<a href="https://git.palmoe.dk/vodofrede/eyes"
|
||||||
|
target="_blank" rel="noopener noreferrer">
|
||||||
|
source
|
||||||
|
</a>
|
||||||
|
<a href="https://docs.rs/eyes/latest/eyes/"
|
||||||
|
target="_blank" rel="noopener noreferrer">
|
||||||
|
docs
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
<p>
|
||||||
|
Many problems in the yearly
|
||||||
|
<a href="https://adventofcode.com">Advent of Code</a>
|
||||||
|
event consist of parsing some data and transforming
|
||||||
|
afterwards. I wanted to try implementing
|
||||||
|
my own simple parser, which parses strings using simple
|
||||||
|
templates and converts the parsing
|
||||||
|
results to specific data types. This was my first go at
|
||||||
|
creating a Rust crate, and I focused
|
||||||
|
on creating an idiomatic API as well as good
|
||||||
|
documentation so that others might be able to
|
||||||
|
use the crate.
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<b>Outdoor IoT LED chain lights</b>
|
||||||
|
<span
|
||||||
|
style="display: flex; justify-content: flex-end; gap: 0.5rem"></span>
|
||||||
|
<p>
|
||||||
|
A simple internet of things project consisting of a few
|
||||||
|
cheap LED chain lights, a power
|
||||||
|
supply and a WiFi-enabled microcontroller. The project
|
||||||
|
uses existing technologies (Home
|
||||||
|
Assistant, WLED) to provide a nice-looking and simple
|
||||||
|
interface.
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<b>Clones of Galaga and Breakout</b>
|
||||||
|
<span
|
||||||
|
style="display: flex; justify-content: flex-end; gap: 0.5rem">
|
||||||
|
<a href="https://github.com/vodofrede/DIKUGames"
|
||||||
|
target="_blank" rel="noopener noreferrer">
|
||||||
|
source
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
<p>
|
||||||
|
As part of the Software Development course at UCPH we
|
||||||
|
created some small games in C\# using
|
||||||
|
the provided DIKUGames library. This class taught me
|
||||||
|
more efficient development patterns for
|
||||||
|
OOP, as well as how to delegate work in a group
|
||||||
|
environment in order to maintain development
|
||||||
|
speed. As part of this project we were taught basic OOP
|
||||||
|
principles such as SOLID and TDD.
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<b>Private server</b>
|
||||||
|
<span
|
||||||
|
style="display: flex; justify-content: flex-end; gap: 0.5rem"></span>
|
||||||
|
<p>
|
||||||
|
All of my projects are hosted on my private server,
|
||||||
|
located at my residence. As part of this
|
||||||
|
project I have learned a lot about server administration
|
||||||
|
work, web servers, package managers
|
||||||
|
and container architectures. From this I have adequate
|
||||||
|
level of experience with the
|
||||||
|
mentioned technologies.
|
||||||
|
</p>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<aside class="info">
|
||||||
|
<h3>info</h3>
|
||||||
|
<img src="/assets/palmoe.png" width="120" height="120"
|
||||||
|
class="profile" />
|
||||||
|
<dl>
|
||||||
|
<dt>github</dt>
|
||||||
|
<dd><a href="https://github.com/vodofrede">vodofrede</a></dd>
|
||||||
|
<dt>gitea</dt>
|
||||||
|
<dd><a href="https://git.palmoe.dk/vodofrede">vodofrede</a></dd>
|
||||||
|
</dl>
|
||||||
|
</aside>
|
||||||
|
</main>
|
||||||
|
<footer>
|
||||||
|
<h5>
|
||||||
|
<select id="lang" onchange="setLocale(selected(this).value);"
|
||||||
|
style="font-size: 1.5em">
|
||||||
|
<option value="en-gb">🇬🇧</option>
|
||||||
|
<option value="da-dk">🇩🇰</option>
|
||||||
|
</select>
|
||||||
|
</h5>
|
||||||
|
<h5>
|
||||||
|
<a href="https://git.palmoe.dk/vodofrede/palmoe.dk">© 2022 Frederik
|
||||||
|
Palmø</a>
|
||||||
|
</h5>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
|
||||||
<div lang="da-dk">
|
|
||||||
<article>
|
|
||||||
<b>Redskaber til planlægning af spilkarakterer</b>
|
|
||||||
<span style="display: flex; justify-content: flex-end; gap: 0.5rem">
|
|
||||||
<a href="https://erdtree.palmoe.dk" target="_blank" rel="noopener noreferrer">projekt</a>
|
|
||||||
<a href="https://git.palmoe.dk/vodofrede/erdtree" target="_blank" rel="noopener noreferrer">
|
|
||||||
kildekode
|
|
||||||
</a>
|
|
||||||
</span>
|
|
||||||
<p>
|
|
||||||
Dette projekt gør brug af grundlæggende webteknologier såsom HTML, CSS og JavaScript.
|
|
||||||
Formålet var at gøre det nemmere at planlægge en karakter til spillet Elden Ring. Til
|
|
||||||
udvindelse af data blev der gjort brug af et python-script som konverterede data fra spillet
|
|
||||||
til JSON-format.
|
|
||||||
</p>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
<article>
|
|
||||||
<b>Implementering af hashing-algoritmer</b>
|
|
||||||
<span style="display: flex; justify-content: flex-end; gap: 0.5rem">
|
|
||||||
<a href="https://crates.io/crates/lore" target="_blank" rel="noopener noreferrer">
|
|
||||||
projekt
|
|
||||||
</a>
|
|
||||||
<a href="https://git.palmoe.dk/vodofrede/lore" target="_blank" rel="noopener noreferrer">
|
|
||||||
kildekode
|
|
||||||
</a>
|
|
||||||
<a href="https://docs.rs/lore/latest/lore/" target="_blank" rel="noopener noreferrer">
|
|
||||||
dokumentation
|
|
||||||
</a>
|
|
||||||
</span>
|
|
||||||
<p>
|
|
||||||
Formålet med dette projekt var implementeringen af en simpel API til at generere
|
|
||||||
hashbeskeder ud fra vilkårlig inputdata. Projektet er udformet som en Rust-pakke, og gør
|
|
||||||
brug af unit-testing for at sikre at outputtet er korrekt. En del af øvelsen for mig var
|
|
||||||
også at skrive god dokumentering, så at det var nemt at komme i gang med at anvende pakken
|
|
||||||
for en ikke-erfaren bruger.
|
|
||||||
</p>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
<article>
|
|
||||||
<b>Simpel, effektiv parsing</b>
|
|
||||||
<span style="display: flex; justify-content: flex-end; gap: 0.5rem">
|
|
||||||
<a href="https://crates.io/crates/eyes" target="_blank" rel="noopener noreferrer">
|
|
||||||
projekt
|
|
||||||
</a>
|
|
||||||
<a href="https://git.palmoe.dk/vodofrede/eyes" target="_blank" rel="noopener noreferrer">
|
|
||||||
kildekode
|
|
||||||
</a>
|
|
||||||
<a href="https://docs.rs/eyes/latest/eyes/" target="_blank" rel="noopener noreferrer">
|
|
||||||
dokumentation
|
|
||||||
</a>
|
|
||||||
</span>
|
|
||||||
<p>
|
|
||||||
Mange opgaver i det årlige
|
|
||||||
<a href="https://adventofcode.com" target="_blank" rel="noopener noreferrer">
|
|
||||||
Advent of Code
|
|
||||||
</a>
|
|
||||||
event består af at parse noget data og transfomere det til en ønsket output. Denne crate
|
|
||||||
består af en rudimentær parser som kan transformere sit output til specifikke datatyper.
|
|
||||||
Dette gør det nemt at parse input med kun ét macro-kald, hvilket simplificerer mine
|
|
||||||
opgaveløsninger markant.
|
|
||||||
</p>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
<article>
|
|
||||||
<b>IoT udendørs lyskæde</b>
|
|
||||||
<span style="display: flex; justify-content: flex-end; gap: 0.5rem"></span>
|
|
||||||
<p>
|
|
||||||
Dette projekt omhandlede en løsning til at have udendørs LED RGB lyskæder til brug i et
|
|
||||||
udendørs overdækket sofaområde. Projektet gør brug af billige, ikke-smarte RGB lyskæder samt
|
|
||||||
en WiFi microcontroller (ESP32) som gør en kontrolflade tilgængelig over hjemmenetværket
|
|
||||||
(gennem bl.a. Apple HomeKit og Home-Assistant). Gennem dette projekt har jeg lært om
|
|
||||||
IoT-protokoller og programmering af microcontrollere.
|
|
||||||
</p>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
<article>
|
|
||||||
<b>Kloner af Galaga og Breakout</b>
|
|
||||||
<span style="display: flex; justify-content: flex-end; gap: 0.5rem">
|
|
||||||
<a href="https://github.com/vodofrede/DIKUGames" target="_blank" rel="noopener noreferrer">
|
|
||||||
kildekode
|
|
||||||
</a>
|
|
||||||
</span>
|
|
||||||
<p>
|
|
||||||
Dette projekt var en del af kurset Softwareudvikling, som løb i forårssemesteret 2022. I
|
|
||||||
dette projekt har jeg arbejdet sammen med to andre som en del af min studiegruppe. Projektet
|
|
||||||
er udført i C\# og gør brug af mange forskellige softwareudviklingsprincipper (SOLID,
|
|
||||||
testing, diagrammering og arkitekturplanlægning).
|
|
||||||
</p>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
<article>
|
|
||||||
<b>Server</b>
|
|
||||||
<span style="display: flex; justify-content: flex-end; gap: 0.5rem"></span>
|
|
||||||
<p>
|
|
||||||
Fra min hjemmeserver leverer jeg alle de hjemmesider som jeg bruger. Dette involverer brug
|
|
||||||
af Linux (specifikt Debian) og en god blanding af prælavede pakker, Docker containers og
|
|
||||||
selvkompilerede pakker, samt orkestrering med SystemD. Herfra har jeg god erfaring med hvad
|
|
||||||
det vil sige at tage et projekt fra en bunke kode til et leveret produkt på en webadresse.
|
|
||||||
</p>
|
|
||||||
</article>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div lang="en-gb">
|
|
||||||
<article>
|
|
||||||
<b>Tools for planning game characters</b>
|
|
||||||
<span style="display: flex; justify-content: flex-end; gap: 0.5rem">
|
|
||||||
<a href="https://erdtree.palmoe.dk" target="_blank" rel="noopener noreferrer">project</a>
|
|
||||||
<a href="https://git.palmoe.dk/vodofrede/erdtree" target="_blank" rel="noopener noreferrer">
|
|
||||||
source
|
|
||||||
</a>
|
|
||||||
</span>
|
|
||||||
<p>
|
|
||||||
This project makes use of fundamental web technologies such as HTML, CSS and JavaScript. The
|
|
||||||
lack of good build planning tools for the game Elden Ring made me embark on this project,
|
|
||||||
which consists of simple calculators for characters statistics, armor efficiency and weapon
|
|
||||||
damage. Beyond the simple calculations, this project also entailed extracting the item
|
|
||||||
values from the game files. This was done using Python, and the resulting values were
|
|
||||||
converted to JSON files for ease of use with JavaScript.
|
|
||||||
</p>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
<article>
|
|
||||||
<b>Implementation of hashing algorithms</b>
|
|
||||||
<span style="display: flex; justify-content: flex-end; gap: 0.5rem">
|
|
||||||
<a href="https://crates.io/crates/lore" target="_blank" rel="noopener noreferrer">
|
|
||||||
project
|
|
||||||
</a>
|
|
||||||
<a href="https://git.palmoe.dk/vodofrede/lore" target="_blank" rel="noopener noreferrer">
|
|
||||||
source
|
|
||||||
</a>
|
|
||||||
<a href="https://docs.rs/lore/latest/lore/" target="_blank" rel="noopener noreferrer">
|
|
||||||
docs
|
|
||||||
</a>
|
|
||||||
</span>
|
|
||||||
<p>
|
|
||||||
With this project I wanted to focus on implementing a simple API that would make it easy to
|
|
||||||
generate message digests for any data in Rust. I was dissatisfied with the APIs of existing
|
|
||||||
packages, and sought reduce the amount of function calls necessary to get a hash value.
|
|
||||||
Other focuses of this project were well-written documentation and testing.
|
|
||||||
</p>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
<article>
|
|
||||||
<b>Simple, efficient parsing library</b>
|
|
||||||
<span style="display: flex; justify-content: flex-end; gap: 0.5rem">
|
|
||||||
<a href="https://crates.io/crates/eyes" target="_blank" rel="noopener noreferrer">
|
|
||||||
project
|
|
||||||
</a>
|
|
||||||
<a href="https://git.palmoe.dk/vodofrede/eyes" target="_blank" rel="noopener noreferrer">
|
|
||||||
source
|
|
||||||
</a>
|
|
||||||
<a href="https://docs.rs/eyes/latest/eyes/" target="_blank" rel="noopener noreferrer">
|
|
||||||
docs
|
|
||||||
</a>
|
|
||||||
</span>
|
|
||||||
<p>
|
|
||||||
Many problems in the yearly
|
|
||||||
<a href="https://adventofcode.com">Advent of Code</a>
|
|
||||||
event consist of parsing some data and transforming afterwards. I wanted to try implementing
|
|
||||||
my own simple parser, which parses strings using simple templates and converts the parsing
|
|
||||||
results to specific data types. This was my first go at creating a Rust crate, and I focused
|
|
||||||
on creating an idiomatic API as well as good documentation so that others might be able to
|
|
||||||
use the crate.
|
|
||||||
</p>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
<article>
|
|
||||||
<b>Outdoor IoT LED chain lights</b>
|
|
||||||
<span style="display: flex; justify-content: flex-end; gap: 0.5rem"></span>
|
|
||||||
<p>
|
|
||||||
A simple internet of things project consisting of a few cheap LED chain lights, a power
|
|
||||||
supply and a WiFi-enabled microcontroller. The project uses existing technologies (Home
|
|
||||||
Assistant, WLED) to provide a nice-looking and simple interface.
|
|
||||||
</p>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
<article>
|
|
||||||
<b>Clones of Galaga and Breakout</b>
|
|
||||||
<span style="display: flex; justify-content: flex-end; gap: 0.5rem">
|
|
||||||
<a href="https://github.com/vodofrede/DIKUGames" target="_blank" rel="noopener noreferrer">
|
|
||||||
source
|
|
||||||
</a>
|
|
||||||
</span>
|
|
||||||
<p>
|
|
||||||
As part of the Software Development course at UCPH we created some small games in C\# using
|
|
||||||
the provided DIKUGames library. This class taught me more efficient development patterns for
|
|
||||||
OOP, as well as how to delegate work in a group environment in order to maintain development
|
|
||||||
speed. As part of this project we were taught basic OOP principles such as SOLID and TDD.
|
|
||||||
</p>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
<article>
|
|
||||||
<b>Private server</b>
|
|
||||||
<span style="display: flex; justify-content: flex-end; gap: 0.5rem"></span>
|
|
||||||
<p>
|
|
||||||
All of my projects are hosted on my private server, located at my residence. As part of this
|
|
||||||
project I have learned a lot about server administration work, web servers, package managers
|
|
||||||
and container architectures. From this I have adequate level of experience with the
|
|
||||||
mentioned technologies.
|
|
||||||
</p>
|
|
||||||
</article>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<aside class="info">
|
|
||||||
<h3>info</h3>
|
|
||||||
<img src="/assets/profile.png" width="120" height="120" class="profile" />
|
|
||||||
<dl>
|
|
||||||
<dt>github</dt>
|
|
||||||
<dd><a href="https://github.com/vodofrede">vodofrede</a></dd>
|
|
||||||
|
|
||||||
<dt>gitea</dt>
|
|
||||||
<dd><a href="https://git.palmoe.dk/vodofrede">vodofrede</a></dd>
|
|
||||||
</dl>
|
|
||||||
</aside>
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<footer>
|
|
||||||
<h5>
|
|
||||||
<select id="lang" onchange="setLocale(selected(this).value);" style="font-size: 1.5em">
|
|
||||||
<option value="en-gb">🇬🇧</option>
|
|
||||||
<option value="da-dk">🇩🇰</option>
|
|
||||||
</select>
|
|
||||||
</h5>
|
|
||||||
<h5>
|
|
||||||
<a href="https://git.palmoe.dk/vodofrede/palmoe.dk">© 2022 Frederik Palmø</a>
|
|
||||||
</h5>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
</html>
|
Loading…
Reference in a new issue