diff options
| author | Mitja Felicijan <mitja.felicijan@gmail.com> | 2022-08-27 14:05:48 +0200 |
|---|---|---|
| committer | Mitja Felicijan <mitja.felicijan@gmail.com> | 2022-08-27 14:05:48 +0200 |
| commit | 9f5454bda6299db43a4e9de5b3716471388b81d9 (patch) | |
| tree | 1ceedf64a4517a372d70efc2b6f4bbd9478ce792 | |
| parent | e728c3a2cbd06d95cd1226d3b23473816bd0d67e (diff) | |
| download | mitjafelicijan.com-9f5454bda6299db43a4e9de5b3716471388b81d9.tar.gz | |
Move blog to Hugo
| -rw-r--r-- | .editorconfig | 4 | ||||
| -rw-r--r-- | .gitignore | 22 | ||||
| -rw-r--r-- | .vscode/settings.json | 6 | ||||
| -rw-r--r-- | Makefile | 41 | ||||
| -rw-r--r-- | archetypes/.gitkeep | 0 | ||||
| -rw-r--r-- | archetypes/default.md | 6 | ||||
| -rw-r--r-- | assets/dfd-rice/layout.svg | 132 | ||||
| -rw-r--r-- | assets/pid1/unikernels.svg | 578 | ||||
| -rwxr-xr-x | config.ini | 21 | ||||
| -rw-r--r-- | config.toml | 31 | ||||
| -rw-r--r-- | content/.gitkeep | 0 | ||||
| -rw-r--r-- | content/pages/books.md (renamed from posts/books.md) | 10 | ||||
| -rw-r--r-- | content/pages/curriculum-vitae.md (renamed from posts/curriculum-vitae.md) | 12 | ||||
| -rwxr-xr-x | content/posts/2011-01-13-most-likely-to-succeed-in-year-of-2011.md (renamed from posts/2011-01-13-most-likely-to-succeed-in-year-of-2011.md) | 10 | ||||
| -rwxr-xr-x | content/posts/2012-03-09-led-technology-not-so-eco.md (renamed from posts/2012-03-09-led-technology-not-so-eco.md) | 10 | ||||
| -rwxr-xr-x | content/posts/2013-10-24-wireless-sensor-networks.md (renamed from posts/2013-10-24-wireless-sensor-networks.md) | 10 | ||||
| -rwxr-xr-x | content/posts/2015-11-10-software-development-pitfalls.md (renamed from posts/2015-11-10-software-development-pitfalls.md) | 10 | ||||
| -rw-r--r-- | content/posts/2017-03-07-golang-profiling-simplified.md (renamed from posts/2017-03-07-golang-profiling-simplified.md) | 14 | ||||
| -rw-r--r-- | content/posts/2017-04-17-what-i-ve-learned-developing-ad-server.md (renamed from posts/2017-04-17-what-i-ve-learned-developing-ad-server.md) | 10 | ||||
| -rw-r--r-- | content/posts/2017-04-21-profiling-python-web-applications-with-visual-tools.md (renamed from posts/2017-04-21-profiling-python-web-applications-with-visual-tools.md) | 16 | ||||
| -rw-r--r-- | content/posts/2017-08-11-simple-iot-application.md (renamed from posts/2017-08-11-simple-iot-application.md) | 20 | ||||
| -rw-r--r-- | content/posts/2018-01-16-using-digitalocean-spaces-object-storage-with-fuse.md (renamed from posts/2018-01-16-using-digitalocean-spaces-object-storage-with-fuse.md) | 22 | ||||
| -rw-r--r-- | content/posts/2019-01-03-encoding-binary-data-into-dna-sequence.md (renamed from posts/2019-01-03-encoding-binary-data-into-dna-sequence.md) | 24 | ||||
| -rw-r--r-- | content/posts/2019-10-14-simplifying-and-reducing-clutter.md (renamed from posts/2019-10-14-simplifying-and-reducing-clutter.md) | 10 | ||||
| -rw-r--r-- | content/posts/2019-10-19-using-sentiment-analysis-for-clickbait-detection.md (renamed from posts/2019-10-19-using-sentiment-analysis-for-clickbait-detection.md) | 14 | ||||
| -rw-r--r-- | content/posts/2020-03-22-simple-sse-based-pubsub-server.md (renamed from posts/2020-03-22-simple-sse-based-pubsub-server.md) | 20 | ||||
| -rw-r--r-- | content/posts/2020-03-27-create-placeholder-images-with-sharp.md (renamed from posts/2020-03-27-create-placeholder-images-with-sharp.md) | 10 | ||||
| -rw-r--r-- | content/posts/2020-03-29-the-strange-case-of-elasticsearch-allocation-failure.md (renamed from posts/2020-03-29-the-strange-case-of-elasticsearch-allocation-failure.md) | 10 | ||||
| -rw-r--r-- | content/posts/2020-03-30-my-love-and-hate-relationship-with-nodejs.md (renamed from posts/2020-03-30-my-love-and-hate-relationship-with-nodejs.md) | 10 | ||||
| -rwxr-xr-x | content/posts/2020-05-05-remote-work.md (renamed from posts/2020-05-05-remote-work.md) | 10 | ||||
| -rw-r--r-- | content/posts/2020-08-15-systemd-disable-wake-onmouse.md (renamed from posts/2020-08-15-systemd-disable-wake-onmouse.md) | 10 | ||||
| -rw-r--r-- | content/posts/2020-09-06-esp-and-micropython.md (renamed from posts/2020-09-06-esp-and-micropython.md) | 12 | ||||
| -rw-r--r-- | content/posts/2020-09-08-bind-warning-on-login.md (renamed from posts/2020-09-08-bind-warning-on-login.md) | 12 | ||||
| -rw-r--r-- | content/posts/2020-09-09-digitalocean-sync.md (renamed from posts/2020-09-09-digitalocean-sync.md) | 10 | ||||
| -rw-r--r-- | content/posts/2021-01-24-replacing-dropbox-with-s3.md (renamed from posts/2021-01-24-replacing-dropbox-with-s3.md) | 12 | ||||
| -rw-r--r-- | content/posts/2021-01-25-goaccess.md (renamed from posts/2021-01-25-goaccess.md) | 16 | ||||
| -rw-r--r-- | content/posts/2021-06-26-simple-world-clock.md (renamed from posts/2021-06-26-simple-world-clock.md) | 16 | ||||
| -rw-r--r-- | content/posts/2021-07-30-from-internet-consumer-to-full-hominum-again.md (renamed from posts/2021-07-30-from-internet-consumer-to-full-hominum-again.md) | 10 | ||||
| -rw-r--r-- | content/posts/2021-08-01-linux-cheatsheet.md (renamed from posts/2021-08-01-linux-cheatsheet.md) | 10 | ||||
| -rw-r--r-- | content/posts/2021-12-03-debian-based-riced-up-distribution-for-developers.md (renamed from posts/2021-12-03-debian-based-riced-up-distribution-for-developers.md) | 28 | ||||
| -rw-r--r-- | content/posts/2021-12-25-running-golang-application-as-pid1.md (renamed from posts/2021-12-25-running-golang-application-as-pid1.md) | 18 | ||||
| -rw-r--r-- | content/posts/2021-12-30-wap-mobile-web-before-the-web.md (renamed from posts/2021-12-30-wap-mobile-web-before-the-web.md) | 16 | ||||
| -rw-r--r-- | content/posts/2022-06-28-sentiment-based-on-political-bias.md (renamed from posts/2022-06-28-sentiment-based-on-political-bias.md) | 10 | ||||
| -rw-r--r-- | content/posts/2022-06-30-trying-out-helix-editor.md (renamed from posts/2022-06-30-trying-out-helix-editor.md) | 12 | ||||
| -rw-r--r-- | content/posts/2022-07-05-what-would-dna-sound-if-synthesized.md (renamed from posts/2022-07-05-what-would-dna-sound-if-synthesized.md) | 42 | ||||
| -rw-r--r-- | content/posts/2022-08-13-algae-spotted-on-river-sava.md (renamed from posts/2022-08-13-algae-spotted-on-river-sava.md) | 22 | ||||
| -rw-r--r-- | data/.gitkeep | 0 | ||||
| -rw-r--r-- | layouts/.gitkeep | 0 | ||||
| -rw-r--r-- | static/.gitkeep | 0 | ||||
| -rw-r--r-- | static/algae-sava/dji-algae-0.jpg (renamed from assets/algae-sava/dji-algae-0.jpg) | bin | 145615 -> 145615 bytes | |||
| -rw-r--r-- | static/algae-sava/dji-algae-1.jpg (renamed from assets/algae-sava/dji-algae-1.jpg) | bin | 154416 -> 154416 bytes | |||
| -rw-r--r-- | static/algae-sava/dji-algae-2.jpg (renamed from assets/algae-sava/dji-algae-2.jpg) | bin | 114347 -> 114347 bytes | |||
| -rw-r--r-- | static/algae-sava/dji-algae-3.jpg (renamed from assets/algae-sava/dji-algae-3.jpg) | bin | 128019 -> 128019 bytes | |||
| -rw-r--r-- | static/algae-sava/dji-algae-4.jpg (renamed from assets/algae-sava/dji-algae-4.jpg) | bin | 217747 -> 217747 bytes | |||
| -rw-r--r-- | static/algae-sava/dji-algae-5.jpg (renamed from assets/algae-sava/dji-algae-5.jpg) | bin | 264884 -> 264884 bytes | |||
| -rw-r--r-- | static/cv/avatar.gif (renamed from assets/cv/avatar.gif) | bin | 2174 -> 2174 bytes | |||
| -rw-r--r-- | static/dfd-rice/desktop.png (renamed from assets/dfd-rice/desktop.png) | bin | 329498 -> 329498 bytes | |||
| -rw-r--r-- | static/dfd-rice/install-00.png (renamed from assets/dfd-rice/install-00.png) | bin | 35695 -> 35695 bytes | |||
| -rw-r--r-- | static/dfd-rice/install-01.png (renamed from assets/dfd-rice/install-01.png) | bin | 28042 -> 28042 bytes | |||
| -rw-r--r-- | static/dfd-rice/install-02.png (renamed from assets/dfd-rice/install-02.png) | bin | 21638 -> 21638 bytes | |||
| -rw-r--r-- | static/dfd-rice/install-03.png (renamed from assets/dfd-rice/install-03.png) | bin | 34698 -> 34698 bytes | |||
| -rw-r--r-- | static/dfd-rice/install-04.png (renamed from assets/dfd-rice/install-04.png) | bin | 28346 -> 28346 bytes | |||
| -rw-r--r-- | static/dfd-rice/install-05.png (renamed from assets/dfd-rice/install-05.png) | bin | 13755 -> 13755 bytes | |||
| -rw-r--r-- | static/dfd-rice/installation.svg (renamed from assets/dfd-rice/installation.svg) | 244 | ||||
| -rw-r--r-- | static/dfd-rice/layout.png (renamed from assets/dfd-rice/layout.png) | bin | 9072 -> 9072 bytes | |||
| -rw-r--r-- | static/dfd-rice/layout.svg | 28 | ||||
| -rw-r--r-- | static/dfd-rice/script.png (renamed from assets/dfd-rice/script.png) | bin | 65747 -> 65747 bytes | |||
| -rw-r--r-- | static/dna-sequence/benchmarks.ods (renamed from assets/dna-sequence/benchmarks.ods) | bin | 21911 -> 21911 bytes | |||
| -rw-r--r-- | static/dna-sequence/chart-encoding-speed.png (renamed from assets/dna-sequence/chart-encoding-speed.png) | bin | 14201 -> 14201 bytes | |||
| -rw-r--r-- | static/dna-sequence/chart-file-sizes.png (renamed from assets/dna-sequence/chart-file-sizes.png) | bin | 12391 -> 12391 bytes | |||
| -rw-r--r-- | static/dna-sequence/dna-basics.jpg (renamed from assets/dna-sequence/dna-basics.jpg) | bin | 165883 -> 165883 bytes | |||
| -rw-r--r-- | static/dna-sequence/quote.png (renamed from assets/dna-sequence/quote.png) | bin | 1068 -> 1068 bytes | |||
| -rw-r--r-- | static/dna-sequence/sample-binary-file.png (renamed from assets/dna-sequence/sample-binary-file.png) | bin | 66417 -> 66417 bytes | |||
| -rw-r--r-- | static/dna-sequence/sample.png (renamed from assets/dna-sequence/sample.png) | bin | 65930 -> 65930 bytes | |||
| -rw-r--r-- | static/dna-synthesized/bison/in.txt (renamed from assets/dna-synthesized/bison/in.txt) | 0 | ||||
| -rw-r--r-- | static/dna-synthesized/bison/out.mp3 (renamed from assets/dna-synthesized/bison/out.mp3) | bin | 960469 -> 960469 bytes | |||
| -rw-r--r-- | static/dna-synthesized/bison/spectogram.png (renamed from assets/dna-synthesized/bison/spectogram.png) | bin | 52808 -> 52808 bytes | |||
| -rwxr-xr-x | static/dna-synthesized/elektron/IMG_0619.jpg (renamed from assets/dna-synthesized/elektron/IMG_0619.jpg) | bin | 226025 -> 226025 bytes | |||
| -rwxr-xr-x | static/dna-synthesized/elektron/IMG_0620.jpg (renamed from assets/dna-synthesized/elektron/IMG_0620.jpg) | bin | 242937 -> 242937 bytes | |||
| -rwxr-xr-x | static/dna-synthesized/elektron/IMG_0622.jpg (renamed from assets/dna-synthesized/elektron/IMG_0622.jpg) | bin | 279234 -> 279234 bytes | |||
| -rwxr-xr-x | static/dna-synthesized/elektron/elektron.mp4 (renamed from assets/dna-synthesized/elektron/elektron.mp4) | bin | 22478213 -> 22478213 bytes | |||
| -rwxr-xr-x | static/dna-synthesized/elektron/midi-studio.jpg (renamed from assets/dna-synthesized/elektron/midi-studio.jpg) | bin | 63633 -> 63633 bytes | |||
| -rw-r--r-- | static/dna-synthesized/mouse/in.txt (renamed from assets/dna-synthesized/mouse/in.txt) | 0 | ||||
| -rw-r--r-- | static/dna-synthesized/mouse/out.mp3 (renamed from assets/dna-synthesized/mouse/out.mp3) | bin | 864547 -> 864547 bytes | |||
| -rw-r--r-- | static/dna-synthesized/mouse/spectogram.png (renamed from assets/dna-synthesized/mouse/spectogram.png) | bin | 114261 -> 114261 bytes | |||
| -rw-r--r-- | static/dna-synthesized/quote/in.txt (renamed from assets/dna-synthesized/quote/in.txt) | 0 | ||||
| -rw-r--r-- | static/dna-synthesized/quote/out.mp3 (renamed from assets/dna-synthesized/quote/out.mp3) | bin | 678973 -> 678973 bytes | |||
| -rw-r--r-- | static/dna-synthesized/quote/spectogram.png (renamed from assets/dna-synthesized/quote/spectogram.png) | bin | 108863 -> 108863 bytes | |||
| -rw-r--r-- | static/dna-synthesized/symphony-no6-1st-movement.mp3 (renamed from assets/dna-synthesized/symphony-no6-1st-movement.mp3) | bin | 11650187 -> 11650187 bytes | |||
| -rw-r--r-- | static/dna-synthesized/symphony-no6-1st-movement.png (renamed from assets/dna-synthesized/symphony-no6-1st-movement.png) | bin | 245694 -> 245694 bytes | |||
| -rw-r--r-- | static/dna-synthesized/taurus/in.txt (renamed from assets/dna-synthesized/taurus/in.txt) | 0 | ||||
| -rw-r--r-- | static/dna-synthesized/taurus/out.mp3 (renamed from assets/dna-synthesized/taurus/out.mp3) | bin | 1056599 -> 1056599 bytes | |||
| -rw-r--r-- | static/dna-synthesized/taurus/spectogram.png (renamed from assets/dna-synthesized/taurus/spectogram.png) | bin | 109064 -> 109064 bytes | |||
| -rw-r--r-- | static/do-fuse/copy-benchmarks.tsv (renamed from assets/do-fuse/copy-benchmarks.tsv) | 0 | ||||
| -rw-r--r-- | static/do-fuse/fuse-droplets.png (renamed from assets/do-fuse/fuse-droplets.png) | bin | 42891 -> 42891 bytes | |||
| -rw-r--r-- | static/do-fuse/fuse-spaces.png (renamed from assets/do-fuse/fuse-spaces.png) | bin | 32450 -> 32450 bytes | |||
| -rw-r--r-- | static/do-fuse/sqlite-benchmarks.tsv (renamed from assets/do-fuse/sqlite-benchmarks.tsv) | 0 | ||||
| -rw-r--r-- | static/dropbox-sync/dropbox-spaces.png (renamed from assets/dropbox-sync/dropbox-spaces.png) | bin | 47661 -> 47661 bytes | |||
| -rw-r--r-- | static/esp8366-micropython/boards.jpg (renamed from assets/esp8366-micropython/boards.jpg) | bin | 98162 -> 98162 bytes | |||
| -rw-r--r-- | static/general/alert-dark.svg (renamed from assets/general/alert-dark.svg) | 0 | ||||
| -rw-r--r-- | static/general/alert-light.svg (renamed from assets/general/alert-light.svg) | 0 | ||||
| -rw-r--r-- | static/general/elasticlunr.min.js (renamed from assets/general/elasticlunr.min.js) | 0 | ||||
| -rw-r--r-- | static/general/favicon.ico (renamed from assets/general/favicon.ico) | bin | 15406 -> 15406 bytes | |||
| -rw-r--r-- | static/general/favicon.png (renamed from assets/general/favicon.png) | bin | 4771 -> 4771 bytes | |||
| -rw-r--r-- | static/go-profiling/golang-profiling-cpu.pdf (renamed from assets/go-profiling/golang-profiling-cpu.pdf) | bin | 16518 -> 16518 bytes | |||
| -rw-r--r-- | static/go-profiling/golang-profiling-mem.pdf (renamed from assets/go-profiling/golang-profiling-mem.pdf) | bin | 19221 -> 19221 bytes | |||
| -rw-r--r-- | static/goaccess/goaccess-dash-html.png (renamed from assets/goaccess/goaccess-dash-html.png) | bin | 16129 -> 16129 bytes | |||
| -rw-r--r-- | static/goaccess/goaccess-dash-term.png (renamed from assets/goaccess/goaccess-dash-term.png) | bin | 9188 -> 9188 bytes | |||
| -rw-r--r-- | static/helix-editor/editor.png (renamed from assets/helix-editor/editor.png) | bin | 159442 -> 159442 bytes | |||
| -rw-r--r-- | static/iot-application/iot-app-output.png (renamed from assets/iot-application/iot-app-output.png) | bin | 23767 -> 23767 bytes | |||
| -rw-r--r-- | static/iot-application/iot-rest-example.png (renamed from assets/iot-application/iot-rest-example.png) | bin | 33912 -> 33912 bytes | |||
| -rw-r--r-- | static/iot-application/iot-sqlite-db.png (renamed from assets/iot-application/iot-sqlite-db.png) | bin | 199821 -> 199821 bytes | |||
| -rw-r--r-- | static/iot-application/kcachegrind.png (renamed from assets/iot-application/kcachegrind.png) | bin | 88486 -> 88486 bytes | |||
| -rw-r--r-- | static/iot-application/profiling-viewer.png (renamed from assets/iot-application/profiling-viewer.png) | bin | 173672 -> 173672 bytes | |||
| -rw-r--r-- | static/iot-application/simple-iot-application-overview.svg (renamed from assets/iot-application/simple-iot-application-overview.svg) | 0 | ||||
| -rw-r--r-- | static/iot-application/simple-iot-application.zip (renamed from assets/iot-application/simple-iot-application.zip) | bin | 6406 -> 6406 bytes | |||
| -rw-r--r-- | static/iot-application/snakeviz.png (renamed from assets/iot-application/snakeviz.png) | bin | 59601 -> 59601 bytes | |||
| -rw-r--r-- | static/pid1/boxes.mp4 (renamed from assets/pid1/boxes.mp4) | bin | 443830 -> 443830 bytes | |||
| -rw-r--r-- | static/pid1/qemu.log (renamed from assets/pid1/qemu.log) | 0 | ||||
| -rw-r--r-- | static/pid1/unikernels.png (renamed from assets/pid1/unikernels.png) | bin | 48567 -> 48567 bytes | |||
| -rw-r--r-- | static/pid1/unikernels.svg | 128 | ||||
| -rw-r--r-- | static/profile-bind-error/error.jpg (renamed from assets/profile-bind-error/error.jpg) | bin | 57047 -> 57047 bytes | |||
| -rw-r--r-- | static/python-profiling/kcachegrind.png (renamed from assets/python-profiling/kcachegrind.png) | bin | 88486 -> 88486 bytes | |||
| -rw-r--r-- | static/python-profiling/profiling-viewer.png (renamed from assets/python-profiling/profiling-viewer.png) | bin | 173672 -> 173672 bytes | |||
| -rw-r--r-- | static/python-profiling/snakeviz.png (renamed from assets/python-profiling/snakeviz.png) | bin | 59601 -> 59601 bytes | |||
| -rw-r--r-- | static/sentiment-analysis/.ipynb_checkpoints/TF Test-checkpoint.ipynb (renamed from assets/sentiment-analysis/.ipynb_checkpoints/TF Test-checkpoint.ipynb) | 0 | ||||
| -rw-r--r-- | static/sentiment-analysis/.ipynb_checkpoints/sentiment-analysis-checkpoint.ipynb (renamed from assets/sentiment-analysis/.ipynb_checkpoints/sentiment-analysis-checkpoint.ipynb) | 0 | ||||
| -rw-r--r-- | static/sentiment-analysis/guardian-sa-title-desc-relationship.png (renamed from assets/sentiment-analysis/guardian-sa-title-desc-relationship.png) | bin | 15404 -> 15404 bytes | |||
| -rw-r--r-- | static/sentiment-analysis/sentiment-analysis.ipynb (renamed from assets/sentiment-analysis/sentiment-analysis.ipynb) | 0 | ||||
| -rw-r--r-- | static/simple-pubsub-server/caniuse.png (renamed from assets/simple-pubsub-server/caniuse.png) | bin | 56379 -> 56379 bytes | |||
| -rw-r--r-- | static/simple-pubsub-server/chrome-debugging.png (renamed from assets/simple-pubsub-server/chrome-debugging.png) | bin | 151160 -> 151160 bytes | |||
| -rw-r--r-- | static/simple-pubsub-server/clients.mp4 (renamed from assets/simple-pubsub-server/clients.mp4) | bin | 692780 -> 692780 bytes | |||
| -rw-r--r-- | static/simple-pubsub-server/pubsub-overview.png (renamed from assets/simple-pubsub-server/pubsub-overview.png) | bin | 18471 -> 18471 bytes | |||
| -rw-r--r-- | static/simple-pubsub-server/sse-pubsub-server.zip (renamed from assets/simple-pubsub-server/sse-pubsub-server.zip) | bin | 4158 -> 4158 bytes | |||
| -rw-r--r-- | static/wap/emulator.mp4 (renamed from assets/wap/emulator.mp4) | bin | 892887 -> 892887 bytes | |||
| -rw-r--r-- | static/wap/phones.gif (renamed from assets/wap/phones.gif) | bin | 348891 -> 348891 bytes | |||
| -rw-r--r-- | static/world-clock/enclosure.stl (renamed from assets/world-clock/enclosure.stl) | bin | 1884 -> 1884 bytes | |||
| -rw-r--r-- | static/world-clock/hardware.jpg (renamed from assets/world-clock/hardware.jpg) | bin | 82279 -> 82279 bytes | |||
| -rw-r--r-- | static/world-clock/world-clock.jpg (renamed from assets/world-clock/world-clock.jpg) | bin | 148673 -> 148673 bytes | |||
| -rw-r--r-- | static/yapyap/hello.png (renamed from assets/yapyap/hello.png) | bin | 25962 -> 25962 bytes | |||
| -rw-r--r-- | static/yapyap/pid1.jpg (renamed from assets/yapyap/pid1.jpg) | bin | 394011 -> 394011 bytes | |||
| -rwxr-xr-x | template/_footer.html | 7 | ||||
| -rwxr-xr-x | template/_includes.html | 7 | ||||
| -rwxr-xr-x | template/_meta.html | 16 | ||||
| -rwxr-xr-x | template/_navigation.html | 18 | ||||
| -rw-r--r-- | template/favicon.ico | bin | 4286 -> 0 bytes | |||
| -rwxr-xr-x | template/index.html | 62 | ||||
| -rw-r--r-- | template/openring.tmpl | 34 | ||||
| -rwxr-xr-x | template/post.html | 76 | ||||
| -rw-r--r-- | template/robots.txt | 2 | ||||
| -rwxr-xr-x | template/script.js | 11 | ||||
| -rwxr-xr-x | template/style.css | 436 | ||||
| -rwxr-xr-x | template/tag.html | 61 | ||||
| -rw-r--r-- | themes/.gitkeep | 0 | ||||
| -rw-r--r-- | themes/simple/LICENSE | 20 | ||||
| -rw-r--r-- | themes/simple/archetypes/default.md | 2 | ||||
| -rw-r--r-- | themes/simple/layouts/404.html | 0 | ||||
| -rw-r--r-- | themes/simple/layouts/_default/baseof.html | 11 | ||||
| -rw-r--r-- | themes/simple/layouts/_default/list.html | 32 | ||||
| -rw-r--r-- | themes/simple/layouts/_default/rss.xml | 27 | ||||
| -rw-r--r-- | themes/simple/layouts/_default/single.html | 46 | ||||
| -rw-r--r-- | themes/simple/layouts/partials/footer.html (renamed from template/_libraries.html) | 13 | ||||
| -rw-r--r-- | themes/simple/layouts/partials/head.html | 175 | ||||
| -rw-r--r-- | themes/simple/layouts/partials/header.html | 18 | ||||
| -rw-r--r-- | themes/simple/static/css/.gitkeep | 0 | ||||
| -rw-r--r-- | themes/simple/static/js/.gitkeep | 0 | ||||
| -rw-r--r-- | themes/simple/theme.toml | 16 | ||||
| -rw-r--r-- | tools/dither-images.sh | 6 |
168 files changed, 836 insertions, 2009 deletions
diff --git a/.editorconfig b/.editorconfig index eebf0a8..50fbc96 100644 --- a/.editorconfig +++ b/.editorconfig | |||
| @@ -1,8 +1,12 @@ | |||
| 1 | # EditorConfig is awesome: https://EditorConfig.org | ||
| 2 | |||
| 3 | # top-most EditorConfig file | ||
| 1 | root = true | 4 | root = true |
| 2 | 5 | ||
| 3 | [*] | 6 | [*] |
| 4 | indent_style = space | 7 | indent_style = space |
| 5 | indent_size = 2 | 8 | indent_size = 2 |
| 9 | end_of_line = lf | ||
| 6 | charset = utf-8 | 10 | charset = utf-8 |
| 7 | trim_trailing_whitespace = true | 11 | trim_trailing_whitespace = true |
| 8 | insert_final_newline = true | 12 | insert_final_newline = true |
| @@ -1,9 +1,13 @@ | |||
| 1 | node_modules/ | 1 | # Generated files by hugo |
| 2 | tmp/ | 2 | /public/ |
| 3 | package-lock.json | 3 | /resources/_gen/ |
| 4 | openring-build.html | 4 | /assets/jsconfig.json |
| 5 | .firebase/ | 5 | hugo_stats.json |
| 6 | public/ | 6 | |
| 7 | .DS_Store | 7 | # Executable may be added to repository |
| 8 | .log | 8 | hugo.exe |
| 9 | sandbox/ | 9 | hugo.darwin |
| 10 | hugo.linux | ||
| 11 | |||
| 12 | # Temporary lock file while building | ||
| 13 | /.hugo_build.lock | ||
diff --git a/.vscode/settings.json b/.vscode/settings.json index 739b975..d658e7f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json | |||
| @@ -1,4 +1,8 @@ | |||
| 1 | { | 1 | { |
| 2 | "editor.formatOnPaste": true, | 2 | "editor.formatOnPaste": true, |
| 3 | "editor.formatOnSave": true | 3 | "editor.formatOnSave": true, |
| 4 | "[xml]": { | ||
| 5 | "editor.formatOnSave": false, | ||
| 6 | "editor.formatOnPaste": false | ||
| 7 | } | ||
| 4 | } | 8 | } |
| @@ -1,40 +1,7 @@ | |||
| 1 | MAKEFLAGS := --jobs=2 | 1 | dev: |
| 2 | hugo server | ||
| 2 | 3 | ||
| 3 | provision: | 4 | deploy: |
| 4 | cd ~/Junk \ | 5 | hugo |
| 5 | git clone https://git.sr.ht/~sircmpwn/openring \ | ||
| 6 | cd openring \ | ||
| 7 | go build \ | ||
| 8 | go install | ||
| 9 | |||
| 10 | dither: | ||
| 11 | bash tools/dither-images.sh | ||
| 12 | |||
| 13 | openring: | ||
| 14 | mkdir -p public | ||
| 15 | openring -l 165 -n 5 -p 1 \ | ||
| 16 | -s https://drewdevault.com/feed.xml \ | ||
| 17 | -s https://danluu.com/atom.xml \ | ||
| 18 | -s https://serokell.io/blog.rss.xml \ | ||
| 19 | -s https://cronokirby.com/posts/index.xml \ | ||
| 20 | -s https://www.jeffgeerling.com/blog.xml \ | ||
| 21 | < template/openring.tmpl \ | ||
| 22 | > template/openring-build.html | ||
| 23 | |||
| 24 | dev: alternator server | ||
| 25 | |||
| 26 | alternator: openring | ||
| 27 | mkdir -p public | ||
| 28 | alternator --watch | ||
| 29 | |||
| 30 | build: openring | ||
| 31 | mkdir -p public | ||
| 32 | alternator --build | ||
| 33 | rm template/openring-build.html | ||
| 34 | |||
| 35 | server: | ||
| 36 | python3 -m http.server 8000 --directory public | ||
| 37 | |||
| 38 | deploy: build | ||
| 39 | rsync -a --delete public/ root@165.22.87.180:/var/www/html/mitjafelicijan.com/ | 6 | rsync -a --delete public/ root@165.22.87.180:/var/www/html/mitjafelicijan.com/ |
| 40 | ssh root@165.22.87.180 chown www-data:www-data /var/www/html/mitjafelicijan.com/ -Rf | 7 | ssh root@165.22.87.180 chown www-data:www-data /var/www/html/mitjafelicijan.com/ -Rf |
diff --git a/archetypes/.gitkeep b/archetypes/.gitkeep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/archetypes/.gitkeep | |||
diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..00e77bd --- /dev/null +++ b/archetypes/default.md | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | --- | ||
| 2 | title: "{{ replace .Name "-" " " | title }}" | ||
| 3 | date: {{ .Date }} | ||
| 4 | draft: true | ||
| 5 | --- | ||
| 6 | |||
diff --git a/assets/dfd-rice/layout.svg b/assets/dfd-rice/layout.svg deleted file mode 100644 index 880cab3..0000000 --- a/assets/dfd-rice/layout.svg +++ /dev/null | |||
| @@ -1,132 +0,0 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| 2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||
| 3 | |||
| 4 | <svg | ||
| 5 | width="210mm" | ||
| 6 | height="297mm" | ||
| 7 | viewBox="0 0 210 297" | ||
| 8 | version="1.1" | ||
| 9 | id="svg5" | ||
| 10 | inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)" | ||
| 11 | sodipodi:docname="layout.svg" | ||
| 12 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
| 13 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
| 14 | xmlns="http://www.w3.org/2000/svg" | ||
| 15 | xmlns:svg="http://www.w3.org/2000/svg"> | ||
| 16 | <sodipodi:namedview | ||
| 17 | id="namedview7" | ||
| 18 | pagecolor="#ffffff" | ||
| 19 | bordercolor="#666666" | ||
| 20 | borderopacity="1.0" | ||
| 21 | inkscape:pageshadow="2" | ||
| 22 | inkscape:pageopacity="0.0" | ||
| 23 | inkscape:pagecheckerboard="0" | ||
| 24 | inkscape:document-units="mm" | ||
| 25 | showgrid="false" | ||
| 26 | inkscape:zoom="0.08" | ||
| 27 | inkscape:cx="1143.75" | ||
| 28 | inkscape:cy="1893.75" | ||
| 29 | inkscape:window-width="2305" | ||
| 30 | inkscape:window-height="752" | ||
| 31 | inkscape:window-x="873" | ||
| 32 | inkscape:window-y="136" | ||
| 33 | inkscape:window-maximized="0" | ||
| 34 | inkscape:current-layer="layer1" /> | ||
| 35 | <defs | ||
| 36 | id="defs2" /> | ||
| 37 | <g | ||
| 38 | inkscape:label="Layer 1" | ||
| 39 | inkscape:groupmode="layer" | ||
| 40 | id="layer1"> | ||
| 41 | <g | ||
| 42 | id="g2012" | ||
| 43 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/dfd-rice/layout.png" | ||
| 44 | inkscape:export-xdpi="6.6072011" | ||
| 45 | inkscape:export-ydpi="6.6072011"> | ||
| 46 | <rect | ||
| 47 | style="fill:#e6e6e6;stroke:#303030;stroke-width:0.447874;stroke-linecap:round;stroke-linejoin:miter;paint-order:stroke fill markers" | ||
| 48 | id="rect1454" | ||
| 49 | width="1360.1339" | ||
| 50 | height="1074.3162" | ||
| 51 | x="-360.50458" | ||
| 52 | y="-265.69751" | ||
| 53 | ry="0" /> | ||
| 54 | <rect | ||
| 55 | style="fill:#e6e6e6;stroke:#303030;stroke-width:0.261189;stroke-linecap:round;stroke-linejoin:miter;paint-order:stroke fill markers" | ||
| 56 | id="rect1456" | ||
| 57 | width="1058.4567" | ||
| 58 | height="469.50305" | ||
| 59 | x="1025.9943" | ||
| 60 | y="-265.79086" | ||
| 61 | ry="0" /> | ||
| 62 | <text | ||
| 63 | xml:space="preserve" | ||
| 64 | style="font-style:normal;font-weight:normal;font-size:51.606px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1.29015" | ||
| 65 | x="1407.4224" | ||
| 66 | y="-12.228849" | ||
| 67 | id="text7667-3"><tspan | ||
| 68 | sodipodi:role="line" | ||
| 69 | id="tspan7665-6" | ||
| 70 | style="font-weight:bold;stroke-width:1.29015;fill:#4d4d4d" | ||
| 71 | x="1407.4224" | ||
| 72 | y="-12.228849">TERMINAL</tspan></text> | ||
| 73 | <rect | ||
| 74 | style="fill:#e6e6e6;stroke:#303030;stroke-width:0.289748;stroke-linecap:round;stroke-linejoin:miter;paint-order:stroke fill markers" | ||
| 75 | id="rect1458" | ||
| 76 | width="1058.4564" | ||
| 77 | height="577.78894" | ||
| 78 | x="1028.7416" | ||
| 79 | y="230.8085" | ||
| 80 | ry="0" /> | ||
| 81 | <rect | ||
| 82 | style="fill:#e6e6e6;stroke:#303030;stroke-width:0.447874;stroke-linecap:round;stroke-linejoin:miter;paint-order:stroke fill markers" | ||
| 83 | id="rect135" | ||
| 84 | width="1360.1339" | ||
| 85 | height="1074.3162" | ||
| 86 | x="-1747.0968" | ||
| 87 | y="-265.69751" | ||
| 88 | ry="0" /> | ||
| 89 | <text | ||
| 90 | xml:space="preserve" | ||
| 91 | style="font-style:normal;font-weight:normal;font-size:51.606px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1.29015" | ||
| 92 | x="-1214.8931" | ||
| 93 | y="290.24585" | ||
| 94 | id="text3280"><tspan | ||
| 95 | sodipodi:role="line" | ||
| 96 | id="tspan3278" | ||
| 97 | style="font-weight:bold;stroke-width:1.29015;fill:#4d4d4d" | ||
| 98 | x="-1214.8931" | ||
| 99 | y="290.24585">BROWSER</tspan></text> | ||
| 100 | <rect | ||
| 101 | style="fill:none;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" | ||
| 102 | id="rect31" | ||
| 103 | width="3834.2903" | ||
| 104 | height="1074.2903" | ||
| 105 | x="-1747.0922" | ||
| 106 | y="-265.69287" | ||
| 107 | ry="0" /> | ||
| 108 | <text | ||
| 109 | xml:space="preserve" | ||
| 110 | style="font-style:normal;font-weight:normal;font-size:51.606px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1.29015" | ||
| 111 | x="121.84438" | ||
| 112 | y="290.24585" | ||
| 113 | id="text7667"><tspan | ||
| 114 | sodipodi:role="line" | ||
| 115 | id="tspan7665" | ||
| 116 | style="font-weight:bold;stroke-width:1.29015;fill:#4d4d4d" | ||
| 117 | x="121.84438" | ||
| 118 | y="290.24585">CODE EDITOR</tspan></text> | ||
| 119 | <text | ||
| 120 | xml:space="preserve" | ||
| 121 | style="font-style:normal;font-weight:normal;font-size:51.606px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1.29015" | ||
| 122 | x="1410.1696" | ||
| 123 | y="538.51349" | ||
| 124 | id="text12264"><tspan | ||
| 125 | sodipodi:role="line" | ||
| 126 | id="tspan12262" | ||
| 127 | style="font-weight:bold;stroke-width:1.29015;fill:#4d4d4d" | ||
| 128 | x="1410.1696" | ||
| 129 | y="538.51349">TERMINAL</tspan></text> | ||
| 130 | </g> | ||
| 131 | </g> | ||
| 132 | </svg> | ||
diff --git a/assets/pid1/unikernels.svg b/assets/pid1/unikernels.svg deleted file mode 100644 index 77d1547..0000000 --- a/assets/pid1/unikernels.svg +++ /dev/null | |||
| @@ -1,578 +0,0 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| 2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||
| 3 | |||
| 4 | <svg | ||
| 5 | width="210mm" | ||
| 6 | height="297mm" | ||
| 7 | viewBox="0 0 210 297" | ||
| 8 | version="1.1" | ||
| 9 | id="svg5" | ||
| 10 | inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)" | ||
| 11 | sodipodi:docname="unikernels.svg" | ||
| 12 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/pid1/unikernels.png" | ||
| 13 | inkscape:export-xdpi="127.98862" | ||
| 14 | inkscape:export-ydpi="127.98862" | ||
| 15 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
| 16 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
| 17 | xmlns="http://www.w3.org/2000/svg" | ||
| 18 | xmlns:svg="http://www.w3.org/2000/svg"> | ||
| 19 | <sodipodi:namedview | ||
| 20 | id="namedview7" | ||
| 21 | pagecolor="#ffffff" | ||
| 22 | bordercolor="#666666" | ||
| 23 | borderopacity="1.0" | ||
| 24 | inkscape:pageshadow="2" | ||
| 25 | inkscape:pageopacity="0.0" | ||
| 26 | inkscape:pagecheckerboard="0" | ||
| 27 | inkscape:document-units="mm" | ||
| 28 | showgrid="false" | ||
| 29 | inkscape:zoom="1.4948513" | ||
| 30 | inkscape:cx="431.48104" | ||
| 31 | inkscape:cy="473.6257" | ||
| 32 | inkscape:window-width="1887" | ||
| 33 | inkscape:window-height="913" | ||
| 34 | inkscape:window-x="1859" | ||
| 35 | inkscape:window-y="48" | ||
| 36 | inkscape:window-maximized="0" | ||
| 37 | inkscape:current-layer="layer1" | ||
| 38 | showguides="true" | ||
| 39 | inkscape:guide-bbox="true" /> | ||
| 40 | <defs | ||
| 41 | id="defs2" /> | ||
| 42 | <g | ||
| 43 | inkscape:label="Layer 1" | ||
| 44 | inkscape:groupmode="layer" | ||
| 45 | id="layer1"> | ||
| 46 | <g | ||
| 47 | id="g98495" | ||
| 48 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/pid1/unikernels.png" | ||
| 49 | inkscape:export-xdpi="127.98862" | ||
| 50 | inkscape:export-ydpi="127.98862"> | ||
| 51 | <rect | ||
| 52 | style="fill:#ececec;stroke:none;stroke-width:0.318966;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
| 53 | id="rect18248" | ||
| 54 | width="65.511665" | ||
| 55 | height="75.571449" | ||
| 56 | x="5.6951494" | ||
| 57 | y="75.506912" | ||
| 58 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/pid1/unikernels.png" | ||
| 59 | inkscape:export-xdpi="127.98862" | ||
| 60 | inkscape:export-ydpi="127.98862" /> | ||
| 61 | <rect | ||
| 62 | style="fill:#ececec;stroke:none;stroke-width:0.318966;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
| 63 | id="rect18418" | ||
| 64 | width="65.511665" | ||
| 65 | height="75.571449" | ||
| 66 | x="72.166878" | ||
| 67 | y="75.506912" | ||
| 68 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/pid1/unikernels.png" | ||
| 69 | inkscape:export-xdpi="127.98862" | ||
| 70 | inkscape:export-ydpi="127.98862" /> | ||
| 71 | <rect | ||
| 72 | style="fill:#ececec;stroke:none;stroke-width:0.318966;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
| 73 | id="rect18420" | ||
| 74 | width="65.511665" | ||
| 75 | height="75.571449" | ||
| 76 | x="138.63863" | ||
| 77 | y="75.506912" | ||
| 78 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/pid1/unikernels.png" | ||
| 79 | inkscape:export-xdpi="127.98862" | ||
| 80 | inkscape:export-ydpi="127.98862" /> | ||
| 81 | <text | ||
| 82 | xml:space="preserve" | ||
| 83 | style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:2.82222px;line-height:1.25;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Heavy';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 84 | x="25.735832" | ||
| 85 | y="144.60236" | ||
| 86 | id="text18439" | ||
| 87 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/pid1/unikernels.png" | ||
| 88 | inkscape:export-xdpi="127.98862" | ||
| 89 | inkscape:export-ydpi="127.98862"><tspan | ||
| 90 | sodipodi:role="line" | ||
| 91 | id="tspan18437" | ||
| 92 | style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:2.82222px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Ultra-Bold';fill:#000000;stroke-width:0.264583" | ||
| 93 | x="25.735832" | ||
| 94 | y="144.60236">VIRTUAL MACHINE</tspan></text> | ||
| 95 | <g | ||
| 96 | id="g50691" | ||
| 97 | transform="translate(0,-101.60001)" | ||
| 98 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/pid1/unikernels.png" | ||
| 99 | inkscape:export-xdpi="127.98862" | ||
| 100 | inkscape:export-ydpi="127.98862"> | ||
| 101 | <rect | ||
| 102 | style="fill:#f9f9f9;stroke:none;stroke-width:0.429153;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
| 103 | id="rect38097-3" | ||
| 104 | width="50.57568" | ||
| 105 | height="8.4333" | ||
| 106 | x="13.294504" | ||
| 107 | y="213.63496" | ||
| 108 | ry="1.5" /> | ||
| 109 | <text | ||
| 110 | xml:space="preserve" | ||
| 111 | style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:2.46944px;line-height:1.25;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Heavy';fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 112 | x="24.263063" | ||
| 113 | y="218.54855" | ||
| 114 | id="text32261"><tspan | ||
| 115 | sodipodi:role="line" | ||
| 116 | id="tspan32259" | ||
| 117 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.46944px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';fill:#4d4d4d;stroke-width:0.264583" | ||
| 118 | x="24.263063" | ||
| 119 | y="218.54855">HOST OS / HYPERVISOR</tspan></text> | ||
| 120 | </g> | ||
| 121 | <rect | ||
| 122 | style="fill:#f9f9f9;stroke:none;stroke-width:0.499999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
| 123 | id="rect38097" | ||
| 124 | width="22.000685" | ||
| 125 | height="26.315866" | ||
| 126 | x="13.294504" | ||
| 127 | y="184.14406" | ||
| 128 | ry="1.5" | ||
| 129 | transform="translate(0,-102.12917)" /> | ||
| 130 | <text | ||
| 131 | xml:space="preserve" | ||
| 132 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 133 | x="24.336025" | ||
| 134 | y="204.21999" | ||
| 135 | id="text38435" | ||
| 136 | transform="translate(0,-102.12917)"><tspan | ||
| 137 | sodipodi:role="line" | ||
| 138 | id="tspan38433" | ||
| 139 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 140 | x="24.336025" | ||
| 141 | y="204.48907">VIRTUAL</tspan><tspan | ||
| 142 | sodipodi:role="line" | ||
| 143 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 144 | x="24.336025" | ||
| 145 | y="206.28824" | ||
| 146 | id="tspan38945">MACHINE</tspan></text> | ||
| 147 | <text | ||
| 148 | xml:space="preserve" | ||
| 149 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 150 | x="24.336025" | ||
| 151 | y="198.19913" | ||
| 152 | id="text41165" | ||
| 153 | transform="translate(0,-102.12917)"><tspan | ||
| 154 | sodipodi:role="line" | ||
| 155 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 156 | x="24.336025" | ||
| 157 | y="198.19913" | ||
| 158 | id="tspan41163">GUEST OS</tspan></text> | ||
| 159 | <text | ||
| 160 | xml:space="preserve" | ||
| 161 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 162 | x="24.336025" | ||
| 163 | y="189.40337" | ||
| 164 | id="text42587" | ||
| 165 | transform="translate(0,-102.12917)"><tspan | ||
| 166 | sodipodi:role="line" | ||
| 167 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 168 | x="24.336025" | ||
| 169 | y="189.67245" | ||
| 170 | id="tspan42585">TARGET</tspan><tspan | ||
| 171 | sodipodi:role="line" | ||
| 172 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 173 | x="24.336025" | ||
| 174 | y="191.47162" | ||
| 175 | id="tspan42611">SOFTWARE</tspan></text> | ||
| 176 | <g | ||
| 177 | id="g50696" | ||
| 178 | transform="translate(0,-99.483339)" | ||
| 179 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/pid1/unikernels.png" | ||
| 180 | inkscape:export-xdpi="127.98862" | ||
| 181 | inkscape:export-ydpi="127.98862"> | ||
| 182 | <rect | ||
| 183 | style="fill:#f9f9f9;stroke:none;stroke-width:0.429153;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
| 184 | id="rect48544" | ||
| 185 | width="50.57568" | ||
| 186 | height="8.4333" | ||
| 187 | x="13.294504" | ||
| 188 | y="223.15991" | ||
| 189 | ry="1.5" /> | ||
| 190 | <text | ||
| 191 | xml:space="preserve" | ||
| 192 | style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:2.46944px;line-height:1.25;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Heavy';fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 193 | x="31.535746" | ||
| 194 | y="228.24654" | ||
| 195 | id="text47169"><tspan | ||
| 196 | sodipodi:role="line" | ||
| 197 | id="tspan47167" | ||
| 198 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.46944px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';fill:#4d4d4d;stroke-width:0.264583" | ||
| 199 | x="31.535746" | ||
| 200 | y="228.24654">HARDWARE</tspan></text> | ||
| 201 | </g> | ||
| 202 | <g | ||
| 203 | id="g48202" | ||
| 204 | transform="translate(28.574999,-102.12917)" | ||
| 205 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/pid1/unikernels.png" | ||
| 206 | inkscape:export-xdpi="127.98862" | ||
| 207 | inkscape:export-ydpi="127.98862"> | ||
| 208 | <rect | ||
| 209 | style="fill:#f9f9f9;stroke:none;stroke-width:0.499999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
| 210 | id="rect48184" | ||
| 211 | width="22.000685" | ||
| 212 | height="26.315866" | ||
| 213 | x="13.294504" | ||
| 214 | y="184.14406" | ||
| 215 | ry="1.5" /> | ||
| 216 | <text | ||
| 217 | xml:space="preserve" | ||
| 218 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 219 | x="24.336025" | ||
| 220 | y="204.21999" | ||
| 221 | id="text48190"><tspan | ||
| 222 | sodipodi:role="line" | ||
| 223 | id="tspan48186" | ||
| 224 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 225 | x="24.336025" | ||
| 226 | y="204.48907">VIRTUAL</tspan><tspan | ||
| 227 | sodipodi:role="line" | ||
| 228 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 229 | x="24.336025" | ||
| 230 | y="206.28824" | ||
| 231 | id="tspan48188">MACHINE</tspan></text> | ||
| 232 | <text | ||
| 233 | xml:space="preserve" | ||
| 234 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 235 | x="24.336025" | ||
| 236 | y="198.19913" | ||
| 237 | id="text48194"><tspan | ||
| 238 | sodipodi:role="line" | ||
| 239 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 240 | x="24.336025" | ||
| 241 | y="198.19913" | ||
| 242 | id="tspan48192">GUEST OS</tspan></text> | ||
| 243 | <text | ||
| 244 | xml:space="preserve" | ||
| 245 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 246 | x="24.336025" | ||
| 247 | y="189.40337" | ||
| 248 | id="text48200"><tspan | ||
| 249 | sodipodi:role="line" | ||
| 250 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 251 | x="24.336025" | ||
| 252 | y="189.67245" | ||
| 253 | id="tspan48196">TARGET</tspan><tspan | ||
| 254 | sodipodi:role="line" | ||
| 255 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 256 | x="24.336025" | ||
| 257 | y="191.47162" | ||
| 258 | id="tspan48198">SOFTWARE</tspan></text> | ||
| 259 | </g> | ||
| 260 | <text | ||
| 261 | xml:space="preserve" | ||
| 262 | style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:2.82222px;line-height:1.25;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Heavy';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 263 | x="95.948242" | ||
| 264 | y="144.60236" | ||
| 265 | id="text51110" | ||
| 266 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/pid1/unikernels.png" | ||
| 267 | inkscape:export-xdpi="127.98862" | ||
| 268 | inkscape:export-ydpi="127.98862"><tspan | ||
| 269 | sodipodi:role="line" | ||
| 270 | id="tspan51108" | ||
| 271 | style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:2.82222px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Ultra-Bold';fill:#000000;stroke-width:0.264583" | ||
| 272 | x="95.948242" | ||
| 273 | y="144.60236">CONTAINERS</tspan></text> | ||
| 274 | <g | ||
| 275 | id="g51118" | ||
| 276 | transform="translate(66.675002,-101.60001)" | ||
| 277 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/pid1/unikernels.png" | ||
| 278 | inkscape:export-xdpi="127.98862" | ||
| 279 | inkscape:export-ydpi="127.98862"> | ||
| 280 | <rect | ||
| 281 | style="fill:#f9f9f9;stroke:none;stroke-width:0.429153;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
| 282 | id="rect51112" | ||
| 283 | width="50.57568" | ||
| 284 | height="8.4333" | ||
| 285 | x="13.294504" | ||
| 286 | y="213.63496" | ||
| 287 | ry="1.5" /> | ||
| 288 | <text | ||
| 289 | xml:space="preserve" | ||
| 290 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.46944px;line-height:1.25;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 291 | x="33.144272" | ||
| 292 | y="218.54855" | ||
| 293 | id="text51116"><tspan | ||
| 294 | sodipodi:role="line" | ||
| 295 | id="tspan51114" | ||
| 296 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.46944px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';fill:#4d4d4d;stroke-width:0.264583" | ||
| 297 | x="33.144272" | ||
| 298 | y="218.54855">HOST OS</tspan></text> | ||
| 299 | </g> | ||
| 300 | <g | ||
| 301 | id="g51138" | ||
| 302 | transform="translate(66.675002,-102.12917)" | ||
| 303 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/pid1/unikernels.png" | ||
| 304 | inkscape:export-xdpi="127.98862" | ||
| 305 | inkscape:export-ydpi="127.98862"> | ||
| 306 | <rect | ||
| 307 | style="fill:#f9f9f9;stroke:none;stroke-width:0.499999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
| 308 | id="rect51120" | ||
| 309 | width="22.000685" | ||
| 310 | height="26.315866" | ||
| 311 | x="13.294504" | ||
| 312 | y="184.14406" | ||
| 313 | ry="1.5" /> | ||
| 314 | <text | ||
| 315 | xml:space="preserve" | ||
| 316 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 317 | x="24.336025" | ||
| 318 | y="206.33662" | ||
| 319 | id="text51126"><tspan | ||
| 320 | sodipodi:role="line" | ||
| 321 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 322 | x="24.336025" | ||
| 323 | y="206.33662" | ||
| 324 | id="tspan51124">CONTAINER</tspan></text> | ||
| 325 | <text | ||
| 326 | xml:space="preserve" | ||
| 327 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 328 | x="24.336025" | ||
| 329 | y="198.19913" | ||
| 330 | id="text51130"><tspan | ||
| 331 | sodipodi:role="line" | ||
| 332 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 333 | x="24.336025" | ||
| 334 | y="198.46822" | ||
| 335 | id="tspan51128">PROGRAMS &</tspan><tspan | ||
| 336 | sodipodi:role="line" | ||
| 337 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 338 | x="24.336025" | ||
| 339 | y="200.26738" | ||
| 340 | id="tspan56912">LIBRARIES</tspan></text> | ||
| 341 | <text | ||
| 342 | xml:space="preserve" | ||
| 343 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 344 | x="24.336025" | ||
| 345 | y="189.40337" | ||
| 346 | id="text51136"><tspan | ||
| 347 | sodipodi:role="line" | ||
| 348 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 349 | x="24.336025" | ||
| 350 | y="189.67245" | ||
| 351 | id="tspan51132">TARGET</tspan><tspan | ||
| 352 | sodipodi:role="line" | ||
| 353 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 354 | x="24.336025" | ||
| 355 | y="191.47162" | ||
| 356 | id="tspan51134">SOFTWARE</tspan></text> | ||
| 357 | </g> | ||
| 358 | <g | ||
| 359 | id="g51146" | ||
| 360 | transform="translate(66.675002,-99.483339)" | ||
| 361 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/pid1/unikernels.png" | ||
| 362 | inkscape:export-xdpi="127.98862" | ||
| 363 | inkscape:export-ydpi="127.98862"> | ||
| 364 | <rect | ||
| 365 | style="fill:#f9f9f9;stroke:none;stroke-width:0.429153;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
| 366 | id="rect51140" | ||
| 367 | width="50.57568" | ||
| 368 | height="8.4333" | ||
| 369 | x="13.294504" | ||
| 370 | y="223.15991" | ||
| 371 | ry="1.5" /> | ||
| 372 | <text | ||
| 373 | xml:space="preserve" | ||
| 374 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.46944px;line-height:1.25;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 375 | x="31.535746" | ||
| 376 | y="228.24654" | ||
| 377 | id="text51144"><tspan | ||
| 378 | sodipodi:role="line" | ||
| 379 | id="tspan51142" | ||
| 380 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.46944px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';fill:#4d4d4d;stroke-width:0.264583" | ||
| 381 | x="31.535746" | ||
| 382 | y="228.24654">HARDWARE</tspan></text> | ||
| 383 | </g> | ||
| 384 | <g | ||
| 385 | id="g51166" | ||
| 386 | transform="translate(95.250005,-102.12917)" | ||
| 387 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/pid1/unikernels.png" | ||
| 388 | inkscape:export-xdpi="127.98862" | ||
| 389 | inkscape:export-ydpi="127.98862"> | ||
| 390 | <rect | ||
| 391 | style="fill:#f9f9f9;stroke:none;stroke-width:0.499999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
| 392 | id="rect51148" | ||
| 393 | width="22.000685" | ||
| 394 | height="26.315866" | ||
| 395 | x="13.294504" | ||
| 396 | y="184.14406" | ||
| 397 | ry="1.5" /> | ||
| 398 | <text | ||
| 399 | xml:space="preserve" | ||
| 400 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 401 | x="24.336025" | ||
| 402 | y="206.33662" | ||
| 403 | id="text51154"><tspan | ||
| 404 | sodipodi:role="line" | ||
| 405 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 406 | x="24.336025" | ||
| 407 | y="206.33662" | ||
| 408 | id="tspan51152">CONTAINER</tspan></text> | ||
| 409 | <text | ||
| 410 | xml:space="preserve" | ||
| 411 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 412 | x="24.336025" | ||
| 413 | y="198.19913" | ||
| 414 | id="text51158"><tspan | ||
| 415 | sodipodi:role="line" | ||
| 416 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 417 | x="24.336025" | ||
| 418 | y="198.46822" | ||
| 419 | id="tspan51156">PROGRAMS &</tspan><tspan | ||
| 420 | sodipodi:role="line" | ||
| 421 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 422 | x="24.336025" | ||
| 423 | y="200.26738" | ||
| 424 | id="tspan64780">LIBRARIES</tspan></text> | ||
| 425 | <text | ||
| 426 | xml:space="preserve" | ||
| 427 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 428 | x="24.336025" | ||
| 429 | y="189.40337" | ||
| 430 | id="text51164"><tspan | ||
| 431 | sodipodi:role="line" | ||
| 432 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 433 | x="24.336025" | ||
| 434 | y="189.67245" | ||
| 435 | id="tspan51160">TARGET</tspan><tspan | ||
| 436 | sodipodi:role="line" | ||
| 437 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 438 | x="24.336025" | ||
| 439 | y="191.47162" | ||
| 440 | id="tspan51162">SOFTWARE</tspan></text> | ||
| 441 | </g> | ||
| 442 | <text | ||
| 443 | xml:space="preserve" | ||
| 444 | style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:2.82222px;line-height:1.25;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Heavy';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 445 | x="162.66873" | ||
| 446 | y="144.60236" | ||
| 447 | id="text74212" | ||
| 448 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/pid1/unikernels.png" | ||
| 449 | inkscape:export-xdpi="127.98862" | ||
| 450 | inkscape:export-ydpi="127.98862"><tspan | ||
| 451 | sodipodi:role="line" | ||
| 452 | id="tspan74210" | ||
| 453 | style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:2.82222px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Ultra-Bold';fill:#000000;stroke-width:0.264583" | ||
| 454 | x="162.66873" | ||
| 455 | y="144.60236">UNIKERNELS</tspan></text> | ||
| 456 | <g | ||
| 457 | id="g74220" | ||
| 458 | transform="translate(132.82087,-101.60001)" | ||
| 459 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/pid1/unikernels.png" | ||
| 460 | inkscape:export-xdpi="127.98862" | ||
| 461 | inkscape:export-ydpi="127.98862"> | ||
| 462 | <rect | ||
| 463 | style="fill:#f9f9f9;stroke:none;stroke-width:0.429153;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
| 464 | id="rect74214" | ||
| 465 | width="50.57568" | ||
| 466 | height="8.4333" | ||
| 467 | x="13.294504" | ||
| 468 | y="213.63496" | ||
| 469 | ry="1.5" /> | ||
| 470 | <text | ||
| 471 | xml:space="preserve" | ||
| 472 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.46944px;line-height:1.25;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 473 | x="30.66217" | ||
| 474 | y="218.54855" | ||
| 475 | id="text74218"><tspan | ||
| 476 | sodipodi:role="line" | ||
| 477 | id="tspan74216" | ||
| 478 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.46944px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';fill:#4d4d4d;stroke-width:0.264583" | ||
| 479 | x="30.66217" | ||
| 480 | y="218.54855">HYPERVISOR</tspan></text> | ||
| 481 | </g> | ||
| 482 | <g | ||
| 483 | id="g74240" | ||
| 484 | transform="translate(132.82087,-102.12917)" | ||
| 485 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/pid1/unikernels.png" | ||
| 486 | inkscape:export-xdpi="127.98862" | ||
| 487 | inkscape:export-ydpi="127.98862"> | ||
| 488 | <rect | ||
| 489 | style="fill:#f9f9f9;stroke:none;stroke-width:0.377825;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
| 490 | id="rect74222" | ||
| 491 | width="22.000685" | ||
| 492 | height="15.026576" | ||
| 493 | x="13.294504" | ||
| 494 | y="195.43335" | ||
| 495 | ry="0.85651237" /> | ||
| 496 | <text | ||
| 497 | xml:space="preserve" | ||
| 498 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 499 | x="24.336025" | ||
| 500 | y="202.66647" | ||
| 501 | id="text74232"><tspan | ||
| 502 | sodipodi:role="line" | ||
| 503 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 504 | x="24.336025" | ||
| 505 | y="202.93556" | ||
| 506 | id="tspan74228">UNIKERNEL &</tspan><tspan | ||
| 507 | sodipodi:role="line" | ||
| 508 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 509 | x="24.336025" | ||
| 510 | y="204.73473" | ||
| 511 | id="tspan74230">APPLICATION</tspan></text> | ||
| 512 | </g> | ||
| 513 | <g | ||
| 514 | id="g74248" | ||
| 515 | transform="translate(132.82087,-99.483339)" | ||
| 516 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/pid1/unikernels.png" | ||
| 517 | inkscape:export-xdpi="127.98862" | ||
| 518 | inkscape:export-ydpi="127.98862"> | ||
| 519 | <rect | ||
| 520 | style="fill:#f9f9f9;stroke:none;stroke-width:0.429153;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
| 521 | id="rect74242" | ||
| 522 | width="50.57568" | ||
| 523 | height="8.4333" | ||
| 524 | x="13.294504" | ||
| 525 | y="223.15991" | ||
| 526 | ry="1.5" /> | ||
| 527 | <text | ||
| 528 | xml:space="preserve" | ||
| 529 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.46944px;line-height:1.25;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 530 | x="31.535746" | ||
| 531 | y="228.24654" | ||
| 532 | id="text74246"><tspan | ||
| 533 | sodipodi:role="line" | ||
| 534 | id="tspan74244" | ||
| 535 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.46944px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';fill:#4d4d4d;stroke-width:0.264583" | ||
| 536 | x="31.535746" | ||
| 537 | y="228.24654">HARDWARE</tspan></text> | ||
| 538 | </g> | ||
| 539 | <g | ||
| 540 | id="g85408" | ||
| 541 | transform="translate(161.34783,-102.25244)" | ||
| 542 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/pid1/unikernels.png" | ||
| 543 | inkscape:export-xdpi="127.98862" | ||
| 544 | inkscape:export-ydpi="127.98862"> | ||
| 545 | <rect | ||
| 546 | style="fill:#f9f9f9;stroke:none;stroke-width:0.377825;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||
| 547 | id="rect85400" | ||
| 548 | width="22.000685" | ||
| 549 | height="15.026576" | ||
| 550 | x="13.294504" | ||
| 551 | y="195.43335" | ||
| 552 | ry="0.85651237" /> | ||
| 553 | <text | ||
| 554 | xml:space="preserve" | ||
| 555 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" | ||
| 556 | x="24.336025" | ||
| 557 | y="202.66647" | ||
| 558 | id="text85406"><tspan | ||
| 559 | sodipodi:role="line" | ||
| 560 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 561 | x="24.336025" | ||
| 562 | y="202.93556" | ||
| 563 | id="tspan85402">UNIKERNEL &</tspan><tspan | ||
| 564 | sodipodi:role="line" | ||
| 565 | style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" | ||
| 566 | x="24.336025" | ||
| 567 | y="204.73473" | ||
| 568 | id="tspan85404">APPLICATION</tspan></text> | ||
| 569 | </g> | ||
| 570 | </g> | ||
| 571 | <g | ||
| 572 | id="g48182" | ||
| 573 | transform="translate(0,-102.12917)" | ||
| 574 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/pid1/unikernels.png" | ||
| 575 | inkscape:export-xdpi="127.98862" | ||
| 576 | inkscape:export-ydpi="127.98862" /> | ||
| 577 | </g> | ||
| 578 | </svg> | ||
diff --git a/config.ini b/config.ini deleted file mode 100755 index 2ba799a..0000000 --- a/config.ini +++ /dev/null | |||
| @@ -1,21 +0,0 @@ | |||
| 1 | [server] | ||
| 2 | # port used by HTTP server | ||
| 3 | port = 8080 | ||
| 4 | |||
| 5 | [content] | ||
| 6 | # title displayed on index page, otherwise post title is used | ||
| 7 | title = Mitja Felicijan | ||
| 8 | |||
| 9 | # descriptions displayed on index page, otherwise post description is used | ||
| 10 | description = You do not learn by relaxing. You learn by violently assaulting your problem until it surrenders its mysteries to you. | ||
| 11 | |||
| 12 | [rss] | ||
| 13 | |||
| 14 | # domain name for xml feed | ||
| 15 | domain = https://mitjafelicijan.com | ||
| 16 | |||
| 17 | # author name | ||
| 18 | author = Mitja Felicijan | ||
| 19 | |||
| 20 | # author email | ||
| 21 | email = m@mitjafelicijan.com | ||
diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..7cb9aa2 --- /dev/null +++ b/config.toml | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | baseURL = 'https://mitjafelicijan.com/' | ||
| 2 | languageCode = 'en-us' | ||
| 3 | title = 'Mitja Felicijan' | ||
| 4 | |||
| 5 | # Theme selction. | ||
| 6 | theme = 'simple' | ||
| 7 | |||
| 8 | # Makes url's have '.html' at the end. | ||
| 9 | uglyurls = true | ||
| 10 | |||
| 11 | [params] | ||
| 12 | description = 'You do not learn by relaxing. You learn by violently assaulting your problem until it surrenders its mysteries to you.' | ||
| 13 | |||
| 14 | [permalinks] | ||
| 15 | posts = ':title' | ||
| 16 | # pages = ':title' | ||
| 17 | |||
| 18 | [author] | ||
| 19 | name = 'Mitja Felicijan' | ||
| 20 | |||
| 21 | [markup] | ||
| 22 | [markup.tableOfContents] | ||
| 23 | endLevel = 3 | ||
| 24 | ordered = false | ||
| 25 | startLevel = 2 | ||
| 26 | |||
| 27 | [markup.goldmark.renderer] | ||
| 28 | unsafe = true | ||
| 29 | |||
| 30 | [markup.highlight] | ||
| 31 | style = 'github' | ||
diff --git a/content/.gitkeep b/content/.gitkeep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/content/.gitkeep | |||
diff --git a/posts/books.md b/content/pages/books.md index 2a05dab..30f6ba6 100644 --- a/posts/books.md +++ b/content/pages/books.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Books I've read so far | 2 | title: Books I've read so far |
| 3 | Description: Books I've read so far | 3 | date: 2022-08-27 |
| 4 | Slug: books | 4 | url: books.html |
| 5 | Listing: false | 5 | draft: false |
| 6 | Created: "" | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | I buy all the books I read from [Book Depository](https://www.bookdepository.com/). I don't borrow them, and I don't like e-books. I, however, own an e-reader, which I mostly use for reading articles. Tried some audiobooks in the past, and they can be hit-and-miss, so I try to stay away from them. | 8 | I buy all the books I read from [Book Depository](https://www.bookdepository.com/). I don't borrow them, and I don't like e-books. I, however, own an e-reader, which I mostly use for reading articles. Tried some audiobooks in the past, and they can be hit-and-miss, so I try to stay away from them. |
diff --git a/posts/curriculum-vitae.md b/content/pages/curriculum-vitae.md index 7af1818..a4ba9e8 100644 --- a/posts/curriculum-vitae.md +++ b/content/pages/curriculum-vitae.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Curriculum Vitae | 2 | title: Curriculum Vitae |
| 3 | Description: Curriculum Vitae | 3 | date: 2022-08-27 |
| 4 | Slug: curriculum-vitae | 4 | url: curriculum-vitae.html |
| 5 | Listing: false | 5 | draft: false |
| 6 | Created: "" | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | <style> | 8 | <style> |
| @@ -18,7 +16,7 @@ Tags: [] | |||
| 18 | 16 | ||
| 19 | <div class="cv-picture"> | 17 | <div class="cv-picture"> |
| 20 | 18 | ||
| 21 |  | 19 |  |
| 22 | 20 | ||
| 23 | </div> | 21 | </div> |
| 24 | 22 | ||
diff --git a/posts/2011-01-13-most-likely-to-succeed-in-year-of-2011.md b/content/posts/2011-01-13-most-likely-to-succeed-in-year-of-2011.md index df54f63..fdd0075 100755 --- a/posts/2011-01-13-most-likely-to-succeed-in-year-of-2011.md +++ b/content/posts/2011-01-13-most-likely-to-succeed-in-year-of-2011.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Most likely to succeed in the year of 2011 | 2 | title: Most likely to succeed in the year of 2011 |
| 3 | Description: Most likely to succeed in the year of 2011 | 3 | url: most-likely-to-succeed-in-year-of-2011.html |
| 4 | Slug: most-likely-to-succeed-in-year-of-2011 | 4 | date: 2011-01-13 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2011-01-13 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | The year of 2010 was definitely the year of Geo-location. The market responded beautifully and lots of very cool services were launched. We all have to thank the mobile market for such extensive adoption. With new generations of mobile phones that are not only buffed with high-tech hardware but are also affordable. We can now manage tasks that were not so long time ago, almost Star Trek’ish. And all this had and has great influence on the destination to which we are going now. | 8 | The year of 2010 was definitely the year of Geo-location. The market responded beautifully and lots of very cool services were launched. We all have to thank the mobile market for such extensive adoption. With new generations of mobile phones that are not only buffed with high-tech hardware but are also affordable. We can now manage tasks that were not so long time ago, almost Star Trek’ish. And all this had and has great influence on the destination to which we are going now. |
diff --git a/posts/2012-03-09-led-technology-not-so-eco.md b/content/posts/2012-03-09-led-technology-not-so-eco.md index 8ef8c2c..514b1c3 100755 --- a/posts/2012-03-09-led-technology-not-so-eco.md +++ b/content/posts/2012-03-09-led-technology-not-so-eco.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: LED technology might not be as eco-friendly as you think | 2 | title: LED technology might not be as eco-friendly as you think |
| 3 | Description: LED technology might not be as eco-friendly as you think | 3 | url: led-technology-not-so-eco.html |
| 4 | Slug: led-technology-not-so-eco | 4 | date: 2012-03-09 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2012-03-09 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | There is a lot of talk about LED technology. It is beginning to infiltrate industry at a fast rate, and it’s a challenge for designers and also engineers. I wondered when a weakness will be revealed. Then I stomped on an article talking about harm in using LED technology. It looks like this magical technology is not so magical and eco-friendly. | 8 | There is a lot of talk about LED technology. It is beginning to infiltrate industry at a fast rate, and it’s a challenge for designers and also engineers. I wondered when a weakness will be revealed. Then I stomped on an article talking about harm in using LED technology. It looks like this magical technology is not so magical and eco-friendly. |
diff --git a/posts/2013-10-24-wireless-sensor-networks.md b/content/posts/2013-10-24-wireless-sensor-networks.md index feb2236..e8948fb 100755 --- a/posts/2013-10-24-wireless-sensor-networks.md +++ b/content/posts/2013-10-24-wireless-sensor-networks.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Wireless sensor networks | 2 | title: Wireless sensor networks |
| 3 | Description: Wireless sensor networks | 3 | url: wireless-sensor-networks.html |
| 4 | Slug: wireless-sensor-networks | 4 | date: 2013-10-24 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2013-10-24 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | Zigbee networks have this wonderful capability to self-heal, which means they can reorder connections between them if one of them is inoperable. This works our of the box when you deploy them. But you have to have in mind that achieving this is not as easy as you would think. None of it is plug&play. So to make your life a bit easier, here are some pointers which, I hope, will help you. | 8 | Zigbee networks have this wonderful capability to self-heal, which means they can reorder connections between them if one of them is inoperable. This works our of the box when you deploy them. But you have to have in mind that achieving this is not as easy as you would think. None of it is plug&play. So to make your life a bit easier, here are some pointers which, I hope, will help you. |
diff --git a/posts/2015-11-10-software-development-pitfalls.md b/content/posts/2015-11-10-software-development-pitfalls.md index d9e4266..c5d243a 100755 --- a/posts/2015-11-10-software-development-pitfalls.md +++ b/content/posts/2015-11-10-software-development-pitfalls.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Software development and my favorite pitfalls | 2 | title: Software development and my favorite pitfalls |
| 3 | Description: Software development and my favorite pitfalls | 3 | url: software-development-pitfalls.html |
| 4 | Slug: software-development-pitfalls | 4 | date: 2015-11-10 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2015-11-10 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | **Table of contents** | 8 | **Table of contents** |
diff --git a/posts/2017-03-07-golang-profiling-simplified.md b/content/posts/2017-03-07-golang-profiling-simplified.md index b419918..d784dcc 100644 --- a/posts/2017-03-07-golang-profiling-simplified.md +++ b/content/posts/2017-03-07-golang-profiling-simplified.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Golang profiling simplified | 2 | title: Golang profiling simplified |
| 3 | Description: Golang profiling simplified | 3 | url: golang-profiling-simplified.html |
| 4 | Slug: golang-profiling-simplified | 4 | date: 2017-03-07 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2017-03-07 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | Many posts have been written regarding profiling in Golang and I haven’t found proper tutorial regarding this. Almost all of them are missing some part of important information and it gets pretty frustrating when you have a deadline and are not finding simple distilled solution. | 8 | Many posts have been written regarding profiling in Golang and I haven’t found proper tutorial regarding this. Almost all of them are missing some part of important information and it gets pretty frustrating when you have a deadline and are not finding simple distilled solution. |
| @@ -109,5 +107,5 @@ go tool pprof -pdf ./cpu cpu.pprof > cpu.pdf | |||
| 109 | 107 | ||
| 110 | This will generate PDF document with visualized profile. | 108 | This will generate PDF document with visualized profile. |
| 111 | 109 | ||
| 112 | - [Memory PDF profile example](/assets/go-profiling/golang-profiling-mem.pdf) | 110 | - [Memory PDF profile example](/go-profiling/golang-profiling-mem.pdf) |
| 113 | - [CPU PDF profile example](/assets/go-profiling/golang-profiling-cpu.pdf) | 111 | - [CPU PDF profile example](/go-profiling/golang-profiling-cpu.pdf) |
diff --git a/posts/2017-04-17-what-i-ve-learned-developing-ad-server.md b/content/posts/2017-04-17-what-i-ve-learned-developing-ad-server.md index 99be1e9..6fca4ce 100644 --- a/posts/2017-04-17-what-i-ve-learned-developing-ad-server.md +++ b/content/posts/2017-04-17-what-i-ve-learned-developing-ad-server.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: What I've learned developing ad server | 2 | title: What I've learned developing ad server |
| 3 | Description: Lessons I learned developing contextual ad server | 3 | url: what-i-ve-learned-developing-ad-server.html |
| 4 | Slug: what-i-ve-learned-developing-ad-server | 4 | date: 2017-04-17 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2017-04-17 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | For the past year and half I have been developing native advertising server that contextually matches ads and displays them in different template forms on variety of websites. This project grew from serving thousands of ads per day to millions. | 8 | For the past year and half I have been developing native advertising server that contextually matches ads and displays them in different template forms on variety of websites. This project grew from serving thousands of ads per day to millions. |
diff --git a/posts/2017-04-21-profiling-python-web-applications-with-visual-tools.md b/content/posts/2017-04-21-profiling-python-web-applications-with-visual-tools.md index f2d4190..3fe8a9d 100644 --- a/posts/2017-04-21-profiling-python-web-applications-with-visual-tools.md +++ b/content/posts/2017-04-21-profiling-python-web-applications-with-visual-tools.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Profiling Python web applications with visual tools | 2 | title: Profiling Python web applications with visual tools |
| 3 | Description: Missing link when debugging and profiling python web application | 3 | url: profiling-python-web-applications-with-visual-tools.html |
| 4 | Slug: profiling-python-web-applications-with-visual-tools | 4 | date: 2017-04-21 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2017-04-21 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | I have been profiling my software with KCachegrind for a long time now and I was missing this option when I am developing API's or other web services. I always knew that this is possible but never really took the time and dive into it. | 8 | I have been profiling my software with KCachegrind for a long time now and I was missing this option when I am developing API's or other web services. I always knew that this is possible but never really took the time and dive into it. |
| @@ -18,7 +16,7 @@ Before we begin there are some requirements. We will need to: | |||
| 18 | 16 | ||
| 19 | If you are using MacOS you should check out [Profiling Viewer](http://www.profilingviewer.com/) or [MacCallGrind](http://www.maccallgrind.com/). | 17 | If you are using MacOS you should check out [Profiling Viewer](http://www.profilingviewer.com/) or [MacCallGrind](http://www.maccallgrind.com/). |
| 20 | 18 | ||
| 21 |  | 19 |  |
| 22 | 20 | ||
| 23 | We will be dividing this post into two main categories: | 21 | We will be dividing this post into two main categories: |
| 24 | 22 | ||
| @@ -137,7 +135,7 @@ $ pyprof2calltree -i awesome_random_number.prof | |||
| 137 | 135 | ||
| 138 | This file can be opened with visualizing tools listed above. In this case we will be using Profilling Viewer under MacOS. You can open image in new tab. As you can see from this example there is hierarchy of execution order of your code. | 136 | This file can be opened with visualizing tools listed above. In this case we will be using Profilling Viewer under MacOS. You can open image in new tab. As you can see from this example there is hierarchy of execution order of your code. |
| 139 | 137 | ||
| 140 |  | 138 |  |
| 141 | 139 | ||
| 142 | > Make sure you convert output of the cProfile output every time you want to refresh and take a look at your possible optimizations because cProfile updates .prof file every time browser hits the function. | 140 | > Make sure you convert output of the cProfile output every time you want to refresh and take a look at your possible optimizations because cProfile updates .prof file every time browser hits the function. |
| 143 | 141 | ||
| @@ -160,7 +158,7 @@ $ snakeviz awesome_random_number.prof | |||
| 160 | # shows visualized profile | 158 | # shows visualized profile |
| 161 | ``` | 159 | ``` |
| 162 | 160 | ||
| 163 |  | 161 |  |
| 164 | 162 | ||
| 165 | Reddit user [ccharles](https://www.reddit.com/user/ccharles) suggested a better way for installing pip software by targeting user level instead of using sudo. | 163 | Reddit user [ccharles](https://www.reddit.com/user/ccharles) suggested a better way for installing pip software by targeting user level instead of using sudo. |
| 166 | 164 | ||
diff --git a/posts/2017-08-11-simple-iot-application.md b/content/posts/2017-08-11-simple-iot-application.md index 0c90f43..b48f2fb 100644 --- a/posts/2017-08-11-simple-iot-application.md +++ b/content/posts/2017-08-11-simple-iot-application.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Simple IOT application supported by real-time monitoring and data history | 2 | title: Simple IOT application supported by real-time monitoring and data history |
| 3 | Description: Develop simple IOT application with Arduino MKR1000 and Python | 3 | url: simple-iot-application.html |
| 4 | Slug: simple-iot-application | 4 | date: 2017-08-11 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2017-08-11 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | ## Initial thoughts | 8 | ## Initial thoughts |
| @@ -29,7 +27,7 @@ Step 1. and 3. will share the same web application. One route will be dedicated | |||
| 29 | 27 | ||
| 30 | Schema below represents what we will try to achieve and how different parts correlates to each other. | 28 | Schema below represents what we will try to achieve and how different parts correlates to each other. |
| 31 | 29 | ||
| 32 |  | 30 |  |
| 33 | 31 | ||
| 34 | ## Simple Python API | 32 | ## Simple Python API |
| 35 | 33 | ||
| @@ -150,11 +148,11 @@ To run this simply go to folder containing python file and run ```python webapp. | |||
| 150 | 148 | ||
| 151 | After testing the service with Restlet Client you should be able to view your data in a database file ```data.db```. | 149 | After testing the service with Restlet Client you should be able to view your data in a database file ```data.db```. |
| 152 | 150 | ||
| 153 |  | 151 |  |
| 154 | 152 | ||
| 155 | You can also check the contents of new database file by using desktop client for SQLite → [DB Browser for SQLite](http://sqlitebrowser.org/). | 153 | You can also check the contents of new database file by using desktop client for SQLite → [DB Browser for SQLite](http://sqlitebrowser.org/). |
| 156 | 154 | ||
| 157 |  | 155 |  |
| 158 | 156 | ||
| 159 | Table structure is as simple as it can be. We have ts (timestamp) and value (value from Arduino). As you can see timestamp is generated on API side. If you would happen to have atomic clock on Arduino it would be then better to generate and send timestamp with the value. This would be particularity useful if we would be collecting sensor data at a higher frequency and then sending this data in bulk to API. | 157 | Table structure is as simple as it can be. We have ts (timestamp) and value (value from Arduino). As you can see timestamp is generated on API side. If you would happen to have atomic clock on Arduino it would be then better to generate and send timestamp with the value. This would be particularity useful if we would be collecting sensor data at a higher frequency and then sending this data in bulk to API. |
| 160 | 158 | ||
| @@ -471,9 +469,9 @@ If everything goes well you should be seeing new data-points rendered on chart e | |||
| 471 | 469 | ||
| 472 | If you navigate to ```http://0.0.0.0:5000``` you should see rendered chart as shown on picture below. | 470 | If you navigate to ```http://0.0.0.0:5000``` you should see rendered chart as shown on picture below. |
| 473 | 471 | ||
| 474 |  | 472 |  |
| 475 | 473 | ||
| 476 | Complete application with all the code is available for [download](/assets/iot-application/simple-iot-application.zip). | 474 | Complete application with all the code is available for [download](/iot-application/simple-iot-application.zip). |
| 477 | 475 | ||
| 478 | ## Conclusion | 476 | ## Conclusion |
| 479 | 477 | ||
diff --git a/posts/2018-01-16-using-digitalocean-spaces-object-storage-with-fuse.md b/content/posts/2018-01-16-using-digitalocean-spaces-object-storage-with-fuse.md index 9b75ac7..65cc7b5 100644 --- a/posts/2018-01-16-using-digitalocean-spaces-object-storage-with-fuse.md +++ b/content/posts/2018-01-16-using-digitalocean-spaces-object-storage-with-fuse.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Using DigitalOcean Spaces Object Storage with FUSE | 2 | title: Using DigitalOcean Spaces Object Storage with FUSE |
| 3 | Description: Using DigitalOcean Spaces Object Storage with FUSE | 3 | url: using-digitalocean-spaces-object-storage-with-fuse.html |
| 4 | Slug: using-digitalocean-spaces-object-storage-with-fuse | 4 | date: 2018-01-16 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2018-01-16 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | Couple of months ago [DigitalOcean](https://www.digitalocean.com) introduced new product called [Spaces](https://blog.digitalocean.com/introducing-spaces-object-storage/) which is Object Storage very similar to Amazon's S3. This really peaked my interest, because this was something I was missing and even the thought of going over the internet for such functionality was in no interest to me. Also in fashion with their previous pricing this also is very cheap and pricing page is a no-brainer compared to AWS or GCE. [Prices are clearly and precisely defined and outlined](https://www.digitalocean.com/pricing/). You must love them for that :) | 8 | Couple of months ago [DigitalOcean](https://www.digitalocean.com) introduced new product called [Spaces](https://blog.digitalocean.com/introducing-spaces-object-storage/) which is Object Storage very similar to Amazon's S3. This really peaked my interest, because this was something I was missing and even the thought of going over the internet for such functionality was in no interest to me. Also in fashion with their previous pricing this also is very cheap and pricing page is a no-brainer compared to AWS or GCE. [Prices are clearly and precisely defined and outlined](https://www.digitalocean.com/pricing/). You must love them for that :) |
| @@ -28,13 +26,13 @@ To make this work you will need DigitalOcean account. If you don't have one you | |||
| 28 | 26 | ||
| 29 | Instuctions on how to use SSH keys and how to setup them are available in article [How To Use SSH Keys with DigitalOcean Droplets](https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with-digitalocean-droplets). | 27 | Instuctions on how to use SSH keys and how to setup them are available in article [How To Use SSH Keys with DigitalOcean Droplets](https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with-digitalocean-droplets). |
| 30 | 28 | ||
| 31 |  | 29 |  |
| 32 | 30 | ||
| 33 | After we created Droplet it's time to create new Space. This is done by clicking on a button [Create](https://cloud.digitalocean.com/spaces/new) (right top corner) and selecting Spaces. Choose pronounceable ```Unique name``` because we will use it in examples below. You can either choose Private or Public, it doesn't matter in our case. And you can always change that in the future. | 31 | After we created Droplet it's time to create new Space. This is done by clicking on a button [Create](https://cloud.digitalocean.com/spaces/new) (right top corner) and selecting Spaces. Choose pronounceable ```Unique name``` because we will use it in examples below. You can either choose Private or Public, it doesn't matter in our case. And you can always change that in the future. |
| 34 | 32 | ||
| 35 | When you have created new Space we should [generate Access key](https://cloud.digitalocean.com/settings/api/tokens). This link will guide to the page when you can generate this key. After you create new one, please save provided Key and Secret because Secret will not be shown again. | 33 | When you have created new Space we should [generate Access key](https://cloud.digitalocean.com/settings/api/tokens). This link will guide to the page when you can generate this key. After you create new one, please save provided Key and Secret because Secret will not be shown again. |
| 36 | 34 | ||
| 37 |  | 35 |  |
| 38 | 36 | ||
| 39 | Now that we have new Space and Access key we should SSH into our machine. | 37 | Now that we have new Space and Access key we should SSH into our machine. |
| 40 | 38 | ||
| @@ -104,14 +102,14 @@ As I suspected, object size is not really that important. Sadly I don't have the | |||
| 104 | 102 | ||
| 105 | **Here are plotted results** | 103 | **Here are plotted results** |
| 106 | 104 | ||
| 107 | You can download [raw result here](/assets/do-fuse/copy-benchmarks.tsv). Measurements are in seconds. | 105 | You can download [raw result here](/do-fuse/copy-benchmarks.tsv). Measurements are in seconds. |
| 108 | 106 | ||
| 109 | <script src="//cdn.plot.ly/plotly-latest.min.js"></script> | 107 | <script src="//cdn.plot.ly/plotly-latest.min.js"></script> |
| 110 | <div id="copy-benchmarks"></div> | 108 | <div id="copy-benchmarks"></div> |
| 111 | <script> | 109 | <script> |
| 112 | (function(){ | 110 | (function(){ |
| 113 | var request = new XMLHttpRequest(); | 111 | var request = new XMLHttpRequest(); |
| 114 | request.open("GET", "/assets/do-fuse/copy-benchmarks.tsv", true); | 112 | request.open("GET", "/do-fuse/copy-benchmarks.tsv", true); |
| 115 | request.onload = function() { | 113 | request.onload = function() { |
| 116 | if (request.status >= 200 && request.status < 400) { | 114 | if (request.status >= 200 && request.status < 400) { |
| 117 | var payload = request.responseText.trim(); | 115 | var payload = request.responseText.trim(); |
| @@ -220,13 +218,13 @@ result_time = CLOSE = end_time - start_time | |||
| 220 | print("CLOSE: %g seconds" % (result_time)) | 218 | print("CLOSE: %g seconds" % (result_time)) |
| 221 | ``` | 219 | ``` |
| 222 | 220 | ||
| 223 | You can download [raw result here](/assets/do-fuse/sqlite-benchmarks.tsv). And again, these results are done on a local block storage and do not represent capabilities of object storage. With my current approach and state of the test code these can not be done. I would need to make Python code much more robust and check locking etc. | 221 | You can download [raw result here](/do-fuse/sqlite-benchmarks.tsv). And again, these results are done on a local block storage and do not represent capabilities of object storage. With my current approach and state of the test code these can not be done. I would need to make Python code much more robust and check locking etc. |
| 224 | 222 | ||
| 225 | <div id="sqlite-benchmarks"></div> | 223 | <div id="sqlite-benchmarks"></div> |
| 226 | <script> | 224 | <script> |
| 227 | (function(){ | 225 | (function(){ |
| 228 | var request = new XMLHttpRequest(); | 226 | var request = new XMLHttpRequest(); |
| 229 | request.open("GET", "/assets/do-fuse/sqlite-benchmarks.tsv", true); | 227 | request.open("GET", "/do-fuse/sqlite-benchmarks.tsv", true); |
| 230 | request.onload = function() { | 228 | request.onload = function() { |
| 231 | if (request.status >= 200 && request.status < 400) { | 229 | if (request.status >= 200 && request.status < 400) { |
| 232 | var payload = request.responseText.trim(); | 230 | var payload = request.responseText.trim(); |
diff --git a/posts/2019-01-03-encoding-binary-data-into-dna-sequence.md b/content/posts/2019-01-03-encoding-binary-data-into-dna-sequence.md index 4910bb3..ff346d4 100644 --- a/posts/2019-01-03-encoding-binary-data-into-dna-sequence.md +++ b/content/posts/2019-01-03-encoding-binary-data-into-dna-sequence.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Encoding binary data into DNA sequence | 2 | title: Encoding binary data into DNA sequence |
| 3 | Description: Imagine a world where you could go outside and take a leaf from a tree and put it through your ~ personal DNA sequencer and get data like music, videos or computer programs from it | 3 | url: encoding-binary-data-into-dna-sequence.html |
| 4 | Slug: encoding-binary-data-into-dna-sequence | 4 | date: 2019-01-03 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2019-01-03 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | ## Initial thoughts | 8 | ## Initial thoughts |
| @@ -83,7 +81,7 @@ Deoxyribonucleic acid, a self-replicating material which is **present in nearly | |||
| 83 | 81 | ||
| 84 | The nucleotide in DNA consists of a sugar (deoxyribose), one of four bases (cytosine (C), thymine (T), adenine (A), guanine (G)), and a phosphate. Cytosine and thymine are pyrimidine bases, while adenine and guanine are purine bases. The sugar and the base together are called a nucleoside. | 82 | The nucleotide in DNA consists of a sugar (deoxyribose), one of four bases (cytosine (C), thymine (T), adenine (A), guanine (G)), and a phosphate. Cytosine and thymine are pyrimidine bases, while adenine and guanine are purine bases. The sugar and the base together are called a nucleoside. |
| 85 | 83 | ||
| 86 |  | 84 |  |
| 87 | 85 | ||
| 88 | *DNA (a) forms a double stranded helix, and (b) adenine pairs with thymine and cytosine pairs with guanine. (credit a: modification of work by Jerome Walker, Dennis Myts)* | 86 | *DNA (a) forms a double stranded helix, and (b) adenine pairs with thymine and cytosine pairs with guanine. (credit a: modification of work by Jerome Walker, Dennis Myts)* |
| 89 | 87 | ||
| @@ -172,8 +170,8 @@ FASTA format was extended by [FASTQ](https://en.wikipedia.org/wiki/FASTQ_format) | |||
| 172 | 170 | ||
| 173 | ### PNG encoded DNA sequence | 171 | ### PNG encoded DNA sequence |
| 174 | 172 | ||
| 175 | | Nucleotides | RGB | Color name | | 173 | | Nucleotides | RGB | Color name | |
| 176 | | ------------- | ----------- | ---------- | | 174 | | ------------ | ----------- | ---------- | |
| 177 | | A âžž Adenine | (0,0,255) | Blue | | 175 | | A âžž Adenine | (0,0,255) | Blue | |
| 178 | | G âžž Guanine | (0,100,0) | Green | | 176 | | G âžž Guanine | (0,100,0) | Green | |
| 179 | | C âžž Cytosine | (255,0,0) | Red | | 177 | | C âžž Cytosine | (255,0,0) | Red | |
| @@ -248,11 +246,11 @@ Then we encode FASTA file from previous operation to encode this data into PNG. | |||
| 248 | 246 | ||
| 249 | After encoding into PNG format this file looks like this. | 247 | After encoding into PNG format this file looks like this. |
| 250 | 248 | ||
| 251 |  | 249 |  |
| 252 | 250 | ||
| 253 | The larger the input stream is the larger the PNG file would be. | 251 | The larger the input stream is the larger the PNG file would be. |
| 254 | 252 | ||
| 255 | Compiled basic Hello World C program with [GCC](https://www.gnu.org/software/gcc/) would [look like](/assets/dna-sequence/sample.png). | 253 | Compiled basic Hello World C program with [GCC](https://www.gnu.org/software/gcc/) would [look like](/dna-sequence/sample.png). |
| 256 | 254 | ||
| 257 | ```c | 255 | ```c |
| 258 | // gcc -O3 -o sample sample.c | 256 | // gcc -O3 -o sample sample.c |
| @@ -315,7 +313,7 @@ dd if=<(openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count= | |||
| 315 | 313 | ||
| 316 | Our freshly generated 1KB file looks something like this (its full of garbage data as intended). | 314 | Our freshly generated 1KB file looks something like this (its full of garbage data as intended). |
| 317 | 315 | ||
| 318 |  | 316 |  |
| 319 | 317 | ||
| 320 | We create following binary files: | 318 | We create following binary files: |
| 321 | - 1KB.bin | 319 | - 1KB.bin |
| @@ -337,7 +335,7 @@ Then we GZIP all the FASTA files to see how much the can be compressed. | |||
| 337 | gzip -9 < 10MB.fa > 10MB.fa.gz | 335 | gzip -9 < 10MB.fa > 10MB.fa.gz |
| 338 | ``` | 336 | ``` |
| 339 | 337 | ||
| 340 | [Download ODS file with benchmarks](/assets/dna-sequence/benchmarks.ods). | 338 | [Download ODS file with benchmarks](/dna-sequence/benchmarks.ods). |
| 341 | 339 | ||
| 342 | ## References | 340 | ## References |
| 343 | 341 | ||
diff --git a/posts/2019-10-14-simplifying-and-reducing-clutter.md b/content/posts/2019-10-14-simplifying-and-reducing-clutter.md index 7d2d8d6..deb0cb8 100644 --- a/posts/2019-10-14-simplifying-and-reducing-clutter.md +++ b/content/posts/2019-10-14-simplifying-and-reducing-clutter.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Simplifying and reducing clutter in my life and work | 2 | title: Simplifying and reducing clutter in my life and work |
| 3 | Description: Simplifying and reducing clutter in my life and work | 3 | url: simplifying-and-reducing-clutter.html |
| 4 | Slug: simplifying-and-reducing-clutter | 4 | date: 2019-10-14 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2019-10-14 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | I recently moved my main working machine back from Hachintosh to Linux. Well the experiment was interesting and I have done some great work on macOS but it was time to move back. | 8 | I recently moved my main working machine back from Hachintosh to Linux. Well the experiment was interesting and I have done some great work on macOS but it was time to move back. |
diff --git a/posts/2019-10-19-using-sentiment-analysis-for-clickbait-detection.md b/content/posts/2019-10-19-using-sentiment-analysis-for-clickbait-detection.md index 831b490..0f5d994 100644 --- a/posts/2019-10-19-using-sentiment-analysis-for-clickbait-detection.md +++ b/content/posts/2019-10-19-using-sentiment-analysis-for-clickbait-detection.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Using sentiment analysis for clickbait detection in RSS feeds | 2 | title: Using sentiment analysis for clickbait detection in RSS feeds |
| 3 | Description: Using Python with sentiment analysis to detect if titles in RSS feeds are clickbait | 3 | url: using-sentiment-analysis-for-clickbait-detection-in-rss-feeds.html |
| 4 | Slug: using-sentiment-analysis-for-clickbait-detection-in-rss-feeds | 4 | date: 2019-10-19 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2019-10-19 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | ## Initial thoughts | 8 | ## Initial thoughts |
| @@ -74,11 +72,11 @@ plt.show() | |||
| 74 | 2. Rule-based approach may not be the best way of doing this. By using deep learning we would be able to get better insights. | 72 | 2. Rule-based approach may not be the best way of doing this. By using deep learning we would be able to get better insights. |
| 75 | 3. **Next step would be to** periodically fetch RSS items and store them over a longer period of time and then perform analysis again and use either machine learning or deep learning on top of it. | 73 | 3. **Next step would be to** periodically fetch RSS items and store them over a longer period of time and then perform analysis again and use either machine learning or deep learning on top of it. |
| 76 | 74 | ||
| 77 |  | 75 |  |
| 78 | 76 | ||
| 79 | Figure above displays difference between title and description sentiment for specific RSS feed item. 1 means positive and -1 means negative sentiment. | 77 | Figure above displays difference between title and description sentiment for specific RSS feed item. 1 means positive and -1 means negative sentiment. |
| 80 | 78 | ||
| 81 | [» Download Jupyter Notebook](/assets/sentiment-analysis/sentiment-analysis.ipynb) | 79 | [» Download Jupyter Notebook](/sentiment-analysis/sentiment-analysis.ipynb) |
| 82 | 80 | ||
| 83 | ## Going further | 81 | ## Going further |
| 84 | 82 | ||
diff --git a/posts/2020-03-22-simple-sse-based-pubsub-server.md b/content/posts/2020-03-22-simple-sse-based-pubsub-server.md index 4256aed..166ef8a 100644 --- a/posts/2020-03-22-simple-sse-based-pubsub-server.md +++ b/content/posts/2020-03-22-simple-sse-based-pubsub-server.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Simple Server-Sent Events based PubSub Server | 2 | title: Simple Server-Sent Events based PubSub Server |
| 3 | Description: Simple Server-Sent Events based PubSub Server | 3 | url: simple-server-sent-events-based-pubsub-server.html |
| 4 | Slug: simple-server-sent-events-based-pubsub-server | 4 | date: 2020-03-22 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2020-03-22 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | ## Before we continue ... | 8 | ## Before we continue ... |
| @@ -23,7 +21,7 @@ Publisher Subscriber model is nothing new and there are many amazing solutions o | |||
| 23 | 21 | ||
| 24 | The easiest way to explain this is with diagram bellow. Basic function is simple. We have subscribers that receive messages, and we have publishers that create and post messages. Similar model is also well know pattern that works on a premise of consumers and producers, and they take similar roles. | 22 | The easiest way to explain this is with diagram bellow. Basic function is simple. We have subscribers that receive messages, and we have publishers that create and post messages. Similar model is also well know pattern that works on a premise of consumers and producers, and they take similar roles. |
| 25 | 23 | ||
| 26 |  | 24 |  |
| 27 | 25 | ||
| 28 | **These are some naive characteristics we want to achieve:** | 26 | **These are some naive characteristics we want to achieve:** |
| 29 | 27 | ||
| @@ -49,7 +47,7 @@ Read more about it on [official specification page](https://html.spec.whatwg.org | |||
| 49 | 47 | ||
| 50 | ### Current browser support | 48 | ### Current browser support |
| 51 | 49 | ||
| 52 |  | 50 |  |
| 53 | 51 | ||
| 54 | Check [https://caniuse.com/#feat=eventsource](https://caniuse.com/#feat=eventsource) for latest information about browser support. | 52 | Check [https://caniuse.com/#feat=eventsource](https://caniuse.com/#feat=eventsource) for latest information about browser support. |
| 55 | 53 | ||
| @@ -107,7 +105,7 @@ Google Chrome provides build-in debugging and exploration tool for [Server-Sent | |||
| 107 | 105 | ||
| 108 | > You can debug only client side events that get received and not the server ones. For debugging server events add `console.log` to `server.js` code and print out events. | 106 | > You can debug only client side events that get received and not the server ones. For debugging server events add `console.log` to `server.js` code and print out events. |
| 109 | 107 | ||
| 110 |  | 108 |  |
| 111 | 109 | ||
| 112 | ## Server implementation | 110 | ## Server implementation |
| 113 | 111 | ||
| @@ -236,9 +234,9 @@ One example would be, that we have index page and we want to receive messages ab | |||
| 236 | 234 | ||
| 237 | ### Publisher and subscriber in action | 235 | ### Publisher and subscriber in action |
| 238 | 236 | ||
| 239 | <video src="/assets/simple-pubsub-server/clients.mp4" controls></video> | 237 | <video src="/simple-pubsub-server/clients.mp4" controls></video> |
| 240 | 238 | ||
| 241 | You can download [the code](../assets/simple-pubsub-server/sse-pubsub-server.zip) and follow along. | 239 | You can download [the code](../simple-pubsub-server/sse-pubsub-server.zip) and follow along. |
| 242 | 240 | ||
| 243 | ### Publisher | 241 | ### Publisher |
| 244 | 242 | ||
diff --git a/posts/2020-03-27-create-placeholder-images-with-sharp.md b/content/posts/2020-03-27-create-placeholder-images-with-sharp.md index 2869857..fc8eb0c 100644 --- a/posts/2020-03-27-create-placeholder-images-with-sharp.md +++ b/content/posts/2020-03-27-create-placeholder-images-with-sharp.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Create placeholder images with sharp Node.js image processing library | 2 | title: Create placeholder images with sharp Node.js image processing library |
| 3 | Description: Create placeholder images with sharp Node.js image processing library | 3 | url: create-placeholder-images-with-sharp.html |
| 4 | Slug: create-placeholder-images-with-sharp | 4 | date: 2020-03-27 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2020-03-27 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | I have been searching for a solution to pre-generate some placeholder images for image server I needed to develop that resizes images on S3. I though this would be a 15min job and quickly found out how very mistaken I was. | 8 | I have been searching for a solution to pre-generate some placeholder images for image server I needed to develop that resizes images on S3. I though this would be a 15min job and quickly found out how very mistaken I was. |
diff --git a/posts/2020-03-29-the-strange-case-of-elasticsearch-allocation-failure.md b/content/posts/2020-03-29-the-strange-case-of-elasticsearch-allocation-failure.md index a577c2b..a976a7e 100644 --- a/posts/2020-03-29-the-strange-case-of-elasticsearch-allocation-failure.md +++ b/content/posts/2020-03-29-the-strange-case-of-elasticsearch-allocation-failure.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: The strange case of Elasticsearch allocation failure | 2 | title: The strange case of Elasticsearch allocation failure |
| 3 | Description: Elasticsearch allocation failure on some indices while reporting domain processing | 3 | url: the-strange-case-of-elasticsearch-allocation-failure.html |
| 4 | Slug: the-strange-case-of-elasticsearch-allocation-failure | 4 | date: 2020-03-29 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2020-03-29 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | I've been using Elasticsearch in production for 5 years now and never had a single problem with it. Hell, never even known there could be a problem. Just worked. All this time. The first node that I deployed is still being used in production, never updated, upgraded, touched in anyway. | 8 | I've been using Elasticsearch in production for 5 years now and never had a single problem with it. Hell, never even known there could be a problem. Just worked. All this time. The first node that I deployed is still being used in production, never updated, upgraded, touched in anyway. |
diff --git a/posts/2020-03-30-my-love-and-hate-relationship-with-nodejs.md b/content/posts/2020-03-30-my-love-and-hate-relationship-with-nodejs.md index b24bacb..2b8b35b 100644 --- a/posts/2020-03-30-my-love-and-hate-relationship-with-nodejs.md +++ b/content/posts/2020-03-30-my-love-and-hate-relationship-with-nodejs.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: My love and hate relationship with Node.js | 2 | title: My love and hate relationship with Node.js |
| 3 | Description: How I found a way to love and hate Node.js with a passion | 3 | url: my-love-and-hate-relationship-with-nodejs.html |
| 4 | Slug: my-love-and-hate-relationship-with-nodejs | 4 | date: 2020-03-30 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2020-03-30 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | Previous project I was working on was being coded in [Golang](https://golang.org/). Also was my first project using it. And damn, that was an awesome experience. The whole thing is just superb. From how errors are handled. The C-like way you handle compiling. The way the language is structured making it incredibly versatile and easy to learn. | 8 | Previous project I was working on was being coded in [Golang](https://golang.org/). Also was my first project using it. And damn, that was an awesome experience. The whole thing is just superb. From how errors are handled. The C-like way you handle compiling. The way the language is structured making it incredibly versatile and easy to learn. |
diff --git a/posts/2020-05-05-remote-work.md b/content/posts/2020-05-05-remote-work.md index 9562992..d4b5cbe 100755 --- a/posts/2020-05-05-remote-work.md +++ b/content/posts/2020-05-05-remote-work.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Remote work and how it affects the daily lives of people | 2 | title: Remote work and how it affects the daily lives of people |
| 3 | Description: Remote work and how it affects the daily lives of people | 3 | url: remote-work.html |
| 4 | Slug: remote-work | 4 | date: 2020-05-05 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2020-05-05 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | I have been working remotely for the past 5 years. I love it. Love the freedom and make your schedule thingy. | 8 | I have been working remotely for the past 5 years. I love it. Love the freedom and make your schedule thingy. |
diff --git a/posts/2020-08-15-systemd-disable-wake-onmouse.md b/content/posts/2020-08-15-systemd-disable-wake-onmouse.md index 90288ac..09e5036 100644 --- a/posts/2020-08-15-systemd-disable-wake-onmouse.md +++ b/content/posts/2020-08-15-systemd-disable-wake-onmouse.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Disable mouse wake from suspend with systemd service | 2 | title: Disable mouse wake from suspend with systemd service |
| 3 | Description: Disable mouse wake from suspend with systemd service | 3 | url: disable-mouse-wake-from-suspend-with-systemd-service.html |
| 4 | Slug: disable-mouse-wake-from-suspend-with-systemd-service | 4 | date: 2020-08-15 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2020-08-15 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | I recently bought [ThinkPad X220](https://www.laptopmag.com/reviews/laptops/lenovo-thinkpad-x220) just as a joke on eBay to test Linux distributions and play around with things and not destroy my main machine. Little to my knowledge I felt in love with it. Man, they really made awesome machines back then. | 8 | I recently bought [ThinkPad X220](https://www.laptopmag.com/reviews/laptops/lenovo-thinkpad-x220) just as a joke on eBay to test Linux distributions and play around with things and not destroy my main machine. Little to my knowledge I felt in love with it. Man, they really made awesome machines back then. |
diff --git a/posts/2020-09-06-esp-and-micropython.md b/content/posts/2020-09-06-esp-and-micropython.md index a0a3b93..4b6e568 100644 --- a/posts/2020-09-06-esp-and-micropython.md +++ b/content/posts/2020-09-06-esp-and-micropython.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Getting started with MicroPython and ESP8266 | 2 | title: Getting started with MicroPython and ESP8266 |
| 3 | Description: Getting started with MicroPython and ESP8266 | 3 | url: esp8266-and-micropython-guide.html |
| 4 | Slug: esp8266-and-micropython-guide | 4 | date: 2020-09-06 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2020-09-06 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | **Table of contents** | 8 | **Table of contents** |
| @@ -25,7 +23,7 @@ A while ago I bought some [ESP8266](https://www.espressif.com/en/products/socs/e | |||
| 25 | 23 | ||
| 26 | For my project, I used [ESP32](https://www.espressif.com/en/products/socs/esp32) but I could easily choose [ESP8266](https://www.espressif.com/en/products/socs/esp8266). This guide contains which tools I use and how I prepared my workspace to code for [ESP8266](https://www.espressif.com/en/products/socs/esp8266). | 24 | For my project, I used [ESP32](https://www.espressif.com/en/products/socs/esp32) but I could easily choose [ESP8266](https://www.espressif.com/en/products/socs/esp8266). This guide contains which tools I use and how I prepared my workspace to code for [ESP8266](https://www.espressif.com/en/products/socs/esp8266). |
| 27 | 25 | ||
| 28 |  | 26 |  |
| 29 | 27 | ||
| 30 | This guide covers: | 28 | This guide covers: |
| 31 | - flashing SOC | 29 | - flashing SOC |
diff --git a/posts/2020-09-08-bind-warning-on-login.md b/content/posts/2020-09-08-bind-warning-on-login.md index ab26b0c..3f276c6 100644 --- a/posts/2020-09-08-bind-warning-on-login.md +++ b/content/posts/2020-09-08-bind-warning-on-login.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Fix bind warning in .profile on login in Ubuntu | 2 | title: Fix bind warning in .profile on login in Ubuntu |
| 3 | Description: Fix bind warning in .profile on login in Ubuntu | 3 | url: bind-warning-on-login-in-ubuntu.html |
| 4 | Slug: bind-warning-on-login-in-ubuntu | 4 | date: 2020-09-08 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2020-09-08 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | Recently I moved back to [bash](https://www.gnu.org/software/bash/) as my default shell. I was previously using [fish](https://fishshell.com/) and got used to the cool features it has. But, regardless of that, I wanted to move to a more standard shell because I was hopping back and forth with exporting variables and stuff like that which got pretty annoying. | 8 | Recently I moved back to [bash](https://www.gnu.org/software/bash/) as my default shell. I was previously using [fish](https://fishshell.com/) and got used to the cool features it has. But, regardless of that, I wanted to move to a more standard shell because I was hopping back and forth with exporting variables and stuff like that which got pretty annoying. |
| @@ -23,7 +21,7 @@ bind '"\e[Z":menu-complete-backward' | |||
| 23 | 21 | ||
| 24 | I haven't noticed anything wrong with this and all was working fine until I restarted my machine and then I got this error. | 22 | I haven't noticed anything wrong with this and all was working fine until I restarted my machine and then I got this error. |
| 25 | 23 | ||
| 26 |  | 24 |  |
| 27 | 25 | ||
| 28 | When I pressed OK, I got into the [Gnome shell](https://wiki.gnome.org/Projects/GnomeShell) and all was working fine, but the error was still bugging me. I started looking for the reason why this is happening and found a solution to this error on [Remote SSH Commands - bash bind warning: line editing not enabled](https://superuser.com/a/892682). | 26 | When I pressed OK, I got into the [Gnome shell](https://wiki.gnome.org/Projects/GnomeShell) and all was working fine, but the error was still bugging me. I started looking for the reason why this is happening and found a solution to this error on [Remote SSH Commands - bash bind warning: line editing not enabled](https://superuser.com/a/892682). |
| 29 | 27 | ||
diff --git a/posts/2020-09-09-digitalocean-sync.md b/content/posts/2020-09-09-digitalocean-sync.md index 5ee6c47..e7da657 100644 --- a/posts/2020-09-09-digitalocean-sync.md +++ b/content/posts/2020-09-09-digitalocean-sync.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Using Digitalocean Spaces to sync between computers | 2 | title: Using Digitalocean Spaces to sync between computers |
| 3 | Description: Using Digitalocean Spaces to sync between computers | 3 | url: digitalocean-spaces-to-sync-between-computers.html |
| 4 | Slug: digitalocean-spaces-to-sync-between-computers | 4 | date: 2020-09-09 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2020-09-09 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | I've been using [Dropbox](https://www.dropbox.com/) for probably **10+ years** now and I-ve became so used to it that it runs in the background that I don't even imagine a world without it. But it's not without problems. | 8 | I've been using [Dropbox](https://www.dropbox.com/) for probably **10+ years** now and I-ve became so used to it that it runs in the background that I don't even imagine a world without it. But it's not without problems. |
diff --git a/posts/2021-01-24-replacing-dropbox-with-s3.md b/content/posts/2021-01-24-replacing-dropbox-with-s3.md index 4a181b5..12fb8cf 100644 --- a/posts/2021-01-24-replacing-dropbox-with-s3.md +++ b/content/posts/2021-01-24-replacing-dropbox-with-s3.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Replacing Dropbox in favor of DigitalOcean spaces | 2 | title: Replacing Dropbox in favor of DigitalOcean spaces |
| 3 | Description: Replacing Dropbox in favor of DigitalOcean spaces | 3 | url: replacing-dropbox-in-favor-of-digitalocean-spaces.html |
| 4 | Slug: replacing-dropbox-in-favor-of-digitalocean-spaces | 4 | date: 2021-01-24 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2021-01-24 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | A few months ago I experimented with DigitalOcean spaces as my backup solution that could [replace Dropbox eventually](/digitalocean-spaces-to-sync-between-computers.html). That solution worked quite nicely, and I was amazed how smashing together a couple of existing solutions would work this fine. | 8 | A few months ago I experimented with DigitalOcean spaces as my backup solution that could [replace Dropbox eventually](/digitalocean-spaces-to-sync-between-computers.html). That solution worked quite nicely, and I was amazed how smashing together a couple of existing solutions would work this fine. |
| @@ -80,7 +78,7 @@ You can use this script in a combination with [Cron](https://en.wikipedia.org/wi | |||
| 80 | 78 | ||
| 81 | When you start syncing your local stuff with a remote server you can review your items on DigitalOcean. | 79 | When you start syncing your local stuff with a remote server you can review your items on DigitalOcean. |
| 82 | 80 | ||
| 83 |  | 81 |  |
| 84 | 82 | ||
| 85 | I have been using this script now for quite some time, and it's working flawlessly. I also uninstalled Dropbox and stopped using it completely. | 83 | I have been using this script now for quite some time, and it's working flawlessly. I also uninstalled Dropbox and stopped using it completely. |
| 86 | 84 | ||
diff --git a/posts/2021-01-25-goaccess.md b/content/posts/2021-01-25-goaccess.md index 7b5ba5c..2f3d56b 100644 --- a/posts/2021-01-25-goaccess.md +++ b/content/posts/2021-01-25-goaccess.md | |||
| @@ -1,12 +1,12 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Using GoAccess with Nginx to replace Google Analytics | 2 | title: Using GoAccess with Nginx to replace Google Analytics |
| 3 | Description: Using GoAccess with Nginx to replace Google Analytics | 3 | url: using-goaccess-with-nginx-to-replace-google-analytics.html |
| 4 | Slug: using-goaccess-with-nginx-to-replace-google-analytics | 4 | date: 2021-01-25 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2021-01-25 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 8 | **Table of contents** | ||
| 9 | |||
| 10 | 1. [Opting for log parsing](#opting-for-log-parsing) | 10 | 1. [Opting for log parsing](#opting-for-log-parsing) |
| 11 | 2. [Getting Nginx ready](#getting-nginx-ready) | 11 | 2. [Getting Nginx ready](#getting-nginx-ready) |
| 12 | 3. [Getting GoAccess ready](#getting-goaccess-ready) | 12 | 3. [Getting GoAccess ready](#getting-goaccess-ready) |
| @@ -31,10 +31,10 @@ I found this amazing software [GoAccess](https://goaccess.io/) which provides al | |||
| 31 | 31 | ||
| 32 | GoAccess can be used in two different modes. | 32 | GoAccess can be used in two different modes. |
| 33 | 33 | ||
| 34 |  | 34 |  |
| 35 | <center><i>Running in a terminal</i></center> | 35 | <center><i>Running in a terminal</i></center> |
| 36 | 36 | ||
| 37 |  | 37 |  |
| 38 | <center><i>Running in a browser</i></center> | 38 | <center><i>Running in a browser</i></center> |
| 39 | 39 | ||
| 40 | I, however, need this to run in a browser. So, the second option is the way to go. The Idea is to periodically run cronjob and export this report into a folder that gets then server by Nginx behind a Basic authentication. | 40 | I, however, need this to run in a browser. So, the second option is the way to go. The Idea is to periodically run cronjob and export this report into a folder that gets then server by Nginx behind a Basic authentication. |
diff --git a/posts/2021-06-26-simple-world-clock.md b/content/posts/2021-06-26-simple-world-clock.md index 29c199a..e06d534 100644 --- a/posts/2021-06-26-simple-world-clock.md +++ b/content/posts/2021-06-26-simple-world-clock.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Simple world clock with eInk display and Raspberry Pi Zero | 2 | title: Simple world clock with eInk display and Raspberry Pi Zero |
| 3 | Description: Simple world clockwith eInk display and Raspberry Pi Zero | 3 | url: simple-world-clock-with-eiink-display-and-raspberry-pi-zero.html |
| 4 | Slug: simple-world-clock-with-eiink-display-and-raspberry-pi-zero | 4 | date: 2021-06-26 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2021-06-26 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | Our team is spread across the world, from the USA all the way to Australia, so having some sort of world clock makes sense. | 8 | Our team is spread across the world, from the USA all the way to Australia, so having some sort of world clock makes sense. |
| @@ -15,7 +13,7 @@ But I also have a bunch of electronics that I bought through the time, and I am | |||
| 15 | 13 | ||
| 16 | A while ago I bought a small eInk display [Inky pHAT](https://shop.pimoroni.com/products/inky-phat?variant=12549254217811) and I have a bunch of [Raspberry Pi's Zero](https://www.raspberrypi.org/products/raspberry-pi-zero/) lying around that I really need to use. | 14 | A while ago I bought a small eInk display [Inky pHAT](https://shop.pimoroni.com/products/inky-phat?variant=12549254217811) and I have a bunch of [Raspberry Pi's Zero](https://www.raspberrypi.org/products/raspberry-pi-zero/) lying around that I really need to use. |
| 17 | 15 | ||
| 18 |  | 16 |  |
| 19 | 17 | ||
| 20 | Since the Inky [Inky pHAT](https://shop.pimoroni.com/products/inky-phat?variant=12549254217811) is essentially a HAT, it can easily be added on top of the [Raspberry Pi Zero](https://www.raspberrypi.org/products/raspberry-pi-zero/). | 18 | Since the Inky [Inky pHAT](https://shop.pimoroni.com/products/inky-phat?variant=12549254217811) is essentially a HAT, it can easily be added on top of the [Raspberry Pi Zero](https://www.raspberrypi.org/products/raspberry-pi-zero/). |
| 21 | 19 | ||
| @@ -80,10 +78,10 @@ Then we add a cronjob with `crontab -e`. | |||
| 80 | 78 | ||
| 81 | So, we end up with a result like this. | 79 | So, we end up with a result like this. |
| 82 | 80 | ||
| 83 |  | 81 |  |
| 84 | 82 | ||
| 85 | And for the enclosure that can be 3D printed, but I haven't yet something like this can be used. | 83 | And for the enclosure that can be 3D printed, but I haven't yet something like this can be used. |
| 86 | 84 | ||
| 87 | <iframe id="vs_iframe" src="https://www.viewstl.com/?embedded&url=https%3A%2F%2Fmitjafelicijan.com%2Fassets%2Fworld-clock%2Fenclosure.stl&color=gray&bgcolor=white&edges=no&orientation=front&noborder=no" style="border:0;margin:0;width:100%;height:400px;"></iframe> | 85 | <iframe id="vs_iframe" src="https://www.viewstl.com/?embedded&url=https%3A%2F%2Fmitjafelicijan.com%2Fassets%2Fworld-clock%2Fenclosure.stl&color=gray&bgcolor=white&edges=no&orientation=front&noborder=no" style="border:0;margin:0;width:100%;height:400px;"></iframe> |
| 88 | 86 | ||
| 89 | You can download my [STL file for the enclosure here](/assets/world-clock/enclosure.stl), but make sure that dimensions make sense and also opening for USB port should be added or just use a drill and some hot glue to make it stick in the enclosure. | 87 | You can download my [STL file for the enclosure here](/world-clock/enclosure.stl), but make sure that dimensions make sense and also opening for USB port should be added or just use a drill and some hot glue to make it stick in the enclosure. |
diff --git a/posts/2021-07-30-from-internet-consumer-to-full-hominum-again.md b/content/posts/2021-07-30-from-internet-consumer-to-full-hominum-again.md index 97691de..85b6c91 100644 --- a/posts/2021-07-30-from-internet-consumer-to-full-hominum-again.md +++ b/content/posts/2021-07-30-from-internet-consumer-to-full-hominum-again.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: My journey from being an internet über consumer to being a full hominum again | 2 | title: My journey from being an internet über consumer to being a full hominum again |
| 3 | Description: My journey from being an internet über consumer to being a full hominum again | 3 | url: from-internet-consumer-to-full-hominum-again.html |
| 4 | Slug: from-internet-consumer-to-full-hominum-again | 4 | date: 2021-07-30 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2021-07-30 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | It's been almost a year since I started purging all my online accounts and going down this rabbit hole of being almost independent of the current internet machine. Even though I initially thought that I will have problems adapting, I was pleasantly surprised that the transition went so smoothly. Even better, it brought many benefits to my life. Such as increased focus, less stress about trivial things, etc. | 8 | It's been almost a year since I started purging all my online accounts and going down this rabbit hole of being almost independent of the current internet machine. Even though I initially thought that I will have problems adapting, I was pleasantly surprised that the transition went so smoothly. Even better, it brought many benefits to my life. Such as increased focus, less stress about trivial things, etc. |
diff --git a/posts/2021-08-01-linux-cheatsheet.md b/content/posts/2021-08-01-linux-cheatsheet.md index cd9cced..126e922 100644 --- a/posts/2021-08-01-linux-cheatsheet.md +++ b/content/posts/2021-08-01-linux-cheatsheet.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: List of essential Linux commands for server management | 2 | title: List of essential Linux commands for server management |
| 3 | Description: List of essential Linux commands for server management | 3 | url: linux-cheatsheet.html |
| 4 | Slug: linux-cheatsheet | 4 | date: 2021-08-01 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2021-08-01 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | **Table of contents** | 8 | **Table of contents** |
diff --git a/posts/2021-12-03-debian-based-riced-up-distribution-for-developers.md b/content/posts/2021-12-03-debian-based-riced-up-distribution-for-developers.md index 2a97477..1f5bd89 100644 --- a/posts/2021-12-03-debian-based-riced-up-distribution-for-developers.md +++ b/content/posts/2021-12-03-debian-based-riced-up-distribution-for-developers.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Debian based riced up distribution for Developers and DevOps folks | 2 | title: Debian based riced up distribution for Developers and DevOps folks |
| 3 | Description: Debian based riced up distribution for Developers and DevOps folks | 3 | url: debian-based-riced-up-distribution-for-developers-and-devops-folks.html |
| 4 | Slug: debian-based-riced-up-distribution-for-developers-and-devops-folks | 4 | date: 2021-12-03 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2021-12-03 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | I have been using [Ubuntu](https://ubuntu.com/) for quite a longtime now. I have used [Debian](https://www.debian.org/) in the past and [Manjaro](https://manjaro.org/). Also had [Arch](https://archlinux.org/) for some time and even ran [Gentoo](https://www.gentoo.org/) way back. | 8 | I have been using [Ubuntu](https://ubuntu.com/) for quite a longtime now. I have used [Debian](https://www.debian.org/) in the past and [Manjaro](https://manjaro.org/). Also had [Arch](https://archlinux.org/) for some time and even ran [Gentoo](https://www.gentoo.org/) way back. |
| @@ -45,28 +43,28 @@ I didn't want this to just be a set of config files for theming purpose. I wante | |||
| 45 | 43 | ||
| 46 | First, I choose terminal installer and left it to load additional components. Avoid using graphical installer in this case. | 44 | First, I choose terminal installer and left it to load additional components. Avoid using graphical installer in this case. |
| 47 | 45 | ||
| 48 |  | 46 |  |
| 49 | 47 | ||
| 50 | After that I selected hostname and created a normal user and set password for that user and root user and choose guided mode for disk partitioning. | 48 | After that I selected hostname and created a normal user and set password for that user and root user and choose guided mode for disk partitioning. |
| 51 | 49 | ||
| 52 |  | 50 |  |
| 53 | 51 | ||
| 54 | I left it run to install all the things required for the base system and opted out of scanning additional media for use by the package manager. Those will be downloaded from the internet during installation. | 52 | I left it run to install all the things required for the base system and opted out of scanning additional media for use by the package manager. Those will be downloaded from the internet during installation. |
| 55 | 53 | ||
| 56 |  | 54 |  |
| 57 | 55 | ||
| 58 | 56 | ||
| 59 | I opted out of the popularity contest, and **now comes the important part**. Uncheck all the boxes in Software selection and only leave 'standard system utilities'. I also left an SSH server, so I was able to log in to the machine from my main PC. | 57 | I opted out of the popularity contest, and **now comes the important part**. Uncheck all the boxes in Software selection and only leave 'standard system utilities'. I also left an SSH server, so I was able to log in to the machine from my main PC. |
| 60 | 58 | ||
| 61 |  | 59 |  |
| 62 | 60 | ||
| 63 | At this point, I installed GRUB bootloader on the disk where I installed the system. | 61 | At this point, I installed GRUB bootloader on the disk where I installed the system. |
| 64 | 62 | ||
| 65 |  | 63 |  |
| 66 | 64 | ||
| 67 | That concluded the installation of base Debian and after restarting the computer I was prompted with the login screen. | 65 | That concluded the installation of base Debian and after restarting the computer I was prompted with the login screen. |
| 68 | 66 | ||
| 69 |  | 67 |  |
| 70 | 68 | ||
| 71 | Now that I had the base installation, it was time to choose what software do I want to include in this so-called distribution. I wanted out of the box developer experience, so I had plenty to choose. | 69 | Now that I had the base installation, it was time to choose what software do I want to include in this so-called distribution. I wanted out of the box developer experience, so I had plenty to choose. |
| 72 | 70 | ||
| @@ -86,7 +84,7 @@ One of the requirements for me was easy custom layouts because I use a really st | |||
| 86 | 84 | ||
| 87 | What I was doing in Gnome was having windows in a layout like the diagram below. This is my common practice. And if you look at it you can clearly see I was replicating tiling window manager setup in Gnome. | 85 | What I was doing in Gnome was having windows in a layout like the diagram below. This is my common practice. And if you look at it you can clearly see I was replicating tiling window manager setup in Gnome. |
| 88 | 86 | ||
| 89 |  | 87 |  |
| 90 | 88 | ||
| 91 | 89 | ||
| 92 | That made me look into a bunch of tiling window managers and then tested them out. Candidates I was looking at were: | 90 | That made me look into a bunch of tiling window managers and then tested them out. Candidates I was looking at were: |
| @@ -146,7 +144,7 @@ Currently, most of these recipes use what Debian and this is totally fine with m | |||
| 146 | 144 | ||
| 147 | This is some of the output from the installation script. | 145 | This is some of the output from the installation script. |
| 148 | 146 | ||
| 149 |  | 147 |  |
| 150 | 148 | ||
| 151 | Let's take a look at some examples in the installation script. | 149 | Let's take a look at some examples in the installation script. |
| 152 | 150 | ||
| @@ -193,4 +191,4 @@ The current version boots in 4s to the login prompt, and after you log in, the d | |||
| 193 | 191 | ||
| 194 | And this is how it looks with two terminals side by side. I really like the simplicity and clean interface. I will polish the colors and stuff like that, but I really do like the results. | 192 | And this is how it looks with two terminals side by side. I really like the simplicity and clean interface. I will polish the colors and stuff like that, but I really do like the results. |
| 195 | 193 | ||
| 196 |  | 194 |  |
diff --git a/posts/2021-12-25-running-golang-application-as-pid1.md b/content/posts/2021-12-25-running-golang-application-as-pid1.md index 9913dfb..2f49466 100644 --- a/posts/2021-12-25-running-golang-application-as-pid1.md +++ b/content/posts/2021-12-25-running-golang-application-as-pid1.md | |||
| @@ -1,12 +1,12 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Running Golang application as PID 1 with Linux kernel | 2 | title: Running Golang application as PID 1 with Linux kernel |
| 3 | Description: Running Golang application as PID 1 with Linux kernel | 3 | url: running-golang-application-as-pid1.html |
| 4 | Slug: running-golang-application-as-pid1 | 4 | date: 2021-12-25 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2021-12-25 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 8 | **Table of contents** | ||
| 9 | |||
| 10 | 1. [Unikernels, kernels, and alike](#unikernels-kernels-and-alike) | 10 | 1. [Unikernels, kernels, and alike](#unikernels-kernels-and-alike) |
| 11 | 2. [What is PID 1?](#what-is-pid-1) | 11 | 2. [What is PID 1?](#what-is-pid-1) |
| 12 | 3. [So why even run application as PID 1 instead of just using a container?](#so-why-even-run-application-as-pid-1-instead-of-just-using-a-container) | 12 | 3. [So why even run application as PID 1 instead of just using a container?](#so-why-even-run-application-as-pid-1-instead-of-just-using-a-container) |
| @@ -28,7 +28,7 @@ I really like the explanation from the article [Unikernels: Rise of the Virtual | |||
| 28 | 28 | ||
| 29 | If we compare a normal operating system to a unikernel side by side, they would look something like this. | 29 | If we compare a normal operating system to a unikernel side by side, they would look something like this. |
| 30 | 30 | ||
| 31 |  | 31 |  |
| 32 | 32 | ||
| 33 | From this image, we can see how the complexity significantly decreases with the use of Unikernels. This comes with a price, of course. Unikernels are hard to get running and require a lot of work since you don't have an actual proper kernel running in the background providing network access and drivers etc. | 33 | From this image, we can see how the complexity significantly decreases with the use of Unikernels. This comes with a price, of course. Unikernels are hard to get running and require a lot of work since you don't have an actual proper kernel running in the background providing network access and drivers etc. |
| 34 | 34 | ||
| @@ -221,7 +221,7 @@ Hello from Golang | |||
| 221 | Hello from Golang | 221 | Hello from Golang |
| 222 | ``` | 222 | ``` |
| 223 | 223 | ||
| 224 | The whole [log file here](/assets/pid1/qemu.log). | 224 | The whole [log file here](/pid1/qemu.log). |
| 225 | 225 | ||
| 226 | ## Size comparison | 226 | ## Size comparison |
| 227 | 227 | ||
| @@ -290,7 +290,7 @@ genisoimage -R \ | |||
| 290 | 290 | ||
| 291 | This will produce `GoAsPID1.iso` which you can use with [Virtualbox](https://www.virtualbox.org/) or [Gnome Boxes](https://apps.gnome.org/app/org.gnome.Boxes/). | 291 | This will produce `GoAsPID1.iso` which you can use with [Virtualbox](https://www.virtualbox.org/) or [Gnome Boxes](https://apps.gnome.org/app/org.gnome.Boxes/). |
| 292 | 292 | ||
| 293 | <video src="/assets/pid1/boxes.mp4" controls></video> | 293 | <video src="/pid1/boxes.mp4" controls></video> |
| 294 | 294 | ||
| 295 | ## Is running applications as PID 1 even worth it? | 295 | ## Is running applications as PID 1 even worth it? |
| 296 | 296 | ||
diff --git a/posts/2021-12-30-wap-mobile-web-before-the-web.md b/content/posts/2021-12-30-wap-mobile-web-before-the-web.md index f43a211..b421535 100644 --- a/posts/2021-12-30-wap-mobile-web-before-the-web.md +++ b/content/posts/2021-12-30-wap-mobile-web-before-the-web.md | |||
| @@ -1,12 +1,12 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Wireless Application Protocol and the mobile web before the web | 2 | title: Wireless Application Protocol and the mobile web before the web |
| 3 | Description: Wireless Application Protocol and the mobile web before the web | 3 | url: wap-mobile-web-before-the-web.html |
| 4 | Slug: wap-mobile-web-before-the-web | 4 | date: 2021-12-30 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2021-12-30 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 8 | **Table of contents** | ||
| 9 | |||
| 10 | 1. [A little stroll down the history lane](#a-little-stroll-down-the-history-lane) | 10 | 1. [A little stroll down the history lane](#a-little-stroll-down-the-history-lane) |
| 11 | 2. [WAP - Wireless Application Protocol](#wap---wireless-application-protocol) | 11 | 2. [WAP - Wireless Application Protocol](#wap---wireless-application-protocol) |
| 12 | 3. [WML - Wireless Markup Language](#wml---wireless-markup-language) | 12 | 3. [WML - Wireless Markup Language](#wml---wireless-markup-language) |
| @@ -29,7 +29,7 @@ These phones were rocking: | |||
| 29 | 29 | ||
| 30 | Let's take a look at these beauties. | 30 | Let's take a look at these beauties. |
| 31 | 31 | ||
| 32 |  | 32 |  |
| 33 | 33 | ||
| 34 | ## WAP - Wireless Application Protocol | 34 | ## WAP - Wireless Application Protocol |
| 35 | 35 | ||
| @@ -146,7 +146,7 @@ If you look at the python file, I convert all the images into tiny B&W images. T | |||
| 146 | 146 | ||
| 147 | Because I currently don't have a phone old enough to test it on, I used an emulator. And it was really hard to find one. I found [WAP Proof](http://wap-proof.sharewarejunction.com/) on shareware junction, and it did the job well enough. I will try to find and actual device to test it on. | 147 | Because I currently don't have a phone old enough to test it on, I used an emulator. And it was really hard to find one. I found [WAP Proof](http://wap-proof.sharewarejunction.com/) on shareware junction, and it did the job well enough. I will try to find and actual device to test it on. |
| 148 | 148 | ||
| 149 | <video src="/assets/wap/emulator.mp4" controls></video> | 149 | <video src="/wap/emulator.mp4" controls></video> |
| 150 | 150 | ||
| 151 | If you are using Nginx to serve the contents, add a directive to the hosts file that will automatically server `index.wml` file. | 151 | If you are using Nginx to serve the contents, add a directive to the hosts file that will automatically server `index.wml` file. |
| 152 | 152 | ||
diff --git a/posts/2022-06-28-sentiment-based-on-political-bias.md b/content/posts/2022-06-28-sentiment-based-on-political-bias.md index 4debfeb..5b7816c 100644 --- a/posts/2022-06-28-sentiment-based-on-political-bias.md +++ b/content/posts/2022-06-28-sentiment-based-on-political-bias.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Sentiment distribution analysis based on political bias in online publications | 2 | title: Sentiment distribution analysis based on political bias in online publications |
| 3 | Description: Sentiment based on political bias | 3 | url: sentiment-based-on-political-bias.html |
| 4 | Slug: sentiment-based-on-political-bias | 4 | date: 2022-06-28 |
| 5 | Listing: false | 5 | draft: true |
| 6 | Created: 2022-06-28 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | I have been wondering for a long time what would sentiment differences look based on political leaning from popular publications. Is it the left that is more optimistic, center or the right. | 8 | I have been wondering for a long time what would sentiment differences look based on political leaning from popular publications. Is it the left that is more optimistic, center or the right. |
diff --git a/posts/2022-06-30-trying-out-helix-editor.md b/content/posts/2022-06-30-trying-out-helix-editor.md index 9e2cc14..8286735 100644 --- a/posts/2022-06-30-trying-out-helix-editor.md +++ b/content/posts/2022-06-30-trying-out-helix-editor.md | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Trying out Helix code editor as my main editor | 2 | title: Trying out Helix code editor as my main editor |
| 3 | Description: Trying out Helix code editor as my main editor | 3 | url: tying-out-helix-code-editor.html |
| 4 | Slug: tying-out-helix-code-editor | 4 | date: 2022-06-30 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2022-06-30 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | I have been searching for a lightweight code editor for quite some time. One of the main reasons was that I wanted something that doesn't burn through CPU and RAM usage is not through the roof. I have been mostly using Visual Studio Code. It's been an outstanding editor. I have no quarrel with it at all. It's just time to spice life up with something new. | 8 | I have been searching for a lightweight code editor for quite some time. One of the main reasons was that I wanted something that doesn't burn through CPU and RAM usage is not through the roof. I have been mostly using Visual Studio Code. It's been an outstanding editor. I have no quarrel with it at all. It's just time to spice life up with something new. |
| @@ -27,7 +25,7 @@ I am still getting used to the keyboard shortcuts and getting better. What Helix | |||
| 27 | 25 | ||
| 28 | And it comes us packed with many [really good themes](https://github.com/helix-editor/helix/wiki/Themes). | 26 | And it comes us packed with many [really good themes](https://github.com/helix-editor/helix/wiki/Themes). |
| 29 | 27 | ||
| 30 |  | 28 |  |
| 31 | 29 | ||
| 32 | It's still young but has this mature feeling to it. It has sane defaults and mimics Vim (works a bit differently, but the overall idea is similar). | 30 | It's still young but has this mature feeling to it. It has sane defaults and mimics Vim (works a bit differently, but the overall idea is similar). |
| 33 | 31 | ||
diff --git a/posts/2022-07-05-what-would-dna-sound-if-synthesized.md b/content/posts/2022-07-05-what-would-dna-sound-if-synthesized.md index aa9081a..c028ec2 100644 --- a/posts/2022-07-05-what-would-dna-sound-if-synthesized.md +++ b/content/posts/2022-07-05-what-would-dna-sound-if-synthesized.md | |||
| @@ -1,12 +1,12 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: What would DNA sound if synthesized to an audio file | 2 | title: What would DNA sound if synthesized to an audio file |
| 3 | Description: What would DNA sound if synthesized | 3 | url: what-would-dna-sound-if-synthesized.html |
| 4 | Slug: what-would-dna-sound-if-synthesized | 4 | date: 2022-07-05 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2022-07-05 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 8 | **Table of contents** | ||
| 9 | |||
| 10 | 1. [Introduction](#introduction) | 10 | 1. [Introduction](#introduction) |
| 11 | 2. [DNA encoding and primer example](#dna-encoding-and-primer-example) | 11 | 2. [DNA encoding and primer example](#dna-encoding-and-primer-example) |
| 12 | 3. [Parsing DNA data](#parsing-dna-data) | 12 | 3. [Parsing DNA data](#parsing-dna-data) |
| @@ -145,10 +145,10 @@ sox output.wav -n spectrogram -o spectrogram.png | |||
| 145 | An example spectrogram of Ludwig van Beethoven Symphony No. 6 First movement. | 145 | An example spectrogram of Ludwig van Beethoven Symphony No. 6 First movement. |
| 146 | 146 | ||
| 147 | <audio controls> | 147 | <audio controls> |
| 148 | <source src="/assets/dna-synthesized/symphony-no6-1st-movement.mp3" type="audio/mpeg"> | 148 | <source src="/dna-synthesized/symphony-no6-1st-movement.mp3" type="audio/mpeg"> |
| 149 | </audio> | 149 | </audio> |
| 150 | 150 | ||
| 151 |  | 151 |  |
| 152 | 152 | ||
| 153 | The other option could also be in combination with [gnuplot](http://www.gnuplot.info/). This would require an intermediary step, however. | 153 | The other option could also be in combination with [gnuplot](http://www.gnuplot.info/). This would require an intermediary step, however. |
| 154 | 154 | ||
| @@ -194,40 +194,40 @@ What I did was take interesting parts from an animal's genome and feed it to a t | |||
| 194 | ### Niels Bohr quote | 194 | ### Niels Bohr quote |
| 195 | 195 | ||
| 196 | <audio controls> | 196 | <audio controls> |
| 197 | <source src="/assets/dna-synthesized/quote/out.mp3" type="audio/mpeg"> | 197 | <source src="/dna-synthesized/quote/out.mp3" type="audio/mpeg"> |
| 198 | </audio> | 198 | </audio> |
| 199 | 199 | ||
| 200 |  | 200 |  |
| 201 | 201 | ||
| 202 | ### Mouse | 202 | ### Mouse |
| 203 | 203 | ||
| 204 | This is part of a mouse genome `Mus_musculus.GRCm39.dna.nonchromosomal`. You can get [genom data here](http://ftp.ensembl.org/pub/release-106/fasta/mus_musculus/dna/). | 204 | This is part of a mouse genome `Mus_musculus.GRCm39.dna.nonchromosomal`. You can get [genom data here](http://ftp.ensembl.org/pub/release-106/fasta/mus_musculus/dna/). |
| 205 | 205 | ||
| 206 | <audio controls> | 206 | <audio controls> |
| 207 | <source src="/assets/dna-synthesized/mouse/out.mp3" type="audio/mpeg"> | 207 | <source src="/dna-synthesized/mouse/out.mp3" type="audio/mpeg"> |
| 208 | </audio> | 208 | </audio> |
| 209 | 209 | ||
| 210 |  | 210 |  |
| 211 | 211 | ||
| 212 | ### Bison | 212 | ### Bison |
| 213 | 213 | ||
| 214 | This is part of a bison genome `Bison_bison_bison.Bison_UMD1.0.cdna`. You can get [genom data here](http://ftp.ensembl.org/pub/release-106/fasta/bison_bison_bison/cdna/). | 214 | This is part of a bison genome `Bison_bison_bison.Bison_UMD1.0.cdna`. You can get [genom data here](http://ftp.ensembl.org/pub/release-106/fasta/bison_bison_bison/cdna/). |
| 215 | 215 | ||
| 216 | <audio controls> | 216 | <audio controls> |
| 217 | <source src="/assets/dna-synthesized/bison/out.mp3" type="audio/mpeg"> | 217 | <source src="/dna-synthesized/bison/out.mp3" type="audio/mpeg"> |
| 218 | </audio> | 218 | </audio> |
| 219 | 219 | ||
| 220 |  | 220 |  |
| 221 | 221 | ||
| 222 | ### Taurus | 222 | ### Taurus |
| 223 | 223 | ||
| 224 | This is part of a taurus genome `Bos_taurus.ARS-UCD1.2.cdna`. You can get [genom data here](http://ftp.ensembl.org/pub/release-106/fasta/bos_taurus/cdna/). | 224 | This is part of a taurus genome `Bos_taurus.ARS-UCD1.2.cdna`. You can get [genom data here](http://ftp.ensembl.org/pub/release-106/fasta/bos_taurus/cdna/). |
| 225 | 225 | ||
| 226 | <audio controls> | 226 | <audio controls> |
| 227 | <source src="/assets/dna-synthesized/taurus/out.mp3" type="audio/mpeg"> | 227 | <source src="/dna-synthesized/taurus/out.mp3" type="audio/mpeg"> |
| 228 | </audio> | 228 | </audio> |
| 229 | 229 | ||
| 230 |  | 230 |  |
| 231 | 231 | ||
| 232 | ## Making a drummer out of a DNA sequence | 232 | ## Making a drummer out of a DNA sequence |
| 233 | 233 | ||
| @@ -235,17 +235,17 @@ To make things even more interesting, I decided to send this data via MIDI to my | |||
| 235 | 235 | ||
| 236 | Elektron is connected to my MacBook via USB cable and audio out is patched to a Sony Bluetooth speaker I have that supports 3.5 mm audio in. Elektron doesn't have internal speakers. | 236 | Elektron is connected to my MacBook via USB cable and audio out is patched to a Sony Bluetooth speaker I have that supports 3.5 mm audio in. Elektron doesn't have internal speakers. |
| 237 | 237 | ||
| 238 |  | 238 |  |
| 239 | 239 | ||
| 240 |  | 240 |  |
| 241 | 241 | ||
| 242 |  | 242 |  |
| 243 | 243 | ||
| 244 | For communicating with Elektron, I choose `pygame` Python module that has MIDI built in. With this, it was rather simple to send notes to the device. All I did was map MIDI notes to the actual Nucleotides. | 244 | For communicating with Elektron, I choose `pygame` Python module that has MIDI built in. With this, it was rather simple to send notes to the device. All I did was map MIDI notes to the actual Nucleotides. |
| 245 | 245 | ||
| 246 | Before all of this I also checked Audio MIDI Setup app under MacOS and checked MIDI Studio by pressing ⌘-2. | 246 | Before all of this I also checked Audio MIDI Setup app under MacOS and checked MIDI Studio by pressing ⌘-2. |
| 247 | 247 | ||
| 248 |  | 248 |  |
| 249 | 249 | ||
| 250 | The whole script that parses and send notes to the Elektron looks like this. | 250 | The whole script that parses and send notes to the Elektron looks like this. |
| 251 | 251 | ||
| @@ -287,7 +287,7 @@ del player | |||
| 287 | pygame.midi.quit() | 287 | pygame.midi.quit() |
| 288 | ``` | 288 | ``` |
| 289 | 289 | ||
| 290 | <video src="/assets/dna-synthesized/elektron/elektron.mp4" controls></video> | 290 | <video src="/dna-synthesized/elektron/elektron.mp4" controls></video> |
| 291 | 291 | ||
| 292 | All of this could be made much more interesting if I choose different instruments for different Nucleotides, or doing more funky stuff with Elektron. But for now, this should be enough. It is just a proof of concept. Something to play around with. | 292 | All of this could be made much more interesting if I choose different instruments for different Nucleotides, or doing more funky stuff with Elektron. But for now, this should be enough. It is just a proof of concept. Something to play around with. |
| 293 | 293 | ||
diff --git a/posts/2022-08-13-algae-spotted-on-river-sava.md b/content/posts/2022-08-13-algae-spotted-on-river-sava.md index dcfc9cd..2a7e6cd 100644 --- a/posts/2022-08-13-algae-spotted-on-river-sava.md +++ b/content/posts/2022-08-13-algae-spotted-on-river-sava.md | |||
| @@ -1,26 +1,24 @@ | |||
| 1 | --- | 1 | --- |
| 2 | Title: Aerial photography of algae spotted on river Sava | 2 | title: Aerial photography of algae spotted on river Sava |
| 3 | Description: Aerial photography of algae spotted on river Sava | 3 | url: aerial-photography-of-algae-spotted-on-river-sava.html |
| 4 | Slug: aerial-photography-of-algae-spotted-on-river-sava | 4 | date: 2022-08-13 |
| 5 | Listing: true | 5 | draft: false |
| 6 | Created: 2022-08-13 | ||
| 7 | Tags: [] | ||
| 8 | --- | 6 | --- |
| 9 | 7 | ||
| 10 | This is a bit of a different post than I usually write, but quite interesting one to me. River Sava has plenty of hydropower plants located down the stream. This makes regulating the strength of a current easier than normally. Because of lower stream strength and high temperatures, algae has formed on the river. This is the first time I've seen something like this in my whole life. | 8 | This is a bit of a different post than I usually write, but quite interesting one to me. River Sava has plenty of hydropower plants located down the stream. This makes regulating the strength of a current easier than normally. Because of lower stream strength and high temperatures, algae has formed on the river. This is the first time I've seen something like this in my whole life. |
| 11 | 9 | ||
| 12 | Below are some photographs taken from a DJI drone capturing the event. | 10 | Below are some photographs taken from a DJI drone capturing the event. |
| 13 | 11 | ||
| 14 |  | 12 |  |
| 15 | 13 | ||
| 16 |  | 14 |  |
| 17 | 15 | ||
| 18 |  | 16 |  |
| 19 | 17 | ||
| 20 |  | 18 |  |
| 21 | 19 | ||
| 22 |  | 20 |  |
| 23 | 21 | ||
| 24 |  | 22 |  |
| 25 | 23 | ||
| 26 | I will try to get more photos of this in the future days and if something intriguing shows up will post it again on the blog. | 24 | I will try to get more photos of this in the future days and if something intriguing shows up will post it again on the blog. |
diff --git a/data/.gitkeep b/data/.gitkeep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/data/.gitkeep | |||
diff --git a/layouts/.gitkeep b/layouts/.gitkeep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/layouts/.gitkeep | |||
diff --git a/static/.gitkeep b/static/.gitkeep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/static/.gitkeep | |||
diff --git a/assets/algae-sava/dji-algae-0.jpg b/static/algae-sava/dji-algae-0.jpg index d444c80..d444c80 100644 --- a/assets/algae-sava/dji-algae-0.jpg +++ b/static/algae-sava/dji-algae-0.jpg | |||
| Binary files differ | |||
diff --git a/assets/algae-sava/dji-algae-1.jpg b/static/algae-sava/dji-algae-1.jpg index 26ee43c..26ee43c 100644 --- a/assets/algae-sava/dji-algae-1.jpg +++ b/static/algae-sava/dji-algae-1.jpg | |||
| Binary files differ | |||
diff --git a/assets/algae-sava/dji-algae-2.jpg b/static/algae-sava/dji-algae-2.jpg index d38f8cd..d38f8cd 100644 --- a/assets/algae-sava/dji-algae-2.jpg +++ b/static/algae-sava/dji-algae-2.jpg | |||
| Binary files differ | |||
diff --git a/assets/algae-sava/dji-algae-3.jpg b/static/algae-sava/dji-algae-3.jpg index 9706fa0..9706fa0 100644 --- a/assets/algae-sava/dji-algae-3.jpg +++ b/static/algae-sava/dji-algae-3.jpg | |||
| Binary files differ | |||
diff --git a/assets/algae-sava/dji-algae-4.jpg b/static/algae-sava/dji-algae-4.jpg index b0db4a2..b0db4a2 100644 --- a/assets/algae-sava/dji-algae-4.jpg +++ b/static/algae-sava/dji-algae-4.jpg | |||
| Binary files differ | |||
diff --git a/assets/algae-sava/dji-algae-5.jpg b/static/algae-sava/dji-algae-5.jpg index f3c1b3b..f3c1b3b 100644 --- a/assets/algae-sava/dji-algae-5.jpg +++ b/static/algae-sava/dji-algae-5.jpg | |||
| Binary files differ | |||
diff --git a/assets/cv/avatar.gif b/static/cv/avatar.gif index 82e5f39..82e5f39 100644 --- a/assets/cv/avatar.gif +++ b/static/cv/avatar.gif | |||
| Binary files differ | |||
diff --git a/assets/dfd-rice/desktop.png b/static/dfd-rice/desktop.png index 8dcfd51..8dcfd51 100644 --- a/assets/dfd-rice/desktop.png +++ b/static/dfd-rice/desktop.png | |||
| Binary files differ | |||
diff --git a/assets/dfd-rice/install-00.png b/static/dfd-rice/install-00.png index 2660f90..2660f90 100644 --- a/assets/dfd-rice/install-00.png +++ b/static/dfd-rice/install-00.png | |||
| Binary files differ | |||
diff --git a/assets/dfd-rice/install-01.png b/static/dfd-rice/install-01.png index 1281be1..1281be1 100644 --- a/assets/dfd-rice/install-01.png +++ b/static/dfd-rice/install-01.png | |||
| Binary files differ | |||
diff --git a/assets/dfd-rice/install-02.png b/static/dfd-rice/install-02.png index 9cac5e3..9cac5e3 100644 --- a/assets/dfd-rice/install-02.png +++ b/static/dfd-rice/install-02.png | |||
| Binary files differ | |||
diff --git a/assets/dfd-rice/install-03.png b/static/dfd-rice/install-03.png index dc7cbd1..dc7cbd1 100644 --- a/assets/dfd-rice/install-03.png +++ b/static/dfd-rice/install-03.png | |||
| Binary files differ | |||
diff --git a/assets/dfd-rice/install-04.png b/static/dfd-rice/install-04.png index 675a78f..675a78f 100644 --- a/assets/dfd-rice/install-04.png +++ b/static/dfd-rice/install-04.png | |||
| Binary files differ | |||
diff --git a/assets/dfd-rice/install-05.png b/static/dfd-rice/install-05.png index 8b580b9..8b580b9 100644 --- a/assets/dfd-rice/install-05.png +++ b/static/dfd-rice/install-05.png | |||
| Binary files differ | |||
diff --git a/assets/dfd-rice/installation.svg b/static/dfd-rice/installation.svg index 200b71b..bb9560b 100644 --- a/assets/dfd-rice/installation.svg +++ b/static/dfd-rice/installation.svg | |||
| @@ -1,55 +1,12 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| 2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | 2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> |
| 3 | 3 | ||
| 4 | <svg | 4 | <svg width="210mm" height="297mm" viewBox="0 0 210 297" version="1.1" id="svg5" inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)" sodipodi:docname="installation.svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"> |
| 5 | width="210mm" | 5 | <sodipodi:namedview id="namedview7" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageshadow="2" inkscape:pageopacity="0.0" inkscape:pagecheckerboard="0" inkscape:document-units="mm" showgrid="false" inkscape:zoom="0.093984989" inkscape:cx="-883.11975" inkscape:cy="1877.9595" inkscape:window-width="1462" inkscape:window-height="940" inkscape:window-x="1725" inkscape:window-y="74" inkscape:window-maximized="0" inkscape:current-layer="layer1" /> |
| 6 | height="297mm" | 6 | <defs id="defs2" /> |
| 7 | viewBox="0 0 210 297" | 7 | <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1"> |
| 8 | version="1.1" | 8 | <g id="g368" transform="translate(76.329351,109.97993)" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/dfd-rice/install-01.png" inkscape:export-xdpi="75" inkscape:export-ydpi="75"> |
| 9 | id="svg5" | 9 | <image width="169.33334" height="127" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAd |
| 10 | inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)" | ||
| 11 | sodipodi:docname="installation.svg" | ||
| 12 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
| 13 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
| 14 | xmlns:xlink="http://www.w3.org/1999/xlink" | ||
| 15 | xmlns="http://www.w3.org/2000/svg" | ||
| 16 | xmlns:svg="http://www.w3.org/2000/svg"> | ||
| 17 | <sodipodi:namedview | ||
| 18 | id="namedview7" | ||
| 19 | pagecolor="#ffffff" | ||
| 20 | bordercolor="#666666" | ||
| 21 | borderopacity="1.0" | ||
| 22 | inkscape:pageshadow="2" | ||
| 23 | inkscape:pageopacity="0.0" | ||
| 24 | inkscape:pagecheckerboard="0" | ||
| 25 | inkscape:document-units="mm" | ||
| 26 | showgrid="false" | ||
| 27 | inkscape:zoom="0.093984989" | ||
| 28 | inkscape:cx="-883.11975" | ||
| 29 | inkscape:cy="1877.9595" | ||
| 30 | inkscape:window-width="1462" | ||
| 31 | inkscape:window-height="940" | ||
| 32 | inkscape:window-x="1725" | ||
| 33 | inkscape:window-y="74" | ||
| 34 | inkscape:window-maximized="0" | ||
| 35 | inkscape:current-layer="layer1" /> | ||
| 36 | <defs | ||
| 37 | id="defs2" /> | ||
| 38 | <g | ||
| 39 | inkscape:label="Layer 1" | ||
| 40 | inkscape:groupmode="layer" | ||
| 41 | id="layer1"> | ||
| 42 | <g | ||
| 43 | id="g368" | ||
| 44 | transform="translate(76.329351,109.97993)" | ||
| 45 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/dfd-rice/install-01.png" | ||
| 46 | inkscape:export-xdpi="75" | ||
| 47 | inkscape:export-ydpi="75"> | ||
| 48 | <image | ||
| 49 | width="169.33334" | ||
| 50 | height="127" | ||
| 51 | preserveAspectRatio="none" | ||
| 52 | xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAd | ||
| 53 | X0lEQVR4nO3dvbqjOKIFUNf9KujHm9CP6HAeb4IJbnCm3RQ/sgQbI2CtrwMXxpIQAvYR2P3r8Xg9 | 10 | X0lEQVR4nO3dvbqjOKIFUNf9KujHm9CP6HAeb4IJbnCm3RQ/sgQbI2CtrwMXxpIQAvYR2P3r8Xg9 |
| 54 | AADI+b+jGwAAcDUCFgBAmIAFABAmYAEAhAlYAABhAhYAQJiABQAQJmABAIQJWAAAYQIWAECYgAUA | 11 | AADI+b+jGwAAcDUCFgBAmIAFABAmYAEAhAlYAABhAhYAQJiABQAQJmABAIQJWAAAYQIWAECYgAUA |
| 55 | ECZgAQCECVgAAGECFgBAmIAFABAmYAEAhAlYAABhAhYAQJiABQAQJmABAIQJWAAAYQIWAECYgAUA | 12 | ECZgAQCECVgAAGECFgBAmIAFABAmYAEAhAlYAABhAhYAQJiABQAQJmABAIQJWAAAYQIWAECYgAUA |
| @@ -183,18 +140,8 @@ WKfD+4N//f73dKv/899/NfXDbAmZ9q2yop9n++FAO+2XY3U4/vfW27hqdfb2A8f644dGV5xNKrPF | |||
| 183 | n9FFtLy95X6ePumy9355TK6dNVVsb+eW/VIzHpba+VjYX631LpUfPL6ajovC9ja1s6Yxle0HmPr1 | 140 | n9FFtLy95X6ePumy9355TK6dNVVsb+eW/VIzHpba+VjYX631LpUfPL6ajovC9ja1s6Yxle0HmPr1 |
| 184 | eLyObkNf9ptsu+FNoiC9B0CXnrNL/c+ex1zF+2S/AAAAAAAAAAAAAAAAAAAAAAAAAAAU/T9NrMo+ | 141 | eLyObkNf9ptsu+FNoiC9B0CXnrNL/c+ex1zF+2S/AAAAAAAAAAAAAAAAAAAAAAAAAAAU/T9NrMo+ |
| 185 | adlPnAAAAABJRU5ErkJggg== | 142 | adlPnAAAAABJRU5ErkJggg== |
| 186 | " | 143 | " id="image41" x="-234.20293" y="-199.01341" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/dfd-rice/install-01.png" inkscape:export-xdpi="75" inkscape:export-ydpi="75" /> |
| 187 | id="image41" | 144 | <image width="169.33334" height="127" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAg |
| 188 | x="-234.20293" | ||
| 189 | y="-199.01341" | ||
| 190 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/dfd-rice/install-01.png" | ||
| 191 | inkscape:export-xdpi="75" | ||
| 192 | inkscape:export-ydpi="75" /> | ||
| 193 | <image | ||
| 194 | width="169.33334" | ||
| 195 | height="127" | ||
| 196 | preserveAspectRatio="none" | ||
| 197 | xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAg | ||
| 198 | AElEQVR4nO3dzZKjuLYGUPJGDfrxeuhH9PA83hn04A582kUBkiWxBQKvFR0dLieWNuLvS8DkzzQ9 | 145 | AElEQVR4nO3dzZKjuLYGUPJGDfrxeuhH9PA83hn04A582kUBkiWxBQKvFR0dLieWNuLvS8DkzzQ9 |
| 199 | JwAA4vzf2QUAANyNgAUAEEzAAgAIJmABAAQTsAAAgglYAADBBCwAgGACFgBAMAELACCYgAUAEEzA | 146 | JwAA4vzf2QUAANyNgAUAEEzAAgAIJmABAAQTsAAAgglYAADBBCwAgGACFgBAMAELACCYgAUAEEzA |
| 200 | AgAIJmABAAQTsAAAgglYAADBBCwAgGACFgBAMAELACCYgAUAEEzAAgAIJmABAAQTsAAAgglYAADB | 147 | AgAIJmABAAQTsAAAgglYAADBBCwAgGACFgBAMAELACCYgAUAEEzAAgAIJmABAAQTsAAAgglYAADB |
| @@ -361,25 +308,10 @@ vqGvBoHrYdRyPMvV6wdG8Ps5WOX3arQZ8PrgX7/+s57r//7zd9U4bLYQU1+ThnHeHIcTdVou5xpw | |||
| 361 | v/791lXmZur1+KTGs7b+2nFuGJ/FQTQ/v/lxXt/p0nu5TKtjZ0kX++vcs1xK1odUnVNiedX2m2o/ | 308 | v/791lXmZur1+KTGs7b+2nFuGJ/FQTQ/v/lxXt/p0nu5TKtjZ0kX++vcs1xK1odUnVNiedX2m2o/ |
| 362 | cPuq2i4y81tVZ0kxhfUDrP1M0/PsGsbS72TbF14kCmT0ABjSY/Ndf+x5yVF8TJYLAAAAAAAAAAAA | 309 | cPuq2i4y81tVZ0kxhfUDrP1M0/PsGsbS72TbF14kCmT0ABjSY/Ndf+x5yVF8TJYLAAAAAAAAAAAA |
| 363 | AAAAAAAAAAAAAEDW/wMXMWZMdK+KTQAAAABJRU5ErkJggg== | 310 | AAAAAAAAAAAAAEDW/wMXMWZMdK+KTQAAAABJRU5ErkJggg== |
| 364 | " | 311 | " id="image69" x="-64.869583" y="-199.01341" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/dfd-rice/install-01.png" inkscape:export-xdpi="75" inkscape:export-ydpi="75" /> |
| 365 | id="image69" | 312 | </g> |
| 366 | x="-64.869583" | 313 | <g id="g372" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/dfd-rice/install-02.png" inkscape:export-xdpi="75" inkscape:export-ydpi="75" transform="translate(407.41482,-79.959051)"> |
| 367 | y="-199.01341" | 314 | <image width="169.33334" height="127" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAO |
| 368 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/dfd-rice/install-01.png" | ||
| 369 | inkscape:export-xdpi="75" | ||
| 370 | inkscape:export-ydpi="75" /> | ||
| 371 | </g> | ||
| 372 | <g | ||
| 373 | id="g372" | ||
| 374 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/dfd-rice/install-02.png" | ||
| 375 | inkscape:export-xdpi="75" | ||
| 376 | inkscape:export-ydpi="75" | ||
| 377 | transform="translate(407.41482,-79.959051)"> | ||
| 378 | <image | ||
| 379 | width="169.33334" | ||
| 380 | height="127" | ||
| 381 | preserveAspectRatio="none" | ||
| 382 | xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAO | ||
| 383 | fElEQVR4nO3dwXaqZgNAUdOVQR+vQx6RYR+vgw7+Qbr8jQqCHoWYvVcHXoJ8BJPLuR9oPw6H8QAA | 315 | fElEQVR4nO3dwXaqZgNAUdOVQR+vQx6RYR+vgw7+Qbr8jQqCHoWYvVcHXoJ8BJPLuR9oPw6H8QAA |
| 384 | QOePrXcAAODdCCwAgJjAAgCICSwAgJjAAgCICSwAgJjAAgCICSwAgJjAAgCICSwAgJjAAgCICSwA | 316 | QOePrXcAAODdCCwAgJjAAgCICSwAgJjAAgCICSwAgJjAAgCICSwAgJjAAgCICSwAgJjAAgCICSwA |
| 385 | gJjAAgCICSwAgJjAAgCICSwAgJjAAgCICSwAgJjAAgCICSwAgJjAAgCICSwAgJjAAgCICSwAgJjA | 317 | gJjAAgCICSwAgJjAAgCICSwAgJjAAgCICSwAgJjAAgCICSwAgJjAAgCICSwAgJjAAgCICSwAgJjA |
| @@ -446,18 +378,8 @@ FgBATGABAMQEFgBATGABAMQEFgBATGABAMQEFgBATGABAMQEFgBATGABAMQEFgBATGABAMQEFgBA | |||
| 446 | TGABAMQEFgBATGABAMQEFgBA7HPrHQAA+LmGq0vNYAEAxAQWAEBMYAEAxAQWAEBMYAEAxAQWAEBM | 378 | TGABAMQEFgBATGABAMQEFgBA7HPrHQAA+LmGq0vNYAEAxAQWAEBMYAEAxAQWAEBMYAEAxAQWAEBM |
| 447 | YAEAxAQWAEBMYAEAxAQWAEBMYAEAxAQWAEBMYAEAxAQWAEBMYAEAAAAAAAAAAAAAAAAAAAAAAAAA | 379 | YAEAxAQWAEBMYAEAxAQWAEBMYAEAxAQWAEBMYAEAxAQWAEBMYAEAAAAAAAAAAAAAAAAAAAAAAAAA |
| 448 | wBv4H+xMBAXacnSYAAAAAElFTkSuQmCC | 380 | wBv4H+xMBAXacnSYAAAAAElFTkSuQmCC |
| 449 | " | 381 | " id="image81" x="-565.28839" y="184.09018" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/dfd-rice/install-02.png" inkscape:export-xdpi="75" inkscape:export-ydpi="75" /> |
| 450 | id="image81" | 382 | <image width="169.33333" height="127" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAg |
| 451 | x="-565.28839" | ||
| 452 | y="184.09018" | ||
| 453 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/dfd-rice/install-02.png" | ||
| 454 | inkscape:export-xdpi="75" | ||
| 455 | inkscape:export-ydpi="75" /> | ||
| 456 | <image | ||
| 457 | width="169.33333" | ||
| 458 | height="127" | ||
| 459 | preserveAspectRatio="none" | ||
| 460 | xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAg | ||
| 461 | AElEQVR4nO3dwbKjOLYFUOeLHPTn9dCf6GF/Xg968Aa3ykUaJEuwAWGvFR0dTl8sHQSIbbBdv263 | 383 | AElEQVR4nO3dwbKjOLYFUOeLHPTn9dCf6GF/Xg968Aa3ykUaJEuwAWGvFR0dTl8sHQSIbbBdv263 |
| 462 | xw0AgJz/O7sAAIBPI2ABAIQJWAAAYQIWAECYgAUAECZgAQCECVgAAGECFgBAmIAFABAmYAEAhAlY | 384 | xw0AgJz/O7sAAIBPI2ABAIQJWAAAYQIWAECYgAUAECZgAQCECVgAAGECFgBAmIAFABAmYAEAhAlY |
| 463 | AABhAhYAQJiABQAQJmABAIQJWAAAYQIWAECYgAUAECZgAQCECVgAAGECFgBAmIAFABAmYAEAhAlY | 385 | AABhAhYAQJiABQAQJmABAIQJWAAAYQIWAECYgAUAECZgAQCECVgAAGECFgBAmIAFABAmYAEAhAlY |
| @@ -626,54 +548,14 @@ DS33VqbnrZdz2Muffh6k0tW8r3XL97bTXtu//v7WVeXD1PPxKY1nb/2947xifF5OovX1rY/z/JMu | |||
| 626 | e2+X2+zc2dLF9jq3bJeW/aFU562wvXr7LbUfPL66jovK+nbV2VJMY/0Ac79ut8fZNYxlv4ttX3iT | 548 | e2+X2+zc2dLF9jq3bJeW/aFU562wvXr7LbUfPL66jovK+nbV2VJMY/0Ac79ut8fZNYxlv4ttX3iT |
| 627 | KMjoATCk++Kz/mPPr5zFx2S7AAAAAAAAAAAAAAAAAAAAAAAAAABU/T+x9xtLJOr2IAAAAABJRU5E | 549 | KMjoATCk++Kz/mPPr5zFx2S7AAAAAAAAAAAAAAAAAAAAAAAAAABU/T+x9xtLJOr2IAAAAABJRU5E |
| 628 | rkJggg== | 550 | rkJggg== |
| 629 | " | 551 | " id="image93" x="-395.95505" y="184.09018" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/dfd-rice/install-02.png" inkscape:export-xdpi="75" inkscape:export-ydpi="75" /> |
| 630 | id="image93" | 552 | </g> |
| 631 | x="-395.95505" | 553 | <g id="g364" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/dfd-rice/install-00.png" inkscape:export-xdpi="75" inkscape:export-ydpi="75" transform="translate(456.74601,90.184622)"> |
| 632 | y="184.09018" | 554 | <image width="169.33333" height="127" preserveAspectRatio="none" xlink:href="data:image/png;base64,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 " id="image17-3" x="-614.61957" y="-372.38272" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/dfd-rice/install-00.png" inkscape:export-xdpi="75" inkscape:export-ydpi="75" /> |
| 633 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/dfd-rice/install-02.png" | 555 | <image width="169.33334" height="127" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAP jElEQVR4nO3dwZai2gFAUTurBvm8DP1Eh/m8DDLIoFZ8PgQK8KBo7b0yqK5GuIIt513Q/DmdLicA ADr/ePUAAAA+jcACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMAC AIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJ LACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACA mMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMAC AIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJ LACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACA mMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMAC AIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJ LACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACA mMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMAC AIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJ LACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACA mMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMAC AIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJ LACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACA mMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMAC AIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJ LACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACA mMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACA2Nfa B1wuewwDjut8Pl+87vmtvP75bc7nZj1msAAAYgILACAmsODY7merq/nrbaa2/vg4X/u8AFICCyL6 YIlX7aXz+XcdoF/1ZOGQBBa8m213HD//jLt2nLveSe02beC5Vn+KEFjtNm5uz/Q//v4+C77/arDw 5TL+kJn1bBvnYD1rxzn1V/O/HGxiyfMdHdJyq47X7Uhun8XacVbLz+znav8ACzwUWGez0PCj7xPh /R+X/P7+n9jtOXV0E1Pr+fGEunY8a8c5+qxnlp8az9TPM8uvsvZ4ne6e2vwhCJ/X6M9T+/mB/eOt nt8g/zqSR2ewfD8KH2+vs8uSfzujObVtVclKpsazcJyVqUR72rZ2euwzL6queaz3eT7eHu/zLhHC 6xxtYuBo41nr3cc/JXlegyuYwM4EFrzI/SWb1tQNPa8az97effwzqiS6Xj0M1wlMEFjw0ZxHGZi/ GQ6I+JoGOIDl3965Yc0bvgJq7XiONl0UjueRVe2xWzav82jHCD6dGSzojH5ubnAD+O1Hz+4/4T/z 8+36l1zlWfupsbXj2TbO0TuBRpef2m9rxz8/nvn1nCaO15Lx3A9p23o2bPc0tp+3rQfY6s/ptO6f 2d/fFf2/rPP53vV1Xn1tAdt8yg5/19c/rHH7Oq9me81gwYcyYwHwOgILfvDG//n+viP/AJ+y89/4 9Q8bTU1hrfu34CZ3AICYwAIAiAksAICYwAIAiAksAICYwAIAiAksAICYwAIAiAksAICYwAIAiAks AICYwAIAiAksAICYwAIAiAksAIDY1+5bOJ933wRwbOfT5dVDAH6py4vefsxgAQDEBBYAQExgAQDE BBZwFP/5778Gf7z+7/73U48COIL9b3IHWOC+ov759e/7Pw5+GCwGcBBmsIDX00nAhzGDBbzYqrr6 nrW6/iDLgGMSWMArTUXSNaSufxz8rK6AIxNYwBFN3YMF8BYEFvBig48ELgmp6x3up79PbgEchMAC XmnDNNXg84Mmt4AD8ilCAICYGSzgiKZucr/OV7lECByZwAKOYpBKU58unF8A4AhcIgQAiO0/g3W5 7L4J4Ni8CwC/jRksAICYwAIAiAksAICYwAIAiAksAICYwAIAiAksAICYwAIAiAksAICYwAIAiAks AICYwAIAiAksAICYwAIAiAksAICYwAIAiAksAICYwAIAiH1UYJ3P50OtZ+0mzufzEzY95YWbZsbe x+V+/V4JAI/7esI2Bu/Xl8tl4aMWLvkZ3uX5fh/NPYZ6f15/5KWydpyrlr8d6pOP2nXTo9t9l1cR wMd7RmCd/n4y2O8cUK1223pWPa/3PQteLpf9Zjg27JapucDvVS08KKuWHyzzzKaZ31Z1XN73xQlw HE8KrCmjMwHXXw4mFb7PLlP/BT86AzG1/pkT5P16ZrY7P50wZflkyaqZktvB3O+60fVMPam1AfHj +peMf4PBobn95XWjP45/7fLbxnn9+f6gzByv5QdidFf8OJ7HZ/4AGPXKwJo6kc/MJdz+crDA/Il2 aoX3Rs9So9udGcyqTcwH5arxDwZ2PemOrmcw/oWDv7dk/QvHv9ZbdMDMfvjxeC0PplUXQ2fWv+sM JcDv8aTAqmYyXnVC3XW7Cy9O7T2GvU+r+Yzdq6zdVw++4Edb/DQd4o+sH4DKU+/Buj8TPPLmvvaE ffvAtffovMT9laNvm28G38/Mfj4tHv/9Yq99XjP7efQy6Mzye9wdteTS58zDAdjVUy8R3l+u2vsd /2mzPjtt6FqBp4mz+0FMDeldxj9q7Tinlh+9ya81mOUaDVYAnunFN7l/gCecxo4/2Tbv3cd/cHvf 6AbABs/+otGZez72vhdkcP/K+XxOzkbn/3twPaNrzte5dlsbxjBzyWzbGK5/u3CFt6+x0avSg/XM L//jmNcuv3zhDcuv5QYsgJ28cgZrEFuDE9XUHTyjRj+IN7/+5euZWXjXyYMN41+1nsElzh9/Pq3c z2vHHx6vVS+eDcuvujQ8sz9XLb/H62HJ8QVggz+n09obTf76+Zdfj1gbWG9xZz0A/DbLvh9n3Ynb PVjbbZ6hUVcA8NkE1kOqD5oBAJ/k2Te5AwB8PIEFABATWAAAMYEFABATWAAAMYEFABATWAAAMYEF ABATWAAAMYEFABATWAAAMYEFABATWAAAMYEFABATWAAAMYEFABATWAAAMYEFABATWAAAMYEFABAT WAAAMYEFABD7evDx5/M5GQcAwMd4KLAul0s1DgCAj+ESIQBATGABAMQEFgBATGABAMQEFgBATGAB AMQEFgBA7M/pVH2XlW8cBQA+1bpeMoMFABATWAAAMYEFABATWAAAMYEFABATWAAAMYEFABATWAAA MYEFABATWAAAMYEFABATWAAAMYEFABATWAAAMYEFABD7czpdXj0GAICPYgYLACAmsAAAYgILACAm sAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAA YgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgIL ACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAm sAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAA YgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgIL ACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAm sAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAA YgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgIL ACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAm sAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAA YgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgIL ACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAm sAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAA YgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgIL ACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAm sAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAA YgILACD29eoBAAC8r/Pob81gAQDEBBYAQExgAQDEBBYAQExgAQDEBBYAQExgAQDEBBYAQExgAQDE BBYAQExgAQDEBBYAQExgAQDEBBYAQExgAQAAAAAAAAAAAAAAAAAAAAAAAADAB/gfm8Fj1ALsE0sA AAAASUVORK5CYII= " id="image29-6" x="-445.28625" y="-372.38272" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/dfd-rice/install-00.png" inkscape:export-xdpi="75" inkscape:export-ydpi="75" /> |
| 634 | inkscape:export-xdpi="75" | 556 | </g> |
| 635 | inkscape:export-ydpi="75" /> | 557 | <g id="g513" transform="translate(1043.4871,32.342183)" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/dfd-rice/install-03.png" inkscape:export-xdpi="75" inkscape:export-ydpi="75"> |
| 636 | </g> | 558 | <image width="169.38" height="127.035" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAg |
| 637 | <g | ||
| 638 | id="g364" | ||
| 639 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/dfd-rice/install-00.png" | ||
| 640 | inkscape:export-xdpi="75" | ||
| 641 | inkscape:export-ydpi="75" | ||
| 642 | transform="translate(456.74601,90.184622)"> | ||
| 643 | <image | ||
| 644 | width="169.33333" | ||
| 645 | height="127" | ||
| 646 | preserveAspectRatio="none" | ||
| 647 | xlink:href="data:image/png;base64,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 " | ||
| 648 | id="image17-3" | ||
| 649 | x="-614.61957" | ||
| 650 | y="-372.38272" | ||
| 651 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/dfd-rice/install-00.png" | ||
| 652 | inkscape:export-xdpi="75" | ||
| 653 | inkscape:export-ydpi="75" /> | ||
| 654 | <image | ||
| 655 | width="169.33334" | ||
| 656 | height="127" | ||
| 657 | preserveAspectRatio="none" | ||
| 658 | xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAP jElEQVR4nO3dwZai2gFAUTurBvm8DP1Eh/m8DDLIoFZ8PgQK8KBo7b0yqK5GuIIt513Q/DmdLicA ADr/ePUAAAA+jcACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMAC AIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJ LACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACA mMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMAC AIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJ LACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACA mMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMAC AIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJ LACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACA mMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMAC AIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJ LACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACA mMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMAC AIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJ LACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACA mMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMAC AIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJ LACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACA mMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACAmMACAIgJLACA2Nfa B1wuewwDjut8Pl+87vmtvP75bc7nZj1msAAAYgILACAmsODY7merq/nrbaa2/vg4X/u8AFICCyL6 YIlX7aXz+XcdoF/1ZOGQBBa8m213HD//jLt2nLveSe02beC5Vn+KEFjtNm5uz/Q//v4+C77/arDw 5TL+kJn1bBvnYD1rxzn1V/O/HGxiyfMdHdJyq47X7Uhun8XacVbLz+znav8ACzwUWGez0PCj7xPh /R+X/P7+n9jtOXV0E1Pr+fGEunY8a8c5+qxnlp8az9TPM8uvsvZ4ne6e2vwhCJ/X6M9T+/mB/eOt nt8g/zqSR2ewfD8KH2+vs8uSfzujObVtVclKpsazcJyVqUR72rZ2euwzL6queaz3eT7eHu/zLhHC 6xxtYuBo41nr3cc/JXlegyuYwM4EFrzI/SWb1tQNPa8az97effwzqiS6Xj0M1wlMEFjw0ZxHGZi/ GQ6I+JoGOIDl3965Yc0bvgJq7XiONl0UjueRVe2xWzav82jHCD6dGSzojH5ubnAD+O1Hz+4/4T/z 8+36l1zlWfupsbXj2TbO0TuBRpef2m9rxz8/nvn1nCaO15Lx3A9p23o2bPc0tp+3rQfY6s/ptO6f 2d/fFf2/rPP53vV1Xn1tAdt8yg5/19c/rHH7Oq9me81gwYcyYwHwOgILfvDG//n+viP/AJ+y89/4 9Q8bTU1hrfu34CZ3AICYwAIAiAksAICYwAIAiAksAICYwAIAiAksAICYwAIAiAksAICYwAIAiAks AICYwAIAiAksAICYwAIAiAksAIDY1+5bOJ933wRwbOfT5dVDAH6py4vefsxgAQDEBBYAQExgAQDE BBZwFP/5778Gf7z+7/73U48COIL9b3IHWOC+ov759e/7Pw5+GCwGcBBmsIDX00nAhzGDBbzYqrr6 nrW6/iDLgGMSWMArTUXSNaSufxz8rK6AIxNYwBFN3YMF8BYEFvBig48ELgmp6x3up79PbgEchMAC XmnDNNXg84Mmt4AD8ilCAICYGSzgiKZucr/OV7lECByZwAKOYpBKU58unF8A4AhcIgQAiO0/g3W5 7L4J4Ni8CwC/jRksAICYwAIAiAksAICYwAIAiAksAICYwAIAiAksAICYwAIAiAksAICYwAIAiAks AICYwAIAiAksAICYwAIAiAksAICYwAIAiAksAICYwAIAiH1UYJ3P50OtZ+0mzufzEzY95YWbZsbe x+V+/V4JAI/7esI2Bu/Xl8tl4aMWLvkZ3uX5fh/NPYZ6f15/5KWydpyrlr8d6pOP2nXTo9t9l1cR wMd7RmCd/n4y2O8cUK1223pWPa/3PQteLpf9Zjg27JapucDvVS08KKuWHyzzzKaZ31Z1XN73xQlw HE8KrCmjMwHXXw4mFb7PLlP/BT86AzG1/pkT5P16ZrY7P50wZflkyaqZktvB3O+60fVMPam1AfHj +peMf4PBobn95XWjP45/7fLbxnn9+f6gzByv5QdidFf8OJ7HZ/4AGPXKwJo6kc/MJdz+crDA/Il2 aoX3Rs9So9udGcyqTcwH5arxDwZ2PemOrmcw/oWDv7dk/QvHv9ZbdMDMfvjxeC0PplUXQ2fWv+sM JcDv8aTAqmYyXnVC3XW7Cy9O7T2GvU+r+Yzdq6zdVw++4Edb/DQd4o+sH4DKU+/Buj8TPPLmvvaE ffvAtffovMT9laNvm28G38/Mfj4tHv/9Yq99XjP7efQy6Mzye9wdteTS58zDAdjVUy8R3l+u2vsd /2mzPjtt6FqBp4mz+0FMDeldxj9q7Tinlh+9ya81mOUaDVYAnunFN7l/gCecxo4/2Tbv3cd/cHvf 6AbABs/+otGZez72vhdkcP/K+XxOzkbn/3twPaNrzte5dlsbxjBzyWzbGK5/u3CFt6+x0avSg/XM L//jmNcuv3zhDcuv5QYsgJ28cgZrEFuDE9XUHTyjRj+IN7/+5euZWXjXyYMN41+1nsElzh9/Pq3c z2vHHx6vVS+eDcuvujQ8sz9XLb/H62HJ8QVggz+n09obTf76+Zdfj1gbWG9xZz0A/DbLvh9n3Ynb PVjbbZ6hUVcA8NkE1kOqD5oBAJ/k2Te5AwB8PIEFABATWAAAMYEFABATWAAAMYEFABATWAAAMYEF ABATWAAAMYEFABATWAAAMYEFABATWAAAMYEFABATWAAAMYEFABATWAAAMYEFABATWAAAMYEFABAT WAAAMYEFABD7evDx5/M5GQcAwMd4KLAul0s1DgCAj+ESIQBATGABAMQEFgBATGABAMQEFgBATGAB AMQEFgBA7M/pVH2XlW8cBQA+1bpeMoMFABATWAAAMYEFABATWAAAMYEFABATWAAAMYEFABATWAAA MYEFABATWAAAMYEFABATWAAAMYEFABATWAAAMYEFABD7czpdXj0GAICPYgYLACAmsAAAYgILACAm sAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAA YgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgIL ACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAm sAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAA YgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgIL ACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAm sAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAA YgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgIL ACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAm sAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAA YgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgIL ACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAm sAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAA YgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgIL ACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAm sAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAAYgILACAmsAAA YgILACD29eoBAAC8r/Pob81gAQDEBBYAQExgAQDEBBYAQExgAQDEBBYAQExgAQDEBBYAQExgAQDE BBYAQExgAQDEBBYAQExgAQDEBBYAQExgAQAAAAAAAAAAAAAAAAAAAAAAAADAB/gfm8Fj1ALsE0sA AAAASUVORK5CYII= " | ||
| 659 | id="image29-6" | ||
| 660 | x="-445.28625" | ||
| 661 | y="-372.38272" | ||
| 662 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/dfd-rice/install-00.png" | ||
| 663 | inkscape:export-xdpi="75" | ||
| 664 | inkscape:export-ydpi="75" /> | ||
| 665 | </g> | ||
| 666 | <g | ||
| 667 | id="g513" | ||
| 668 | transform="translate(1043.4871,32.342183)" | ||
| 669 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/dfd-rice/install-03.png" | ||
| 670 | inkscape:export-xdpi="75" | ||
| 671 | inkscape:export-ydpi="75"> | ||
| 672 | <image | ||
| 673 | width="169.38" | ||
| 674 | height="127.035" | ||
| 675 | preserveAspectRatio="none" | ||
| 676 | xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAg | ||
| 677 | AElEQVR4nO3dsbarOJcuUNcdFfyP16Ef0WE/Xgcd3GB3uXwMkiXxAcJ7zlGBy1uWloQQy4A5f91u | 559 | AElEQVR4nO3dsbarOJcuUNcdFfyP16Ef0WE/Xgcd3GB3uXwMkiXxAcJ7zlGBy1uWloQQy4A5f91u |
| 678 | jxsAADn/7+wAAAC+jQQLACBMggUAECbBAgAIk2ABAIRJsAAAwiRYAABhEiwAgDAJFgBAmAQLACBM | 560 | jxsAADn/7+wAAAC+jQQLACBMggUAECbBAgAIk2ABAIRJsAAAwiRYAABhEiwAgDAJFgBAmAQLACBM |
| 679 | ggUAECbBAgAIk2ABAIRJsAAAwiRYAABhEiwAgDAJFgBAmAQLACBMggUAECbBAgAIk2ABAIRJsAAA | 561 | ggUAECbBAgAIk2ABAIRJsAAAwiRYAABhEiwAgDAJFgBAmAQLACBMggUAECbBAgAIk2ABAIRJsAAA |
| @@ -859,15 +741,8 @@ evzAuf540OjAatKYW+x9dPmJvN7KM7aP19fGWm8p+bFYpUBlbF9ft8efirmx/Ja+33beLlu0NDE8 | |||
| 859 | 6uX4lMazN/7ecR4Yn7eDaL2/9XFe3umy93a5LY6dLU1sj3PLdmmZD6U4b4Xt1dtuqf7g/tW1X1T6 | 741 | 6uX4lMazN/7ecR4Yn7eDaL2/9XFe3umy93a5LY6dLU1sj3PLdmmZD6U4b4Xt1dtuqf7g/tW1X1T6 |
| 860 | 2xVnSzCN8QMs/XW7Pc6OYS77nWz7hReJgoweAFO6r77rH3t+5yg+J9sFAAAAAAAAAAAAAAAAAAAA | 742 | 2xVnSzCN8QMs/XW7Pc6OYS77nWz7hReJgoweAFO6r77rH3t+5yg+J9sFAAAAAAAAAAAAAAAAAAAA |
| 861 | AAAAAKDq/wP4EB/RpJmzCAAAAABJRU5ErkJggg== | 743 | AAAAAKDq/wP4EB/RpJmzCAAAAABJRU5ErkJggg== |
| 862 | " | 744 | " id="image382" x="-1201.4072" y="264.93607" /> |
| 863 | id="image382" | 745 | <image width="169.3797" height="127.03477" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAg |
| 864 | x="-1201.4072" | ||
| 865 | y="264.93607" /> | ||
| 866 | <image | ||
| 867 | width="169.3797" | ||
| 868 | height="127.03477" | ||
| 869 | preserveAspectRatio="none" | ||
| 870 | xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAg | ||
| 871 | AElEQVR4nO3dzbKjOLYGUPJGDurxesgjMuzH60EP7sDZJAeQkMTm12tFRYUTYyEw4O9Isvyr64YO | 746 | AElEQVR4nO3dzbKjOLYGUPJGDurxesgjMuzH60EP7sDZJAeQkMTm12tFRYUTYyEw4O9Isvyr64YO |
| 872 | AIA4/3d1BQAA3kbAAgAIJmABAAQTsAAAgglYAADBBCwAgGACFgBAMAELACCYgAUAEEzAAgAIJmAB | 747 | AIA4/3d1BQAA3kbAAgAIJmABAAQTsAAAgglYAADBBCwAgGACFgBAMAELACCYgAUAEEzAAgAIJmAB |
| 873 | AAQTsAAAgglYAADBBCwAgGACFgBAMAELACCYgAUAEEzAAgAIJmABAAQTsAAAgglYAADBBCwAgGAC | 748 | AAQTsAAAgglYAADBBCwAgGACFgBAMAELACCYgAUAEEzAAgAIJmABAAQTsAAAgglYAADBBCwAgGAC |
| @@ -1023,22 +898,10 @@ Dcd59Thc6KD35Vo3PP+PdrfzqtbT6w9c68dEow13k8JscfSny6fm+a2MddvsX2vbesmam6tlVsgc | |||
| 1023 | Pg+i0tVyW23r15ZTXrd//vetq8xg6uXxSR3P2vrXHueG4zP7EM3vb/44L0e6HP2+dIvPzpJN7K/n | 898 | Pg+i0tVyW23r15ZTXrd//vetq8xg6uXxSR3P2vrXHueG4zP7EM3vb/44L0e6HP2+dIvPzpJN7K/n |
| 1024 | nvel5HxI1bNLvF+1202VH3h9VV0Xmf2tqmdJZQrrD7D0q+uGq+twL8c1tn1hJ1EgRw+AW+pXl/qx | 899 | nvel5HxI1bNLvF+1202VH3h9VV0Xmf2tqmdJZQrrD7D0q+uGq+twL8c1tn1hJ1EgRw+AW+pXl/qx |
| 1025 | 5zmf4vfkfQEAAAAAAAAAAAAAAAAAAAAAAAAAyPp/bzD23bYiiR0AAAAASUVORK5CYII= | 900 | 5zmf4vfkfQEAAAAAAAAAAAAAAAAAAAAAAAAAyPp/bzD23bYiiR0AAAAASUVORK5CYII= |
| 1026 | " | 901 | " id="image394" x="-1032.0272" y="264.93607" /> |
| 1027 | id="image394" | 902 | </g> |
| 1028 | x="-1032.0272" | 903 | <g id="g557" transform="translate(1003.0351,-73.34192)" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/dfd-rice/install-04.png" inkscape:export-xdpi="75" inkscape:export-ydpi="75"> |
| 1029 | y="264.93607" /> | 904 | <image width="169.38" height="127.035" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAg |
| 1030 | </g> | ||
| 1031 | <g | ||
| 1032 | id="g557" | ||
| 1033 | transform="translate(1003.0351,-73.34192)" | ||
| 1034 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/dfd-rice/install-04.png" | ||
| 1035 | inkscape:export-xdpi="75" | ||
| 1036 | inkscape:export-ydpi="75"> | ||
| 1037 | <image | ||
| 1038 | width="169.38" | ||
| 1039 | height="127.035" | ||
| 1040 | preserveAspectRatio="none" | ||
| 1041 | xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAg | ||
| 1042 | AElEQVR4nO3dO5bjOLYFUOVbadTw2tQQZfbw2mjjGdGlUvIDAeAhCUp7rzKiFBRwCfBzgpSYv263 | 905 | AElEQVR4nO3dO5bjOLYFUOVbadTw2tQQZfbw2mjjGdGlUvIDAeAhCUp7rzKiFBRwCfBzgpSYv263 |
| 1043 | xw0AgJz/O7sAAIBPI2ABAIQJWAAAYQIWAECYgAUAECZgAQCECVgAAGECFgBAmIAFABAmYAEAhAlY | 906 | xw0AgJz/O7sAAIBPI2ABAIQJWAAAYQIWAECYgAUAECZgAQCECVgAAGECFgBAmIAFABAmYAEAhAlY |
| 1044 | AABhAhYAQJiABQAQJmABAIQJWAAAYQIWAECYgAUAECZgAQCECVgAAGECFgBAmIAFABAmYAEAhAlY | 907 | AABhAhYAQJiABQAQJmABAIQJWAAAYQIWAECYgAUAECZgAQCECVgAAGECFgBAmIAFABAmYAEAhAlY |
| @@ -1204,15 +1067,8 @@ Hw8a7TiaVGaLvc8uP5WXe3nW9vb+Wl/vNUu+XaywQGFsX3+urz9Vc+XyW9b9tvO8bFHTRff237E9 | |||
| 1204 | jWdr/a3j3DE+k5NoeX3L4zz/pMve83KbnTtruthe55Z5qdke1uq8rcxXa79r7Qf3r6b9orC+TXXW | 1067 | jWdr/a3j3DE+k5NoeX3L4zz/pMve83KbnTtruthe55Z5qdke1uq8rcxXa79r7Qf3r6b9orC+TXXW |
| 1205 | FFNZP8Dcr9vtcXYNY9nvYtsX3iQKMnoADOm++Kp/7HnKWXxM5gUAAAAAAAAAAAAAAAAAAAAAAAAA | 1068 | FFNZP8Dcr9vtcXYNY9nvYtsX3iQKMnoADOm++Kp/7HnKWXxM5gUAAAAAAAAAAAAAAAAAAAAAAAAA |
| 1206 | oOj/AZvLm3jv9XPLAAAAAElFTkSuQmCC | 1069 | oOj/AZvLm3jv9XPLAAAAAElFTkSuQmCC |
| 1207 | " | 1070 | " id="image539" x="-1160.9553" y="563.78479" /> |
| 1208 | id="image539" | 1071 | <image width="169.38" height="127.035" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAg |
| 1209 | x="-1160.9553" | ||
| 1210 | y="563.78479" /> | ||
| 1211 | <image | ||
| 1212 | width="169.38" | ||
| 1213 | height="127.035" | ||
| 1214 | preserveAspectRatio="none" | ||
| 1215 | xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAg | ||
| 1216 | AElEQVR4nO3dzbajOJoFUEevGOTj1dCP6GE9Xg1q0IOb5SQAyRIcfr336tXrlgNLH0KGY8Dkr8fj | 1072 | AElEQVR4nO3dzbajOJoFUEevGOTj1dCP6GE9Xg1q0IOb5SQAyRIcfr336tXrlgNLH0KGY8Dkr8fj |
| 1217 | 9QAAIOf/ji4AAOBuBCwAgDABCwAgTMACAAgTsAAAwgQsAIAwAQsAIEzAAgAIE7AAAMIELACAMAEL | 1073 | 9QAAIOf/ji4AAOBuBCwAgDABCwAgTMACAAgTsAAAwgQsAIAwAQsAIEzAAgAIE7AAAMIELACAMAEL |
| 1218 | ACBMwAIACBOwAADCBCwAgDABCwAgTMACAAgTsAAAwgQsAIAwAQsAIEzAAgAIE7AAAMIELACAMAEL | 1074 | ACBMwAIACBOwAADCBCwAgDABCwAgTMACAAgTsAAAwgQsAIAwAQsAIEzAAgAIE7AAAMIELACAMAEL |
| @@ -1366,22 +1222,10 @@ Py8LGm/8fC3rbs+UI1EBEePHNLRcWxket0bHsNE//fyRSlfTvpYt39tOe21//e9XV5WbqafjUxrP | |||
| 1366 | 3vp7x3nB+IwOovX1rY/z9E6XrbfLY3LsbOlifZ1rtkvLfCjV+Shsr95+S+0HP19dn4vK+nbV2VJM | 1222 | 3vp7x3nB+IwOovX1rY/z9E6XrbfLY3LsbOlifZ1rtkvLfCjV+Shsr95+S+0HP19dn4vK+nbV2VJM |
| 1367 | Y/0AU78ej9fRNZzLdifbvvAiUZDRA+CUnrOv+o89jzmKn5PtAgAAAAAAAAAAAAAAAAAAAAAAAABQ | 1223 | Y/0AU78ej9fRNZzLdifbvvAiUZDRA+CUnrOv+o89jzmKn5PtAgAAAAAAAAAAAAAAAAAAAAAAAABQ |
| 1368 | 9f+dHPt315dAmAAAAABJRU5ErkJggg== | 1224 | 9f+dHPt315dAmAAAAABJRU5ErkJggg== |
| 1369 | " | 1225 | " id="image551" x="-991.57532" y="563.78479" /> |
| 1370 | id="image551" | 1226 | </g> |
| 1371 | x="-991.57532" | 1227 | <g inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/dfd-rice/install-05.png" inkscape:export-xdpi="75" inkscape:export-ydpi="75" id="g658" transform="translate(-4.0751145)"> |
| 1372 | y="563.78479" /> | 1228 | <image width="169.38" height="127.035" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAZ |
| 1373 | </g> | ||
| 1374 | <g | ||
| 1375 | inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/assets/dfd-rice/install-05.png" | ||
| 1376 | inkscape:export-xdpi="75" | ||
| 1377 | inkscape:export-ydpi="75" | ||
| 1378 | id="g658" | ||
| 1379 | transform="translate(-4.0751145)"> | ||
| 1380 | <image | ||
| 1381 | width="169.38" | ||
| 1382 | height="127.035" | ||
| 1383 | preserveAspectRatio="none" | ||
| 1384 | xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAZ | ||
| 1385 | 3klEQVR4nO3du7ajRrsFUPUZHfjx/lCPqNCP58DBCWTLbC6lqmIhQMw5HMgSqvoobmsDon/dbo8b | 1229 | 3klEQVR4nO3du7ajRrsFUPUZHfjx/lCPqNCP58DBCWTLbC6lqmIhQMw5HMgSqvoobmsDon/dbo8b |
| 1386 | AAA5/7d3AQAA30bAAgAIE7AAAMIELACAMAELACBMwAIACBOwAADCBCwAgDABCwAgTMACAAgTsAAA | 1230 | AAA5/7d3AQAA30bAAgAIE7AAAMIELACAMAELACBMwAIACBOwAADCBCwAgDABCwAgTMACAAgTsAAA |
| 1387 | wgQsAIAwAQsAIEzAAgAIE7AAAMIELACAMAELACBMwAIACBOwAADCBCwAgDABCwAgTMACAAgTsAAA | 1231 | wgQsAIAwAQsAIEzAAgAIE7AAAMIELACAMAELACBMwAIACBOwAADCBCwAgDABCwAgTMACAAgTsAAA |
| @@ -1499,15 +1343,8 @@ TRfd63/H+lDj7fbS0Xjl9tXX3SdTjkQFRIwf01BzbWV43Bodw0YfPV+k0tW0r77pW9upr+2Pf391 | |||
| 1499 | VbiZejo+S+PZWn/rOHeMz+ggWp7f8jhP73TZerncJsfOmi7W17lmudSsD0t13haWV2u/S+0Ht6+m | 1343 | VbiZejo+S+PZWn/rOHeMz+ggWp7f8jhP73TZerncJsfOmi7W17lmudSsD0t13haWV2u/S+0Ht6+m |
| 1500 | 7aIwv0111hRTWT/A1K/b7bF3Dcey3cm2C14kCjJ6ABzSffZd/9jzmKP4MVkuAAAAAAAAAAAAAAAA | 1344 | 7aIwv0111hRTWT/A1K/b7bF3Dcey3cm2C14kCjJ6ABzSffZd/9jzmKP4MVkuAAAAAAAAAAAAAAAA |
| 1501 | AAAAAAAAAABF/w+B/c/UXnPWXgAAAABJRU5ErkJggg== | 1345 | AAAAAAAAAABF/w+B/c/UXnPWXgAAAABJRU5ErkJggg== |
| 1502 | " | 1346 | " id="image640" x="-153.84512" y="683.60748" /> |
| 1503 | id="image640" | 1347 | <image width="169.38" height="127.035" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAI |
| 1504 | x="-153.84512" | ||
| 1505 | y="683.60748" /> | ||
| 1506 | <image | ||
| 1507 | width="169.38" | ||
| 1508 | height="127.035" | ||
| 1509 | preserveAspectRatio="none" | ||
| 1510 | xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAI | ||
| 1511 | CUlEQVR4nO3c0ZKjKhAAUHcq3+hH8pX7kHtTLGgLaoJmznlJVGxbmap0AeM0AQAAAAAAAAAAAAAA | 1348 | CUlEQVR4nO3c0ZKjKhAAUHcq3+hH8pX7kHtTLGgLaoJmznlJVGxbmap0AeM0AQAAAAAAAAAAAAAA |
| 1512 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwTVNK6WCDm/qO+zrefd/xHADgfX6maUqZ | 1349 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwTVNK6WCDm/qO+zrefd/xHADgfX6maUqZ |
| 1513 | 0flsWEy1SPu1uba/jhk3GG4z829y4s1+5fMB4BYez495np9fUkqv77sdj7CoyC3fPCXtTR+4RO2C | 1350 | 0flsWEy1SPu1uba/jhk3GG4z829y4s1+5fMB4BYez495np9fUkqv77sdj7CoyC3fPCXtTR+4RO2C |
| @@ -1545,10 +1382,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||
| 1545 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | 1382 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |
| 1546 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | 1383 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |
| 1547 | AAAAYJC/HlulbQuPF2AAAAAASUVORK5CYII= | 1384 | AAAAYJC/HlulbQuPF2AAAAAASUVORK5CYII= |
| 1548 | " | 1385 | " id="image652" x="15.534883" y="683.60748" /> |
| 1549 | id="image652" | 1386 | </g> |
| 1550 | x="15.534883" | 1387 | </g> |
| 1551 | y="683.60748" /> | ||
| 1552 | </g> | ||
| 1553 | </g> | ||
| 1554 | </svg> | 1388 | </svg> |
diff --git a/assets/dfd-rice/layout.png b/static/dfd-rice/layout.png index a44d2cd..a44d2cd 100644 --- a/assets/dfd-rice/layout.png +++ b/static/dfd-rice/layout.png | |||
| Binary files differ | |||
diff --git a/static/dfd-rice/layout.svg b/static/dfd-rice/layout.svg new file mode 100644 index 0000000..5a9031c --- /dev/null +++ b/static/dfd-rice/layout.svg | |||
| @@ -0,0 +1,28 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| 2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||
| 3 | |||
| 4 | <svg width="210mm" height="297mm" viewBox="0 0 210 297" version="1.1" id="svg5" inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)" sodipodi:docname="layout.svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"> | ||
| 5 | <sodipodi:namedview id="namedview7" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageshadow="2" inkscape:pageopacity="0.0" inkscape:pagecheckerboard="0" inkscape:document-units="mm" showgrid="false" inkscape:zoom="0.08" inkscape:cx="1143.75" inkscape:cy="1893.75" inkscape:window-width="2305" inkscape:window-height="752" inkscape:window-x="873" inkscape:window-y="136" inkscape:window-maximized="0" inkscape:current-layer="layer1" /> | ||
| 6 | <defs id="defs2" /> | ||
| 7 | <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1"> | ||
| 8 | <g id="g2012" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/dfd-rice/layout.png" inkscape:export-xdpi="6.6072011" inkscape:export-ydpi="6.6072011"> | ||
| 9 | <rect style="fill:#e6e6e6;stroke:#303030;stroke-width:0.447874;stroke-linecap:round;stroke-linejoin:miter;paint-order:stroke fill markers" id="rect1454" width="1360.1339" height="1074.3162" x="-360.50458" y="-265.69751" ry="0" /> | ||
| 10 | <rect style="fill:#e6e6e6;stroke:#303030;stroke-width:0.261189;stroke-linecap:round;stroke-linejoin:miter;paint-order:stroke fill markers" id="rect1456" width="1058.4567" height="469.50305" x="1025.9943" y="-265.79086" ry="0" /> | ||
| 11 | <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:51.606px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1.29015" x="1407.4224" y="-12.228849" id="text7667-3"> | ||
| 12 | <tspan sodipodi:role="line" id="tspan7665-6" style="font-weight:bold;stroke-width:1.29015;fill:#4d4d4d" x="1407.4224" y="-12.228849">TERMINAL</tspan> | ||
| 13 | </text> | ||
| 14 | <rect style="fill:#e6e6e6;stroke:#303030;stroke-width:0.289748;stroke-linecap:round;stroke-linejoin:miter;paint-order:stroke fill markers" id="rect1458" width="1058.4564" height="577.78894" x="1028.7416" y="230.8085" ry="0" /> | ||
| 15 | <rect style="fill:#e6e6e6;stroke:#303030;stroke-width:0.447874;stroke-linecap:round;stroke-linejoin:miter;paint-order:stroke fill markers" id="rect135" width="1360.1339" height="1074.3162" x="-1747.0968" y="-265.69751" ry="0" /> | ||
| 16 | <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:51.606px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1.29015" x="-1214.8931" y="290.24585" id="text3280"> | ||
| 17 | <tspan sodipodi:role="line" id="tspan3278" style="font-weight:bold;stroke-width:1.29015;fill:#4d4d4d" x="-1214.8931" y="290.24585">BROWSER</tspan> | ||
| 18 | </text> | ||
| 19 | <rect style="fill:none;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" id="rect31" width="3834.2903" height="1074.2903" x="-1747.0922" y="-265.69287" ry="0" /> | ||
| 20 | <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:51.606px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1.29015" x="121.84438" y="290.24585" id="text7667"> | ||
| 21 | <tspan sodipodi:role="line" id="tspan7665" style="font-weight:bold;stroke-width:1.29015;fill:#4d4d4d" x="121.84438" y="290.24585">CODE EDITOR</tspan> | ||
| 22 | </text> | ||
| 23 | <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:51.606px;line-height:1.25;font-family:sans-serif;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1.29015" x="1410.1696" y="538.51349" id="text12264"> | ||
| 24 | <tspan sodipodi:role="line" id="tspan12262" style="font-weight:bold;stroke-width:1.29015;fill:#4d4d4d" x="1410.1696" y="538.51349">TERMINAL</tspan> | ||
| 25 | </text> | ||
| 26 | </g> | ||
| 27 | </g> | ||
| 28 | </svg> | ||
diff --git a/assets/dfd-rice/script.png b/static/dfd-rice/script.png index 09be37a..09be37a 100644 --- a/assets/dfd-rice/script.png +++ b/static/dfd-rice/script.png | |||
| Binary files differ | |||
diff --git a/assets/dna-sequence/benchmarks.ods b/static/dna-sequence/benchmarks.ods index 62a8e30..62a8e30 100644 --- a/assets/dna-sequence/benchmarks.ods +++ b/static/dna-sequence/benchmarks.ods | |||
| Binary files differ | |||
diff --git a/assets/dna-sequence/chart-encoding-speed.png b/static/dna-sequence/chart-encoding-speed.png index 7fb106d..7fb106d 100644 --- a/assets/dna-sequence/chart-encoding-speed.png +++ b/static/dna-sequence/chart-encoding-speed.png | |||
| Binary files differ | |||
diff --git a/assets/dna-sequence/chart-file-sizes.png b/static/dna-sequence/chart-file-sizes.png index 31bfa66..31bfa66 100644 --- a/assets/dna-sequence/chart-file-sizes.png +++ b/static/dna-sequence/chart-file-sizes.png | |||
| Binary files differ | |||
diff --git a/assets/dna-sequence/dna-basics.jpg b/static/dna-sequence/dna-basics.jpg index c2e7f52..c2e7f52 100644 --- a/assets/dna-sequence/dna-basics.jpg +++ b/static/dna-sequence/dna-basics.jpg | |||
| Binary files differ | |||
diff --git a/assets/dna-sequence/quote.png b/static/dna-sequence/quote.png index 09fb01c..09fb01c 100644 --- a/assets/dna-sequence/quote.png +++ b/static/dna-sequence/quote.png | |||
| Binary files differ | |||
diff --git a/assets/dna-sequence/sample-binary-file.png b/static/dna-sequence/sample-binary-file.png index 1e4622a..1e4622a 100644 --- a/assets/dna-sequence/sample-binary-file.png +++ b/static/dna-sequence/sample-binary-file.png | |||
| Binary files differ | |||
diff --git a/assets/dna-sequence/sample.png b/static/dna-sequence/sample.png index 30f12da..30f12da 100644 --- a/assets/dna-sequence/sample.png +++ b/static/dna-sequence/sample.png | |||
| Binary files differ | |||
diff --git a/assets/dna-synthesized/bison/in.txt b/static/dna-synthesized/bison/in.txt index fd1eea6..fd1eea6 100644 --- a/assets/dna-synthesized/bison/in.txt +++ b/static/dna-synthesized/bison/in.txt | |||
diff --git a/assets/dna-synthesized/bison/out.mp3 b/static/dna-synthesized/bison/out.mp3 index d6408ca..d6408ca 100644 --- a/assets/dna-synthesized/bison/out.mp3 +++ b/static/dna-synthesized/bison/out.mp3 | |||
| Binary files differ | |||
diff --git a/assets/dna-synthesized/bison/spectogram.png b/static/dna-synthesized/bison/spectogram.png index 959902b..959902b 100644 --- a/assets/dna-synthesized/bison/spectogram.png +++ b/static/dna-synthesized/bison/spectogram.png | |||
| Binary files differ | |||
diff --git a/assets/dna-synthesized/elektron/IMG_0619.jpg b/static/dna-synthesized/elektron/IMG_0619.jpg index ebf60b0..ebf60b0 100755 --- a/assets/dna-synthesized/elektron/IMG_0619.jpg +++ b/static/dna-synthesized/elektron/IMG_0619.jpg | |||
| Binary files differ | |||
diff --git a/assets/dna-synthesized/elektron/IMG_0620.jpg b/static/dna-synthesized/elektron/IMG_0620.jpg index c9aa398..c9aa398 100755 --- a/assets/dna-synthesized/elektron/IMG_0620.jpg +++ b/static/dna-synthesized/elektron/IMG_0620.jpg | |||
| Binary files differ | |||
diff --git a/assets/dna-synthesized/elektron/IMG_0622.jpg b/static/dna-synthesized/elektron/IMG_0622.jpg index 98acee4..98acee4 100755 --- a/assets/dna-synthesized/elektron/IMG_0622.jpg +++ b/static/dna-synthesized/elektron/IMG_0622.jpg | |||
| Binary files differ | |||
diff --git a/assets/dna-synthesized/elektron/elektron.mp4 b/static/dna-synthesized/elektron/elektron.mp4 index f8e39b9..f8e39b9 100755 --- a/assets/dna-synthesized/elektron/elektron.mp4 +++ b/static/dna-synthesized/elektron/elektron.mp4 | |||
| Binary files differ | |||
diff --git a/assets/dna-synthesized/elektron/midi-studio.jpg b/static/dna-synthesized/elektron/midi-studio.jpg index 59075cd..59075cd 100755 --- a/assets/dna-synthesized/elektron/midi-studio.jpg +++ b/static/dna-synthesized/elektron/midi-studio.jpg | |||
| Binary files differ | |||
diff --git a/assets/dna-synthesized/mouse/in.txt b/static/dna-synthesized/mouse/in.txt index abd34a2..abd34a2 100644 --- a/assets/dna-synthesized/mouse/in.txt +++ b/static/dna-synthesized/mouse/in.txt | |||
diff --git a/assets/dna-synthesized/mouse/out.mp3 b/static/dna-synthesized/mouse/out.mp3 index e66e87b..e66e87b 100644 --- a/assets/dna-synthesized/mouse/out.mp3 +++ b/static/dna-synthesized/mouse/out.mp3 | |||
| Binary files differ | |||
diff --git a/assets/dna-synthesized/mouse/spectogram.png b/static/dna-synthesized/mouse/spectogram.png index 8b7f63f..8b7f63f 100644 --- a/assets/dna-synthesized/mouse/spectogram.png +++ b/static/dna-synthesized/mouse/spectogram.png | |||
| Binary files differ | |||
diff --git a/assets/dna-synthesized/quote/in.txt b/static/dna-synthesized/quote/in.txt index 81e8eb9..81e8eb9 100644 --- a/assets/dna-synthesized/quote/in.txt +++ b/static/dna-synthesized/quote/in.txt | |||
diff --git a/assets/dna-synthesized/quote/out.mp3 b/static/dna-synthesized/quote/out.mp3 index 985871d..985871d 100644 --- a/assets/dna-synthesized/quote/out.mp3 +++ b/static/dna-synthesized/quote/out.mp3 | |||
| Binary files differ | |||
diff --git a/assets/dna-synthesized/quote/spectogram.png b/static/dna-synthesized/quote/spectogram.png index c460ffd..c460ffd 100644 --- a/assets/dna-synthesized/quote/spectogram.png +++ b/static/dna-synthesized/quote/spectogram.png | |||
| Binary files differ | |||
diff --git a/assets/dna-synthesized/symphony-no6-1st-movement.mp3 b/static/dna-synthesized/symphony-no6-1st-movement.mp3 index 8c5a609..8c5a609 100644 --- a/assets/dna-synthesized/symphony-no6-1st-movement.mp3 +++ b/static/dna-synthesized/symphony-no6-1st-movement.mp3 | |||
| Binary files differ | |||
diff --git a/assets/dna-synthesized/symphony-no6-1st-movement.png b/static/dna-synthesized/symphony-no6-1st-movement.png index 8269f08..8269f08 100644 --- a/assets/dna-synthesized/symphony-no6-1st-movement.png +++ b/static/dna-synthesized/symphony-no6-1st-movement.png | |||
| Binary files differ | |||
diff --git a/assets/dna-synthesized/taurus/in.txt b/static/dna-synthesized/taurus/in.txt index 8c5bddb..8c5bddb 100644 --- a/assets/dna-synthesized/taurus/in.txt +++ b/static/dna-synthesized/taurus/in.txt | |||
diff --git a/assets/dna-synthesized/taurus/out.mp3 b/static/dna-synthesized/taurus/out.mp3 index ea7ae1a..ea7ae1a 100644 --- a/assets/dna-synthesized/taurus/out.mp3 +++ b/static/dna-synthesized/taurus/out.mp3 | |||
| Binary files differ | |||
diff --git a/assets/dna-synthesized/taurus/spectogram.png b/static/dna-synthesized/taurus/spectogram.png index 3be9b58..3be9b58 100644 --- a/assets/dna-synthesized/taurus/spectogram.png +++ b/static/dna-synthesized/taurus/spectogram.png | |||
| Binary files differ | |||
diff --git a/assets/do-fuse/copy-benchmarks.tsv b/static/do-fuse/copy-benchmarks.tsv index c7a7af4..c7a7af4 100644 --- a/assets/do-fuse/copy-benchmarks.tsv +++ b/static/do-fuse/copy-benchmarks.tsv | |||
diff --git a/assets/do-fuse/fuse-droplets.png b/static/do-fuse/fuse-droplets.png index d7ce243..d7ce243 100644 --- a/assets/do-fuse/fuse-droplets.png +++ b/static/do-fuse/fuse-droplets.png | |||
| Binary files differ | |||
diff --git a/assets/do-fuse/fuse-spaces.png b/static/do-fuse/fuse-spaces.png index 4dcc1c5..4dcc1c5 100644 --- a/assets/do-fuse/fuse-spaces.png +++ b/static/do-fuse/fuse-spaces.png | |||
| Binary files differ | |||
diff --git a/assets/do-fuse/sqlite-benchmarks.tsv b/static/do-fuse/sqlite-benchmarks.tsv index daa2c21..daa2c21 100644 --- a/assets/do-fuse/sqlite-benchmarks.tsv +++ b/static/do-fuse/sqlite-benchmarks.tsv | |||
diff --git a/assets/dropbox-sync/dropbox-spaces.png b/static/dropbox-sync/dropbox-spaces.png index c90f99f..c90f99f 100644 --- a/assets/dropbox-sync/dropbox-spaces.png +++ b/static/dropbox-sync/dropbox-spaces.png | |||
| Binary files differ | |||
diff --git a/assets/esp8366-micropython/boards.jpg b/static/esp8366-micropython/boards.jpg index 89e2b30..89e2b30 100644 --- a/assets/esp8366-micropython/boards.jpg +++ b/static/esp8366-micropython/boards.jpg | |||
| Binary files differ | |||
diff --git a/assets/general/alert-dark.svg b/static/general/alert-dark.svg index d453564..d453564 100644 --- a/assets/general/alert-dark.svg +++ b/static/general/alert-dark.svg | |||
diff --git a/assets/general/alert-light.svg b/static/general/alert-light.svg index 86658ec..86658ec 100644 --- a/assets/general/alert-light.svg +++ b/static/general/alert-light.svg | |||
diff --git a/assets/general/elasticlunr.min.js b/static/general/elasticlunr.min.js index 94b20dd..94b20dd 100644 --- a/assets/general/elasticlunr.min.js +++ b/static/general/elasticlunr.min.js | |||
diff --git a/assets/general/favicon.ico b/static/general/favicon.ico index c6b2ff4..c6b2ff4 100644 --- a/assets/general/favicon.ico +++ b/static/general/favicon.ico | |||
| Binary files differ | |||
diff --git a/assets/general/favicon.png b/static/general/favicon.png index f94ea94..f94ea94 100644 --- a/assets/general/favicon.png +++ b/static/general/favicon.png | |||
| Binary files differ | |||
diff --git a/assets/go-profiling/golang-profiling-cpu.pdf b/static/go-profiling/golang-profiling-cpu.pdf index 15241cb..15241cb 100644 --- a/assets/go-profiling/golang-profiling-cpu.pdf +++ b/static/go-profiling/golang-profiling-cpu.pdf | |||
| Binary files differ | |||
diff --git a/assets/go-profiling/golang-profiling-mem.pdf b/static/go-profiling/golang-profiling-mem.pdf index 822e445..822e445 100644 --- a/assets/go-profiling/golang-profiling-mem.pdf +++ b/static/go-profiling/golang-profiling-mem.pdf | |||
| Binary files differ | |||
diff --git a/assets/goaccess/goaccess-dash-html.png b/static/goaccess/goaccess-dash-html.png index 917d959..917d959 100644 --- a/assets/goaccess/goaccess-dash-html.png +++ b/static/goaccess/goaccess-dash-html.png | |||
| Binary files differ | |||
diff --git a/assets/goaccess/goaccess-dash-term.png b/static/goaccess/goaccess-dash-term.png index e3f6357..e3f6357 100644 --- a/assets/goaccess/goaccess-dash-term.png +++ b/static/goaccess/goaccess-dash-term.png | |||
| Binary files differ | |||
diff --git a/assets/helix-editor/editor.png b/static/helix-editor/editor.png index 2648364..2648364 100644 --- a/assets/helix-editor/editor.png +++ b/static/helix-editor/editor.png | |||
| Binary files differ | |||
diff --git a/assets/iot-application/iot-app-output.png b/static/iot-application/iot-app-output.png index 1c80589..1c80589 100644 --- a/assets/iot-application/iot-app-output.png +++ b/static/iot-application/iot-app-output.png | |||
| Binary files differ | |||
diff --git a/assets/iot-application/iot-rest-example.png b/static/iot-application/iot-rest-example.png index 3ed86aa..3ed86aa 100644 --- a/assets/iot-application/iot-rest-example.png +++ b/static/iot-application/iot-rest-example.png | |||
| Binary files differ | |||
diff --git a/assets/iot-application/iot-sqlite-db.png b/static/iot-application/iot-sqlite-db.png index 82e1e29..82e1e29 100644 --- a/assets/iot-application/iot-sqlite-db.png +++ b/static/iot-application/iot-sqlite-db.png | |||
| Binary files differ | |||
diff --git a/assets/iot-application/kcachegrind.png b/static/iot-application/kcachegrind.png index 0dc48ab..0dc48ab 100644 --- a/assets/iot-application/kcachegrind.png +++ b/static/iot-application/kcachegrind.png | |||
| Binary files differ | |||
diff --git a/assets/iot-application/profiling-viewer.png b/static/iot-application/profiling-viewer.png index a450513..a450513 100644 --- a/assets/iot-application/profiling-viewer.png +++ b/static/iot-application/profiling-viewer.png | |||
| Binary files differ | |||
diff --git a/assets/iot-application/simple-iot-application-overview.svg b/static/iot-application/simple-iot-application-overview.svg index 817666d..817666d 100644 --- a/assets/iot-application/simple-iot-application-overview.svg +++ b/static/iot-application/simple-iot-application-overview.svg | |||
diff --git a/assets/iot-application/simple-iot-application.zip b/static/iot-application/simple-iot-application.zip index 46d3205..46d3205 100644 --- a/assets/iot-application/simple-iot-application.zip +++ b/static/iot-application/simple-iot-application.zip | |||
| Binary files differ | |||
diff --git a/assets/iot-application/snakeviz.png b/static/iot-application/snakeviz.png index 5bab395..5bab395 100644 --- a/assets/iot-application/snakeviz.png +++ b/static/iot-application/snakeviz.png | |||
| Binary files differ | |||
diff --git a/assets/pid1/boxes.mp4 b/static/pid1/boxes.mp4 index eb647ff..eb647ff 100644 --- a/assets/pid1/boxes.mp4 +++ b/static/pid1/boxes.mp4 | |||
| Binary files differ | |||
diff --git a/assets/pid1/qemu.log b/static/pid1/qemu.log index 11be312..11be312 100644 --- a/assets/pid1/qemu.log +++ b/static/pid1/qemu.log | |||
diff --git a/assets/pid1/unikernels.png b/static/pid1/unikernels.png index 16026ed..16026ed 100644 --- a/assets/pid1/unikernels.png +++ b/static/pid1/unikernels.png | |||
| Binary files differ | |||
diff --git a/static/pid1/unikernels.svg b/static/pid1/unikernels.svg new file mode 100644 index 0000000..460fb94 --- /dev/null +++ b/static/pid1/unikernels.svg | |||
| @@ -0,0 +1,128 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
| 2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | ||
| 3 | |||
| 4 | <svg width="210mm" height="297mm" viewBox="0 0 210 297" version="1.1" id="svg5" inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)" sodipodi:docname="unikernels.svg" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/pid1/unikernels.png" inkscape:export-xdpi="127.98862" inkscape:export-ydpi="127.98862" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"> | ||
| 5 | <sodipodi:namedview id="namedview7" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageshadow="2" inkscape:pageopacity="0.0" inkscape:pagecheckerboard="0" inkscape:document-units="mm" showgrid="false" inkscape:zoom="1.4948513" inkscape:cx="431.48104" inkscape:cy="473.6257" inkscape:window-width="1887" inkscape:window-height="913" inkscape:window-x="1859" inkscape:window-y="48" inkscape:window-maximized="0" inkscape:current-layer="layer1" showguides="true" inkscape:guide-bbox="true" /> | ||
| 6 | <defs id="defs2" /> | ||
| 7 | <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1"> | ||
| 8 | <g id="g98495" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/pid1/unikernels.png" inkscape:export-xdpi="127.98862" inkscape:export-ydpi="127.98862"> | ||
| 9 | <rect style="fill:#ececec;stroke:none;stroke-width:0.318966;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect18248" width="65.511665" height="75.571449" x="5.6951494" y="75.506912" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/pid1/unikernels.png" inkscape:export-xdpi="127.98862" inkscape:export-ydpi="127.98862" /> | ||
| 10 | <rect style="fill:#ececec;stroke:none;stroke-width:0.318966;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect18418" width="65.511665" height="75.571449" x="72.166878" y="75.506912" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/pid1/unikernels.png" inkscape:export-xdpi="127.98862" inkscape:export-ydpi="127.98862" /> | ||
| 11 | <rect style="fill:#ececec;stroke:none;stroke-width:0.318966;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect18420" width="65.511665" height="75.571449" x="138.63863" y="75.506912" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/pid1/unikernels.png" inkscape:export-xdpi="127.98862" inkscape:export-ydpi="127.98862" /> | ||
| 12 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:2.82222px;line-height:1.25;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Heavy';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" x="25.735832" y="144.60236" id="text18439" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/pid1/unikernels.png" inkscape:export-xdpi="127.98862" inkscape:export-ydpi="127.98862"> | ||
| 13 | <tspan sodipodi:role="line" id="tspan18437" style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:2.82222px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Ultra-Bold';fill:#000000;stroke-width:0.264583" x="25.735832" y="144.60236">VIRTUAL MACHINE</tspan> | ||
| 14 | </text> | ||
| 15 | <g id="g50691" transform="translate(0,-101.60001)" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/pid1/unikernels.png" inkscape:export-xdpi="127.98862" inkscape:export-ydpi="127.98862"> | ||
| 16 | <rect style="fill:#f9f9f9;stroke:none;stroke-width:0.429153;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect38097-3" width="50.57568" height="8.4333" x="13.294504" y="213.63496" ry="1.5" /> | ||
| 17 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:2.46944px;line-height:1.25;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Heavy';fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" x="24.263063" y="218.54855" id="text32261"> | ||
| 18 | <tspan sodipodi:role="line" id="tspan32259" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.46944px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';fill:#4d4d4d;stroke-width:0.264583" x="24.263063" y="218.54855">HOST OS / HYPERVISOR</tspan> | ||
| 19 | </text> | ||
| 20 | </g> | ||
| 21 | <rect style="fill:#f9f9f9;stroke:none;stroke-width:0.499999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect38097" width="22.000685" height="26.315866" x="13.294504" y="184.14406" ry="1.5" transform="translate(0,-102.12917)" /> | ||
| 22 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" x="24.336025" y="204.21999" id="text38435" transform="translate(0,-102.12917)"> | ||
| 23 | <tspan sodipodi:role="line" id="tspan38433" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="204.48907">VIRTUAL</tspan> | ||
| 24 | <tspan sodipodi:role="line" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="206.28824" id="tspan38945">MACHINE</tspan> | ||
| 25 | </text> | ||
| 26 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" x="24.336025" y="198.19913" id="text41165" transform="translate(0,-102.12917)"> | ||
| 27 | <tspan sodipodi:role="line" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="198.19913" id="tspan41163">GUEST OS</tspan> | ||
| 28 | </text> | ||
| 29 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" x="24.336025" y="189.40337" id="text42587" transform="translate(0,-102.12917)"> | ||
| 30 | <tspan sodipodi:role="line" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="189.67245" id="tspan42585">TARGET</tspan> | ||
| 31 | <tspan sodipodi:role="line" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="191.47162" id="tspan42611">SOFTWARE</tspan> | ||
| 32 | </text> | ||
| 33 | <g id="g50696" transform="translate(0,-99.483339)" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/pid1/unikernels.png" inkscape:export-xdpi="127.98862" inkscape:export-ydpi="127.98862"> | ||
| 34 | <rect style="fill:#f9f9f9;stroke:none;stroke-width:0.429153;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect48544" width="50.57568" height="8.4333" x="13.294504" y="223.15991" ry="1.5" /> | ||
| 35 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:2.46944px;line-height:1.25;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Heavy';fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" x="31.535746" y="228.24654" id="text47169"> | ||
| 36 | <tspan sodipodi:role="line" id="tspan47167" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.46944px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';fill:#4d4d4d;stroke-width:0.264583" x="31.535746" y="228.24654">HARDWARE</tspan> | ||
| 37 | </text> | ||
| 38 | </g> | ||
| 39 | <g id="g48202" transform="translate(28.574999,-102.12917)" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/pid1/unikernels.png" inkscape:export-xdpi="127.98862" inkscape:export-ydpi="127.98862"> | ||
| 40 | <rect style="fill:#f9f9f9;stroke:none;stroke-width:0.499999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect48184" width="22.000685" height="26.315866" x="13.294504" y="184.14406" ry="1.5" /> | ||
| 41 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" x="24.336025" y="204.21999" id="text48190"> | ||
| 42 | <tspan sodipodi:role="line" id="tspan48186" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="204.48907">VIRTUAL</tspan> | ||
| 43 | <tspan sodipodi:role="line" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="206.28824" id="tspan48188">MACHINE</tspan> | ||
| 44 | </text> | ||
| 45 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" x="24.336025" y="198.19913" id="text48194"> | ||
| 46 | <tspan sodipodi:role="line" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="198.19913" id="tspan48192">GUEST OS</tspan> | ||
| 47 | </text> | ||
| 48 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" x="24.336025" y="189.40337" id="text48200"> | ||
| 49 | <tspan sodipodi:role="line" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="189.67245" id="tspan48196">TARGET</tspan> | ||
| 50 | <tspan sodipodi:role="line" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="191.47162" id="tspan48198">SOFTWARE</tspan> | ||
| 51 | </text> | ||
| 52 | </g> | ||
| 53 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:2.82222px;line-height:1.25;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Heavy';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" x="95.948242" y="144.60236" id="text51110" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/pid1/unikernels.png" inkscape:export-xdpi="127.98862" inkscape:export-ydpi="127.98862"> | ||
| 54 | <tspan sodipodi:role="line" id="tspan51108" style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:2.82222px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Ultra-Bold';fill:#000000;stroke-width:0.264583" x="95.948242" y="144.60236">CONTAINERS</tspan> | ||
| 55 | </text> | ||
| 56 | <g id="g51118" transform="translate(66.675002,-101.60001)" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/pid1/unikernels.png" inkscape:export-xdpi="127.98862" inkscape:export-ydpi="127.98862"> | ||
| 57 | <rect style="fill:#f9f9f9;stroke:none;stroke-width:0.429153;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect51112" width="50.57568" height="8.4333" x="13.294504" y="213.63496" ry="1.5" /> | ||
| 58 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.46944px;line-height:1.25;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" x="33.144272" y="218.54855" id="text51116"> | ||
| 59 | <tspan sodipodi:role="line" id="tspan51114" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.46944px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';fill:#4d4d4d;stroke-width:0.264583" x="33.144272" y="218.54855">HOST OS</tspan> | ||
| 60 | </text> | ||
| 61 | </g> | ||
| 62 | <g id="g51138" transform="translate(66.675002,-102.12917)" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/pid1/unikernels.png" inkscape:export-xdpi="127.98862" inkscape:export-ydpi="127.98862"> | ||
| 63 | <rect style="fill:#f9f9f9;stroke:none;stroke-width:0.499999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect51120" width="22.000685" height="26.315866" x="13.294504" y="184.14406" ry="1.5" /> | ||
| 64 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" x="24.336025" y="206.33662" id="text51126"> | ||
| 65 | <tspan sodipodi:role="line" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="206.33662" id="tspan51124">CONTAINER</tspan> | ||
| 66 | </text> | ||
| 67 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" x="24.336025" y="198.19913" id="text51130"> | ||
| 68 | <tspan sodipodi:role="line" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="198.46822" id="tspan51128">PROGRAMS &</tspan> | ||
| 69 | <tspan sodipodi:role="line" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="200.26738" id="tspan56912">LIBRARIES</tspan> | ||
| 70 | </text> | ||
| 71 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" x="24.336025" y="189.40337" id="text51136"> | ||
| 72 | <tspan sodipodi:role="line" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="189.67245" id="tspan51132">TARGET</tspan> | ||
| 73 | <tspan sodipodi:role="line" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="191.47162" id="tspan51134">SOFTWARE</tspan> | ||
| 74 | </text> | ||
| 75 | </g> | ||
| 76 | <g id="g51146" transform="translate(66.675002,-99.483339)" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/pid1/unikernels.png" inkscape:export-xdpi="127.98862" inkscape:export-ydpi="127.98862"> | ||
| 77 | <rect style="fill:#f9f9f9;stroke:none;stroke-width:0.429153;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect51140" width="50.57568" height="8.4333" x="13.294504" y="223.15991" ry="1.5" /> | ||
| 78 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.46944px;line-height:1.25;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" x="31.535746" y="228.24654" id="text51144"> | ||
| 79 | <tspan sodipodi:role="line" id="tspan51142" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.46944px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';fill:#4d4d4d;stroke-width:0.264583" x="31.535746" y="228.24654">HARDWARE</tspan> | ||
| 80 | </text> | ||
| 81 | </g> | ||
| 82 | <g id="g51166" transform="translate(95.250005,-102.12917)" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/pid1/unikernels.png" inkscape:export-xdpi="127.98862" inkscape:export-ydpi="127.98862"> | ||
| 83 | <rect style="fill:#f9f9f9;stroke:none;stroke-width:0.499999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect51148" width="22.000685" height="26.315866" x="13.294504" y="184.14406" ry="1.5" /> | ||
| 84 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" x="24.336025" y="206.33662" id="text51154"> | ||
| 85 | <tspan sodipodi:role="line" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="206.33662" id="tspan51152">CONTAINER</tspan> | ||
| 86 | </text> | ||
| 87 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" x="24.336025" y="198.19913" id="text51158"> | ||
| 88 | <tspan sodipodi:role="line" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="198.46822" id="tspan51156">PROGRAMS &</tspan> | ||
| 89 | <tspan sodipodi:role="line" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="200.26738" id="tspan64780">LIBRARIES</tspan> | ||
| 90 | </text> | ||
| 91 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" x="24.336025" y="189.40337" id="text51164"> | ||
| 92 | <tspan sodipodi:role="line" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="189.67245" id="tspan51160">TARGET</tspan> | ||
| 93 | <tspan sodipodi:role="line" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="191.47162" id="tspan51162">SOFTWARE</tspan> | ||
| 94 | </text> | ||
| 95 | </g> | ||
| 96 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:2.82222px;line-height:1.25;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Heavy';fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" x="162.66873" y="144.60236" id="text74212" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/pid1/unikernels.png" inkscape:export-xdpi="127.98862" inkscape:export-ydpi="127.98862"> | ||
| 97 | <tspan sodipodi:role="line" id="tspan74210" style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:2.82222px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Ultra-Bold';fill:#000000;stroke-width:0.264583" x="162.66873" y="144.60236">UNIKERNELS</tspan> | ||
| 98 | </text> | ||
| 99 | <g id="g74220" transform="translate(132.82087,-101.60001)" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/pid1/unikernels.png" inkscape:export-xdpi="127.98862" inkscape:export-ydpi="127.98862"> | ||
| 100 | <rect style="fill:#f9f9f9;stroke:none;stroke-width:0.429153;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect74214" width="50.57568" height="8.4333" x="13.294504" y="213.63496" ry="1.5" /> | ||
| 101 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.46944px;line-height:1.25;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" x="30.66217" y="218.54855" id="text74218"> | ||
| 102 | <tspan sodipodi:role="line" id="tspan74216" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.46944px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';fill:#4d4d4d;stroke-width:0.264583" x="30.66217" y="218.54855">HYPERVISOR</tspan> | ||
| 103 | </text> | ||
| 104 | </g> | ||
| 105 | <g id="g74240" transform="translate(132.82087,-102.12917)" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/pid1/unikernels.png" inkscape:export-xdpi="127.98862" inkscape:export-ydpi="127.98862"> | ||
| 106 | <rect style="fill:#f9f9f9;stroke:none;stroke-width:0.377825;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect74222" width="22.000685" height="15.026576" x="13.294504" y="195.43335" ry="0.85651237" /> | ||
| 107 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" x="24.336025" y="202.66647" id="text74232"> | ||
| 108 | <tspan sodipodi:role="line" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="202.93556" id="tspan74228">UNIKERNEL &</tspan> | ||
| 109 | <tspan sodipodi:role="line" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="204.73473" id="tspan74230">APPLICATION</tspan> | ||
| 110 | </text> | ||
| 111 | </g> | ||
| 112 | <g id="g74248" transform="translate(132.82087,-99.483339)" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/pid1/unikernels.png" inkscape:export-xdpi="127.98862" inkscape:export-ydpi="127.98862"> | ||
| 113 | <rect style="fill:#f9f9f9;stroke:none;stroke-width:0.429153;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect74242" width="50.57568" height="8.4333" x="13.294504" y="223.15991" ry="1.5" /> | ||
| 114 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.46944px;line-height:1.25;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" x="31.535746" y="228.24654" id="text74246"> | ||
| 115 | <tspan sodipodi:role="line" id="tspan74244" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.46944px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';fill:#4d4d4d;stroke-width:0.264583" x="31.535746" y="228.24654">HARDWARE</tspan> | ||
| 116 | </text> | ||
| 117 | </g> | ||
| 118 | <g id="g85408" transform="translate(161.34783,-102.25244)" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/pid1/unikernels.png" inkscape:export-xdpi="127.98862" inkscape:export-ydpi="127.98862"> | ||
| 119 | <rect style="fill:#f9f9f9;stroke:none;stroke-width:0.377825;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect85400" width="22.000685" height="15.026576" x="13.294504" y="195.43335" ry="0.85651237" /> | ||
| 120 | <text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;line-height:0.85;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" x="24.336025" y="202.66647" id="text85406"> | ||
| 121 | <tspan sodipodi:role="line" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="202.93556" id="tspan85402">UNIKERNEL &</tspan> | ||
| 122 | <tspan sodipodi:role="line" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.11667px;font-family:'SF Pro Display';-inkscape-font-specification:'SF Pro Display Bold';text-align:center;text-anchor:middle;fill:#4d4d4d;stroke-width:0.264583" x="24.336025" y="204.73473" id="tspan85404">APPLICATION</tspan> | ||
| 123 | </text> | ||
| 124 | </g> | ||
| 125 | </g> | ||
| 126 | <g id="g48182" transform="translate(0,-102.12917)" inkscape:export-filename="/home/m/Vault/projects/mitjafelicijan.com/pid1/unikernels.png" inkscape:export-xdpi="127.98862" inkscape:export-ydpi="127.98862" /> | ||
| 127 | </g> | ||
| 128 | </svg> | ||
diff --git a/assets/profile-bind-error/error.jpg b/static/profile-bind-error/error.jpg index c2e4e8f..c2e4e8f 100644 --- a/assets/profile-bind-error/error.jpg +++ b/static/profile-bind-error/error.jpg | |||
| Binary files differ | |||
diff --git a/assets/python-profiling/kcachegrind.png b/static/python-profiling/kcachegrind.png index 0dc48ab..0dc48ab 100644 --- a/assets/python-profiling/kcachegrind.png +++ b/static/python-profiling/kcachegrind.png | |||
| Binary files differ | |||
diff --git a/assets/python-profiling/profiling-viewer.png b/static/python-profiling/profiling-viewer.png index a450513..a450513 100644 --- a/assets/python-profiling/profiling-viewer.png +++ b/static/python-profiling/profiling-viewer.png | |||
| Binary files differ | |||
diff --git a/assets/python-profiling/snakeviz.png b/static/python-profiling/snakeviz.png index 5bab395..5bab395 100644 --- a/assets/python-profiling/snakeviz.png +++ b/static/python-profiling/snakeviz.png | |||
| Binary files differ | |||
diff --git a/assets/sentiment-analysis/.ipynb_checkpoints/TF Test-checkpoint.ipynb b/static/sentiment-analysis/.ipynb_checkpoints/TF Test-checkpoint.ipynb index e2a85c4..e2a85c4 100644 --- a/assets/sentiment-analysis/.ipynb_checkpoints/TF Test-checkpoint.ipynb +++ b/static/sentiment-analysis/.ipynb_checkpoints/TF Test-checkpoint.ipynb | |||
diff --git a/assets/sentiment-analysis/.ipynb_checkpoints/sentiment-analysis-checkpoint.ipynb b/static/sentiment-analysis/.ipynb_checkpoints/sentiment-analysis-checkpoint.ipynb index 2c0934c..2c0934c 100644 --- a/assets/sentiment-analysis/.ipynb_checkpoints/sentiment-analysis-checkpoint.ipynb +++ b/static/sentiment-analysis/.ipynb_checkpoints/sentiment-analysis-checkpoint.ipynb | |||
diff --git a/assets/sentiment-analysis/guardian-sa-title-desc-relationship.png b/static/sentiment-analysis/guardian-sa-title-desc-relationship.png index 7195bbf..7195bbf 100644 --- a/assets/sentiment-analysis/guardian-sa-title-desc-relationship.png +++ b/static/sentiment-analysis/guardian-sa-title-desc-relationship.png | |||
| Binary files differ | |||
diff --git a/assets/sentiment-analysis/sentiment-analysis.ipynb b/static/sentiment-analysis/sentiment-analysis.ipynb index 2c0934c..2c0934c 100644 --- a/assets/sentiment-analysis/sentiment-analysis.ipynb +++ b/static/sentiment-analysis/sentiment-analysis.ipynb | |||
diff --git a/assets/simple-pubsub-server/caniuse.png b/static/simple-pubsub-server/caniuse.png index 90f7883..90f7883 100644 --- a/assets/simple-pubsub-server/caniuse.png +++ b/static/simple-pubsub-server/caniuse.png | |||
| Binary files differ | |||
diff --git a/assets/simple-pubsub-server/chrome-debugging.png b/static/simple-pubsub-server/chrome-debugging.png index 1bdc448..1bdc448 100644 --- a/assets/simple-pubsub-server/chrome-debugging.png +++ b/static/simple-pubsub-server/chrome-debugging.png | |||
| Binary files differ | |||
diff --git a/assets/simple-pubsub-server/clients.mp4 b/static/simple-pubsub-server/clients.mp4 index 62a3bcf..62a3bcf 100644 --- a/assets/simple-pubsub-server/clients.mp4 +++ b/static/simple-pubsub-server/clients.mp4 | |||
| Binary files differ | |||
diff --git a/assets/simple-pubsub-server/pubsub-overview.png b/static/simple-pubsub-server/pubsub-overview.png index 0279ec3..0279ec3 100644 --- a/assets/simple-pubsub-server/pubsub-overview.png +++ b/static/simple-pubsub-server/pubsub-overview.png | |||
| Binary files differ | |||
diff --git a/assets/simple-pubsub-server/sse-pubsub-server.zip b/static/simple-pubsub-server/sse-pubsub-server.zip index 898b290..898b290 100644 --- a/assets/simple-pubsub-server/sse-pubsub-server.zip +++ b/static/simple-pubsub-server/sse-pubsub-server.zip | |||
| Binary files differ | |||
diff --git a/assets/wap/emulator.mp4 b/static/wap/emulator.mp4 index e4f59aa..e4f59aa 100644 --- a/assets/wap/emulator.mp4 +++ b/static/wap/emulator.mp4 | |||
| Binary files differ | |||
diff --git a/assets/wap/phones.gif b/static/wap/phones.gif index 15f99e2..15f99e2 100644 --- a/assets/wap/phones.gif +++ b/static/wap/phones.gif | |||
| Binary files differ | |||
diff --git a/assets/world-clock/enclosure.stl b/static/world-clock/enclosure.stl index 99f3d1a..99f3d1a 100644 --- a/assets/world-clock/enclosure.stl +++ b/static/world-clock/enclosure.stl | |||
| Binary files differ | |||
diff --git a/assets/world-clock/hardware.jpg b/static/world-clock/hardware.jpg index 315a04d..315a04d 100644 --- a/assets/world-clock/hardware.jpg +++ b/static/world-clock/hardware.jpg | |||
| Binary files differ | |||
diff --git a/assets/world-clock/world-clock.jpg b/static/world-clock/world-clock.jpg index afdb6e2..afdb6e2 100644 --- a/assets/world-clock/world-clock.jpg +++ b/static/world-clock/world-clock.jpg | |||
| Binary files differ | |||
diff --git a/assets/yapyap/hello.png b/static/yapyap/hello.png index d141cd3..d141cd3 100644 --- a/assets/yapyap/hello.png +++ b/static/yapyap/hello.png | |||
| Binary files differ | |||
diff --git a/assets/yapyap/pid1.jpg b/static/yapyap/pid1.jpg index 99bc1d8..99bc1d8 100644 --- a/assets/yapyap/pid1.jpg +++ b/static/yapyap/pid1.jpg | |||
| Binary files differ | |||
diff --git a/template/_footer.html b/template/_footer.html deleted file mode 100755 index 605c0a9..0000000 --- a/template/_footer.html +++ /dev/null | |||
| @@ -1,7 +0,0 @@ | |||
| 1 | <div class="footer"> | ||
| 2 | <footer class="wrapper"> | ||
| 3 | This website does not track you. | ||
| 4 | Content is made available under the <a href="https://creativecommons.org/licenses/by/4.0/" target="_blank" rel="noreferrer">CC BY 4.0 license</a> unless specified otherwise. | ||
| 5 | Blog feed available as <a href="/feed.rss" target="_blank">RSS</a> or <a href="/feed.json" target="_blank">JSON</a> feeds. | ||
| 6 | </footer> | ||
| 7 | </div> | ||
diff --git a/template/_includes.html b/template/_includes.html deleted file mode 100755 index 5151355..0000000 --- a/template/_includes.html +++ /dev/null | |||
| @@ -1,7 +0,0 @@ | |||
| 1 | <!-- user code --> | ||
| 2 | |||
| 3 | <script src="/script.js?v=2022-08-14-02" async></script> | ||
| 4 | |||
| 5 | <!-- Fathom - beautiful, simple website analytics --> | ||
| 6 | <script src="https://cdn.usefathom.com/script.js" data-site="XHQARKXP" defer></script> | ||
| 7 | <!-- / Fathom --> \ No newline at end of file | ||
diff --git a/template/_meta.html b/template/_meta.html deleted file mode 100755 index ff0dc0f..0000000 --- a/template/_meta.html +++ /dev/null | |||
| @@ -1,16 +0,0 @@ | |||
| 1 | <meta charset="utf-8"> | ||
| 2 | <meta name="theme-color" content="#ffffff"> | ||
| 3 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
| 4 | <meta http-equiv="X-UA-Compatible" content="ie=edge"> | ||
| 5 | |||
| 6 | <meta name="theme-color" content="#ffffff"> | ||
| 7 | |||
| 8 | <link rel="stylesheet" href="/style.css?v=2022-07-05-01"> | ||
| 9 | |||
| 10 | <link rel="alternate" type="application/rss+xml" href="/feed.rss"> | ||
| 11 | <link rel="alternate" type="application/feed+json" href="/feed.json"> | ||
| 12 | <link rel="alternate" type="application/rss+xml" href="/yapyap.xml" title="YapYap"> | ||
| 13 | |||
| 14 | <link | ||
| 15 | href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL69vf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv76+/8LBwQkAAAAAAAAAAAAAAAC+vb3/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL+9vf/Bv78JAAAAAAAAAAAAAAAAu7q6/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7ubr/vr29CAAAAAAAAAAAy8nJAZ6foP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnqGj/6GipAoAAAAAHLjU/xcXHf/BwsL/I8XY/yPK3v8XGiD/IbjL/yPF2f8XGiD/Fxkf/yLF2f8gnK3/Fxog/62ztv8fwNf/FRcd/x271v8mz93/GRsi/xkXHf8p097/GiIp/xobIv8p0t3/KdPe/xocIv8fYmr/KNPe/xoZH/8aHCL/J87c/xy81/8VFxz/IsPZ/8zS0/8XGiD/Ir/R/yPH2/8XGiD/Fxkf/yPH2/8dd4T/GBog/yPJ3f8jyNr/uru9/xcUGv8cudb/EhITDKi5vRKlvMP/RUpOERwcHRAdOj4QHTk8EBwdHRAdNTgQHTo/EBwcHRAcHB0QSGduEKW4vf+koqQfHzg+EBqz0ewSFRv7EyMr/xq51vsTERb7ExUb+xq41fsau9j7ExUb+xiPp/sZudb7ExUb+xMVG/sZuNX/GKvI/BIUGfMdvdn/IrfL/xcaIP8n1eb/J9Dh/xkcIf8ZGR7/J8/f/xxCSv8ZGyH/J9Dg/ybQ4P8ZHCL/FSQs/yPK3/8UExj/GE1b/ybS5P8ZGB7/Ghwj/ynW5P8p2Ob/Ghwi/yWrtv8p1eH/Ghwi/xocIv8p1uT/J8XT/xkcIv8m1un/Hb7d/xUYH/8hzOr/HtHu/xcaIf8XGB//I8vi/xgxOv8XGSD/I8rg/yPK4P8XGiD/GUFL/yPP6f8SERj/Fhkh/x3A4f8AAAAAJ2f9/ydr//8mZPH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlYu38J2v//ydo/f8AAAAAAAAAAAd8/fkFqf//Iob8sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMY39awWr//8FfP3/AAAAAAAAAAAFm/7/SfD//wR+/f8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOB/f9B7v//BaX+/wAAAAAAAAAAQ878SAyZ/v9n1v4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADu9v8DDJb+/z3N/XgAAAAA3/sAAN/7AADf+wAA3/sAAAAAAAAAAAAAAAAAAN/7AAAAAAAAAAAAAAAAAAAAAAAAj/EAAI/5AACP8QAA3/sAAA==" | ||
| 16 | rel="icon" type="image/x-icon" /> \ No newline at end of file | ||
diff --git a/template/_navigation.html b/template/_navigation.html deleted file mode 100755 index 8fef331..0000000 --- a/template/_navigation.html +++ /dev/null | |||
| @@ -1,18 +0,0 @@ | |||
| 1 | <div class="navigation"> | ||
| 2 | <header class="wrapper"> | ||
| 3 | <h3 class="home"> | ||
| 4 | <a href="/" itemprop="url">Mitja Felicijan</a> | ||
| 5 | </h3> | ||
| 6 | |||
| 7 | <nav itemscope itemtype="http://schema.org/SiteNavigationElement" class="main-navigation"> | ||
| 8 | <meta itemprop="name" content="Main Menu"> | ||
| 9 | |||
| 10 | <a href="https://git.mitjafelicijan.com" target="_blank" rel="noopener nofollow" itemprop="url">Git</a> | ||
| 11 | <a href="https://files.mitjafelicijan.com" target="_blank" rel="noopener nofollow" itemprop="url">Files</a> | ||
| 12 | <a href="/curriculum-vitae.html">CV</a> | ||
| 13 | <a href="/books.html">Books</a> | ||
| 14 | |||
| 15 | <a href="/feed.rss" itemprop="url">RSS</a> | ||
| 16 | </nav> | ||
| 17 | </header> | ||
| 18 | </div> \ No newline at end of file | ||
diff --git a/template/favicon.ico b/template/favicon.ico deleted file mode 100644 index d6be6ec..0000000 --- a/template/favicon.ico +++ /dev/null | |||
| Binary files differ | |||
diff --git a/template/index.html b/template/index.html deleted file mode 100755 index 9196940..0000000 --- a/template/index.html +++ /dev/null | |||
| @@ -1,62 +0,0 @@ | |||
| 1 | <!doctype html> | ||
| 2 | <html lang="en"> | ||
| 3 | |||
| 4 | <head> | ||
| 5 | {{template "_meta.html"}} | ||
| 6 | |||
| 7 | <title>{{.Title}}</title> | ||
| 8 | <meta name="description" content="{{.Description}}"> | ||
| 9 | <meta property="og:title" content="{{.Title}}"> | ||
| 10 | <meta property="og:description" content="{{.Description}}"> | ||
| 11 | </head> | ||
| 12 | |||
| 13 | <body> | ||
| 14 | |||
| 15 | {{template "_navigation.html"}} | ||
| 16 | |||
| 17 | <main class="wrapper"> | ||
| 18 | <h2>Blog posts</h2> | ||
| 19 | <nav itemscope itemtype="https://schema.org/SiteNavigationElement"> | ||
| 20 | <meta itemprop="name" content="Article list"> | ||
| 21 | |||
| 22 | <ul class="post-list"> | ||
| 23 | {{range $index, $post := .Posts}} | ||
| 24 | {{if $post.Listing}} | ||
| 25 | <li> | ||
| 26 | <time>{{.CreatedFormatted}}</time> | ||
| 27 | |||
| 28 | <a href="/{{$post.Slug}}" title="{{$post.Title}}" itemprop="url"> | ||
| 29 | <h2>{{$post.Title}}</h2> | ||
| 30 | </a> | ||
| 31 | </li> | ||
| 32 | {{end}} | ||
| 33 | {{end}} | ||
| 34 | </ul> | ||
| 35 | </nav> | ||
| 36 | |||
| 37 | <hr class="top-margin"> | ||
| 38 | |||
| 39 | <section class="project-list"> | ||
| 40 | <h4>Side projects I work/worked on</h4> | ||
| 41 | <ul> | ||
| 42 | <li><a href="https://git.mitjafelicijan.com/journalctl-proxy.git/" target="_blank" rel="noopener nofollow">journalctl-proxy - Exposes your systemd logs to web via web interface</a></li> | ||
| 43 | <li><a href="https://git.mitjafelicijan.com/redis-marshal.git/" target="_blank" rel="noopener nofollow">redis-marshal - Lightweight Redis data exploration tool</a></li> | ||
| 44 | <li><a href="https://git.mitjafelicijan.com/dna-encoding.git/" target="_blank" rel="noopener nofollow">dna-encoding - Tools for encoding files to DNA sequence</a></li> | ||
| 45 | <li><a href="https://git.mitjafelicijan.com/vertex.git/" target="_blank" rel="noopener nofollow">vertex - Create mock API's and add basic logic to simplify prototyping</a></li> | ||
| 46 | <li><a href="https://git.mitjafelicijan.com/scarecrow.git/" target="_blank" rel="noopener nofollow">scarecrow - Minimal configuration reverse proxy</a></li> | ||
| 47 | </ul> | ||
| 48 | </section> | ||
| 49 | |||
| 50 | <hr class="top-margin"> | ||
| 51 | |||
| 52 | {{template "openring-build.html"}} | ||
| 53 | |||
| 54 | </main> | ||
| 55 | |||
| 56 | {{template "_footer.html"}} | ||
| 57 | |||
| 58 | {{template "_includes.html"}} | ||
| 59 | |||
| 60 | </body> | ||
| 61 | |||
| 62 | </html> \ No newline at end of file | ||
diff --git a/template/openring.tmpl b/template/openring.tmpl deleted file mode 100644 index 43ad6a2..0000000 --- a/template/openring.tmpl +++ /dev/null | |||
| @@ -1,34 +0,0 @@ | |||
| 1 | <section class="webring top-margin"> | ||
| 2 | <h4>Articles from blogs I follow around the net</h3> | ||
| 3 | <section> | ||
| 4 | {{range .Articles}} | ||
| 5 | <article> | ||
| 6 | <a href="{{.Link}}" target="_blank" rel="noopener">{{.Title}}</a> | ||
| 7 | <p class="summary">{{.Summary}}</p> | ||
| 8 | <small> | ||
| 9 | via <a href="{{.SourceLink}}">{{.SourceTitle}}</a> | ||
| 10 | </small> | ||
| 11 | <small>{{.Date | datef "January 2, 2006"}}</small> | ||
| 12 | </article> | ||
| 13 | {{end}} | ||
| 14 | </section> | ||
| 15 | <p class="attribution"> | ||
| 16 | Generated by | ||
| 17 | <a href="https://git.sr.ht/~sircmpwn/openring">openring</a> | ||
| 18 | </p> | ||
| 19 | </section> | ||
| 20 | |||
| 21 | <style> | ||
| 22 | .webring article { | ||
| 23 | margin-block-end: 30px; | ||
| 24 | } | ||
| 25 | .webring article:last-child { | ||
| 26 | margin-block-end: 10px; | ||
| 27 | } | ||
| 28 | .webring article .summary { | ||
| 29 | margin: 0; | ||
| 30 | } | ||
| 31 | .webring .attribution { | ||
| 32 | font-size: small; | ||
| 33 | } | ||
| 34 | </style> | ||
diff --git a/template/post.html b/template/post.html deleted file mode 100755 index 3ce5ff0..0000000 --- a/template/post.html +++ /dev/null | |||
| @@ -1,76 +0,0 @@ | |||
| 1 | <!doctype html> | ||
| 2 | <html lang="en"> | ||
| 3 | |||
| 4 | <head> | ||
| 5 | {{template "_meta.html"}} | ||
| 6 | |||
| 7 | <title>{{.Title}}</title> | ||
| 8 | <meta name="description" content="{{.Description}}"> | ||
| 9 | <meta property="og:title" content="{{.Title}}"> | ||
| 10 | <meta property="og:description" content="{{.Description}}"> | ||
| 11 | </head> | ||
| 12 | |||
| 13 | <body> | ||
| 14 | |||
| 15 | {{template "_navigation.html"}} | ||
| 16 | |||
| 17 | <main class="wrapper"> | ||
| 18 | <article itemtype="http://schema.org/Article"> | ||
| 19 | <header> | ||
| 20 | <h1 itemtype="headline">{{.Title}}</h1> | ||
| 21 | {{if .Listing}} | ||
| 22 | <time>Published on {{.CreatedFormatted}}</time> | ||
| 23 | {{end}} | ||
| 24 | </header> | ||
| 25 | <div> | ||
| 26 | {{.Content}} | ||
| 27 | </div> | ||
| 28 | </article> | ||
| 29 | |||
| 30 | {{if .Listing}} | ||
| 31 | |||
| 32 | <hr class="top-margin"> | ||
| 33 | |||
| 34 | <p class="top-margin"> | ||
| 35 | <strong>Comment, contact:</strong> The easiest way to contact me is by writing me a message on <a href="https://t.me/mitjafelicijan" target="_blank">Telegram (https://t.me/mitjafelicijan)</a>. | ||
| 36 | </p> | ||
| 37 | |||
| 38 | <p>You can also just write me an email at <a href="mailto:m@mitjafelicijan.com">m@mitjafelicijan.com</a>.</p> | ||
| 39 | |||
| 40 | <hr class="top-margin"> | ||
| 41 | |||
| 42 | {{if .Posts}} | ||
| 43 | <nav class="top-margin"> | ||
| 44 | <h4>Read more from this site</h4> | ||
| 45 | {{range $index, $post := .Posts}} | ||
| 46 | {{if .Listing}} | ||
| 47 | {{if (lt $index 5)}} | ||
| 48 | <p> | ||
| 49 | <time>{{$post.CreatedFormatted}}</time><br> | ||
| 50 | <a href="/{{$post.Slug}}" title="{{$post.Title}}" itemprop="url"> | ||
| 51 | {{$post.Title}} | ||
| 52 | </a> | ||
| 53 | </p> | ||
| 54 | {{end}} | ||
| 55 | {{end}} | ||
| 56 | {{end}} | ||
| 57 | </nav> | ||
| 58 | {{end}} | ||
| 59 | |||
| 60 | <hr class="top-margin"> | ||
| 61 | |||
| 62 | {{template "openring-build.html"}} | ||
| 63 | |||
| 64 | {{end}} | ||
| 65 | |||
| 66 | </main> | ||
| 67 | |||
| 68 | {{template "_footer.html"}} | ||
| 69 | |||
| 70 | {{template "_includes.html"}} | ||
| 71 | |||
| 72 | {{template "_libraries.html"}} | ||
| 73 | |||
| 74 | </body> | ||
| 75 | |||
| 76 | </html> \ No newline at end of file | ||
diff --git a/template/robots.txt b/template/robots.txt deleted file mode 100644 index c2a49f4..0000000 --- a/template/robots.txt +++ /dev/null | |||
| @@ -1,2 +0,0 @@ | |||
| 1 | User-agent: * | ||
| 2 | Allow: / | ||
diff --git a/template/script.js b/template/script.js deleted file mode 100755 index c03883f..0000000 --- a/template/script.js +++ /dev/null | |||
| @@ -1,11 +0,0 @@ | |||
| 1 | window.addEventListener('load', async () => { | ||
| 2 | |||
| 3 | // flip CV image on mouse over | ||
| 4 | const cvImage = document.querySelector('.cv-picture img'); | ||
| 5 | if (cvImage) { | ||
| 6 | setInterval(() => { | ||
| 7 | cvImage.style.transform = cvImage.style.transform === 'scaleX(1)' ? 'scaleX(-1)' : 'scaleX(1)'; | ||
| 8 | }, 1000); | ||
| 9 | } | ||
| 10 | |||
| 11 | }); | ||
diff --git a/template/style.css b/template/style.css deleted file mode 100755 index 20ed862..0000000 --- a/template/style.css +++ /dev/null | |||
| @@ -1,436 +0,0 @@ | |||
| 1 | /*@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;500;600;700&display=swap');*/ | ||
| 2 | |||
| 3 | :root { | ||
| 4 | --base-document-width: 640px; | ||
| 5 | --base-font-size: 16px; | ||
| 6 | --base-line-heigh: 1.6em; | ||
| 7 | --base-color: #111111; | ||
| 8 | |||
| 9 | --link-color: #111111; | ||
| 10 | --link-color-hover: #111111; | ||
| 11 | |||
| 12 | --label-color: #222222; | ||
| 13 | |||
| 14 | --border-color: #eeeeee; | ||
| 15 | |||
| 16 | --badge-background-color: #eeeeee; | ||
| 17 | --badge-label-color: #111111; | ||
| 18 | |||
| 19 | --code-font-size: 13px; | ||
| 20 | |||
| 21 | --comment-form-font: 16px 'Times New Roman', Times, serif; | ||
| 22 | } | ||
| 23 | |||
| 24 | * { | ||
| 25 | box-sizing: border-box; | ||
| 26 | } | ||
| 27 | |||
| 28 | body { | ||
| 29 | background: white; | ||
| 30 | /*font-family: 'Times New Roman', Times, serif;*/ | ||
| 31 | /*font-family: 'IBM Plex Sans', sans-serif;*/ | ||
| 32 | font-family: "SF Pro Text", "SF Pro Icons", "Helvetica Neue", "Helvetica", "Arial", sans-serif; | ||
| 33 | color: var(--base-color); | ||
| 34 | font-size: var(--base-font-size); | ||
| 35 | line-height: var(--base-line-heigh); | ||
| 36 | padding: 0; | ||
| 37 | margin: 0; | ||
| 38 | padding-bottom: 100px; | ||
| 39 | } | ||
| 40 | |||
| 41 | hr { | ||
| 42 | border: 0; | ||
| 43 | border-top: 5px solid #f7f7f7; | ||
| 44 | } | ||
| 45 | |||
| 46 | |||
| 47 | ::selection { | ||
| 48 | background: rgb(255, 241, 177); | ||
| 49 | color: #000; | ||
| 50 | } | ||
| 51 | |||
| 52 | ::-moz-selection { | ||
| 53 | background: rgb(255, 241, 177); | ||
| 54 | color: #000; | ||
| 55 | } | ||
| 56 | |||
| 57 | .cursor { | ||
| 58 | cursor: pointer; | ||
| 59 | } | ||
| 60 | |||
| 61 | /* width of the page */ | ||
| 62 | |||
| 63 | .wrapper { | ||
| 64 | max-width: var(--base-document-width); | ||
| 65 | margin: 0 auto; | ||
| 66 | } | ||
| 67 | |||
| 68 | /* links */ | ||
| 69 | |||
| 70 | a { | ||
| 71 | color: black; | ||
| 72 | } | ||
| 73 | |||
| 74 | a:hover { | ||
| 75 | background: rgb(255, 241, 177); | ||
| 76 | } | ||
| 77 | |||
| 78 | |||
| 79 | /* headings */ | ||
| 80 | |||
| 81 | h1 { | ||
| 82 | font-size: 220%; | ||
| 83 | line-height: 1.2em; | ||
| 84 | } | ||
| 85 | |||
| 86 | h2 { | ||
| 87 | font-size: 180%; | ||
| 88 | line-height: 1.2em; | ||
| 89 | } | ||
| 90 | |||
| 91 | h3 { | ||
| 92 | font-size: 160%; | ||
| 93 | line-height: 1.2em; | ||
| 94 | } | ||
| 95 | |||
| 96 | h4 { | ||
| 97 | font-size: 140%; | ||
| 98 | line-height: 1.2em; | ||
| 99 | } | ||
| 100 | |||
| 101 | h5 { | ||
| 102 | font-size: 120%; | ||
| 103 | line-height: 1.2em; | ||
| 104 | } | ||
| 105 | |||
| 106 | h6 { | ||
| 107 | font-size: 100%; | ||
| 108 | line-height: 1.2em; | ||
| 109 | } | ||
| 110 | |||
| 111 | h1[itemtype="headline"] { | ||
| 112 | padding-bottom: 0; | ||
| 113 | margin-bottom: 20px; | ||
| 114 | font-size: 230%; | ||
| 115 | line-height: 1.2em; | ||
| 116 | font-weight: 800; | ||
| 117 | } | ||
| 118 | |||
| 119 | /* tables */ | ||
| 120 | |||
| 121 | table { | ||
| 122 | width: 100%; | ||
| 123 | } | ||
| 124 | |||
| 125 | table, | ||
| 126 | th, | ||
| 127 | td { | ||
| 128 | border: 1px solid black; | ||
| 129 | text-align: left; | ||
| 130 | } | ||
| 131 | |||
| 132 | th, | ||
| 133 | td { | ||
| 134 | padding: 5px 10px; | ||
| 135 | } | ||
| 136 | |||
| 137 | |||
| 138 | /* quotes */ | ||
| 139 | |||
| 140 | blockquote { | ||
| 141 | position: relative; | ||
| 142 | margin-block-start: 30px; | ||
| 143 | margin-block-end: 30px; | ||
| 144 | margin-right: 0; | ||
| 145 | } | ||
| 146 | |||
| 147 | blockquote:before { | ||
| 148 | content: ' '; | ||
| 149 | background-image: url('/assets/general/alert-light.svg'); | ||
| 150 | background-size: 30px 30px; | ||
| 151 | height: 30px; | ||
| 152 | width: 30px; | ||
| 153 | position: absolute; | ||
| 154 | left: -40px; | ||
| 155 | top: 6px; | ||
| 156 | } | ||
| 157 | |||
| 158 | blockquote p { | ||
| 159 | padding-left: 10px; | ||
| 160 | } | ||
| 161 | |||
| 162 | |||
| 163 | /* header navigation */ | ||
| 164 | |||
| 165 | .navigation { | ||
| 166 | margin-block-start: 10px; | ||
| 167 | margin-block-end: 30px; | ||
| 168 | } | ||
| 169 | |||
| 170 | .navigation header { | ||
| 171 | display: flex; | ||
| 172 | align-items: center; | ||
| 173 | } | ||
| 174 | |||
| 175 | .navigation header a { | ||
| 176 | text-decoration: none; | ||
| 177 | } | ||
| 178 | |||
| 179 | .navigation header a:hover { | ||
| 180 | text-decoration: underline; | ||
| 181 | } | ||
| 182 | |||
| 183 | .navigation header .home { | ||
| 184 | font-size: 130%; | ||
| 185 | font-weight: 700; | ||
| 186 | } | ||
| 187 | |||
| 188 | .navigation header .home a { | ||
| 189 | color: var(--base-color); | ||
| 190 | } | ||
| 191 | |||
| 192 | .navigation header .home a:hover { | ||
| 193 | text-decoration: none; | ||
| 194 | } | ||
| 195 | |||
| 196 | .navigation header nav { | ||
| 197 | flex-grow: 1; | ||
| 198 | text-align: right; | ||
| 199 | } | ||
| 200 | |||
| 201 | .navigation header nav a { | ||
| 202 | padding: 0 10px; | ||
| 203 | font-size: 100%; | ||
| 204 | font-weight: 500; | ||
| 205 | } | ||
| 206 | |||
| 207 | /* index post list */ | ||
| 208 | |||
| 209 | .post-list { | ||
| 210 | list-style-type: none; | ||
| 211 | padding: 0; | ||
| 212 | margin: 0; | ||
| 213 | } | ||
| 214 | |||
| 215 | .post-list li { | ||
| 216 | margin: 0 0 15px 0; | ||
| 217 | } | ||
| 218 | |||
| 219 | .post-list li time { | ||
| 220 | display: block; | ||
| 221 | font-size: 80%; | ||
| 222 | font-weight: 500; | ||
| 223 | line-height: 1.2em; | ||
| 224 | color: #a7a7a7; | ||
| 225 | } | ||
| 226 | |||
| 227 | .post-list li a { | ||
| 228 | display: inline-block; | ||
| 229 | text-decoration: none; | ||
| 230 | } | ||
| 231 | |||
| 232 | .post-list li a:hover {} | ||
| 233 | |||
| 234 | .post-list li a h2 { | ||
| 235 | font-weight: 400; | ||
| 236 | font-size: 100%; | ||
| 237 | margin: 0; | ||
| 238 | } | ||
| 239 | |||
| 240 | |||
| 241 | /* project list */ | ||
| 242 | |||
| 243 | .project-list { | ||
| 244 | margin-top: 60px; | ||
| 245 | } | ||
| 246 | |||
| 247 | .project-list a {} | ||
| 248 | |||
| 249 | .project-list li { | ||
| 250 | list-style-type: disclosure-closed; | ||
| 251 | padding-left: 10px; | ||
| 252 | } | ||
| 253 | |||
| 254 | |||
| 255 | /* webring */ | ||
| 256 | |||
| 257 | .webring a { | ||
| 258 | font-weight: 500; | ||
| 259 | } | ||
| 260 | |||
| 261 | |||
| 262 | /* tag badges */ | ||
| 263 | |||
| 264 | .tags { | ||
| 265 | margin-top: 5px; | ||
| 266 | } | ||
| 267 | |||
| 268 | .tags a { | ||
| 269 | font-size: 80%; | ||
| 270 | padding: 2px 10px; | ||
| 271 | border-radius: 20px; | ||
| 272 | |||
| 273 | background: var(--badge-background-color); | ||
| 274 | color: var(--badge-label-color) !important; | ||
| 275 | } | ||
| 276 | |||
| 277 | .tags a:hover { | ||
| 278 | filter: brightness(90%); | ||
| 279 | } | ||
| 280 | |||
| 281 | |||
| 282 | /* helpers */ | ||
| 283 | |||
| 284 | .top-margin { | ||
| 285 | margin-top: 60px; | ||
| 286 | } | ||
| 287 | |||
| 288 | .top-margin-huge { | ||
| 289 | margin-top: 100px; | ||
| 290 | } | ||
| 291 | |||
| 292 | code { | ||
| 293 | font-family: monospace; | ||
| 294 | background: rgb(255, 241, 177); | ||
| 295 | border-radius: 5px; | ||
| 296 | padding: 2px 8px; | ||
| 297 | font-size: var(--code-font-size); | ||
| 298 | font-weight: 500; | ||
| 299 | } | ||
| 300 | |||
| 301 | pre>code { | ||
| 302 | background: unset; | ||
| 303 | padding: unset; | ||
| 304 | |||
| 305 | padding: 15px 20px !important; | ||
| 306 | border-radius: 5px !important; | ||
| 307 | font-weight: 400; | ||
| 308 | } | ||
| 309 | |||
| 310 | pre { | ||
| 311 | font-size: var(--code-font-size); | ||
| 312 | line-height: 1.5em; | ||
| 313 | |||
| 314 | margin-block-start: 40px; | ||
| 315 | margin-block-end: 40px; | ||
| 316 | } | ||
| 317 | |||
| 318 | img, | ||
| 319 | video { | ||
| 320 | max-width: 100%; | ||
| 321 | margin: 30px auto; | ||
| 322 | display: block; | ||
| 323 | border-radius: 5px; | ||
| 324 | } | ||
| 325 | |||
| 326 | video { | ||
| 327 | background: var(--badge-background-color); | ||
| 328 | } | ||
| 329 | |||
| 330 | time { | ||
| 331 | color: var(--label-color); | ||
| 332 | font-size: 90%; | ||
| 333 | } | ||
| 334 | |||
| 335 | /* article */ | ||
| 336 | |||
| 337 | article a { | ||
| 338 | overflow-wrap: break-word; | ||
| 339 | word-wrap: break-word; | ||
| 340 | -webkit-hyphens: auto; | ||
| 341 | -ms-hyphens: auto; | ||
| 342 | -moz-hyphens: auto; | ||
| 343 | hyphens: auto; | ||
| 344 | } | ||
| 345 | |||
| 346 | article img { | ||
| 347 | max-width: 120%; | ||
| 348 | width: 120%; | ||
| 349 | position: relative; | ||
| 350 | left: -10%; | ||
| 351 | margin: 40px auto; | ||
| 352 | /* border: 1px solid #eee; */ | ||
| 353 | } | ||
| 354 | |||
| 355 | article strong { | ||
| 356 | font-weight: 600; | ||
| 357 | } | ||
| 358 | |||
| 359 | article ol { | ||
| 360 | padding-inline-start: 30px; | ||
| 361 | } | ||
| 362 | |||
| 363 | article .katex-display { | ||
| 364 | margin: 3em 0 !important; | ||
| 365 | } | ||
| 366 | |||
| 367 | /* audio */ | ||
| 368 | |||
| 369 | audio { | ||
| 370 | width: 100%; | ||
| 371 | outline: none; | ||
| 372 | } | ||
| 373 | |||
| 374 | |||
| 375 | /* footer */ | ||
| 376 | |||
| 377 | .footer { | ||
| 378 | margin-top: 70px; | ||
| 379 | padding-top: 20px; | ||
| 380 | padding-bottom: 50px; | ||
| 381 | font-size: 90%; | ||
| 382 | color: #888; | ||
| 383 | } | ||
| 384 | |||
| 385 | .footer a { | ||
| 386 | color: #666; | ||
| 387 | } | ||
| 388 | |||
| 389 | /* responsive */ | ||
| 390 | |||
| 391 | @media only screen and (max-width: 960px) { | ||
| 392 | main { | ||
| 393 | padding: 0 20px; | ||
| 394 | } | ||
| 395 | |||
| 396 | footer { | ||
| 397 | padding: 0 20px; | ||
| 398 | } | ||
| 399 | |||
| 400 | h1[itemtype="headline"] { | ||
| 401 | font-size: 220%; | ||
| 402 | } | ||
| 403 | |||
| 404 | .navigation header { | ||
| 405 | padding: 0 20px; | ||
| 406 | } | ||
| 407 | |||
| 408 | article img { | ||
| 409 | max-width: 100%; | ||
| 410 | position: initial; | ||
| 411 | margin: 20px auto; | ||
| 412 | } | ||
| 413 | } | ||
| 414 | |||
| 415 | @media only screen and (max-width: 600px) { | ||
| 416 | .navigation header { | ||
| 417 | display: block; | ||
| 418 | } | ||
| 419 | |||
| 420 | .navigation header h3 { | ||
| 421 | text-align: center; | ||
| 422 | margin-bottom: 10px; | ||
| 423 | } | ||
| 424 | |||
| 425 | .navigation header nav { | ||
| 426 | text-align: center; | ||
| 427 | } | ||
| 428 | |||
| 429 | .post-list li a h2 { | ||
| 430 | font-weight: 500; | ||
| 431 | } | ||
| 432 | |||
| 433 | .search-trigger { | ||
| 434 | display: none; | ||
| 435 | } | ||
| 436 | } \ No newline at end of file | ||
diff --git a/template/tag.html b/template/tag.html deleted file mode 100755 index 42e42ea..0000000 --- a/template/tag.html +++ /dev/null | |||
| @@ -1,61 +0,0 @@ | |||
| 1 | <!doctype html> | ||
| 2 | <html lang="en"> | ||
| 3 | |||
| 4 | <head> | ||
| 5 | {{template "_meta.html"}} | ||
| 6 | |||
| 7 | <title>{{.Title}}</title> | ||
| 8 | <meta name="description" content="{{.Description}}"> | ||
| 9 | </head> | ||
| 10 | |||
| 11 | <body> | ||
| 12 | |||
| 13 | {{template "_navigation.html"}} | ||
| 14 | |||
| 15 | <main class="wrapper"> | ||
| 16 | <h2>Posts for `{{.Tag}}`</h2> | ||
| 17 | <nav itemscope itemtype="https://schema.org/SiteNavigationElement"> | ||
| 18 | <meta itemprop="name" content="Article list"> | ||
| 19 | |||
| 20 | <ul class="post-list"> | ||
| 21 | {{range $index, $post := .Posts}} | ||
| 22 | <li> | ||
| 23 | <time>{{.CreatedFormatted}}</time> | ||
| 24 | |||
| 25 | <a href="/{{$post.Slug}}" title="{{$post.Title}}" itemprop="url"> | ||
| 26 | <h2>{{$post.Title}}</h2> | ||
| 27 | </a> | ||
| 28 | |||
| 29 | <!-- lists all tags available in this posts --> | ||
| 30 | {{if $post.Tags}} | ||
| 31 | <nav class="tags"> | ||
| 32 | {{range $post.Tags}} | ||
| 33 | <a href="/tags/{{.}}.html" rel="tag">{{.}}</a> | ||
| 34 | {{end}} | ||
| 35 | </nav> | ||
| 36 | {{end}} | ||
| 37 | |||
| 38 | </li> | ||
| 39 | {{end}} | ||
| 40 | </ul> | ||
| 41 | </nav> | ||
| 42 | |||
| 43 | <!-- lists all tags available in all posts --> | ||
| 44 | {{if .Tags}} | ||
| 45 | <nav class="tags top-margin"> | ||
| 46 | <strong>All tags on site:</strong> | ||
| 47 | {{range .Tags}} | ||
| 48 | <a href="/tags/{{.}}.html" rel="tag">{{.}}</a> | ||
| 49 | {{end}} | ||
| 50 | </nav> | ||
| 51 | {{end}} | ||
| 52 | |||
| 53 | </main> | ||
| 54 | |||
| 55 | {{template "_footer.html"}} | ||
| 56 | |||
| 57 | {{template "_includes.html"}} | ||
| 58 | |||
| 59 | </body> | ||
| 60 | |||
| 61 | </html> | ||
diff --git a/themes/.gitkeep b/themes/.gitkeep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/themes/.gitkeep | |||
diff --git a/themes/simple/LICENSE b/themes/simple/LICENSE new file mode 100644 index 0000000..147d594 --- /dev/null +++ b/themes/simple/LICENSE | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | The MIT License (MIT) | ||
| 2 | |||
| 3 | Copyright (c) 2022 YOUR_NAME_HERE | ||
| 4 | |||
| 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of | ||
| 6 | this software and associated documentation files (the "Software"), to deal in | ||
| 7 | the Software without restriction, including without limitation the rights to | ||
| 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of | ||
| 9 | the Software, and to permit persons to whom the Software is furnished to do so, | ||
| 10 | subject to the following conditions: | ||
| 11 | |||
| 12 | The above copyright notice and this permission notice shall be included in all | ||
| 13 | copies or substantial portions of the Software. | ||
| 14 | |||
| 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS | ||
| 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR | ||
| 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER | ||
| 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||
| 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
diff --git a/themes/simple/archetypes/default.md b/themes/simple/archetypes/default.md new file mode 100644 index 0000000..ac36e06 --- /dev/null +++ b/themes/simple/archetypes/default.md | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | +++ | ||
| 2 | +++ | ||
diff --git a/themes/simple/layouts/404.html b/themes/simple/layouts/404.html new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/themes/simple/layouts/404.html | |||
diff --git a/themes/simple/layouts/_default/baseof.html b/themes/simple/layouts/_default/baseof.html new file mode 100644 index 0000000..5f8e2ec --- /dev/null +++ b/themes/simple/layouts/_default/baseof.html | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | <!DOCTYPE html> | ||
| 2 | <html> | ||
| 3 | {{- partial "head.html" . -}} | ||
| 4 | <body> | ||
| 5 | {{- partial "header.html" . -}} | ||
| 6 | <div id="content"> | ||
| 7 | {{- block "main" . }}{{- end }} | ||
| 8 | </div> | ||
| 9 | {{- partial "footer.html" . -}} | ||
| 10 | </body> | ||
| 11 | </html> | ||
diff --git a/themes/simple/layouts/_default/list.html b/themes/simple/layouts/_default/list.html new file mode 100644 index 0000000..e194063 --- /dev/null +++ b/themes/simple/layouts/_default/list.html | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | {{ define "main" }} | ||
| 2 | <main aria-role="main" class="container-blog"> | ||
| 3 | |||
| 4 | <h1 class="text-2xl font-bold mb-6">Blog posts</h1> | ||
| 5 | |||
| 6 | <!-- List of all blog posts --> | ||
| 7 | <nav itemscope itemtype="https://schema.org/SiteNavigationElement" class="mb-12"> | ||
| 8 | <meta itemprop="name" content="Article list"> | ||
| 9 | <ul> | ||
| 10 | {{ range (where .Site.RegularPages "Section" "posts") }} | ||
| 11 | <li class="mb-5"> | ||
| 12 | <time class="block text-gray-400 font-medium text-xs">{{ .Date.Format "Monday Jan 2, 2006" }}</time> | ||
| 13 | <a href="{{.Permalink}}" itemprop="url" class="hover:bg-yellow-200">{{.Title}}</a> | ||
| 14 | </li> | ||
| 15 | {{end}} | ||
| 16 | </ul> | ||
| 17 | </nav> | ||
| 18 | |||
| 19 | <!-- Projects I work on --> | ||
| 20 | <section class="mb-12"> | ||
| 21 | <h4 class="text-2xl font-bold mb-6">Side projects I work/worked on</h4> | ||
| 22 | <ul class="list-disc ml-6"> | ||
| 23 | <li><a href="https://git.mitjafelicijan.com/journalctl-proxy.git/" target="_blank" rel="noopener nofollow" class="underline hover:bg-yellow-200">journalctl-proxy - Exposes your systemd logs to web via web interface</a></li> | ||
| 24 | <li><a href="https://git.mitjafelicijan.com/redis-marshal.git/" target="_blank" rel="noopener nofollow" class="underline hover:bg-yellow-200">redis-marshal - Lightweight Redis data exploration tool</a></li> | ||
| 25 | <li><a href="https://git.mitjafelicijan.com/dna-encoding.git/" target="_blank" rel="noopener nofollow" class="underline hover:bg-yellow-200">dna-encoding - Tools for encoding files to DNA sequence</a></li> | ||
| 26 | <li><a href="https://git.mitjafelicijan.com/vertex.git/" target="_blank" rel="noopener nofollow" class="underline hover:bg-yellow-200">vertex - Create mock API's and add basic logic to simplify prototyping</a></li> | ||
| 27 | <li><a href="https://git.mitjafelicijan.com/scarecrow.git/" target="_blank" rel="noopener nofollow" class="underline hover:bg-yellow-200">scarecrow - Minimal configuration reverse proxy</a></li> | ||
| 28 | </ul> | ||
| 29 | </section> | ||
| 30 | |||
| 31 | </main> | ||
| 32 | {{ end }} | ||
diff --git a/themes/simple/layouts/_default/rss.xml b/themes/simple/layouts/_default/rss.xml new file mode 100644 index 0000000..38c8755 --- /dev/null +++ b/themes/simple/layouts/_default/rss.xml | |||
| @@ -0,0 +1,27 @@ | |||
| 1 | <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"> | ||
| 2 | |||
| 3 | <channel> | ||
| 4 | |||
| 5 | <title>{{ .Site.Author.name }}</title> | ||
| 6 | <link>{{ .Permalink }}</link> | ||
| 7 | <description>{{ .Site.Params.description }}</description> | ||
| 8 | <language>en-us</language> | ||
| 9 | |||
| 10 | {{ range (where .Site.RegularPages "Section" "posts") }} | ||
| 11 | <item> | ||
| 12 | <title>{{ .Title }}</title> | ||
| 13 | <link>{{ .Permalink }}</link> | ||
| 14 | <pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate> | ||
| 15 | {{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}} | ||
| 16 | <guid>{{ .Permalink }}</guid> | ||
| 17 | |||
| 18 | <description>{{ "<![CDATA[" | safeHTML }} {{ .Summary }}]]></description> | ||
| 19 | <content:encoded>{{ "<![CDATA[" | safeHTML }} {{ .Content }}]]></content:encoded> | ||
| 20 | |||
| 21 | </item> | ||
| 22 | {{end}} | ||
| 23 | |||
| 24 | </channel> | ||
| 25 | |||
| 26 | |||
| 27 | </rss> | ||
diff --git a/themes/simple/layouts/_default/single.html b/themes/simple/layouts/_default/single.html new file mode 100644 index 0000000..7142f1b --- /dev/null +++ b/themes/simple/layouts/_default/single.html | |||
| @@ -0,0 +1,46 @@ | |||
| 1 | {{ define "main" }} | ||
| 2 | <main aria-role="main" class="container-blog"> | ||
| 3 | |||
| 4 | <!-- Single article --> | ||
| 5 | <article itemtype="http://schema.org/Article" class="mb-12"> | ||
| 6 | <header> | ||
| 7 | <h1 itemtype="headline" class="text-4xl font-extrabold mb-6">{{.Title}}</h1> | ||
| 8 | <time class="text-gray-400 font-medium text-sm">Published on {{ .Date.Format "Monday Jan 2, 2006" }}</time> | ||
| 9 | </header> | ||
| 10 | |||
| 11 | <div class="leading-relaxed"> | ||
| 12 | {{.Content}} | ||
| 13 | </div> | ||
| 14 | </article> | ||
| 15 | |||
| 16 | <hr class="border-2 border-gray-100 mb-10"> | ||
| 17 | |||
| 18 | <!-- Comment, contact --> | ||
| 19 | <section class="mb-10"> | ||
| 20 | <p class="mb-4"> | ||
| 21 | <strong>Comment, contact:</strong> The easiest way to contact me is by writing me a message on <a href="https://t.me/mitjafelicijan" target="_blank">Telegram (https://t.me/mitjafelicijan)</a>. | ||
| 22 | </p> | ||
| 23 | <p>You can also just write me an email at <a href="mailto:m@mitjafelicijan.com">m@mitjafelicijan.com</a>.</p> | ||
| 24 | </section> | ||
| 25 | |||
| 26 | <hr class="border-2 border-gray-100 mb-10"> | ||
| 27 | |||
| 28 | <!-- Read more --> | ||
| 29 | <section> | ||
| 30 | <h1 class="text-2xl font-bold mb-6">Read more from this site</h1> | ||
| 31 | <nav itemscope itemtype="https://schema.org/SiteNavigationElement" class="mb-12"> | ||
| 32 | <meta itemprop="name" content="Article list"> | ||
| 33 | <ul> | ||
| 34 | {{ $randomPosts := shuffle (where .Site.RegularPages "Type" "posts") | first 5 }} | ||
| 35 | {{ range $randomPosts }} | ||
| 36 | <li class="mb-3"> | ||
| 37 | <time class="block text-gray-500 text-sm">{{ .Date.Format "Mon Jan 2, 2006" }}</time> | ||
| 38 | <a href="{{.Permalink}}" itemprop="url" class="hover:bg-yellow-200">{{.Title}}</a> | ||
| 39 | </li> | ||
| 40 | {{end}} | ||
| 41 | </ul> | ||
| 42 | </nav> | ||
| 43 | </section> | ||
| 44 | |||
| 45 | </main> | ||
| 46 | {{ end }} | ||
diff --git a/template/_libraries.html b/themes/simple/layouts/partials/footer.html index 1a7b911..6e7ec9c 100644 --- a/template/_libraries.html +++ b/themes/simple/layouts/partials/footer.html | |||
| @@ -1,11 +1,14 @@ | |||
| 1 | <!-- katex math library --> | 1 | <footer class="container-blog text-gray-400 text-sm mb-12"> |
| 2 | This website does not track you. | ||
| 3 | Content is made available under the <a href="https://creativecommons.org/licenses/by/4.0/" target="_blank" rel="noreferrer" class="underline hover:text-gray-800">CC BY 4.0 license</a> unless specified otherwise. | ||
| 4 | Blog feed is available as <a href="/index.xml" target="_blank" class="underline hover:text-gray-800">RSS</a> feed. | ||
| 5 | </footer> | ||
| 2 | 6 | ||
| 7 | <!-- katex math library --> | ||
| 3 | <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.13.13/dist/katex.min.css" integrity="sha384-RZU/ijkSsFbcmivfdRBQDtwuwVqK7GMOw6IMvKyeWL2K5UAlyp6WonmB8m7Jd0Hn" crossorigin="anonymous"> | 8 | <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.13.13/dist/katex.min.css" integrity="sha384-RZU/ijkSsFbcmivfdRBQDtwuwVqK7GMOw6IMvKyeWL2K5UAlyp6WonmB8m7Jd0Hn" crossorigin="anonymous"> |
| 4 | <script defer src="https://cdn.jsdelivr.net/npm/katex@0.13.13/dist/katex.min.js" integrity="sha384-pK1WpvzWVBQiP0/GjnvRxV4mOb0oxFuyRxJlk6vVw146n3egcN5C925NCP7a7BY8" crossorigin="anonymous"></script> | 9 | <script defer src="https://cdn.jsdelivr.net/npm/katex@0.13.13/dist/katex.min.js" integrity="sha384-pK1WpvzWVBQiP0/GjnvRxV4mOb0oxFuyRxJlk6vVw146n3egcN5C925NCP7a7BY8" crossorigin="anonymous"></script> |
| 5 | <script defer src="https://cdn.jsdelivr.net/npm/katex@0.13.13/dist/contrib/auto-render.min.js" integrity="sha384-vZTG03m+2yp6N6BNi5iM4rW4oIwk5DfcNdFfxkk9ZWpDriOkXX8voJBFrAO7MpVl" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script> | 10 | <script defer src="https://cdn.jsdelivr.net/npm/katex@0.13.13/dist/contrib/auto-render.min.js" integrity="sha384-vZTG03m+2yp6N6BNi5iM4rW4oIwk5DfcNdFfxkk9ZWpDriOkXX8voJBFrAO7MpVl" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script> |
| 6 | 11 | ||
| 7 | <!-- code highlighting --> | ||
| 8 | 12 | ||
| 9 | <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/styles/github.min.css"> | 13 | <!-- Fathom - beautiful, simple website analytics --> |
| 10 | <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/highlight.min.js"></script> | 14 | <script src="https://cdn.usefathom.com/script.js" data-site="XHQARKXP" defer></script> |
| 11 | <script>hljs.initHighlightingOnLoad();</script> | ||
diff --git a/themes/simple/layouts/partials/head.html b/themes/simple/layouts/partials/head.html new file mode 100644 index 0000000..716b1f0 --- /dev/null +++ b/themes/simple/layouts/partials/head.html | |||
| @@ -0,0 +1,175 @@ | |||
| 1 | <meta charset="UTF-8"> | ||
| 2 | <meta name="theme-color" content="#ffffff"> | ||
| 3 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
| 4 | |||
| 5 | <script src="https://cdn.tailwindcss.com"></script> | ||
| 6 | |||
| 7 | <link rel="alternate" type="application/rss+xml" href="/index.xml"> | ||
| 8 | |||
| 9 | <link | ||
| 10 | href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL69vf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv76+/8LBwQkAAAAAAAAAAAAAAAC+vb3/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL+9vf/Bv78JAAAAAAAAAAAAAAAAu7q6/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7ubr/vr29CAAAAAAAAAAAy8nJAZ6foP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnqGj/6GipAoAAAAAHLjU/xcXHf/BwsL/I8XY/yPK3v8XGiD/IbjL/yPF2f8XGiD/Fxkf/yLF2f8gnK3/Fxog/62ztv8fwNf/FRcd/x271v8mz93/GRsi/xkXHf8p097/GiIp/xobIv8p0t3/KdPe/xocIv8fYmr/KNPe/xoZH/8aHCL/J87c/xy81/8VFxz/IsPZ/8zS0/8XGiD/Ir/R/yPH2/8XGiD/Fxkf/yPH2/8dd4T/GBog/yPJ3f8jyNr/uru9/xcUGv8cudb/EhITDKi5vRKlvMP/RUpOERwcHRAdOj4QHTk8EBwdHRAdNTgQHTo/EBwcHRAcHB0QSGduEKW4vf+koqQfHzg+EBqz0ewSFRv7EyMr/xq51vsTERb7ExUb+xq41fsau9j7ExUb+xiPp/sZudb7ExUb+xMVG/sZuNX/GKvI/BIUGfMdvdn/IrfL/xcaIP8n1eb/J9Dh/xkcIf8ZGR7/J8/f/xxCSv8ZGyH/J9Dg/ybQ4P8ZHCL/FSQs/yPK3/8UExj/GE1b/ybS5P8ZGB7/Ghwj/ynW5P8p2Ob/Ghwi/yWrtv8p1eH/Ghwi/xocIv8p1uT/J8XT/xkcIv8m1un/Hb7d/xUYH/8hzOr/HtHu/xcaIf8XGB//I8vi/xgxOv8XGSD/I8rg/yPK4P8XGiD/GUFL/yPP6f8SERj/Fhkh/x3A4f8AAAAAJ2f9/ydr//8mZPH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlYu38J2v//ydo/f8AAAAAAAAAAAd8/fkFqf//Iob8sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMY39awWr//8FfP3/AAAAAAAAAAAFm/7/SfD//wR+/f8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOB/f9B7v//BaX+/wAAAAAAAAAAQ878SAyZ/v9n1v4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADu9v8DDJb+/z3N/XgAAAAA3/sAAN/7AADf+wAA3/sAAAAAAAAAAAAAAAAAAN/7AAAAAAAAAAAAAAAAAAAAAAAAj/EAAI/5AACP8QAA3/sAAA==" | ||
| 11 | rel="icon" type="image/x-icon" /> | ||
| 12 | |||
| 13 | <title>{{.Title}}</title> | ||
| 14 | |||
| 15 | |||
| 16 | <style> | ||
| 17 | .container-blog { | ||
| 18 | max-width: 600px; | ||
| 19 | margin: 0 auto; | ||
| 20 | } | ||
| 21 | |||
| 22 | ::selection { | ||
| 23 | background: rgb(255, 241, 177); | ||
| 24 | color: #000; | ||
| 25 | } | ||
| 26 | |||
| 27 | ::-moz-selection { | ||
| 28 | background: rgb(255, 241, 177); | ||
| 29 | color: #000; | ||
| 30 | } | ||
| 31 | |||
| 32 | article img { | ||
| 33 | max-width: 120%; | ||
| 34 | width: 120%; | ||
| 35 | position: relative; | ||
| 36 | left: -10%; | ||
| 37 | margin: 40px auto; | ||
| 38 | display: block; | ||
| 39 | border-radius: 5px; | ||
| 40 | } | ||
| 41 | |||
| 42 | article p { | ||
| 43 | display: block; | ||
| 44 | margin-block-start: 1em; | ||
| 45 | margin-block-end: 1em; | ||
| 46 | margin-inline-start: 0px; | ||
| 47 | margin-inline-end: 0px; | ||
| 48 | } | ||
| 49 | |||
| 50 | article ol { | ||
| 51 | display: block; | ||
| 52 | list-style-type: decimal; | ||
| 53 | margin-block-start: 1em; | ||
| 54 | margin-block-end: 1em; | ||
| 55 | margin-inline-start: 0px; | ||
| 56 | margin-inline-end: 0px; | ||
| 57 | padding-inline-start: 40px; | ||
| 58 | } | ||
| 59 | |||
| 60 | article ol>li>ol { | ||
| 61 | margin-block-start: 0 !important; | ||
| 62 | margin-block-end: 0 !important; | ||
| 63 | padding-inline-start: 20px; | ||
| 64 | } | ||
| 65 | |||
| 66 | article ul { | ||
| 67 | display: block; | ||
| 68 | list-style-type: disc; | ||
| 69 | margin-block-start: 1em; | ||
| 70 | margin-block-end: 1em; | ||
| 71 | margin-inline-start: 0px; | ||
| 72 | margin-inline-end: 0px; | ||
| 73 | padding-inline-start: 40px; | ||
| 74 | } | ||
| 75 | |||
| 76 | article code { | ||
| 77 | font-family: monospace; | ||
| 78 | background: rgb(255, 241, 177); | ||
| 79 | border-radius: 5px; | ||
| 80 | padding: 2px 8px; | ||
| 81 | font-weight: 500; | ||
| 82 | } | ||
| 83 | |||
| 84 | article pre { | ||
| 85 | background: unset; | ||
| 86 | padding: unset; | ||
| 87 | |||
| 88 | overflow-x: auto; | ||
| 89 | background: #f8f8f8 !important; | ||
| 90 | padding: 15px 20px; | ||
| 91 | border-radius: 5px; | ||
| 92 | |||
| 93 | margin-block-start: 40px; | ||
| 94 | margin-block-end: 40px; | ||
| 95 | } | ||
| 96 | |||
| 97 | article pre>code { | ||
| 98 | background: unset; | ||
| 99 | padding: unset; | ||
| 100 | font-weight: 400; | ||
| 101 | } | ||
| 102 | |||
| 103 | article h2 { | ||
| 104 | font-size: 180%; | ||
| 105 | line-height: 1.2em; | ||
| 106 | font-weight: 700; | ||
| 107 | margin-block-start: 40px; | ||
| 108 | margin-block-end: 20px; | ||
| 109 | } | ||
| 110 | |||
| 111 | article h3 { | ||
| 112 | margin-block-start: 30px; | ||
| 113 | margin-block-end: 20px; | ||
| 114 | font-size: 160%; | ||
| 115 | line-height: 1.2em; | ||
| 116 | font-weight: 700; | ||
| 117 | } | ||
| 118 | |||
| 119 | table { | ||
| 120 | width: 100%; | ||
| 121 | } | ||
| 122 | |||
| 123 | table, | ||
| 124 | th, | ||
| 125 | td { | ||
| 126 | border: 1px solid black; | ||
| 127 | text-align: left; | ||
| 128 | } | ||
| 129 | |||
| 130 | th, | ||
| 131 | td { | ||
| 132 | padding: 5px 10px; | ||
| 133 | } | ||
| 134 | |||
| 135 | article blockquote { | ||
| 136 | margin-left: 40px; | ||
| 137 | position: relative; | ||
| 138 | margin-block-start: 30px; | ||
| 139 | margin-block-end: 30px; | ||
| 140 | margin-right: 0; | ||
| 141 | } | ||
| 142 | |||
| 143 | article blockquote:before { | ||
| 144 | content: ' '; | ||
| 145 | background-image: url('/general/alert-light.svg'); | ||
| 146 | background-size: 30px 30px; | ||
| 147 | height: 30px; | ||
| 148 | width: 30px; | ||
| 149 | position: absolute; | ||
| 150 | left: -40px; | ||
| 151 | top: 6px; | ||
| 152 | } | ||
| 153 | |||
| 154 | article blockquote p { | ||
| 155 | padding-left: 10px; | ||
| 156 | } | ||
| 157 | |||
| 158 | article video { | ||
| 159 | max-width: 100%; | ||
| 160 | margin: 30px auto; | ||
| 161 | display: block; | ||
| 162 | border-radius: 5px; | ||
| 163 | background: #f8f8f8 !important; | ||
| 164 | } | ||
| 165 | |||
| 166 | article audio { | ||
| 167 | width: 100%; | ||
| 168 | outline: none; | ||
| 169 | } | ||
| 170 | |||
| 171 | article .katex-display { | ||
| 172 | margin-block-start: 40px; | ||
| 173 | margin-block-end: 40px; | ||
| 174 | } | ||
| 175 | </style> | ||
diff --git a/themes/simple/layouts/partials/header.html b/themes/simple/layouts/partials/header.html new file mode 100644 index 0000000..e234615 --- /dev/null +++ b/themes/simple/layouts/partials/header.html | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | <div class="container-blog"> | ||
| 2 | <header class="flex py-4 mt-4 mb-6"> | ||
| 3 | <h3 class="flex-grow"> | ||
| 4 | <a href="/" itemprop="url" class="text-xl font-bold hover:bg-yellow-200">Mitja Felicijan</a> | ||
| 5 | </h3> | ||
| 6 | |||
| 7 | <nav itemscope itemtype="http://schema.org/SiteNavigationElement" class="flex items-center gap-1"> | ||
| 8 | <meta itemprop="name" content="Main Menu"> | ||
| 9 | |||
| 10 | <a href="https://git.mitjafelicijan.com" target="_blank" rel="noopener nofollow" itemprop="url" class="font-medium px-2 hover:bg-yellow-200">Git</a> | ||
| 11 | <a href="https://files.mitjafelicijan.com" target="_blank" rel="noopener nofollow" itemprop="url" class="font-medium px-2 hover:bg-yellow-200">Files</a> | ||
| 12 | <a href="/curriculum-vitae.html" class="font-medium px-2 hover:bg-yellow-200">CV</a> | ||
| 13 | <a href="/books.html" class="font-medium px-2 hover:bg-yellow-200">Books</a> | ||
| 14 | |||
| 15 | <a href="/index.xml" itemprop="url" class="font-medium px-2 hover:bg-yellow-200">RSS</a> | ||
| 16 | </nav> | ||
| 17 | </header> | ||
| 18 | </div> | ||
diff --git a/themes/simple/static/css/.gitkeep b/themes/simple/static/css/.gitkeep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/themes/simple/static/css/.gitkeep | |||
diff --git a/themes/simple/static/js/.gitkeep b/themes/simple/static/js/.gitkeep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/themes/simple/static/js/.gitkeep | |||
diff --git a/themes/simple/theme.toml b/themes/simple/theme.toml new file mode 100644 index 0000000..f958c89 --- /dev/null +++ b/themes/simple/theme.toml | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | # theme.toml template for a Hugo theme | ||
| 2 | # See https://github.com/gohugoio/hugoThemes#themetoml for an example | ||
| 3 | |||
| 4 | name = "Simple" | ||
| 5 | license = "MIT" | ||
| 6 | licenselink = "https://github.com/yourname/yourtheme/blob/master/LICENSE" | ||
| 7 | description = "" | ||
| 8 | homepage = "http://example.com/" | ||
| 9 | tags = [] | ||
| 10 | features = [] | ||
| 11 | min_version = "0.41.0" | ||
| 12 | |||
| 13 | [author] | ||
| 14 | name = "Mitja Felicijan" | ||
| 15 | homepage = "https://mitjafelicijan.com" | ||
| 16 | |||
diff --git a/tools/dither-images.sh b/tools/dither-images.sh deleted file mode 100644 index 11d0c04..0000000 --- a/tools/dither-images.sh +++ /dev/null | |||
| @@ -1,6 +0,0 @@ | |||
| 1 | cd ../assets/ | ||
| 2 | find . -type f \( -name "*.png" -o -name "*.jpg" \) | while read fname; do | ||
| 3 | echo "$fname" | ||
| 4 | convert "$fname" -type Grayscale -ordered-dither 2x2 "$fname.dith.gif" | ||
| 5 | done | ||
| 6 | |||
