-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.xml
1319 lines (1067 loc) · 77.4 KB
/
index.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Developer's blog</title>
<link>/</link>
<description>Recent content on Developer's blog</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<lastBuildDate>Wed, 12 Jun 2024 20:45:39 +0000</lastBuildDate><atom:link href="/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>1718225139</title>
<link>/notes/1718225139/</link>
<pubDate>Wed, 12 Jun 2024 20:45:39 +0000</pubDate>
<guid>/notes/1718225139/</guid>
<description>Testcontainers library looks interesting for Java applications testing. I am going to try it soon.</description>
</item>
<item>
<title>1718085651</title>
<link>/notes/1718085651/</link>
<pubDate>Tue, 11 Jun 2024 06:00:51 +0000</pubDate>
<guid>/notes/1718085651/</guid>
<description>This GitHub repo collects the artworks of the most Linux distro.</description>
</item>
<item>
<title>1711381205</title>
<link>/notes/1711381205/</link>
<pubDate>Mon, 25 Mar 2024 15:40:05 +0000</pubDate>
<guid>/notes/1711381205/</guid>
<description>I use Flatpak apps everyday. Flatseal is a graphical utility to review and modify Flatpak apps permissions. It&rsquo;s really worth a try.</description>
</item>
<item>
<title>1711267601</title>
<link>/notes/1711267601/</link>
<pubDate>Sun, 24 Mar 2024 08:06:41 +0000</pubDate>
<guid>/notes/1711267601/</guid>
<description>Java 22 released.</description>
</item>
<item>
<title>1711266796</title>
<link>/notes/1711266796/</link>
<pubDate>Sun, 24 Mar 2024 07:53:16 +0000</pubDate>
<guid>/notes/1711266796/</guid>
<description>Most of the text translation services like Google Translate use the cloud. It causes some privacy issues. Bergamot is a software that translates texts locally without Internet access.</description>
</item>
<item>
<title>1710686849</title>
<link>/notes/1710686849/</link>
<pubDate>Sun, 17 Mar 2024 14:47:29 +0000</pubDate>
<guid>/notes/1710686849/</guid>
<description>There is a Rocky Linux 9 VM in the VirtualBox. It&rsquo;s required to extend the root partition. By default, RHEL-based distros use LVM. It allows to use several physical disks as one logical volume.
Check the name of root partition device with df -h:
Filesystem Size Used Avail Use% Mounted on devtmpfs 4.0M 0 4.0M 0% /dev tmpfs 882M 0 882M 0% /dev/shm tmpfs 353M 5.0M 348M 2% /run /dev/mapper/rl-root 8.</description>
</item>
<item>
<title>1708247531</title>
<link>/notes/1708247531/</link>
<pubDate>Sun, 18 Feb 2024 09:12:11 +0000</pubDate>
<guid>/notes/1708247531/</guid>
<description>Today I have found GeeksforGeeks. This resource contains a lot of useful information about data structures, algorithms, data science and other programming themes. E.g. I have read about different tree traversal techniques.</description>
</item>
<item>
<title>1707649949</title>
<link>/notes/1707649949/</link>
<pubDate>Sun, 11 Feb 2024 11:12:29 +0000</pubDate>
<guid>/notes/1707649949/</guid>
<description>Found two nice Python cheatsheets: small and extended. It will help for those of you who use Python every day.</description>
</item>
<item>
<title>1706008162</title>
<link>/notes/1706008162/</link>
<pubDate>Tue, 23 Jan 2024 11:09:22 +0000</pubDate>
<guid>/notes/1706008162/</guid>
<description>Why are slow computers from 80s were solving the same problems as modern computers nowadays? Why 1000x times faster hardware can freeze with text editors? Some everyday tasks become more complicated. E.g. text rendering in 80s was just a coping of fixed-size bitmaps to video memory. Nowadays, this process becomes a lot more sophisticated. It consists of several stages that depend on each other and the processor can spend a lot of time on this widespread task.</description>
</item>
<item>
<title>1705668080</title>
<link>/notes/1705668080/</link>
<pubDate>Fri, 19 Jan 2024 12:41:20 +0000</pubDate>
<guid>/notes/1705668080/</guid>
<description>I used to work with GitLab CI/CD, but today I&rsquo;ve tried GitHub Actions. It is similar solutions but there is one important difference: GitLab CI/CD performs all workspace manipulations (like git clone) in a separate preconfigured container, so you can use any Docker image for your jobs. In GitHub Actions everything works in one container, so you can&rsquo;t use any Docker image that you want to use. You have to install all essential tools that perform actions/checkout@v4 and similar things (Node.</description>
</item>
<item>
<title>1705498212</title>
<link>/notes/1705498212/</link>
<pubDate>Wed, 17 Jan 2024 13:30:12 +0000</pubDate>
<guid>/notes/1705498212/</guid>
<description>Sometimes you need to configure HTTPS for a web resource that works in a network without Internet access. It&rsquo;s impossible to use Let&rsquo;s Encrypt to issue a certificate. One solution is using your own certificate authority and sign certificates yourself.
Generate CA (Certificate Authority) key and certificate with a command:
openssl req -x509 -nodes \ -newkey RSA:2048 \ -keyout root-ca.key \ -days 3650 \ -out root-ca.crt \ -subj &#39;/C=GB/ST=London/L=London/O=Home/CN=Home&#39; Copy root-ca.</description>
</item>
<item>
<title>1692602169</title>
<link>/notes/1692602169/</link>
<pubDate>Mon, 21 Aug 2023 07:16:10 +0000</pubDate>
<guid>/notes/1692602169/</guid>
<description>HashiCorp products are no longer Open Source. I understand this decision, but it&rsquo;s still sad.</description>
</item>
<item>
<title>1692455011</title>
<link>/notes/1692455011/</link>
<pubDate>Sat, 19 Aug 2023 14:23:31 +0000</pubDate>
<guid>/notes/1692455011/</guid>
<description>Today I&rsquo;ve found aerc. It&rsquo;s a terminal email client that can be good alternative to mutt. I&rsquo;ll try to use it for a few weeks.</description>
</item>
<item>
<title>1691984073</title>
<link>/notes/1691984073/</link>
<pubDate>Mon, 14 Aug 2023 03:34:33 +0000</pubDate>
<guid>/notes/1691984073/</guid>
<description>Finally I have returned to GitHub Pages.</description>
</item>
<item>
<title>1682588621</title>
<link>/notes/1682588621/</link>
<pubDate>Thu, 27 Apr 2023 09:43:41 +0000</pubDate>
<guid>/notes/1682588621/</guid>
<description>I&rsquo;d found an article &ldquo;Now available: Fedora on Lenovo laptops!&rdquo;. It is said that Lenovo sells ThinkPad X1 Carbon Gen 8, ThinkPad P53, and ThinkPad P1 Gen 2 laptops with Fedora pre-installed. From the one side, it&rsquo;s great for the Linux community, because pre-installed Linux means that all laptop systems are tested and work properly. From the other side, Fedora provides updated packages for approximately 13 months, so it&rsquo;s not the best choice for a pre-installed system.</description>
</item>
<item>
<title>1681681157</title>
<link>/notes/1681681157/</link>
<pubDate>Sun, 16 Apr 2023 21:39:17 +0000</pubDate>
<guid>/notes/1681681157/</guid>
<description>All smartphones are similar to each other nowadays. It&rsquo;s just a screen with several buttons on the edge. Most of the time it&rsquo;s OK, but some tasks require typing a lot of text, so an on-screen keyboard is not the best solution. Several years ago, it was possible to buy a slider keyboard case for popular smartphones, so most of the time you use your smartphone as usual, but when you want to type a long email or execute several command over SSH you just slide a physical keyboard and use your device like a PDA.</description>
</item>
<item>
<title>1681560124</title>
<link>/notes/1681560124/</link>
<pubDate>Sat, 15 Apr 2023 12:02:04 +0000</pubDate>
<guid>/notes/1681560124/</guid>
<description>It looks like Mastodon is becoming more and more popular. Maybe in the future it will become a real alternative to Twitter.</description>
</item>
<item>
<title>1680425973</title>
<link>/notes/1680425973/</link>
<pubDate>Sun, 02 Apr 2023 08:59:33 +0000</pubDate>
<guid>/notes/1680425973/</guid>
<description>After the installation of language packages in Kubuntu 22.04, I&rsquo;d found that LANGUAGE variable had been changed. There was nothing in /etc/default/locale or ~/.pam_environment, so it looked a bit strange. I&rsquo;d realized that KDE writes locale configs into ~/.config/plasma-localerc, so I changed settings there and reload session. Now I have the desired value of the LANGUAGE variable.</description>
</item>
<item>
<title>1680370774</title>
<link>/notes/1680370774/</link>
<pubDate>Sat, 01 Apr 2023 17:39:34 +0000</pubDate>
<guid>/notes/1680370774/</guid>
<description>After almost three years with Ubuntu 20.04 on my desktop, I&rsquo;ve finally updated to Kubuntu 22.04.</description>
</item>
<item>
<title>1679757044</title>
<link>/notes/1679757044/</link>
<pubDate>Sat, 25 Mar 2023 15:10:44 +0000</pubDate>
<guid>/notes/1679757044/</guid>
<description>Sometimes I come across an idea that today&rsquo;s computers are too complicated, and it&rsquo;s difficult to understand them. People think that it was a lot easier in the 80s during the 8-Bit computer era to grasp all of what is going on inside of any single machine, because the computers were relatively simple and constrained.
I think it&rsquo;s a controversial question. In the 80s, the computers were easier, but it was more difficult to find the information about them.</description>
</item>
<item>
<title>1678474413</title>
<link>/notes/1678474413/</link>
<pubDate>Fri, 10 Mar 2023 18:53:33 +0000</pubDate>
<guid>/notes/1678474413/</guid>
<description>Never used savepoints in SQL in my projects, but this feature can be really useful for some edge cases.</description>
</item>
<item>
<title>1678304751</title>
<link>/notes/1678304751/</link>
<pubDate>Wed, 08 Mar 2023 19:45:51 +0000</pubDate>
<guid>/notes/1678304751/</guid>
<description>GENERATED ALWAYS AS IDENTITY is a PostgreSQL construction that creates an identity column for a table and forbids to specify a value for this field manually. E.g.
CREATE TABLE users ( id INT GENERATED ALWAYS AS IDENTITY, name VARCHAR NOT NULL ); INSERT INTO users(name) VALUES (&#39;John Smith&#39;); -- generates id value INSERT INTO users(id, name) VALUES (42, &#39;Sam Smith&#39;); -- throws an error </description>
</item>
<item>
<title>1678273741</title>
<link>/notes/1678273741/</link>
<pubDate>Wed, 08 Mar 2023 11:09:01 +0000</pubDate>
<guid>/notes/1678273741/</guid>
<description>When I need to access my home network from remote locations, I use WireGuard. It&rsquo;s fast and simple to configure. In some countries, WireGuard is blocked by authorities. OpenVPN and L2TP/IPSec are often blocked as well. The option that works almost always is Cisco AnyConnect. It&rsquo;s possible to run AnyConnect compatible server with ocserv. It is slower than WireGuard, but it can solve the problem when everything else is blocked.</description>
</item>
<item>
<title>1677397576</title>
<link>/notes/1677397576/</link>
<pubDate>Sun, 26 Feb 2023 07:46:16 +0000</pubDate>
<guid>/notes/1677397576/</guid>
<description>I&rsquo;d tried DeepL. It produces accurate translations for my use cases.</description>
</item>
<item>
<title>1677142283</title>
<link>/notes/1677142283/</link>
<pubDate>Thu, 23 Feb 2023 08:51:24 +0000</pubDate>
<guid>/notes/1677142283/</guid>
<description>KDE Plasma 5.27 has initial implementation of window tiling.</description>
</item>
<item>
<title>1674540731</title>
<link>/notes/1674540731/</link>
<pubDate>Tue, 24 Jan 2023 06:12:11 +0000</pubDate>
<guid>/notes/1674540731/</guid>
<description>In September 2020 I&rsquo;d written an article Ubuntu Snap: the Price of the Isolation. One inconvenience with Snap was the updates mechanism: it was impossible to disable auto-updates and check for new versions of software by hands. The epic with updates in Snap finally has ended:
August 15, 2022: the PR that allows to hold refreshes indefinitely for all the system&rsquo;s snaps; November 15, 2022: it&rsquo;s possible to disable auto-updates in Snap from the edge channel (here is the post in snapcraft blog); January 10, 2023: snapd 2.</description>
</item>
<item>
<title>1674038448</title>
<link>/notes/1674038448/</link>
<pubDate>Wed, 18 Jan 2023 10:40:48 +0000</pubDate>
<guid>/notes/1674038448/</guid>
<description>Interesting article about Open Source software for creators. The author provides the annual recap and preview of FOSS projects across the ecosystem: image editing, painting, photography, 3D, special effects, CAD, animation, video, and audio.</description>
</item>
<item>
<title>1673174608</title>
<link>/notes/1673174608/</link>
<pubDate>Sun, 08 Jan 2023 10:43:28 +0000</pubDate>
<guid>/notes/1673174608/</guid>
<description>Continue talking about self-hosted services. There is a subreddit r/selfhosted where people discuss alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don&rsquo;t control. In this subreddit I&rsquo;d found a link to a repository awesome-sysadmin that contains a list of different Open Source admin tools.</description>
</item>
<item>
<title>1672425121</title>
<link>/notes/1672425121/</link>
<pubDate>Fri, 30 Dec 2022 18:32:02 +0000</pubDate>
<guid>/notes/1672425121/</guid>
<description>Some people use GitHub&rsquo;s Gist as a blogging platform. It seems like an interesting idea: you can publish posts using built in Markdown, follow the other GitHub members and comment on their posts. Gist has a lot of useful features for technical writing, like source code syntax highlighting, or advanced formatting.
On the other hand, Gist is another vendor lock, like Twitter or Facebook. Actually, you do not own your account and it can be terminated any time without violation of the GitHub user agreement.</description>
</item>
<item>
<title>1671690580</title>
<link>/notes/1671690580/</link>
<pubDate>Thu, 22 Dec 2022 06:29:40 +0000</pubDate>
<guid>/notes/1671690580/</guid>
<description>I use Evolution mail client because it&rsquo;s the only client that works well with Exchange. I used to install Evolution using flatpak, and it requires a password each time I start it. Today I&rsquo;ve switched from flatpak version to apt version and now Evolution starts gnome-keyring-daemon and uses it to store passwords. So I type my keyring password only once. It&rsquo;s a lot more convenient.</description>
</item>
<item>
<title>1670911951</title>
<link>/notes/1670911951/</link>
<pubDate>Tue, 13 Dec 2022 06:12:32 +0000</pubDate>
<guid>/notes/1670911951/</guid>
<description>I use NRF24L01 chips from time to time. It&rsquo;s a low-cost radio with small power consumption. That is why these chips are really useful for communications between IoT devices. NRF24L01 exposes an interface for low-level communications between two chips. Sometimes it&rsquo;s enough, but the other tasks require higher-level network protocols like TCP. Recently I&rsquo;ve found an inspiring post that explains how to set up a TCP/IP stack over NRF24L01. The author had developed nrfnet — an application that creates virtual interface on Raspberry PI and uses NRF24L01 as a backend for data transmission.</description>
</item>
<item>
<title>1668575623</title>
<link>/notes/1668575623/</link>
<pubDate>Wed, 16 Nov 2022 05:13:43 +0000</pubDate>
<guid>/notes/1668575623/</guid>
<description>It&rsquo;s time to update my desktop at Kubuntu 22.04. To be sure that there will be no problems with devices and the software that I use every day, it&rsquo;s important to a check new distro before installing it on the internal hard drive. I&rsquo;d decided to install Kubuntu on an external disk.
First, I&rsquo;d used one of my USB flash drives. Unfortunately, all of them were extremely slow, that is why I gave up on this idea.</description>
</item>
<item>
<title>1668257505</title>
<link>/notes/1668257505/</link>
<pubDate>Sat, 12 Nov 2022 12:51:45 +0000</pubDate>
<guid>/notes/1668257505/</guid>
<description>Suppose you configure network settings on a remote Linux machine. The only way to access this machine is an SSH connection. To prevent access problems in case of network configuration failure, try such option:
open tmux; write sleep 600 &amp;&amp; reboot (you should cancel this command every 5-9 minutes and start again); perform network configuration in a separate tab. It&rsquo;s important to make only temporary changes that will be lost after a reboot:</description>
</item>
<item>
<title>My Vim Story</title>
<link>/posts/my-vim-story/</link>
<pubDate>Sun, 06 Nov 2022 13:00:00 +0000</pubDate>
<guid>/posts/my-vim-story/</guid>
<description><p>TLDR; after several years with Vim I&rsquo;d found that it&rsquo;s difficult to leave the editor even if I know
about <code>:q!</code>.</p>
<p><img src="./my-vim-story/vim.png" alt="Vim"></p>
<p>I use Vim for a long time. For the first time, Vim looked confusing and illogical comparing with
mainstream IDEs like Eclipse or NetBeans. What is the purpose of different Vim modes? Why there are
no menu and tabs on the interface? Why do commands for ordinary actions look like combos from Mortal
Kombat? I asked myself these questions every day. Today I do not understand why I&rsquo;d started this
journey and why I&rsquo;d not abandoned it after several months. I&rsquo;m pretty sure that today I would not
start something like this.</p></description>
</item>
<item>
<title>1667560202</title>
<link>/notes/1667560202/</link>
<pubDate>Fri, 04 Nov 2022 11:10:02 +0000</pubDate>
<guid>/notes/1667560202/</guid>
<description>ired.team — a site dedicated to pentesting, security tools and techniques. Recently I&rsquo;d read an article about Windows API Hooking from this resource. It describes a technique that can be used to intercept API calls. Malware software often uses such technique to different malware software to inject malicious code into the user&rsquo;s process.</description>
</item>
<item>
<title>1667203537</title>
<link>/notes/1667203537/</link>
<pubDate>Mon, 31 Oct 2022 08:05:37 +0000</pubDate>
<guid>/notes/1667203537/</guid>
<description>Nginx is a standard de facto in my projects. On the weekend, I&rsquo;d read The Complete NGINX Cookbook. I&rsquo;d found some useful tips about $request_id variable or rate_limit directive. I think the book is worth reading.</description>
</item>
<item>
<title>1667027350</title>
<link>/notes/1667027350/</link>
<pubDate>Sat, 29 Oct 2022 07:09:10 +0000</pubDate>
<guid>/notes/1667027350/</guid>
<description>Most of the time, I use nginx as an HTTP load balancer, but it can also balance raw TCP and UDP streams with stream block.</description>
</item>
<item>
<title>1665949478</title>
<link>/notes/1665949478/</link>
<pubDate>Sun, 16 Oct 2022 19:44:38 +0000</pubDate>
<guid>/notes/1665949478/</guid>
<description>hping is a really flexible network diagnostic tool. It supports TCP, UDP, ICMP and RAW-IP protocols, has a traceroute mode, the ability to send files between a covered channel, and many other features. It helps to investigate network failures and fix its, so I think, it&rsquo;s a must-have instrument for every developer and admin.</description>
</item>
<item>
<title>1665914946</title>
<link>/notes/1665914946/</link>
<pubDate>Sun, 16 Oct 2022 10:09:06 +0000</pubDate>
<guid>/notes/1665914946/</guid>
<description>Today I&rsquo;d accidentally pressed some buttons and Firefox changed text alignment from left to right. It was a bit confusing. If someone experienced the same issue and wants to return everything back, it can be done with Ctrl-Shift-X.</description>
</item>
<item>
<title>1665297164</title>
<link>/notes/1665297164/</link>
<pubDate>Sun, 09 Oct 2022 06:32:44 +0000</pubDate>
<guid>/notes/1665297164/</guid>
<description>The required things for offline coding:
Books about programming environment (OS, network, compiler, security and so on). pdfgrep to search through these books. zeal to browse documentation about programming language, web server and different libraries like Qt. Full stackoverflow dump made by kiwix. </description>
</item>
<item>
<title>1665269268</title>
<link>/notes/1665269268/</link>
<pubDate>Sat, 08 Oct 2022 22:47:48 +0000</pubDate>
<guid>/notes/1665269268/</guid>
<description>Do you know that it&rsquo;s possible to download the whole Wikipedia or Stack Overflow with kiwix? Just go to library.kiwix.org, select required resource and download the dump. It can take several hours, even on a fast connection. Then use the reader to explore the resource offline. I prefer to install the reader from Flatpak: flatpak install flathub org.kiwix.desktop.
Kiwix is barely useful for fast Internet connection, but for some corner cases it can be extremely important.</description>
</item>
<item>
<title>1664982645</title>
<link>/notes/1664982645/</link>
<pubDate>Wed, 05 Oct 2022 15:10:45 +0000</pubDate>
<guid>/notes/1664982645/</guid>
<description>Today I&rsquo;ve discovered Command Line Heroes — the podcast from RedHat. It tells stories about different tech fields like security, programming languages or open source. It&rsquo;s more like an audio book than a radio show. I think it&rsquo;s worth listening.</description>
</item>
<item>
<title>1664972966</title>
<link>/notes/1664972966/</link>
<pubDate>Wed, 05 Oct 2022 12:29:26 +0000</pubDate>
<guid>/notes/1664972966/</guid>
<description>Found chat.stackoverflow.com. Stackoverflow had reinvented IRC.</description>
</item>
<item>
<title>1664551116</title>
<link>/notes/1664551116/</link>
<pubDate>Fri, 30 Sep 2022 15:18:37 +0000</pubDate>
<guid>/notes/1664551116/</guid>
<description>When you need to transfer Git repo, e.g. send it by email, it&rsquo;s possible to use git bundle. Create .bundle file with git bundle create my-repo.bundle master, send it, and then extract data with git checkout my-repo.bundle my-repo.</description>
</item>
<item>
<title>1663436755</title>
<link>/notes/1663436755/</link>
<pubDate>Sat, 17 Sep 2022 17:45:55 +0000</pubDate>
<guid>/notes/1663436755/</guid>
<description>Also, there is a Reddit thread about development environments for STM32 on Linux. So if you think STM32CubeIDE is not your choice, you&rsquo;d better look at this discussion.</description>
</item>
<item>
<title>1663435954</title>
<link>/notes/1663435954/</link>
<pubDate>Sat, 17 Sep 2022 17:32:34 +0000</pubDate>
<guid>/notes/1663435954/</guid>
<description>Found a nice wiki page about STM32 Development tools. There are some interesting alternatives to the STM32CubeIDE. It&rsquo;s worth reading.</description>
</item>
<item>
<title>1662243994</title>
<link>/notes/1662243994/</link>
<pubDate>Sat, 03 Sep 2022 22:26:34 +0000</pubDate>
<guid>/notes/1662243994/</guid>
<description>Talking about Linux Kernel on Ubuntu 20.04 Server: found that it&rsquo;s possible to install 5.15 LTS manually using sudo apt install --install-recommends linux-generic-hwe-20.04. Looks reasonable: for server installations it may be dangerous to perform such updates automatically.</description>
</item>
<item>
<title>1662226606</title>
<link>/notes/1662226606/</link>
<pubDate>Sat, 03 Sep 2022 17:36:47 +0000</pubDate>
<guid>/notes/1662226606/</guid>
<description>Switched from Adobe Acrobat Reader to Sumatra PDF for viewing PDFs on my Windows machine. It&rsquo;s a lot smaller, faster and the source code is available on GitHub.</description>
</item>
<item>
<title>1661450929</title>
<link>/notes/1661450929/</link>
<pubDate>Thu, 25 Aug 2022 18:08:49 +0000</pubDate>
<guid>/notes/1661450929/</guid>
<description>I always thought that PNG is a file format for static images, but today I was searching for a new emoji for Slack and found an animated image with .png extension. Surprisingly, there is an Animated Portable Network graphics (APNG) file format, and it&rsquo;s supported by the most of the modern web browsers.</description>
</item>
<item>
<title>1661425714</title>
<link>/notes/1661425714/</link>
<pubDate>Thu, 25 Aug 2022 11:08:34 +0000</pubDate>
<guid>/notes/1661425714/</guid>
<description>Actually, the previous message is correct for desktop version only: Ubuntu Server 20.04 uses Linux kernel 5.4.0.</description>
</item>
<item>
<title>1661281240</title>
<link>/notes/1661281240/</link>
<pubDate>Tue, 23 Aug 2022 19:00:40 +0000</pubDate>
<guid>/notes/1661281240/</guid>
<description>Found that Ubuntu 20.04.4 and Ubuntu 22.04.1 have the same kernel 5.15.0. I thought that 22.04 should have a later version, like 5.19.3.</description>
</item>
<item>
<title>1660623217</title>
<link>/notes/1660623217/</link>
<pubDate>Tue, 16 Aug 2022 04:13:37 +0000</pubDate>
<guid>/notes/1660623217/</guid>
<description>After updating to Kubuntu 22.04 my OpenVPN stop working with an error like:
OpenSSL: error:0A00018E:SSL routines::ca md too weak Cannot load inline certificate file Exiting due to fatal error The correct way to solve this issue is certificate regeneration, but I do not control the server. So the temporary solution is to add the line tls-cipher &quot;DEFAULT:@SECLEVEL=0&quot; into ovpn config file. It allows OpenVPN to use weak tls cipher, so the connection starts as usual.</description>
</item>
<item>
<title>1660460219</title>
<link>/notes/1660460219/</link>
<pubDate>Sun, 14 Aug 2022 06:56:59 +0000</pubDate>
<guid>/notes/1660460219/</guid>
<description>Found an interesting article about curl&rsquo;s options for connecting to the different host. Most of the time I&rsquo;d changed Host HTTP header, and it was enough for my cases, but today I&rsquo;ve realized that this solution is not acceptable when for HTTPS resources. Here, I need to specify the host name during SSL connection negotiation, so I can&rsquo;t use HTTP headers. There is an SNI field that allows to tell the server which host I want to access.</description>
</item>
<item>
<title>1660420739</title>
<link>/notes/1660420739/</link>
<pubDate>Sat, 13 Aug 2022 19:58:59 +0000</pubDate>
<guid>/notes/1660420739/</guid>
<description>And one more useful Vim command: to make my markdown files easy to read, I limit the line width with 100 chars and highlight longer lines:
set tw=100 2mat ErrorMsg &#39;\%101v.&#39; The editor split lines automatically as I type, but if I add some text in the middle of the line, I have to select a paragraph with vap command and reformat it with gq.</description>
</item>
<item>
<title>1660420024</title>
<link>/notes/1660420024/</link>
<pubDate>Sat, 13 Aug 2022 19:47:04 +0000</pubDate>
<guid>/notes/1660420024/</guid>
<description>I write articles and docs using Vim. It&rsquo;s convenient when the editor can check spelling on the fly, so I can fix mistakes as soon as possible. Sometimes I use different languages in one file and I want the editor to find spelling issues for all languages in it. It&rsquo;s possible to set multiple languages for spell check in Vim with a command like :set spelllang=en_us,de_de, so the editor will use several dictionaries.</description>
</item>
<item>
<title>Working With Multiple VPNs</title>
<link>/posts/working-with-multiple-vpns/</link>
<pubDate>Thu, 04 Aug 2022 18:00:00 +0000</pubDate>
<guid>/posts/working-with-multiple-vpns/</guid>
<description><p>I work on several projects. Each of them require a VPN connection. Sometimes, I work from remote
locations and I need to access my home network. It&rsquo;s one more VPN connection. It&rsquo;s convenient to
have an ability to access different private networks at the same time. Let&rsquo;s discuss the issues of
multi-VPN setups and possible.</p>
<p>TL;DR:</p>
<ol>
<li>Use NetworkManager to manage VPN connections.</li>
<li>Disable systemd-resolved.</li>
<li>Use dnsmasq to process DNS requests.</li>
</ol></description>
</item>
<item>
<title>1659500215</title>
<link>/notes/1659500215/</link>
<pubDate>Wed, 03 Aug 2022 04:16:55 +0000</pubDate>
<guid>/notes/1659500215/</guid>
<description>Update for the previous message: A moment ago I&rsquo;ve realized that Ubuntu apt repo contains grip 4.2.0. It&rsquo;s an old version that generates strange pages. The best decision was to switch from an old apt version to the grip 4.6.1 from PyPi. It can be installed with such a command: pip3 install --user grip. Now the page looks great with no additional options in the config file.</description>
</item>
<item>
<title>1659498630</title>
<link>/notes/1659498630/</link>
<pubDate>Wed, 03 Aug 2022 03:50:30 +0000</pubDate>
<guid>/notes/1659498630/</guid>
<description>I use grip to preview markdown documents locally. To make the generated page looks like README on GitHub add such line into ~/.grip/settings.py:
STYLE_URLS = [&#39;https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/5.1.0/github-markdown.min.css&#39;] It&rsquo;s a CDN URL for github-markdown-css. This library is a minimal amount of CSS to replicate the GitHub Markdown style.</description>
</item>
<item>
<title>1659290553</title>
<link>/notes/1659290553/</link>
<pubDate>Sun, 31 Jul 2022 18:02:33 +0000</pubDate>
<guid>/notes/1659290553/</guid>
<description>Found an outstanding notes.vim plugin for Vim. It allows to write some notes with basic formatting and navigation. The syntax highlighting of the source code can be useful for notes of software developers.</description>
</item>
<item>
<title>1659288194</title>
<link>/notes/1659288194/</link>
<pubDate>Sun, 31 Jul 2022 17:23:14 +0000</pubDate>
<guid>/notes/1659288194/</guid>
<description>Useful tip: it&rsquo;s possible to execute some code on the Vim&rsquo;s startup with -c argument. I use it to prepare Vim for blog post editing like this: vim -c 'call ConfigDoc()' post.md. I don&rsquo;t want to add this function call into .vimrc for all .md files, because there are a lot of different markdown files that do not require this configuration. So command line argument does the trick.</description>
</item>
<item>
<title>1657969466</title>
<link>/notes/1657969466/</link>
<pubDate>Sat, 16 Jul 2022 11:04:26 +0000</pubDate>
<guid>/notes/1657969466/</guid>
<description>I tried to download a file with curl on Oracle Linux 8 and got an error: routines:ssl_choose_client_version:unsupported protocol. It&rsquo;s an old host and I have no access to upgrade the software. So I had to relax my encryption settings with update-crypto-policies --set LEGACY. It&rsquo;s not the best way to solve this issue, but if you need to download a file and you don&rsquo;t have any other options, it is worth doing.</description>
</item>
<item>
<title>1657799440</title>
<link>/notes/1657799440/</link>
<pubDate>Thu, 14 Jul 2022 11:50:40 +0000</pubDate>
<guid>/notes/1657799440/</guid>
<description>The easiest way to find Ubuntu installation date is checking the installer&rsquo;s directory: ls -lt /var/log/installer.</description>
</item>
<item>
<title>1657717546</title>
<link>/notes/1657717546/</link>
<pubDate>Wed, 13 Jul 2022 13:05:46 +0000</pubDate>
<guid>/notes/1657717546/</guid>
<description>Sometimes I need to test new software or prepare isolated stands. I use VirtualBox for these tasks. I want to access VMs from the host PC and the easiest way to achieve this is by using bridged network adapters. Unfortunately, VM with a bridged network is exposed not only to the host but also to all machines in the network. VM relies on the router DHCP. It&rsquo;s can be unacceptable for some locations.</description>
</item>
<item>
<title>1657695928</title>
<link>/notes/1657695928/</link>
<pubDate>Wed, 13 Jul 2022 07:05:28 +0000</pubDate>
<guid>/notes/1657695928/</guid>
<description>Found an outstanding video about VGA signal. Ben Eater explains what VGA display actually does when it receives an input, how it processes this input to display pixels on the screen and how to make a circuit using primitive ICs that can generate such signal for the display.</description>
</item>
<item>
<title>1657608401</title>
<link>/notes/1657608401/</link>
<pubDate>Tue, 12 Jul 2022 06:46:41 +0000</pubDate>
<guid>/notes/1657608401/</guid>
<description>I have several devices that I use every day: PC, laptop and phone. I want to share some notes between them, but I don&rsquo;t want to use cloud solutions like Google Docs. So today I&rsquo;ve installed Wiki.js instance on my Ubuntu server. It works fast, uses a few resources on my workloads and has a lot of useful docs.</description>
</item>
<item>
<title>1657109836</title>
<link>/notes/1657109836/</link>
<pubDate>Wed, 06 Jul 2022 12:17:16 +0000</pubDate>
<guid>/notes/1657109836/</guid>
<description>This article about sudo rules troubleshooting helped me a lot with FreeIPA configuration. It was difficult to understand what was going on before I turn debug logs of the SSSD on.</description>
</item>
<item>
<title>1656760056</title>
<link>/notes/1656760056/</link>
<pubDate>Sat, 02 Jul 2022 11:07:36 +0000</pubDate>
<guid>/notes/1656760056/</guid>
<description>Vim 9.0 had been released several days ago. I started using Vim when the latest version was 6.4. The modes idea and navigation with j, k, k and l keys were unfamiliar to me and I&rsquo;d spent a lot of time to get used to it. Now it&rsquo;s something natural, so sometimes it&rsquo;s difficult to use mainstream editors without Vim features. The most annoying thing with Vim 6.4 was the lack of editor tabs.</description>
</item>
<item>
<title>1656743408</title>
<link>/notes/1656743408/</link>
<pubDate>Sat, 02 Jul 2022 06:30:08 +0000</pubDate>
<guid>/notes/1656743408/</guid>
<description>One task that I perform these days is the configuration of the FreeIPA domain. Sometimes it&rsquo;s not trivial, so I need to debug some sort of quirky errors from time to time. Today I&rsquo;d found Thomas C. Foulds&rsquo;s blog that contains a lot of useful information about FreeIPA debugging. It&rsquo;s definitely worth reading.</description>
</item>
<item>
<title>1654367223</title>
<link>/notes/1654367223/</link>
<pubDate>Sat, 04 Jun 2022 18:27:03 +0000</pubDate>
<guid>/notes/1654367223/</guid>
<description>It&rsquo;s possible to connect to a remote host over SSH using a public key. It&rsquo;s a well-known feature which I use every day. SSH protocol is also used for the git clone command. I was curious about how Gitea implements the support of the SSH protocol. The first idea was about the custom SSH server. I&rsquo;d inspected my local Gitea installation and found that there was no custom SSH server running, just the default sshd.</description>
</item>
<item>
<title>1653742728</title>
<link>/notes/1653742728/</link>
<pubDate>Sat, 28 May 2022 12:58:48 +0000</pubDate>
<guid>/notes/1653742728/</guid>
<description>Ubuntu 22.04 distributes Firefox as a snap package. It starts slower than Firefox installed as a deb-package and it&rsquo;s difficult to control updates of the browser. It&rsquo;s possible to install Firefox as a deb package from Mozilla Team PPA. There is a useful guide from omgubuntu.co.uk about how to configure the system to use this PPA.</description>
</item>
<item>
<title>1652165698</title>
<link>/notes/1652165698/</link>
<pubDate>Tue, 10 May 2022 06:54:58 +0000</pubDate>
<guid>/notes/1652165698/</guid>
<description>Most of RPM-based Linux distributions use frontends like yum or dnf. Most of deb-based Linux distributions use apt-get, aptitude or apt. Surprisingly, there is an APT-RPM package manager — a version of apt-get modified to work with RPM.</description>
</item>
<item>
<title>1651653237</title>
<link>/notes/1651653237/</link>
<pubDate>Wed, 04 May 2022 08:33:57 +0000</pubDate>
<guid>/notes/1651653237/</guid>
<description>Annoying bug: it&rsquo;s impossible to add a route without a gateway in NetworkManager GUI in Ubuntu 20.04. Fortunately, there is a workaround: use 0.0.0.0 as a gateway.</description>
</item>
<item>
<title>1651607294</title>
<link>/notes/1651607294/</link>
<pubDate>Tue, 03 May 2022 19:48:14 +0000</pubDate>
<guid>/notes/1651607294/</guid>
<description>Systemd allows to pass a single argument to a service. This feature is called Service Templates. It can be used for such applications as OpenVPN (the argument is a connection config name) or PostgreSQL (the argument is a cluster version).</description>
</item>
<item>
<title>1650723317</title>
<link>/notes/1650723317/</link>
<pubDate>Sat, 23 Apr 2022 14:15:17 +0000</pubDate>
<guid>/notes/1650723317/</guid>
<description>Kubuntu 22.04 has libssl 3.0.2, that is not compatible with libssl from old releases, so Viber messenger is not working. It shows an error message &ldquo;No Connection&rdquo; even the other network apps like Firefox work well. I think this bug will be fixed in future Viber versions. For now, it&rsquo;s possible to perform a hotfix:
Install libssl 1.2.1 from Ubuntu 21.10:
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1l-1ubuntu1.2_amd64.deb sudo dpkg -i libssl1.1_1.1.1l-1ubuntu1.2_amd64.deb Preload libssl 1.2.1 into Viber.</description>
</item>
<item>
<title>1650661745</title>
<link>/notes/1650661745/</link>
<pubDate>Fri, 22 Apr 2022 21:09:05 +0000</pubDate>
<guid>/notes/1650661745/</guid>
<description>I&rsquo;ve just updated from Kubuntu 21.04 to Kubuntu 22.04 on my laptop. From the release notes I found no breaking changes, but only minor updates for different programs. Everything works as expected.</description>
</item>
<item>
<title>1650613842</title>
<link>/notes/1650613842/</link>
<pubDate>Fri, 22 Apr 2022 07:50:42 +0000</pubDate>
<guid>/notes/1650613842/</guid>
<description>It&rsquo;s convenient to monitor network activity in the terminal. There are several tools for this task: bmon, slurm or tcptrack. I prefer to use slurm.</description>
</item>
<item>
<title>1650372413</title>
<link>/notes/1650372413/</link>
<pubDate>Tue, 19 Apr 2022 12:46:53 +0000</pubDate>
<guid>/notes/1650372413/</guid>
<description>Some people prefer to use self-hosting services instead of consuming from SaaSS providers. It&rsquo;s useful to look through the comprehensive list of different software which can be hosted on your own server.</description>
</item>
<item>
<title>1650186560</title>
<link>/notes/1650186560/</link>
<pubDate>Sun, 17 Apr 2022 09:09:20 +0000</pubDate>
<guid>/notes/1650186560/</guid>
<description>What’s The Deal With Snap Packages? Snap package system offers a controversial approach for managing software. It&rsquo;s definitely not a silver bullet. Two years ago I wrote an article with such a point of view and today I&rsquo;ve found an article that shares my point of view in some way. It&rsquo;s definitely worth reading. I think the user should control the system and package manager should allow to do it.</description>
</item>
<item>
<title>1650184950</title>
<link>/notes/1650184950/</link>
<pubDate>Sun, 17 Apr 2022 08:42:30 +0000</pubDate>
<guid>/notes/1650184950/</guid>
<description>KernelNewbies is an extremely useful resource for those who want to explore kernel changes but yet not ready for reading lkml.</description>
</item>
<item>
<title>1649939747</title>
<link>/notes/1649939747/</link>
<pubDate>Thu, 14 Apr 2022 12:35:48 +0000</pubDate>
<guid>/notes/1649939747/</guid>
<description>From time to time I have to check my disk usage. It&rsquo;s possible to use df and du for rough estimate, but it&rsquo;s more convenient to have some UI for further analysis. I prefer to use ncdu. Some other tools are described in the article.</description>
</item>
<item>
<title>1649006347</title>
<link>/notes/1649006347/</link>
<pubDate>Sun, 03 Apr 2022 17:19:07 +0000</pubDate>
<guid>/notes/1649006347/</guid>
<description>OpenSnitch is a GNU/Linux port of the Little Snitch application firewall. Tried it today on Kubuntu 21.04. It works as expected, so if you got used to Little Snitch on MacOS and switched to Linux you should definitely give it a chance.</description>
</item>
<item>
<title>1648910196</title>
<link>/notes/1648910196/</link>
<pubDate>Sat, 02 Apr 2022 14:36:36 +0000</pubDate>
<guid>/notes/1648910196/</guid>
<description>Looked at Gitea as a self-hosted alternative for GitHub. It looks nice: a lot of useful features like global code search and template repositories. There is a comprehensive comparison of Gitea to other Git hosting solutions. It can help decide if Gitea is suited for your needs or not.
The only thing that surprised me a bit: the information about package registry is already in the official docs, but PR with this feature was merged only several days ago, so it will be available only in v1.</description>
</item>
<item>
<title>1648796908</title>
<link>/notes/1648796908/</link>
<pubDate>Fri, 01 Apr 2022 07:08:28 +0000</pubDate>
<guid>/notes/1648796908/</guid>
<description>Surprisingly found that Linux has multiple routing tables and set of rules that tell the kernel how to choose the particular table for each packet. There are an article and a reddit discussion explaining this subject.</description>
</item>
<item>
<title>1648670838</title>
<link>/notes/1648670838/</link>
<pubDate>Wed, 30 Mar 2022 20:07:18 +0000</pubDate>
<guid>/notes/1648670838/</guid>
<description>Today I&rsquo;ve created a test stand that consisted of several Debian VMs to learn some basic network management and firewall and VPN configuration. It looks astonishing. My primary job is writing software, that is why I configure Linux networks rarely, and it&rsquo;s a bit complicated for me. Maybe a bit later I&rsquo;ll write an article about all this stuff.</description>
</item>
<item>
<title>1646983221</title>
<link>/notes/1646983221/</link>
<pubDate>Fri, 11 Mar 2022 07:20:21 +0000</pubDate>
<guid>/notes/1646983221/</guid>
<description>Really awesome video about hacking the Nintendo Game &amp; Watch. It uses STM32 locked processor and AES-CTR encrypted flash, but it had not helped, and the console was hacked one day before release.</description>
</item>
<item>
<title>1646669969</title>
<link>/notes/1646669969/</link>
<pubDate>Mon, 07 Mar 2022 16:19:29 +0000</pubDate>
<guid>/notes/1646669969/</guid>
<description>I&rsquo;d used CentOS as a production environment for working projects. Some time ago Red Hat announced its plans to replace stable CentOS 8 with rolling release CentOS Stream. So, CentOS had been replaced with Oracle Linux. Today I&rsquo;ve found that Oracle has its own Linux kernel build that is called Unbreakable Enterprise Kernel. They add some features like Ksplice that look interesting for high-load enterprise platforms.</description>
</item>
<item>
<title>1645598791</title>
<link>/notes/1645598791/</link>
<pubDate>Wed, 23 Feb 2022 06:46:31 +0000</pubDate>
<guid>/notes/1645598791/</guid>
<description>Unexpectedly discovered a lot of paid proprietary apps in snapcraft. I think it&rsquo;s great because Linux users and developers have more choices.</description>
</item>
<item>
<title>1645221056</title>
<link>/notes/1645221056/</link>
<pubDate>Fri, 18 Feb 2022 21:50:56 +0000</pubDate>
<guid>/notes/1645221056/</guid>
<description>Do you feel like you getting old and new technologies do not excite you anymore? Do you think that you have seen most things before? I&rsquo;ve found an interesting discussion on Hacker News about this topic. Different people share their feelings and ways of getting through this period of life.</description>
</item>
<item>
<title>1644658585</title>
<link>/notes/1644658585/</link>
<pubDate>Sat, 12 Feb 2022 09:36:25 +0000</pubDate>
<guid>/notes/1644658585/</guid>
<description>Falling down the rabbit hole of HiDPI screens and fractional scaling on Linux desktops I came across an interesting discussion on Reddit. It contains a lot of useful links that help to form an opinion on the subject.
I found that in the KDE X11 session fractional scaling is implemented on Qt Framework level, so each app scales its output itself. Gnome uses a different technique. It implies rendering everything at an integer factor and then downscaling using a raster operation.</description>
</item>
<item>
<title>1644617329</title>
<link>/notes/1644617329/</link>
<pubDate>Fri, 11 Feb 2022 22:08:49 +0000</pubDate>
<guid>/notes/1644617329/</guid>
<description>The majority of GUI apps on Linux are written using some toolkit like GTK or Qt. Such libs provide high-level abstractions like buttons or labels but the real rendering is executed on the backend like X11 or Wayland. I&rsquo;d never thought about it. Today I&rsquo;ve found that the X11 backend uses Xlib. To understand what level of abstraction GUI libraries provide, you can take a look at this small tutorial. After writing a Hello World with Xlib it becomes clear for me why developers introduce more abstraction layers.</description>
</item>
<item>
<title>1644078399</title>
<link>/notes/1644078399/</link>
<pubDate>Sat, 05 Feb 2022 16:26:39 +0000</pubDate>
<guid>/notes/1644078399/</guid>
<description>I&rsquo;m learning the STM32 platform. The code generation in STM32CubeIDE makes it easier to configure different MCU subsystems and start writing &ldquo;hello world&rdquo; apps. However, it can be difficult to understand how all this magic works. Fortunately, there is a comprehensive explanation in the STM32CubeMX for STM32 configuration and initialization C code generation user manual in section 6.1.</description>
</item>
<item>
<title>1643143370</title>
<link>/notes/1643143370/</link>
<pubDate>Tue, 25 Jan 2022 20:42:50 +0000</pubDate>
<guid>/notes/1643143370/</guid>
<description>To make L2TP/IPsec VPN client work under Kubuntu install network-manager-l2tp package.</description>
</item>
<item>
<title>1643060990</title>
<link>/notes/1643060990/</link>
<pubDate>Mon, 24 Jan 2022 21:49:50 +0000</pubDate>
<guid>/notes/1643060990/</guid>
<description>Today I&rsquo;ve found that youtube-dl downloads video too slow. Switching to yt-dlp helped: 10MiB/s instead of 50KiB/s.</description>
</item>
<item>
<title>How Much Access to RAM Costs</title>
<link>/posts/how-much-access-to-ram-costs/</link>
<pubDate>Mon, 17 Jan 2022 05:00:00 +0000</pubDate>
<guid>/posts/how-much-access-to-ram-costs/</guid>
<description><p>Every computer program uses the main memory (RAM) to store data. RAM is considered to be fast
storage compared even to the fastest NVMe SSD or 100Gbit network. It seems that the RAM speed is
high enough and that is why no optimizations are required: just read or write any memory cell when
the program needs it.</p>
<p>From the famous article
<a href="https://people.freebsd.org/~lstewart/articles/cpumemory.pdf">What Every Programmer Should Know About Memory</a>,
I&rsquo;d found that memory access is more tricky than I used to think about.</p></description>
</item>
<item>
<title>1641756063</title>
<link>/notes/1641756063/</link>
<pubDate>Sun, 09 Jan 2022 19:21:03 +0000</pubDate>
<guid>/notes/1641756063/</guid>
<description>Some time ago I&rsquo;d bought Focusrite Scarlett gen3 audio interface because it&rsquo;s one of the devices that work on Linux out of the box. Unfortunately, some features of the device can be accessed only through Focusrite Control that is not available on Linux. Recently I&rsquo;d found an interesting stream about improving Focusrite Scarlett Driver that shows how to access additional features of the device on the Linux platform. It is worth watching if you are interested in reverse engineering and Linux drivers.</description>
</item>
<item>
<title>1641155092</title>
<link>/notes/1641155092/</link>
<pubDate>Sun, 02 Jan 2022 20:24:52 +0000</pubDate>
<guid>/notes/1641155092/</guid>
<description>I have a network smb share with different videos that I want to watch over network on my devices. Today I&rsquo;d tried to watch a video on my Kubuntu laptop with VLC. It prints errors like:
Your input can&#39;t be opened: VLC is unable to open the MRL &#39;smb://10.0.0.1/Share/video.mkv&#39;. Check the log for details. I&rsquo;d checked logs and found nothing. I&rsquo;d tried to set username and password in the settings as suggested on the Internet with no results.</description>
</item>
<item>
<title>1640974351</title>
<link>/notes/1640974351/</link>
<pubDate>Fri, 31 Dec 2021 18:12:31 +0000</pubDate>
<guid>/notes/1640974351/</guid>
<description>Today I&rsquo;ve found Albert. It&rsquo;s a great Alfred-like app for Linux.</description>
</item>
<item>
<title>Install Ubuntu on External Disk</title>
<link>/posts/install-ubuntu-on-external-disk/</link>
<pubDate>Sat, 25 Dec 2021 10:00:00 +0000</pubDate>
<guid>/posts/install-ubuntu-on-external-disk/</guid>
<description><p>Sometimes it can be useful to have an external HDD or SSD with a familiar environment installed.
With such a device it&rsquo;s possible to check the computer from eBay for GPU or memory faults, restore a
primary OS of the workstation after an unsuccessful software update or just work on another PC with
a familiar OS without any modifications of any software on this machine.</p>
<p>I use Ubuntu 20.04 as a primary OS, that is why in this article, I&rsquo;ll explain how to install it on
an external drive.</p></description>
</item>
<item>
<title>1638453327</title>
<link>/notes/1638453327/</link>
<pubDate>Thu, 02 Dec 2021 13:55:27 +0000</pubDate>
<guid>/notes/1638453327/</guid>
<description>Zoom has become the de facto standard for online communications for me. On Linux Zoom depends on ibus. It looks a bit strange because Zoom works fine without this dependency and in some cases, ibus can make problems. There is a nice article about how to repack Zoom to work without ibus.</description>
</item>
<item>
<title>1638126669</title>
<link>/notes/1638126669/</link>
<pubDate>Sun, 28 Nov 2021 19:11:09 +0000</pubDate>
<guid>/notes/1638126669/</guid>
<description>Recently, I&rsquo;ve found a page, explaining the types of packages in Ubuntu. It gives the information about strengths and weaknesses of each packaging system and discusses what is the best choice for different usage scenarios. The article gives me a lot to think about. Although certain solutions seem controversial to me, the article clarifies the vision of Canonical for package systems.</description>
</item>
<item>
<title>1637445162</title>
<link>/notes/1637445162/</link>
<pubDate>Sat, 20 Nov 2021 21:52:42 +0000</pubDate>
<guid>/notes/1637445162/</guid>
<description>Is it time to switch from Docker to Podman?</description>
</item>
<item>
<title>1637062416</title>
<link>/notes/1637062416/</link>
<pubDate>Tue, 16 Nov 2021 11:33:36 +0000</pubDate>
<guid>/notes/1637062416/</guid>
<description>I have a dual boot setup on my PC: Ubuntu and Windows 10. Sometimes it&rsquo;s required to reload Windows for processing system updates. By default, Grub loads the first system from the list, which is Ubuntu. It&rsquo;s inconvenient. I think it&rsquo;s better to make Grub remember the last loaded OS and start it after reboot.
To achieve this behaviour you need to perform such steps:
Add to /etc/default/grub following strings:</description>
</item>
<item>
<title>1634247448</title>
<link>/notes/1634247448/</link>
<pubDate>Thu, 14 Oct 2021 21:37:28 +0000</pubDate>
<guid>/notes/1634247448/</guid>
<description>Found KDE Timeline. Looks interesting. The times of KDE 3 were really awesome.</description>
</item>
<item>
<title>1632296253</title>
<link>/notes/1632296253/</link>
<pubDate>Wed, 22 Sep 2021 07:37:33 +0000</pubDate>
<guid>/notes/1632296253/</guid>
<description>Recently I&rsquo;d found that ping utility on Ubuntu 20.04 and Ubuntu 21.04 works without root permissions, suid flag, or CAP_NET_RAW capability. In the Kernel documentation it is said that ping uses ICMP_PROTO datagram sockets and it&rsquo;s possible to allow users without root permissions to create such sockets:
ping_group_range - 2 INTEGERS
Restrict ICMP_PROTO datagram sockets to users in the group range. The default is &ldquo;1 0&rdquo;, meaning, that nobody (not even root) may create ping sockets.</description>
</item>
<item>
<title>1631610988</title>
<link>/notes/1631610988/</link>