aboutsummaryrefslogtreecommitdiff
path: root/content/posts
diff options
context:
space:
mode:
authorMitja Felicijan <m@mitjafelicijan.com>2023-08-05 12:09:37 +0200
committerMitja Felicijan <m@mitjafelicijan.com>2023-08-05 12:09:37 +0200
commit2f5ea5f4982d6276881c9a3342ed8847ebc7d326 (patch)
treec405cf24bce11c00d7d453bdd18995cf8cda97aa /content/posts
parentc181dc5c37435029a0f5f2c51d6f36da4d32afd5 (diff)
downloadmitjafelicijan.com-2f5ea5f4982d6276881c9a3342ed8847ebc7d326.tar.gz
Moved assets to posts
Diffstat (limited to 'content/posts')
-rw-r--r--content/posts/2017-03-07-golang-profiling-simplified.md4
-rw-r--r--content/posts/2017-04-21-profiling-python-web-applications-with-visual-tools.md6
-rw-r--r--content/posts/2017-08-11-simple-iot-application.md10
-rw-r--r--content/posts/2018-01-16-using-digitalocean-spaces-object-storage-with-fuse.md12
-rw-r--r--content/posts/2019-01-03-encoding-binary-data-into-dna-sequence.md12
-rw-r--r--content/posts/2019-10-19-using-sentiment-analysis-for-clickbait-detection.md4
-rw-r--r--content/posts/2020-03-22-simple-sse-based-pubsub-server.md8
-rw-r--r--content/posts/2020-09-06-esp-and-micropython.md2
-rw-r--r--content/posts/2020-09-08-bind-warning-on-login.md2
-rw-r--r--content/posts/2021-01-24-replacing-dropbox-with-s3.md2
-rw-r--r--content/posts/2021-01-25-goaccess.md4
-rw-r--r--content/posts/2021-06-26-simple-world-clock.md6
-rw-r--r--content/posts/2021-12-03-debian-based-riced-up-distribution-for-developers.md18
-rw-r--r--content/posts/2021-12-25-running-golang-application-as-pid1.md6
-rw-r--r--content/posts/2021-12-30-wap-mobile-web-before-the-web.md4
-rw-r--r--content/posts/2022-06-30-trying-out-helix-editor.md2
-rw-r--r--content/posts/2022-07-05-what-would-dna-sound-if-synthesized.md30
-rw-r--r--content/posts/2022-08-13-algae-spotted-on-river-sava.md12
-rw-r--r--content/posts/2022-10-06-state-of-web-technologies-in-year-2022.md4
-rw-r--r--content/posts/2022-10-16-that-sound-that-machine-makes-when-struggling.md2
-rw-r--r--content/posts/2023-05-22-crafting-stories-in-zed-editor.md4
-rw-r--r--content/posts/2023-08-05-floods-in-slovenia.md12
22 files changed, 83 insertions, 83 deletions
diff --git a/content/posts/2017-03-07-golang-profiling-simplified.md b/content/posts/2017-03-07-golang-profiling-simplified.md
index ee3a210..f0821c5 100644
--- a/content/posts/2017-03-07-golang-profiling-simplified.md
+++ b/content/posts/2017-03-07-golang-profiling-simplified.md
@@ -121,6 +121,6 @@ go tool pprof -pdf ./cpu cpu.pprof > cpu.pdf
121 121
122This will generate PDF document with visualized profile. 122This will generate PDF document with visualized profile.
123 123
124- [Memory PDF profile example](/assets/go-profiling/golang-profiling-mem.pdf) 124- [Memory PDF profile example](/posts/go-profiling/golang-profiling-mem.pdf)
125- [CPU PDF profile example](/assets/go-profiling/golang-profiling-cpu.pdf) 125- [CPU PDF profile example](/posts/go-profiling/golang-profiling-cpu.pdf)
126 126
diff --git a/content/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 d1cea7c..8617abe 100644
--- a/content/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
@@ -21,7 +21,7 @@ If you are using MacOS you should check out [Profiling
21Viewer](http://www.profilingviewer.com/) or 21Viewer](http://www.profilingviewer.com/) or
22[MacCallGrind](http://www.maccallgrind.com/). 22[MacCallGrind](http://www.maccallgrind.com/).
23 23
24![KCachegrind](/assets/python-profiling/kcachegrind.png) 24![KCachegrind](/posts/python-profiling/kcachegrind.png)
25 25
26We will be dividing this post into two main categories: 26We will be dividing this post into two main categories:
27 27
@@ -146,7 +146,7 @@ will be using Profilling Viewer under MacOS. You can open image in new tab. As
146you can see from this example there is hierarchy of execution order of your 146you can see from this example there is hierarchy of execution order of your
147code. 147code.
148 148
149![Profilling Viewer](/assets/python-profiling/profiling-viewer.png) 149![Profilling Viewer](/posts/python-profiling/profiling-viewer.png)
150 150
151> Make sure you convert output of the cProfile output every time you want to 151> Make sure you convert output of the cProfile output every time you want to
152refresh and take a look at your possible optimizations because cProfile updates 152refresh and take a look at your possible optimizations because cProfile updates
@@ -177,7 +177,7 @@ $ snakeviz awesome_random_number.prof
177# shows visualized profile 177# shows visualized profile
178``` 178```
179 179
180![SnakeViz](/assets/python-profiling/snakeviz.png) 180![SnakeViz](/posts/python-profiling/snakeviz.png)
181 181
182Reddit user [ccharles](https://www.reddit.com/user/ccharles) suggested a better 182Reddit user [ccharles](https://www.reddit.com/user/ccharles) suggested a better
183way for installing pip software by targeting user level instead of using sudo. 183way for installing pip software by targeting user level instead of using sudo.
diff --git a/content/posts/2017-08-11-simple-iot-application.md b/content/posts/2017-08-11-simple-iot-application.md
index 00a7802..e31ac55 100644
--- a/content/posts/2017-08-11-simple-iot-application.md
+++ b/content/posts/2017-08-11-simple-iot-application.md
@@ -50,7 +50,7 @@ to API and another to serving HTML with chart.
50Schema below represents what we will try to achieve and how different parts 50Schema below represents what we will try to achieve and how different parts
51correlates to each other. 51correlates to each other.
52 52
53![Overview](/assets/iot-application/simple-iot-application-overview.svg) 53![Overview](/posts/iot-application/simple-iot-application-overview.svg)
54 54
55## Simple Python API 55## Simple Python API
56 56
@@ -218,12 +218,12 @@ available via POST method on /api route.
218After testing the service with Restlet Client you should be able to view your 218After testing the service with Restlet Client you should be able to view your
219data in a database file ```data.db```. 219data in a database file ```data.db```.
220 220
221![REST settings example](/assets/iot-application/iot-rest-example.png) 221![REST settings example](/posts/iot-application/iot-rest-example.png)
222 222
223You can also check the contents of new database file by using desktop client 223You can also check the contents of new database file by using desktop client
224for SQLite → [DB Browser for SQLite](http://sqlitebrowser.org/). 224for SQLite → [DB Browser for SQLite](http://sqlitebrowser.org/).
225 225
226![SQLite database example](/assets/iot-application/iot-sqlite-db.png) 226![SQLite database example](/posts/iot-application/iot-sqlite-db.png)
227 227
228Table structure is as simple as it can be. We have ts (timestamp) and value 228Table structure is as simple as it can be. We have ts (timestamp) and value
229(value from Arduino). As you can see timestamp is generated on API side. If you 229(value from Arduino). As you can see timestamp is generated on API side. If you
@@ -585,10 +585,10 @@ every 5 seconds.
585If you navigate to ```http://0.0.0.0:5000``` you should see rendered chart as 585If you navigate to ```http://0.0.0.0:5000``` you should see rendered chart as
586shown on picture below. 586shown on picture below.
587 587
588![Application output](/assets/iot-application/iot-app-output.png) 588![Application output](/posts/iot-application/iot-app-output.png)
589 589
590Complete application with all the code is available for 590Complete application with all the code is available for
591[download](/assets/iot-application/simple-iot-application.zip). 591[download](/posts/iot-application/simple-iot-application.zip).
592 592
593## Conclusion 593## Conclusion
594 594
diff --git a/content/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 d2fa558..5ba7b64 100644
--- a/content/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
@@ -55,7 +55,7 @@ Instuctions on how to use SSH keys and how to setup them are available in
55article [How To Use SSH Keys with DigitalOcean 55article [How To Use SSH Keys with DigitalOcean
56Droplets](https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with-digitalocean-droplets). 56Droplets](https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with-digitalocean-droplets).
57 57
58![DigitalOcean Droplets](/assets/do-fuse/fuse-droplets.png) 58![DigitalOcean Droplets](/posts/do-fuse/fuse-droplets.png)
59 59
60After we created Droplet it's time to create new Space. This is done by clicking 60After we created Droplet it's time to create new Space. This is done by clicking
61on a button [Create](https://cloud.digitalocean.com/spaces/new) (right top 61on a button [Create](https://cloud.digitalocean.com/spaces/new) (right top
@@ -68,7 +68,7 @@ key](https://cloud.digitalocean.com/settings/api/tokens). This link will guide
68to the page when you can generate this key. After you create new one, please 68to the page when you can generate this key. After you create new one, please
69save provided Key and Secret because Secret will not be shown again. 69save provided Key and Secret because Secret will not be shown again.
70 70
71![DigitalOcean Spaces](/assets/do-fuse/fuse-spaces.png) 71![DigitalOcean Spaces](/posts/do-fuse/fuse-spaces.png)
72 72
73Now that we have new Space and Access key we should SSH into our machine. 73Now that we have new Space and Access key we should SSH into our machine.
74 74
@@ -147,7 +147,7 @@ please send me your data. I would be interested in seeing results.
147 147
148**Here are plotted results** 148**Here are plotted results**
149 149
150You can download [raw result here](/assets/do-fuse/copy-benchmarks.tsv). 150You can download [raw result here](/posts/do-fuse/copy-benchmarks.tsv).
151Measurements are in seconds. 151Measurements are in seconds.
152 152
153<script src="//cdn.plot.ly/plotly-latest.min.js"></script> 153<script src="//cdn.plot.ly/plotly-latest.min.js"></script>
@@ -155,7 +155,7 @@ Measurements are in seconds.
155<script> 155<script>
156(function(){ 156(function(){
157 var request = new XMLHttpRequest(); 157 var request = new XMLHttpRequest();
158 request.open("GET", "/assets/do-fuse/copy-benchmarks.tsv", true); 158 request.open("GET", "/posts/do-fuse/copy-benchmarks.tsv", true);
159 request.onload = function() { 159 request.onload = function() {
160 if (request.status >= 200 && request.status < 400) { 160 if (request.status >= 200 && request.status < 400) {
161 var payload = request.responseText.trim(); 161 var payload = request.responseText.trim();
@@ -271,7 +271,7 @@ result_time = CLOSE = end_time - start_time
271print("CLOSE: %g seconds" % (result_time)) 271print("CLOSE: %g seconds" % (result_time))
272``` 272```
273 273
274You can download [raw result here](/assets/do-fuse/sqlite-benchmarks.tsv). And 274You can download [raw result here](/posts/do-fuse/sqlite-benchmarks.tsv). And
275again, these results are done on a local block storage and do not represent 275again, these results are done on a local block storage and do not represent
276capabilities of object storage. With my current approach and state of the test 276capabilities of object storage. With my current approach and state of the test
277code these can not be done. I would need to make Python code much more robust 277code these can not be done. I would need to make Python code much more robust
@@ -281,7 +281,7 @@ and check locking etc.
281<script> 281<script>
282(function(){ 282(function(){
283 var request = new XMLHttpRequest(); 283 var request = new XMLHttpRequest();
284 request.open("GET", "/assets/do-fuse/sqlite-benchmarks.tsv", true); 284 request.open("GET", "/posts/do-fuse/sqlite-benchmarks.tsv", true);
285 request.onload = function() { 285 request.onload = function() {
286 if (request.status >= 200 && request.status < 400) { 286 if (request.status >= 200 && request.status < 400) {
287 var payload = request.responseText.trim(); 287 var payload = request.responseText.trim();
diff --git a/content/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 b285756..f003fc3 100644
--- a/content/posts/2019-01-03-encoding-binary-data-into-dna-sequence.md
+++ b/content/posts/2019-01-03-encoding-binary-data-into-dna-sequence.md
@@ -109,7 +109,7 @@ The nucleotide in DNA consists of a sugar (deoxyribose), one of four bases
109Cytosine and thymine are pyrimidine bases, while adenine and guanine are purine 109Cytosine and thymine are pyrimidine bases, while adenine and guanine are purine
110bases. The sugar and the base together are called a nucleoside. 110bases. The sugar and the base together are called a nucleoside.
111 111
112![DNA](/assets/dna-sequence/dna-basics.jpg) 112![DNA](/posts/dna-sequence/dna-basics.jpg)
113 113
114*DNA (a) forms a double stranded helix, and (b) adenine pairs with thymine and 114*DNA (a) forms a double stranded helix, and (b) adenine pairs with thymine and
115cytosine pairs with guanine. (credit a: modification of work by Jerome Walker, 115cytosine pairs with guanine. (credit a: modification of work by Jerome Walker,
@@ -300,13 +300,13 @@ Then we encode FASTA file from previous operation to encode this data into PNG.
300 300
301After encoding into PNG format this file looks like this. 301After encoding into PNG format this file looks like this.
302 302
303![Encoded Quote in PNG format](/assets/dna-sequence/quote.png) 303![Encoded Quote in PNG format](/posts/dna-sequence/quote.png)
304 304
305The larger the input stream is the larger the PNG file would be. 305The larger the input stream is the larger the PNG file would be.
306 306
307Compiled basic Hello World C program with 307Compiled basic Hello World C program with
308[GCC](https://www.gnu.org/software/gcc/) would [look 308[GCC](https://www.gnu.org/software/gcc/) would [look
309like](/assets/dna-sequence/sample.png). 309like](/posts/dna-sequence/sample.png).
310 310
311```c 311```c
312// gcc -O3 -o sample sample.c 312// gcc -O3 -o sample sample.c
@@ -372,7 +372,7 @@ dd if=<(openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=
372Our freshly generated 1KB file looks something like this (its full of garbage 372Our freshly generated 1KB file looks something like this (its full of garbage
373data as intended). 373data as intended).
374 374
375![Sample binary file 1KB](/assets/dna-sequence/sample-binary-file.png) 375![Sample binary file 1KB](/posts/dna-sequence/sample-binary-file.png)
376 376
377We create following binary files: 377We create following binary files:
378 378
@@ -398,9 +398,9 @@ gzip -9 < 10MB.fa > 10MB.fa.gz
398 398
399[Download ODS file with benchmarks](/dna-sequence/benchmarks.ods). 399[Download ODS file with benchmarks](/dna-sequence/benchmarks.ods).
400 400
401![Sample binary file 1KB](/assets/dna-sequence/chart-1.png) 401![Sample binary file 1KB](/posts/dna-sequence/chart-1.png)
402 402
403![Sample binary file 1KB](/assets/dna-sequence/chart-2.png) 403![Sample binary file 1KB](/posts/dna-sequence/chart-2.png)
404 404
405## References 405## References
406 406
diff --git a/content/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 8322e70..d5729ed 100644
--- a/content/posts/2019-10-19-using-sentiment-analysis-for-clickbait-detection.md
+++ b/content/posts/2019-10-19-using-sentiment-analysis-for-clickbait-detection.md
@@ -92,12 +92,12 @@ plt.show()
92 longer period of time and then perform analysis again and use either machine 92 longer period of time and then perform analysis again and use either machine
93 learning or deep learning on top of it. 93 learning or deep learning on top of it.
94 94
95![Relationship between title and description](/assets/sentiment-analysis/guardian-sa-title-desc-relationship.png) 95![Relationship between title and description](/posts/sentiment-analysis/guardian-sa-title-desc-relationship.png)
96 96
97Figure above displays difference between title and description sentiment for 97Figure above displays difference between title and description sentiment for
98specific RSS feed item. 1 means positive and -1 means negative sentiment. 98specific RSS feed item. 1 means positive and -1 means negative sentiment.
99 99
100[» Download Jupyter Notebook](/assets/sentiment-analysis/sentiment-analysis.ipynb) 100[» Download Jupyter Notebook](/posts/sentiment-analysis/sentiment-analysis.ipynb)
101 101
102## Going further 102## Going further
103 103
diff --git a/content/posts/2020-03-22-simple-sse-based-pubsub-server.md b/content/posts/2020-03-22-simple-sse-based-pubsub-server.md
index 8e46138..cf5a5d9 100644
--- a/content/posts/2020-03-22-simple-sse-based-pubsub-server.md
+++ b/content/posts/2020-03-22-simple-sse-based-pubsub-server.md
@@ -38,7 +38,7 @@ simple. We have subscribers that receive messages, and we have publishers that
38create and post messages. Similar model is also well know pattern that works on 38create and post messages. Similar model is also well know pattern that works on
39a premise of consumers and producers, and they take similar roles. 39a premise of consumers and producers, and they take similar roles.
40 40
41![How PubSub works](/assets/simple-pubsub-server/pubsub-overview.png) 41![How PubSub works](/posts/simple-pubsub-server/pubsub-overview.png)
42 42
43**These are some naive characteristics we want to achieve:** 43**These are some naive characteristics we want to achieve:**
44 44
@@ -74,7 +74,7 @@ page](https://html.spec.whatwg.org/multipage/server-sent-events.html).
74 74
75### Current browser support 75### Current browser support
76 76
77![Browser support](/assets/simple-pubsub-server/caniuse.png) 77![Browser support](/posts/simple-pubsub-server/caniuse.png)
78 78
79Check 79Check
80[https://caniuse.com/#feat=eventsource](https://caniuse.com/#feat=eventsource) 80[https://caniuse.com/#feat=eventsource](https://caniuse.com/#feat=eventsource)
@@ -142,7 +142,7 @@ which is quite nice and available from Developer Tools under Network tab.
142> ones. For debugging server events add `console.log` to `server.js` code and 142> ones. For debugging server events add `console.log` to `server.js` code and
143> print out events. 143> print out events.
144 144
145![Google Chrome Developer Tools EventStream](/assets/simple-pubsub-server/chrome-debugging.png) 145![Google Chrome Developer Tools EventStream](/posts/simple-pubsub-server/chrome-debugging.png)
146 146
147## Server implementation 147## Server implementation
148 148
@@ -281,7 +281,7 @@ nicer and maintanable.
281 281
282### Publisher and subscriber in action 282### Publisher and subscriber in action
283 283
284<video src="/assets/simple-pubsub-server/clients.m4v" controls></video> 284<video src="/posts/simple-pubsub-server/clients.m4v" controls></video>
285 285
286You can download [the code](../simple-pubsub-server/sse-pubsub-server.zip) and 286You can download [the code](../simple-pubsub-server/sse-pubsub-server.zip) and
287follow along. 287follow along.
diff --git a/content/posts/2020-09-06-esp-and-micropython.md b/content/posts/2020-09-06-esp-and-micropython.md
index 6a2d5fe..4591811 100644
--- a/content/posts/2020-09-06-esp-and-micropython.md
+++ b/content/posts/2020-09-06-esp-and-micropython.md
@@ -19,7 +19,7 @@ but I could easily choose
19contains which tools I use and how I prepared my workspace to code for 19contains which tools I use and how I prepared my workspace to code for
20[ESP8266](https://www.espressif.com/en/products/socs/esp8266). 20[ESP8266](https://www.espressif.com/en/products/socs/esp8266).
21 21
22![ESP8266 and ESP32 boards](/assets/esp8366-micropython/boards.jpg) 22![ESP8266 and ESP32 boards](/posts/esp8366-micropython/boards.jpg)
23 23
24This guide covers: 24This guide covers:
25 25
diff --git a/content/posts/2020-09-08-bind-warning-on-login.md b/content/posts/2020-09-08-bind-warning-on-login.md
index f213cd9..cb1e0e5 100644
--- a/content/posts/2020-09-08-bind-warning-on-login.md
+++ b/content/posts/2020-09-08-bind-warning-on-login.md
@@ -30,7 +30,7 @@ bind '"\e[Z":menu-complete-backward'
30I haven't noticed anything wrong with this and all was working fine until I 30I haven't noticed anything wrong with this and all was working fine until I
31restarted my machine and then I got this error. 31restarted my machine and then I got this error.
32 32
33![Profile bind error](/assets/profile-bind-error/error.jpg) 33![Profile bind error](/posts/profile-bind-error/error.jpg)
34 34
35When I pressed OK, I got into the [Gnome 35When I pressed OK, I got into the [Gnome
36shell](https://wiki.gnome.org/Projects/GnomeShell) and all was working fine, but 36shell](https://wiki.gnome.org/Projects/GnomeShell) and all was working fine, but
diff --git a/content/posts/2021-01-24-replacing-dropbox-with-s3.md b/content/posts/2021-01-24-replacing-dropbox-with-s3.md
index a44a1aa..7724c9c 100644
--- a/content/posts/2021-01-24-replacing-dropbox-with-s3.md
+++ b/content/posts/2021-01-24-replacing-dropbox-with-s3.md
@@ -105,7 +105,7 @@ You can use this script in a combination with [Cron](https://en.wikipedia.org/wi
105When you start syncing your local stuff with a remote server you can review your 105When you start syncing your local stuff with a remote server you can review your
106items on DigitalOcean. 106items on DigitalOcean.
107 107
108![Dropbox Spaces](/assets/dropbox-sync/dropbox-spaces.png) 108![Dropbox Spaces](/posts/dropbox-sync/dropbox-spaces.png)
109 109
110I have been using this script now for quite some time, and it's working 110I have been using this script now for quite some time, and it's working
111flawlessly. I also uninstalled Dropbox and stopped using it completely. 111flawlessly. I also uninstalled Dropbox and stopped using it completely.
diff --git a/content/posts/2021-01-25-goaccess.md b/content/posts/2021-01-25-goaccess.md
index 0eb2461..06c3999 100644
--- a/content/posts/2021-01-25-goaccess.md
+++ b/content/posts/2021-01-25-goaccess.md
@@ -41,10 +41,10 @@ all the functionalities I need, and it's a single binary. Written in Go.
41 41
42GoAccess can be used in two different modes. 42GoAccess can be used in two different modes.
43 43
44![GoAccess Terminal](/assets/goaccess/goaccess-dash-term.png) 44![GoAccess Terminal](/posts/goaccess/goaccess-dash-term.png)
45<center><i>Running in a terminal</i></center> 45<center><i>Running in a terminal</i></center>
46 46
47![GoAccess HTML](/assets/goaccess/goaccess-dash-html.png) 47![GoAccess HTML](/posts/goaccess/goaccess-dash-html.png)
48<center><i>Running in a browser</i></center> 48<center><i>Running in a browser</i></center>
49 49
50I, however, need this to run in a browser. So, the second option is the way to 50I, however, need this to run in a browser. So, the second option is the way to
diff --git a/content/posts/2021-06-26-simple-world-clock.md b/content/posts/2021-06-26-simple-world-clock.md
index 0c17f09..6f6e137 100644
--- a/content/posts/2021-06-26-simple-world-clock.md
+++ b/content/posts/2021-06-26-simple-world-clock.md
@@ -23,7 +23,7 @@ have a bunch of [Raspberry Pi's
23Zero](https://www.raspberrypi.org/products/raspberry-pi-zero/) lying around that 23Zero](https://www.raspberrypi.org/products/raspberry-pi-zero/) lying around that
24I really need to use. 24I really need to use.
25 25
26![Inky pHAT, Raspberry Pi Zero](/assets/world-clock/hardware.jpg) 26![Inky pHAT, Raspberry Pi Zero](/posts/world-clock/hardware.jpg)
27 27
28Since the Inky [Inky 28Since the Inky [Inky
29pHAT](https://shop.pimoroni.com/products/inky-phat?variant=12549254217811) is 29pHAT](https://shop.pimoroni.com/products/inky-phat?variant=12549254217811) is
@@ -94,7 +94,7 @@ Then we add a cronjob with `crontab -e`.
94 94
95So, we end up with a result like this. 95So, we end up with a result like this.
96 96
97![World Clock](/assets/world-clock/world-clock.jpg) 97![World Clock](/posts/world-clock/world-clock.jpg)
98 98
99And for the enclosure that can be 3D printed, but I haven't yet something like 99And for the enclosure that can be 3D printed, but I haven't yet something like
100this can be used. 100this can be used.
@@ -102,7 +102,7 @@ this can be used.
102<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> 102<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>
103 103
104You can download my [STL file for the enclosure 104You can download my [STL file for the enclosure
105here](/assets/world-clock/enclosure.stl), but make sure that dimensions make 105here](/posts/world-clock/enclosure.stl), but make sure that dimensions make
106sense and also opening for USB port should be added or just use a drill and some 106sense and also opening for USB port should be added or just use a drill and some
107hot glue to make it stick in the enclosure. 107hot glue to make it stick in the enclosure.
108 108
diff --git a/content/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 58c9b0d..8c2a870 100644
--- a/content/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
@@ -76,35 +76,35 @@ Fonts being applied across the distro and things like that.
76First, I choose terminal installer and left it to load additional components. 76First, I choose terminal installer and left it to load additional components.
77Avoid using graphical installer in this case. 77Avoid using graphical installer in this case.
78 78
79![](/assets/dfd-rice/install-00.png) 79![](/posts/dfd-rice/install-00.png)
80 80
81After that I selected hostname and created a normal user and set password for 81After that I selected hostname and created a normal user and set password for
82that user and root user and choose guided mode for disk partitioning. 82that user and root user and choose guided mode for disk partitioning.
83 83
84![](/assets/dfd-rice/install-01.png) 84![](/posts/dfd-rice/install-01.png)
85 85
86I left it run to install all the things required for the base system and opted 86I left it run to install all the things required for the base system and opted
87out of scanning additional media for use by the package manager. Those will be 87out of scanning additional media for use by the package manager. Those will be
88downloaded from the internet during installation. 88downloaded from the internet during installation.
89 89
90![](/assets/dfd-rice/install-02.png) 90![](/posts/dfd-rice/install-02.png)
91 91
92I opted out of the popularity contest, and **now comes the important part**. 92I opted out of the popularity contest, and **now comes the important part**.
93Uncheck all the boxes in Software selection and only leave 'standard system 93Uncheck all the boxes in Software selection and only leave 'standard system
94utilities'. I also left an SSH server, so I was able to log in to the machine 94utilities'. I also left an SSH server, so I was able to log in to the machine
95from my main PC. 95from my main PC.
96 96
97![](/assets/dfd-rice/install-03.png) 97![](/posts/dfd-rice/install-03.png)
98 98
99At this point, I installed GRUB bootloader on the disk where I installed the 99At this point, I installed GRUB bootloader on the disk where I installed the
100system. 100system.
101 101
102![](/assets/dfd-rice/install-04.png) 102![](/posts/dfd-rice/install-04.png)
103 103
104That concluded the installation of base Debian and after restarting the computer 104That concluded the installation of base Debian and after restarting the computer
105I was prompted with the login screen. 105I was prompted with the login screen.
106 106
107![](/assets/dfd-rice/install-05.png) 107![](/posts/dfd-rice/install-05.png)
108 108
109Now that I had the base installation, it was time to choose what software do I 109Now that I had the base installation, it was time to choose what software do I
110want to include in this so-called distribution. I wanted out of the box 110want to include in this so-called distribution. I wanted out of the box
@@ -141,7 +141,7 @@ What I was doing in Gnome was having windows in a layout like the diagram
141below. This is my common practice. And if you look at it you can clearly see I 141below. This is my common practice. And if you look at it you can clearly see I
142was replicating tiling window manager setup in Gnome. 142was replicating tiling window manager setup in Gnome.
143 143
144![](/assets/dfd-rice/layout.png) 144![](/posts/dfd-rice/layout.png)
145 145
146That made me look into a bunch of tiling window managers and then tested them 146That made me look into a bunch of tiling window managers and then tested them
147out. Candidates I was looking at were: 147out. Candidates I was looking at were:
@@ -211,7 +211,7 @@ something similar.
211 211
212This is some of the output from the installation script. 212This is some of the output from the installation script.
213 213
214![](/assets/dfd-rice/script.png) 214![](/posts/dfd-rice/script.png)
215 215
216Let's take a look at some examples in the installation script. 216Let's take a look at some examples in the installation script.
217 217
@@ -273,4 +273,4 @@ And this is how it looks with two terminals side by side. I really like the
273simplicity and clean interface. I will polish the colors and stuff like that, 273simplicity and clean interface. I will polish the colors and stuff like that,
274but I really do like the results. 274but I really do like the results.
275 275
276![](/assets/dfd-rice/desktop.png) 276![](/posts/dfd-rice/desktop.png)
diff --git a/content/posts/2021-12-25-running-golang-application-as-pid1.md b/content/posts/2021-12-25-running-golang-application-as-pid1.md
index 10543f2..251ef4f 100644
--- a/content/posts/2021-12-25-running-golang-application-as-pid1.md
+++ b/content/posts/2021-12-25-running-golang-application-as-pid1.md
@@ -23,7 +23,7 @@ Really worth a read.
23If we compare a normal operating system to a unikernel side by side, they would 23If we compare a normal operating system to a unikernel side by side, they would
24look something like this. 24look something like this.
25 25
26![Virtual machines vs Containers vs Unikernels](/assets/pid1/unikernels.png) 26![Virtual machines vs Containers vs Unikernels](/posts/pid1/unikernels.png)
27 27
28From this image, we can see how the complexity significantly decreases with 28From this image, we can see how the complexity significantly decreases with
29the use of Unikernels. This comes with a price, of course. Unikernels are hard 29the use of Unikernels. This comes with a price, of course. Unikernels are hard
@@ -252,7 +252,7 @@ Hello from Golang
252Hello from Golang 252Hello from Golang
253``` 253```
254 254
255The whole [log file here](/assets/pid1/qemu.log). 255The whole [log file here](/posts/pid1/qemu.log).
256 256
257## Size comparison 257## Size comparison
258 258
@@ -328,7 +328,7 @@ genisoimage -R \
328This will produce `GoAsPID1.iso` which you can use with [Virtualbox](https://www.virtualbox.org/) 328This will produce `GoAsPID1.iso` which you can use with [Virtualbox](https://www.virtualbox.org/)
329or [Gnome Boxes](https://apps.gnome.org/app/org.gnome.Boxes/). 329or [Gnome Boxes](https://apps.gnome.org/app/org.gnome.Boxes/).
330 330
331<video src="/assets/pid1/boxes.mp4" controls></video> 331<video src="/posts/pid1/boxes.mp4" controls></video>
332 332
333## Is running applications as PID 1 even worth it? 333## Is running applications as PID 1 even worth it?
334 334
diff --git a/content/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 442943b..5e7ff38 100644
--- a/content/posts/2021-12-30-wap-mobile-web-before-the-web.md
+++ b/content/posts/2021-12-30-wap-mobile-web-before-the-web.md
@@ -32,7 +32,7 @@ These phones were rocking:
32 32
33Let's take a look at these beauties. 33Let's take a look at these beauties.
34 34
35![Old phones](/assets/wap/phones.gif) 35![Old phones](/posts/wap/phones.gif)
36 36
37## WAP - Wireless Application Protocol 37## WAP - Wireless Application Protocol
38 38
@@ -184,7 +184,7 @@ emulator. And it was really hard to find one. I found [WAP
184Proof](http://wap-proof.sharewarejunction.com/) on shareware junction, and it 184Proof](http://wap-proof.sharewarejunction.com/) on shareware junction, and it
185did the job well enough. I will try to find and actual device to test it on. 185did the job well enough. I will try to find and actual device to test it on.
186 186
187<video src="/assets/wap/emulator.mp4" controls></video> 187<video src="/posts/wap/emulator.mp4" controls></video>
188 188
189If you are using Nginx to serve the contents, add a directive to the hosts file 189If you are using Nginx to serve the contents, add a directive to the hosts file
190that will automatically server `index.wml` file. 190that will automatically server `index.wml` file.
diff --git a/content/posts/2022-06-30-trying-out-helix-editor.md b/content/posts/2022-06-30-trying-out-helix-editor.md
index 305d4b7..dc4cfed 100644
--- a/content/posts/2022-06-30-trying-out-helix-editor.md
+++ b/content/posts/2022-06-30-trying-out-helix-editor.md
@@ -47,7 +47,7 @@ popups that show you what the keyboard shortcuts are.
47And it comes us packed with many 47And it comes us packed with many
48[really good themes](https://github.com/helix-editor/helix/wiki/Themes). 48[really good themes](https://github.com/helix-editor/helix/wiki/Themes).
49 49
50![Editor](/assets/helix-editor/editor.png) 50![Editor](/posts/helix-editor/editor.png)
51 51
52It's still young but has this mature feeling to it. It has sane defaults and 52It's still young but has this mature feeling to it. It has sane defaults and
53mimics Vim (works a bit differently, but the overall idea is similar). 53mimics Vim (works a bit differently, but the overall idea is similar).
diff --git a/content/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 968341c..cf0755f 100644
--- a/content/posts/2022-07-05-what-would-dna-sound-if-synthesized.md
+++ b/content/posts/2022-07-05-what-would-dna-sound-if-synthesized.md
@@ -174,10 +174,10 @@ sox output.wav -n spectrogram -o spectrogram.png
174An example spectrogram of Ludwig van Beethoven Symphony No. 6 First movement. 174An example spectrogram of Ludwig van Beethoven Symphony No. 6 First movement.
175 175
176<audio controls> 176<audio controls>
177 <source src="/assets/dna-synthesized/symphony-no6-1st-movement.mp3" type="audio/mpeg"> 177 <source src="/posts/dna-synthesized/symphony-no6-1st-movement.mp3" type="audio/mpeg">
178</audio> 178</audio>
179 179
180![Ludwig van Beethoven Symphony No. 6 First movement](/assets/dna-synthesized/symphony-no6-1st-movement.png) 180![Ludwig van Beethoven Symphony No. 6 First movement](/posts/dna-synthesized/symphony-no6-1st-movement.png)
181 181
182The other option could also be in combination with 182The other option could also be in combination with
183[gnuplot](http://www.gnuplot.info/). This would require an intermediary step, 183[gnuplot](http://www.gnuplot.info/). This would require an intermediary step,
@@ -229,10 +229,10 @@ spectrogram based on a WAV file.
229### Niels Bohr quote 229### Niels Bohr quote
230 230
231<audio controls> 231<audio controls>
232 <source src="/assets/dna-synthesized/quote/out.mp3" type="audio/mpeg"> 232 <source src="/posts/dna-synthesized/quote/out.mp3" type="audio/mpeg">
233</audio> 233</audio>
234 234
235![Spectogram](/assets/dna-synthesized/quote/spectogram.png) 235![Spectogram](/posts/dna-synthesized/quote/spectogram.png)
236 236
237### Mouse 237### Mouse
238 238
@@ -241,10 +241,10 @@ can get [genom data
241here](http://ftp.ensembl.org/pub/release-106/fasta/mus_musculus/dna/). 241here](http://ftp.ensembl.org/pub/release-106/fasta/mus_musculus/dna/).
242 242
243<audio controls> 243<audio controls>
244 <source src="/assets/dna-synthesized/mouse/out.mp3" type="audio/mpeg"> 244 <source src="/posts/dna-synthesized/mouse/out.mp3" type="audio/mpeg">
245</audio> 245</audio>
246 246
247![Spectogram](/assets/dna-synthesized/mouse/spectogram.png) 247![Spectogram](/posts/dna-synthesized/mouse/spectogram.png)
248 248
249### Bison 249### Bison
250 250
@@ -253,10 +253,10 @@ get [genom data
253here](http://ftp.ensembl.org/pub/release-106/fasta/bison_bison_bison/cdna/). 253here](http://ftp.ensembl.org/pub/release-106/fasta/bison_bison_bison/cdna/).
254 254
255<audio controls> 255<audio controls>
256 <source src="/assets/dna-synthesized/bison/out.mp3" type="audio/mpeg"> 256 <source src="/posts/dna-synthesized/bison/out.mp3" type="audio/mpeg">
257</audio> 257</audio>
258 258
259![Spectogram](/assets/dna-synthesized/bison/spectogram.png) 259![Spectogram](/posts/dna-synthesized/bison/spectogram.png)
260 260
261### Taurus 261### Taurus
262 262
@@ -265,10 +265,10 @@ This is part of a taurus genome `Bos_taurus.ARS-UCD1.2.cdna`. You can get
265here](http://ftp.ensembl.org/pub/release-106/fasta/bos_taurus/cdna/). 265here](http://ftp.ensembl.org/pub/release-106/fasta/bos_taurus/cdna/).
266 266
267<audio controls> 267<audio controls>
268 <source src="/assets/dna-synthesized/taurus/out.mp3" type="audio/mpeg"> 268 <source src="/posts/dna-synthesized/taurus/out.mp3" type="audio/mpeg">
269</audio> 269</audio>
270 270
271![Spectogram](/assets/dna-synthesized/taurus/spectogram.png) 271![Spectogram](/posts/dna-synthesized/taurus/spectogram.png)
272 272
273## Making a drummer out of a DNA sequence 273## Making a drummer out of a DNA sequence
274 274
@@ -281,11 +281,11 @@ Elektron is connected to my MacBook via USB cable and audio out is patched to a
281Sony Bluetooth speaker I have that supports 3.5 mm audio in. Elektron doesn't 281Sony Bluetooth speaker I have that supports 3.5 mm audio in. Elektron doesn't
282have internal speakers. 282have internal speakers.
283 283
284![](/assets/dna-synthesized/elektron/IMG_0619.jpg) 284![](/posts/dna-synthesized/elektron/IMG_0619.jpg)
285 285
286![](/assets/dna-synthesized/elektron/IMG_0620.jpg) 286![](/posts/dna-synthesized/elektron/IMG_0620.jpg)
287 287
288![](/assets/dna-synthesized/elektron/IMG_0622.jpg) 288![](/posts/dna-synthesized/elektron/IMG_0622.jpg)
289 289
290For communicating with Elektron, I choose `pygame` Python module that has MIDI 290For communicating with Elektron, I choose `pygame` Python module that has MIDI
291built in. With this, it was rather simple to send notes to the device. All I did 291built in. With this, it was rather simple to send notes to the device. All I did
@@ -294,7 +294,7 @@ was map MIDI notes to the actual Nucleotides.
294Before all of this I also checked Audio MIDI Setup app under MacOS and checked 294Before all of this I also checked Audio MIDI Setup app under MacOS and checked
295MIDI Studio by pressing ⌘-2. 295MIDI Studio by pressing ⌘-2.
296 296
297![](/assets/dna-synthesized/elektron/midi-studio.jpg) 297![](/posts/dna-synthesized/elektron/midi-studio.jpg)
298 298
299The whole script that parses and send notes to the Elektron looks like this. 299The whole script that parses and send notes to the Elektron looks like this.
300 300
@@ -336,7 +336,7 @@ del player
336pygame.midi.quit() 336pygame.midi.quit()
337``` 337```
338 338
339<video src="/assets/dna-synthesized/elektron/elektron.mp4" controls></video> 339<video src="/posts/dna-synthesized/elektron/elektron.mp4" controls></video>
340 340
341All of this could be made much more interesting if I choose different 341All of this could be made much more interesting if I choose different
342instruments for different Nucleotides, or doing more funky stuff with Elektron. 342instruments for different Nucleotides, or doing more funky stuff with Elektron.
diff --git a/content/posts/2022-08-13-algae-spotted-on-river-sava.md b/content/posts/2022-08-13-algae-spotted-on-river-sava.md
index ba2dd2b..34d891e 100644
--- a/content/posts/2022-08-13-algae-spotted-on-river-sava.md
+++ b/content/posts/2022-08-13-algae-spotted-on-river-sava.md
@@ -14,17 +14,17 @@ This is the first time I've seen something like this in my whole life.
14 14
15Below are some photographs taken from a DJI drone capturing the event. 15Below are some photographs taken from a DJI drone capturing the event.
16 16
17![Algae on Sava](/assets/algae-sava/dji-algae-0.jpg) 17![Algae on Sava](/posts/algae-sava/dji-algae-0.jpg)
18 18
19![Algae on Sava](/assets/algae-sava/dji-algae-1.jpg) 19![Algae on Sava](/posts/algae-sava/dji-algae-1.jpg)
20 20
21![Algae on Sava](/assets/algae-sava/dji-algae-2.jpg) 21![Algae on Sava](/posts/algae-sava/dji-algae-2.jpg)
22 22
23![Algae on Sava](/assets/algae-sava/dji-algae-3.jpg) 23![Algae on Sava](/posts/algae-sava/dji-algae-3.jpg)
24 24
25![Algae on Sava](/assets/algae-sava/dji-algae-4.jpg) 25![Algae on Sava](/posts/algae-sava/dji-algae-4.jpg)
26 26
27![Algae on Sava](/assets/algae-sava/dji-algae-5.jpg) 27![Algae on Sava](/posts/algae-sava/dji-algae-5.jpg)
28 28
29I will try to get more photos of this in the future days and if something 29I will try to get more photos of this in the future days and if something
30intriguing shows up will post it again on the blog. 30intriguing shows up will post it again on the blog.
diff --git a/content/posts/2022-10-06-state-of-web-technologies-in-year-2022.md b/content/posts/2022-10-06-state-of-web-technologies-in-year-2022.md
index e5a0b74..e0beed8 100644
--- a/content/posts/2022-10-06-state-of-web-technologies-in-year-2022.md
+++ b/content/posts/2022-10-06-state-of-web-technologies-in-year-2022.md
@@ -65,7 +65,7 @@ call them [transpilers](https://devopedia.org/transpiler), and I don’t care! ð
65And if you want to fight this, take a look at this little chart and be mad at 65And if you want to fight this, take a look at this little chart and be mad at
66it! 66it!
67 67
68![Compiling vs Transpiling](/assets/state-of-web/compiling-vs-transpiling.png) 68![Compiling vs Transpiling](/posts/state-of-web/compiling-vs-transpiling.png)
69 69
70The first one that I ever used was [webpack](https://webpack.js.org/), and it 70The first one that I ever used was [webpack](https://webpack.js.org/), and it
71was an absolute horrific experience. Saying this, it is an absolutely fantastic 71was an absolute horrific experience. Saying this, it is an absolutely fantastic
@@ -202,7 +202,7 @@ six months. There is elegance in simplicity.
202> (and even more revolutionary) framework pops up to usurp the throne. 202> (and even more revolutionary) framework pops up to usurp the throne.
203> — Ian Allen 203> — Ian Allen
204 204
205![To many options](/assets/state-of-web/2008-vs-2020.png) 205![To many options](/posts/state-of-web/2008-vs-2020.png)
206 206
207And this jab at these libraries and cloud providers is not done out of malice. 207And this jab at these libraries and cloud providers is not done out of malice.
208It is a real concern that I have about them. In my life, I have seen 208It is a real concern that I have about them. In my life, I have seen
diff --git a/content/posts/2022-10-16-that-sound-that-machine-makes-when-struggling.md b/content/posts/2022-10-16-that-sound-that-machine-makes-when-struggling.md
index 47a6212..7eb4029 100644
--- a/content/posts/2022-10-16-that-sound-that-machine-makes-when-struggling.md
+++ b/content/posts/2022-10-16-that-sound-that-machine-makes-when-struggling.md
@@ -62,5 +62,5 @@ procedure. You can feel your sanity breaking down.
62I also made this little cow animation. Go into full screen to see the effects in 62I also made this little cow animation. Go into full screen to see the effects in
63more details. 63more details.
64 64
65<video src="/assets/microsoundtrack/cow.m4v" controls loop></video> 65<video src="/posts/microsoundtrack/cow.m4v" controls loop></video>
66 66
diff --git a/content/posts/2023-05-22-crafting-stories-in-zed-editor.md b/content/posts/2023-05-22-crafting-stories-in-zed-editor.md
index dc22e95..a3104b8 100644
--- a/content/posts/2023-05-22-crafting-stories-in-zed-editor.md
+++ b/content/posts/2023-05-22-crafting-stories-in-zed-editor.md
@@ -29,7 +29,7 @@ server)](https://en.wikipedia.org/wiki/Language_Server_Protocol). The list of
29supported languages is not extensive, but it's still impressive. It's a great 29supported languages is not extensive, but it's still impressive. It's a great
30example of how to create a product that stays out of your way. 30example of how to create a product that stays out of your way.
31 31
32![Zed editor](/assets/zed/zed-1.png?style=bigimg) 32![Zed editor](/posts/zed/zed-1.png?style=bigimg)
33 33
34For C development it downloaded [clangd](https://clangd.llvm.org/) and setting 34For C development it downloaded [clangd](https://clangd.llvm.org/) and setting
35up missing dependencies in code was rather easy. For this project I use 35up missing dependencies in code was rather easy. For this project I use
@@ -70,7 +70,7 @@ marketing speak there but the product is still amazing!
70For me the speed and the simplicity of the product was the most impressive 70For me the speed and the simplicity of the product was the most impressive
71thing. You get that: it just works feeling. A rare thing in 2023. 71thing. You get that: it just works feeling. A rare thing in 2023.
72 72
73![Zed editor](/assets/zed/zed-2.png?style=bigimg) 73![Zed editor](/posts/zed/zed-2.png?style=bigimg)
74 74
75They also managed to add [Github Copilot](https://github.com/features/copilot) 75They also managed to add [Github Copilot](https://github.com/features/copilot)
76in a non obtrusive way. To me, everything feels very intentional and 76in a non obtrusive way. To me, everything feels very intentional and
diff --git a/content/posts/2023-08-05-floods-in-slovenia.md b/content/posts/2023-08-05-floods-in-slovenia.md
index 1ca580b..571911b 100644
--- a/content/posts/2023-08-05-floods-in-slovenia.md
+++ b/content/posts/2023-08-05-floods-in-slovenia.md
@@ -6,14 +6,14 @@ type: post
6draft: false 6draft: false
7--- 7---
8 8
9<video src="/assets/floods/IMG_1471.mp4" controls></video> 9<video src="/posts/floods/IMG_1471.mp4" controls></video>
10 10
11<video src="/assets/floods/IMG_1474.mp4" controls></video> 11<video src="/posts/floods/IMG_1474.mp4" controls></video>
12 12
13![](/assets/floods/IMG_1469.webp) 13![](/posts/floods/IMG_1469.webp)
14 14
15![](/assets/floods/IMG_1470.webp) 15![](/posts/floods/IMG_1470.webp)
16 16
17<video src="/assets/floods/IMG_1461.mp4" controls></video> 17<video src="/posts/floods/IMG_1461.mp4" controls></video>
18 18
19<video src="/assets/floods/IMG_1466.mp4" controls></video> 19<video src="/posts/floods/IMG_1466.mp4" controls></video>