tools page; draft for article
This commit is contained in:
parent
83cbe179ac
commit
0b573f5b96
5 changed files with 94 additions and 8 deletions
|
@ -24,3 +24,7 @@ subtitle = 'personal blog and portfolio of jan wolff'
|
|||
name = 'projects'
|
||||
url = '/projects/'
|
||||
weight = 120
|
||||
[[menu.main]]
|
||||
name = 'tools'
|
||||
url = '/tools/'
|
||||
weight = 120
|
||||
|
|
|
@ -6,5 +6,6 @@ draft: true
|
|||
|
||||
Hi! I’m Jan (he/him). I'm a programmer by trade. I've majored in computer
|
||||
science and am currently working as a developer of e-commerce platforms, with a
|
||||
focus on _Magento 2_. You can find some of the stuff that I made on this
|
||||
website!
|
||||
focus on _Magento 2_. However, I am interested in many different things. Be it writing tools
|
||||
that help me in my day-to-day grind or hobbyist game projects.
|
||||
You can find some of the stuff that I made on this website!
|
||||
|
|
|
@ -7,4 +7,54 @@ draft: true
|
|||
I have migrated my homepage over to [the static site generator
|
||||
Hugo](https://gohugo.io). Its bastically what I had built before with some
|
||||
_pandoc_ and _Python_ magic, but... well... a lot better. And this basically
|
||||
represents something I have learned over the last few years.
|
||||
represents something I have learned over the last few years. Before this change
|
||||
everything was some cobbled together DIY stuff. I worked quite well, but everything
|
||||
small represented a huge task. For example, adding an RSS feed to my old blog
|
||||
required reading the RSS spec and generated an appropriate XML in Python.
|
||||
This might have been a learning experience, sure. But it was still something that
|
||||
needed maintaining and understanding. And in the end it was just sunk time you know?
|
||||
|
||||
By now I know that I'm able to implement the most simple portions of most specs. And
|
||||
generating some XML in Python isn't exactly breaking new ground. Thus, when assessing
|
||||
the situation critically, the whole ordeal was hardly a learning experience and much more
|
||||
just a chore. And its the same with oh so many other things as well. There is a thin line
|
||||
between doing something for the first time to learn from it and just doing a shoddy job
|
||||
at something you were already capable of doing.
|
||||
|
||||
I guess most people have a similar learning curve. When getting into programming
|
||||
every bit of help is used. Projects consist of a bunch of sample code and external
|
||||
libraries you don't really understand yet. I lived through this phase with very early
|
||||
Visual C# and Unity projects. After a while you become much more confident at writing
|
||||
stuff yourself. And then it just clicks, you pass the threshold where you are basically
|
||||
able to do everything. Sure it may need some additional reading to understand concepts, but the
|
||||
programming portion of every problem becomes almost obvious. Surely from now on you
|
||||
no longer need to rely on any external code and can just do everything from the ground up?
|
||||
From _first principles_?
|
||||
|
||||
And so you do. And honestly, you should. Just to see that nothing really is magic.
|
||||
Most people who have programmed portions of the software that drives your daily workflow
|
||||
aren't magical geniuses, but rather people who've worked on building a thing. And hopefully
|
||||
they were pay well for building their thing. I remember the first time I build a 2D game from
|
||||
the ground up in C. Built the rendering, audio and game logic all
|
||||
[using only SDL](https://www.libsdl.org/) to do the grunt work for different platforms. And you
|
||||
know what I did with that newfound knowledge? Build it again and again. To get it "just right".
|
||||
Turns out I knew enough to make a game engine, but that took a little too much time away from
|
||||
working on the "game" part.
|
||||
|
||||
So we're back at the main problem. Doing everything from _first principles_ puts you in
|
||||
the position that you have to work a little too much on those _first principles_ instead of
|
||||
the main idea you have. And they've been done. Countless times before. And possibly much
|
||||
better than the way you have built them. So instead of spending too much time reinventing
|
||||
the wheel, I am now much more self-critical in thinking about WHAT my novel idea actually
|
||||
is. And then I make sure to put as little stepping stones in the way towards that
|
||||
idea as possible.
|
||||
|
||||
Just a quick side note: Maybe of course the novel idea is a much better way of building
|
||||
something that already exists. In this case the previous point is moot.
|
||||
|
||||
But yeah. That's why switching to Hugo represents a new learning for me. Sure I _could_
|
||||
also build a custom static site generator just for my website. But either it becomes
|
||||
a mess of random scripts or I spend more time working on that, than on my site. And then
|
||||
I'd just end up with a terrible looking site that I'd spent waaay to long working on.
|
||||
|
||||
Thanks for coming to my TED talk.
|
31
content/tools/_index.md
Normal file
31
content/tools/_index.md
Normal file
|
@ -0,0 +1,31 @@
|
|||
---
|
||||
title: "Tools"
|
||||
date: 2022-12-05T22:19:44+01:00
|
||||
draft: true
|
||||
---
|
||||
|
||||
## sheldond
|
||||
|
||||
Sheldon Director is a server for the
|
||||
[Gemini](https://gemini.circumlunar.space/) internet protocol.
|
||||
The software is written in Rust and currently it only supports hosting static
|
||||
files.
|
||||
|
||||
current version: 0.2.0
|
||||
|
||||
* [source code](/files/sheldond/sheldond-0.2.0.tar.gz) ([SHA256](/files/sheldond/sheldond-0.2.0.tar.gz.sha256))
|
||||
* [git](https://git.janw.name/sheldond.git/)
|
||||
|
||||
---
|
||||
|
||||
## vma-extractor
|
||||
|
||||
[Proxmox](https://www.proxmox.com/de/) uses some self-built format to store VM
|
||||
backups. It is implemented as a patch to their Qemu fork.
|
||||
|
||||
This is a tool to extract VMA backups. It is written in Python3.
|
||||
|
||||
current version: 1.1.1
|
||||
|
||||
* [source code](/files/vma-extractor/vma-extractor-1.1.1.tar.gz) ([SHA256](/files/vma-extractor/vma-extractor-1.1.1.tar.gz.sha256))
|
||||
* [git](https://git.janw.name/vma-extractor.git/)
|
|
@ -12,7 +12,7 @@ body {
|
|||
background-size: cover;
|
||||
background-attachment: fixed;
|
||||
font-family: Catamaran, sans-serif;
|
||||
max-width: 60em;
|
||||
max-width: 40em;
|
||||
margin: auto;
|
||||
padding: 0.5rem;
|
||||
hyphens: auto;
|
||||
|
@ -40,8 +40,8 @@ header .subtitle {
|
|||
|
||||
.sub-container {
|
||||
display: block;
|
||||
color: rgb(186, 212, 186);
|
||||
background: rgb(60, 65, 61);
|
||||
color: rgb(31, 32, 31);
|
||||
background: rgb(241, 243, 241);
|
||||
padding: 0.75rem;
|
||||
margin: 1rem;
|
||||
border-radius: 0.5rem;
|
||||
|
@ -50,8 +50,8 @@ header .subtitle {
|
|||
}
|
||||
|
||||
.sub-container:hover {
|
||||
color: rgb(215, 245, 215);
|
||||
box-shadow: rgba(0, 0, 0, 0.2) 0 0.5rem 0.5rem;
|
||||
color: rgb(54, 63, 54);
|
||||
box-shadow: rgba(0, 0, 0, 0.2) 0 0.33rem 0.333rem;
|
||||
}
|
||||
|
||||
.sub-container .img-container {
|
||||
|
|
Loading…
Reference in a new issue