init
29
index.css
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
html {
|
||||||
|
color: rgb(51, 51, 46);
|
||||||
|
font-family: "monospace";
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
font-size: 0.7rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#links {
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
#links a {
|
||||||
|
color: #2525d8;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 600px) {
|
||||||
|
html {
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
pre {
|
||||||
|
font-size: 2.6vw
|
||||||
|
}
|
||||||
|
#links {
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
}
|
||||||
118
index.html
Normal file
|
|
@ -0,0 +1,118 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<title>Damian Simon</title>
|
||||||
|
<link rel="stylesheet" href="index.css">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="description" content="Photography, programming, and other personal projects.">
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
html {
|
||||||
|
color: rgb(51, 51, 46);
|
||||||
|
font-family: "monospace";
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
max-width: 70ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
font-size: 0.7rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#links {
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
#links a {
|
||||||
|
color: #2525d8;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: separate;
|
||||||
|
border-spacing: 0 10px;
|
||||||
|
}
|
||||||
|
table td {
|
||||||
|
padding: 0px 0.4em;
|
||||||
|
min-width: 20ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@media (max-width: 600px) {
|
||||||
|
html {
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
pre {
|
||||||
|
font-size: 2.6vw
|
||||||
|
}
|
||||||
|
#links {
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<pre aria-hidden="true">
|
||||||
|
|
||||||
|
_ _ _ _ _
|
||||||
|
| |__ ___| | | ___ __ _____ _ __| | __| |
|
||||||
|
| '_ \ / _ \ | |/ _ \ \ \ /\ / / _ \| '__| |/ _` |
|
||||||
|
| | | | __/ | | (_) | _ \ V V / (_) | | | | (_| |
|
||||||
|
|_| |_|\___|_|_|\___/ ( ) \_/\_/ \___/|_| |_|\__,_|
|
||||||
|
|/
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I’m a math undergraduate and hobbyist programmer with a growing interest in numerical methods and scientific computing. I enjoy exploring how mathematical ideas translate into efficient low-level code.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><b>projects & hobbys</b></p>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<a href="/synth">synth</a>
|
||||||
|
</td>
|
||||||
|
<td>a modular synthesizer project to learn C</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<a href="/mandelbrot">mandelbrot zoom</a>
|
||||||
|
</td>
|
||||||
|
<td>a simple mandelbrot zoom generator</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<a href="/solvers">solvers</a>
|
||||||
|
</td>
|
||||||
|
<td>exercises in implementing numerical solvers</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<a href="/boring">boring</a>
|
||||||
|
</td>
|
||||||
|
<td>a firefox extension to remove distractions on youtube and reddit</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<a href="/photography">photography</a>
|
||||||
|
</td>
|
||||||
|
<td>some of my favourite photos</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
<p><b>feedback & suggestions are welcome</b></p>
|
||||||
|
<p>damianhsimon@gmail.com</p>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
6
photography/convert.sh
Executable file
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
for f in *.jpg *.JPG *.JPEG *.png; do
|
||||||
|
[ -e "$f" ] || continue # skip if no match
|
||||||
|
avifenc --min 30 --max 40 "$f" "images/${f%.*}.avif"
|
||||||
|
done
|
||||||
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 82 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 76 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 12 KiB |
BIN
photography/images/R1-07722-0007.avif
Normal file
|
After Width: | Height: | Size: 343 KiB |
BIN
photography/images/R1-07722-0015.avif
Normal file
|
After Width: | Height: | Size: 123 KiB |
BIN
photography/images/R1-07722-0022.avif
Normal file
|
After Width: | Height: | Size: 299 KiB |
BIN
photography/images/R1-07722-0032.avif
Normal file
|
After Width: | Height: | Size: 224 KiB |
BIN
photography/images/R1-07722-0033.avif
Normal file
|
After Width: | Height: | Size: 291 KiB |
BIN
photography/images/R1-07722-0034.avif
Normal file
|
After Width: | Height: | Size: 183 KiB |
BIN
photography/images/R1-07722-0037.avif
Normal file
|
After Width: | Height: | Size: 159 KiB |
BIN
photography/images/abstract.avif
Normal file
|
After Width: | Height: | Size: 356 KiB |
BIN
photography/images/abstract2.avif
Normal file
|
After Width: | Height: | Size: 204 KiB |
BIN
photography/images/abstract3.avif
Normal file
|
After Width: | Height: | Size: 299 KiB |
BIN
photography/images/ant.avif
Normal file
|
After Width: | Height: | Size: 200 KiB |
BIN
photography/images/bib.avif
Normal file
|
After Width: | Height: | Size: 559 KiB |
BIN
photography/images/biene.avif
Normal file
|
After Width: | Height: | Size: 114 KiB |
BIN
photography/images/biene2.avif
Normal file
|
After Width: | Height: | Size: 97 KiB |
BIN
photography/images/birb.avif
Normal file
|
After Width: | Height: | Size: 182 KiB |
BIN
photography/images/birb2.avif
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
photography/images/birb3.avif
Normal file
|
After Width: | Height: | Size: 601 KiB |
BIN
photography/images/blume.avif
Normal file
|
After Width: | Height: | Size: 184 KiB |
BIN
photography/images/blumen.avif
Normal file
|
After Width: | Height: | Size: 766 KiB |
BIN
photography/images/blumen2.avif
Normal file
|
After Width: | Height: | Size: 652 KiB |
BIN
photography/images/chamomile.avif
Normal file
|
After Width: | Height: | Size: 200 KiB |
BIN
photography/images/clouds.avif
Normal file
|
After Width: | Height: | Size: 127 KiB |
BIN
photography/images/clouds2.avif
Normal file
|
After Width: | Height: | Size: 121 KiB |
BIN
photography/images/clouds3.avif
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
photography/images/decke.avif
Normal file
|
After Width: | Height: | Size: 650 KiB |
BIN
photography/images/ducks.avif
Normal file
|
After Width: | Height: | Size: 490 KiB |
BIN
photography/images/feld.avif
Normal file
|
After Width: | Height: | Size: 299 KiB |
BIN
photography/images/field.avif
Normal file
|
After Width: | Height: | Size: 525 KiB |
BIN
photography/images/fliege.avif
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
photography/images/gondel.avif
Normal file
|
After Width: | Height: | Size: 211 KiB |
BIN
photography/images/jelly.avif
Normal file
|
After Width: | Height: | Size: 318 KiB |
BIN
photography/images/jelly2.avif
Normal file
|
After Width: | Height: | Size: 582 KiB |
BIN
photography/images/jelly3.avif
Normal file
|
After Width: | Height: | Size: 356 KiB |
BIN
photography/images/leafes.avif
Normal file
|
After Width: | Height: | Size: 415 KiB |
BIN
photography/images/manfred.avif
Normal file
|
After Width: | Height: | Size: 299 KiB |
BIN
photography/images/manfred2.avif
Normal file
|
After Width: | Height: | Size: 577 KiB |
BIN
photography/images/moon.avif
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
photography/images/moon2.avif
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
photography/images/morning.avif
Normal file
|
After Width: | Height: | Size: 131 KiB |
BIN
photography/images/poppies.avif
Normal file
|
After Width: | Height: | Size: 296 KiB |
BIN
photography/images/sheep.avif
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
photography/images/snail.avif
Normal file
|
After Width: | Height: | Size: 84 KiB |
BIN
photography/images/tree.avif
Normal file
|
After Width: | Height: | Size: 638 KiB |
BIN
photography/images/trees.avif
Normal file
|
After Width: | Height: | Size: 824 KiB |
BIN
photography/images/trees2.avif
Normal file
|
After Width: | Height: | Size: 619 KiB |
BIN
photography/images/windmills.avif
Normal file
|
After Width: | Height: | Size: 758 KiB |
104
photography/index.html
Normal file
|
|
@ -0,0 +1,104 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<title>Damian Simon</title>
|
||||||
|
<link rel="stylesheet" href="photography.css">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="description" content="Photography">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="container" aria-hidden="true">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
let photos = [
|
||||||
|
"images/bib.avif",
|
||||||
|
'images/448750264_2391363344388219_3957568798567637443_n.avif',
|
||||||
|
"images/R1-07722-0007.avif",
|
||||||
|
"images/manfred.avif",
|
||||||
|
"images/manfred2.avif",
|
||||||
|
"images/R1-07722-0022.avif",
|
||||||
|
"images/field.avif",
|
||||||
|
"images/448721530_1108051306921644_348103644021142171_n.avif",
|
||||||
|
"images/R1-07722-0032.avif",
|
||||||
|
"images/R1-07722-0033.avif",
|
||||||
|
"images/R1-07722-0034.avif",
|
||||||
|
"images/R1-07722-0037.avif",
|
||||||
|
"images/birb.avif",
|
||||||
|
"images/blumen.avif",
|
||||||
|
"images/blumen2.avif",
|
||||||
|
"images/448784109_2100046017035648_3576732266758673287_n.avif",
|
||||||
|
"images/blume.avif",
|
||||||
|
"images/chamomile.avif",
|
||||||
|
"images/ant.avif",
|
||||||
|
"images/windmills.avif",
|
||||||
|
"images/448609138_1158655605468527_5617318776463058920_n.avif",
|
||||||
|
"images/448797075_435393492653720_8646043293011122127_n.avif",
|
||||||
|
"images/448762731_1677776913054166_358214089438840814_n.avif",
|
||||||
|
"images/448087014_436171172524258_3270192954732431304_n.avif",
|
||||||
|
"images/448550273_1040076344352099_4631886881760265285_n.avif",
|
||||||
|
"images/448670934_1106843440424147_98290233300769447_n.avif",
|
||||||
|
"images/448817777_331278703407922_5026728298304165137_n.avif",
|
||||||
|
"images/R1-07722-0015.avif",
|
||||||
|
"images/decke.avif",
|
||||||
|
"images/feld.avif",
|
||||||
|
"images/poppies.avif",
|
||||||
|
"images/fliege.avif",
|
||||||
|
"images/biene.avif",
|
||||||
|
"images/biene2.avif",
|
||||||
|
"images/ducks.avif",
|
||||||
|
"images/moon.avif",
|
||||||
|
"images/morning.avif",
|
||||||
|
"images/moon2.avif",
|
||||||
|
"images/clouds.avif",
|
||||||
|
"images/jelly.avif",
|
||||||
|
"images/jelly2.avif",
|
||||||
|
"images/jelly3.avif",
|
||||||
|
"images/clouds2.avif",
|
||||||
|
"images/sheep.avif",
|
||||||
|
"images/clouds3.avif",
|
||||||
|
"images/abstract.avif",
|
||||||
|
"images/abstract2.avif",
|
||||||
|
"images/abstract3.avif",
|
||||||
|
"images/birb2.avif",
|
||||||
|
"images/birb3.avif",
|
||||||
|
"images/gondel.avif",
|
||||||
|
"images/tree.avif",
|
||||||
|
"images/leafes.avif",
|
||||||
|
"images/trees2.avif"
|
||||||
|
];
|
||||||
|
|
||||||
|
const container = document.getElementById('container'); // Replace `document.body` if you want a specific container
|
||||||
|
|
||||||
|
// Loop through each photo in the photos array and create the required elements
|
||||||
|
photos.forEach(photo => {
|
||||||
|
|
||||||
|
// Create a new div with the class "photo"
|
||||||
|
const photoDiv = document.createElement("div");
|
||||||
|
photoDiv.classList.add("photo");
|
||||||
|
|
||||||
|
// Create an img element with lazy loading, the src, and alt attributes
|
||||||
|
const imgElement = document.createElement("img");
|
||||||
|
imgElement.loading = "lazy";
|
||||||
|
imgElement.src = `/photography/${photo}`;
|
||||||
|
imgElement.alt = "loading";
|
||||||
|
|
||||||
|
// Append the img element to the div
|
||||||
|
photoDiv.appendChild(imgElement);
|
||||||
|
|
||||||
|
// Append the div to the container
|
||||||
|
container.appendChild(photoDiv);
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
24
photography/photography.css
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
#container {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.photo {
|
||||||
|
width: 38em;
|
||||||
|
max-width: 100%;
|
||||||
|
background-color: aliceblue;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
|
||||||
|
aspect-ratio: 3/2;
|
||||||
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.photo img {
|
||||||
|
width: 100%;
|
||||||
|
vertical-align: middle;
|
||||||
|
|
||||||
|
}
|
||||||