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
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>0xhenrique</title>
<link>http://localhost:1313/categories/</link>
<description>Recent content in Categories on 0xhenrique</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
<atom:link href="http://localhost:1313/categories/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Why I Chose Guix Over Nix</title>
<link>http://localhost:1313/why-i-chose-guix-over-nix/</link>
<pubDate>Mon, 23 Sep 2024 04:35:07 +0100</pubDate>
<guid>http://localhost:1313/why-i-chose-guix-over-nix/</guid>
<description><p>I&rsquo;ve been using NixOS for quite some time, but somehow I ended up with Guix. In this article I will try to write about the reasons why I don&rsquo;t use Nix anymore.</p>
<h2 id="the-emacs--elisp--sicp--scheme-pipeline">The Emacs &gt; Elisp &gt; SICP &gt; Scheme pipeline</h2>
<p><img src="https://i.imgur.com/ouSS2fe.png" alt="SICP_2hu_version">
I honestly don&rsquo;t remember the first time I heard about Emacs, but I remember the first time I tried to use it I got gatekept by the Elisp magecraft.
After that, I spent some days trying to learn some basic concepts of this ancient text editor. Thanks to <a href="https://learnxinyminutes.com/docs/elisp/">https://learnxinyminutes.com/docs/elisp/</a> I was able to write some simple functions to make my Emacs experience smoother. To be honest, I didn&rsquo;t really liked to write Lisp back then, it sucked a lot for me. Even reading simple functions was a hassle since I wasn&rsquo;t used to see through all the parenthesis.
At that time, I already knew about the &lsquo;Structure and Interpretaion of Computer Programs&rsquo; book, but didn&rsquo;t read until then. It was only after seeing the MIT class linked below that I got hooked into computer magecraft:</p>
<p>Lecture 1A: Overview and Introduction to Lisp: <a href="https://www.youtube.com/watch?v=-J_xL4IGhJA">https://www.youtube.com/watch?v=-J_xL4IGhJA</a></p>
<p>That was when I finally decided to read the SICP and, consequently, learn Scheme.</p>
<h2 id="the-nix-language-and-documentation-sucks">The Nix language and documentation sucks</h2>
<p>And that alone is huge win for Guix. Configuring Nix packages was a pain in the ass. Not because you need to set everything up from scratch (that&rsquo;s not even a problem), but because the language is confusing as hell and the documentation doesn&rsquo;t help. It&rsquo;s not a secret, everywhere you go on the internet you will find people complaining about how the Nix language is hard to grasp, but no because it is complex, just because it lacks proper documentation. You can&rsquo;t be sure to find what you&rsquo;re looking for. All the information is fragmented on the internet, there is not a place where you can just find what you&rsquo;re looking for.
At the end of the day you spend more time guessing &ldquo;where the information is&rdquo; rather &ldquo;how to do X&rdquo;.
For instance, here&rsquo;s a comparison between the figlet package ported to Nix and the one ported to Guix:</p>
<p><img src="https://i.imgur.com/9epJ4qs.png" alt="Nix vs Guix"></p>
<p>And no, I&rsquo;m not even talking about how the Nix code is bigger than the Scheme code, that&rsquo;s not really a problem. The thing is, which one is easier to read? Which one is easier to maintain? Which one is more elegant? Which one is more expressive about what it does?
The Nix language was a mistake and I think it is the Achilles&rsquo; heel of the Nix project. I can assure you that most of the people using NixOS right now don&rsquo;t even know how the language works, most of the time tthey just copy and paste code that was already written by some Nix wizard and call it a day. But the moment you need to do something new you&rsquo;re left in the lurch. But I have to admit, most of the Nix wizards are nice people and they will probably help you. The thing is, do you really want to depend so much on the community to get things done?</p>
<p>Guix solves that. It&rsquo;s not like you need to learn a complex language to start with Guix, Scheme is relatively simple and most of the time the docs are everything you need to get up and running. Packaging a program for Guix isn&rsquo;t hard, I plan to make another blog post to delve into that soon.</p>
<h2 id="the-lisp-way-of-life">The LISP way of life</h2>
<p><img src="https://imgs.xkcd.com/comics/lisp_cycles.png" alt="Elegant weapons for a more&hellip; civilized age"></p>
<p>There are some reasons why some Emacs wizards stick to LISP: metaprogramming, macros, higher-order functions, recursion etc. Not only that, LISP is a crucial part of computer science history. It helps you understand why things are the way they are. It helps you understand mathematical concepts. It helps you understand functional programming. It helps you understand core concepts of programming, hence Scheme is used as the language for the SICP book.</p>
<p>And yes, Nix also supports abstractions, but Guix&rsquo;s use of Scheme provides more powerful and general ways to define those abstractions.
Since all the Guix configuration and packaging logic is expressed in Guile Scheme, you can deeply customise and program your system at at level.
For instance, you can define custom operating system services, package definitions, or system configuration options entirely in Guile Scheme.
You can&rsquo;t really say the same for NixOS. The language itself is more limited to package definitions, which makes it harder to set system-level configurations. If you want to customise deeply at system-level you will probably need external scripting or some other configuration management tools.</p>
<p>Scheme has a long history in theoretical computer science and has been used for decades in academic research and programming language design. Using Scheme to configure your system basically gives your superpowers, it&rsquo;s pretty much like standing on the shoulders of giants.
To be honest I don&rsquo;t see a point in learning such a complex language as Nix just to define packages. Scheme gives you so much potential for broader use cases other than package definitions. System configuration, scripting, automation, general programming, you name it. Even if you don&rsquo;t plan to write packages for Guix you still can use Scheme for lots of other tasks, specially if your using the Guix operating system.</p>
<h2 id="guix-is-free-as-in-freedom">Guix is Free (as in Freedom)</h2>
<p>Guix places more emphasis on software freedom and adheres to the FSF standards for ethical distros.</p>
<p>Yes, I do use some proprietary software, but that&rsquo;s something I want to change. I would say that the only reason I still use the Linux kernel is because of the lack of free bluetooth drivers for my laptop. That&rsquo;s something I also want to change. I made a mistake buying a bluetooth headphone, specially because I already knew that there were no free bluetooth drivers for me. I hope to abandon Linux and its proprietary binaries as soon as possible. Software freedom might be hard to achieve, but freedom in general isn&rsquo;t easy to achieve.</p>
<p><img src="https://preview.redd.it/7ozal346p6kz.png?auto=webp&amp;s=f1058e3a298c411182de3a9bd788f65cec5d1bc1" alt="RMS_aboslutely_proprietary"></p>
</description>
</item>
<item>
<title>Guix Wallpapers</title>
<link>http://localhost:1313/guix-wallpapers/</link>
<pubDate>Fri, 20 Sep 2024 20:37:15 +0100</pubDate>
<guid>http://localhost:1313/guix-wallpapers/</guid>
<description><p>I&rsquo;ve been using Guix for quite some time now. It&rsquo;s been a great experience so far!
Here are some wallpapers I&rsquo;ve been collecting for my Guix desktop.</p>
<p>I think it goes without saying that Suika is the perfect candidate to be the Guix mascot .</p>
<p><img src="https://i.imgur.com/se5Qk6P.png" alt="1st pape">
<img src="https://i.imgur.com/bYxUNO7.png" alt="2st pape">
<img src="https://i.imgur.com/KT1Uo39.png" alt="3st pape">
<img src="https://i.imgur.com/LuEaj38.png" alt="4st pape">
<img src="https://i.imgur.com/IGCGrEI.png" alt="5st pape">
<img src="https://i.imgur.com/OyOJUyY.png" alt="6st pape">
<img src="https://i.imgur.com/eb0qu4z.png" alt="7st pape">
<img src="https://i.imgur.com/UyKmkHr.png" alt="8st pape">
<img src="https://i.imgur.com/yXVVoH8.png" alt="9st pape"></p>
</description>
</item>
<item>
<title>Nazare Beach</title>
<link>http://localhost:1313/nazare-beach/</link>
<pubDate>Sat, 17 Aug 2024 07:44:45 +0100</pubDate>
<guid>http://localhost:1313/nazare-beach/</guid>
<description><p>I visited Nazaré Beach last year (2023). Such a lovely place.
Shame on me for not taking my camera with me that day. I&rsquo;m not a fan of smartphone cameras to be honest. Still, I couldn&rsquo;t let the opportunity pass. Here are some photos I took that day.</p>
<p><img src="https://i.imgur.com/ATjnpyl.jpeg" alt="1st photo"></p>
<p>According to Wikipedia, Nazaré is one of the most traditional Portuguese fishing villages, having the most popular bathing beach on the Portuguese west coast, where you can still find, on the sand, some women dressed in the traditional costume of seven skirts, taking care of the fish that dries in the sun, lined up on stakes.</p>
<p><img src="https://i.imgur.com/GwZIh3p.jpeg" alt="2nd photo"></p>
<p>I plan to go back there in the winter, but this time I will remember to take my camera with me. I have an 18-55 and a 200mm, but I believe I will get better photos with the 200mm, especially in the higher parts. Not to mention that I will be able to aim further without losing too much sharpness.</p>
<p><img src="https://i.imgur.com/hxY0rcS.jpeg" alt="3rd photo">
<img src="https://i.imgur.com/8uRNHtF.jpeg" alt="4th photo"></p>
</description>
</item>
<item>
<title>Monogatari - Text Editor in Python</title>
<link>http://localhost:1313/monogatari/</link>
<pubDate>Sat, 17 Aug 2024 07:44:33 +0100</pubDate>
<guid>http://localhost:1313/monogatari/</guid>
<description><h1 id="monogatari---text-editorhttpsgithubcomhenrique-marques-vsoftmonogatari"><a href="https://github.com/henrique-marques-vsoft/monogatari">MONOGATARI - Text Editor</a></h1>
<p><img src="https://raw.githubusercontent.com/henrique-marques-vsoft/monogatari/master/pics/shinobu.gif" alt="monogatari-movie scene shinobu kokorowatari"></p>
<p>Monogatari is a text editor built with Python using the Tkinter GUI library.</p>
<h2 id="installation-and-usage">Installation and usage</h2>
<p>Assuming you already have Python installed in your machine:</p>
<pre tabindex="0"><code>git clone [email protected]:all123all/monogatari.git
cd monogatari
python monogatari.py
</code></pre><p>If you&rsquo;re using Linux you probably will need to install tk manually:</p>
<pre tabindex="0"><code>//Arch based distros
$ sudo pacman -S tk
//For Ubuntu
$ sudo apt-get install tk
</code></pre><h2 id="goals">Goals</h2>
<ul>
<li><input disabled="" type="checkbox"> Basic text editor functionalities (create file, open file, exit etc.)</li>
<li><input disabled="" type="checkbox"> Black background and a colorpicker option to choose another color</li>
<li><input disabled="" type="checkbox"> Test routine for the basic functionalities</li>
<li><input disabled="" type="checkbox"> Release a package</li>
<li><input disabled="" type="checkbox"> The close function is being called even when the file isn&rsquo;t modified</li>
</ul>
<h2 id="contribute-to-monogatari---text-editor">Contribute to MONOGATARI - Text Editor</h2>
<ul>
<li>Click the fork button on top right</li>
<li>Git clone your fork</li>
<li>Connect with my repo:</li>
</ul>
<pre tabindex="0"><code>$ git remote add all123all git://github.com/all123all/monogatari
$ git remote -v
</code></pre><p>You are now ready to start to code! Just do as always:</p>
<pre tabindex="0"><code>$ git add .
$ git commit -m &#34;fix: something that was fixed&#34;
$ git push
</code></pre><p>Then you can create a pull request right here on Github. Just go to the Pull Requests tab and select <code>New pull request</code> button to do so.</p>
<h2 id="screenshots">Screenshots</h2>
<p><img src="https://raw.githubusercontent.com/henrique-marques-vsoft/monogatari/master/pics/print.png" alt="monogatari on i3wm screenshot"></p>
</description>
</item>
<item>
<title>Lum - Linux Ubiquitous Marker</title>
<link>http://localhost:1313/lum/</link>
<pubDate>Sat, 17 Aug 2024 07:44:26 +0100</pubDate>
<guid>http://localhost:1313/lum/</guid>
<description><p>Link: <a href="https://github.com/henrique-marques-vsoft/lum">https://github.com/henrique-marques-vsoft/lum</a></p>
<p>Lum is a project I started as a way to escape the feeling of being tied to the web-browser when it comes to bookmarks.
The objective is relatively simple, to have access to my bookmarks outside of the browser. This way I could call my bookmarks from anywhere on the computer, whether from Vim, Emacs, the browser itself, the window manager or wherever.
I&rsquo;m still not sure if I&rsquo;m going to turn this project into a CLI tool or a library. I still need to try to integrate Lum with some other tool and evaluate which points I failed, which ones I need to improve and where I got things right.
I also wanted to have contact with Rust in practice. I have some things to say about the Rust language, but I think that will be for another post on this blog.</p>
<p>For now, I&rsquo;m using JSON to save the bookmarks, but to be honest I don&rsquo;t know if I&rsquo;ll keep this format until the end.
I&rsquo;m still evaluating whether this would be the most practical and quickest way, considering that I already accumulated more than 12 thousand bookmarks at the height of my NEET time.
I don&rsquo;t think parsing 12 thousand objects in JSON is efficient, but it&rsquo;s something I still need to test in practice.</p>
</description>
</item>
<item>
<title>Internet Lurk Compilation #1</title>
<link>http://localhost:1313/internet-lurk-compilation/</link>
<pubDate>Sat, 17 Aug 2024 07:44:17 +0100</pubDate>
<guid>http://localhost:1313/internet-lurk-compilation/</guid>
<description><h2 id="general-findings">General Findings</h2>
<ul>
<li>Pure gold from the 90s: <a href="https://lunduke.substack.com/p/the-computers-used-to-do-3d-animation">https://lunduke.substack.com/p/the-computers-used-to-do-3d-animation</a></li>
<li>Symbolics Internet Museum: <a href="https://symbolics.com/museum/">https://symbolics.com/museum/</a></li>
<li>What is the relationship between Apple and Serial Experiments Lain? <a href="https://www.cjas.org/~leng/apple-lain.htm">https://www.cjas.org/~leng/apple-lain.htm</a></li>
<li>The Cornell Anime Club: <a href="https://www.cjas.org/">https://www.cjas.org/</a></li>
<li>Appearances of MIT in Anime: <a href="https://anime.mit.edu/resources/mit_in_anime">https://anime.mit.edu/resources/mit_in_anime</a></li>
<li>How Emacs got into Tron: Legacy: <a href="https://boingboing.net/2011/04/06/how-emacs-got-into-t.html">https://boingboing.net/2011/04/06/how-emacs-got-into-t.html</a></li>
<li>The Jargon File: <a href="http://www.catb.org/jargon/">http://www.catb.org/jargon/</a></li>
</ul>
<h2 id="neocities">Neocities</h2>
<ul>
<li>Lainzine (Lain Magazine): <a href="https://lainzine.org/">https://lainzine.org/</a></li>
<li>About Software Privacy and other topics: <a href="https://digdeeper.neocities.org/">https://digdeeper.neocities.org/</a></li>
<li>Reminds of Fauux: <a href="https://blackwings.neocities.org/">https://blackwings.neocities.org/</a></li>
<li>Fauux: <a href="https://fauux.neocities.org/">https://fauux.neocities.org/</a></li>
<li>Tatsumoto&rsquo;s guide to Nihongo: <a href="https://tatsumoto.neocities.org/">https://tatsumoto.neocities.org/</a></li>
</ul>
<h2 id="internet-archive-findings">Internet Archive Findings</h2>
<ul>
<li>Oh! PC (Jul 01 1990) [Content in Japanese]: <a href="https://archive.org/details/oh-pc-issue-127-jul-01-1990/Oh%21%20PC%20Issue%20127%20%28Jul%2001%201990%29/mode/2up">https://archive.org/details/oh-pc-issue-127-jul-01-1990/Oh%21%20PC%20Issue%20127%20%28Jul%2001%201990%29/mode/2up</a></li>
<li>Comptiq Manazine [Content in Japanese]: <a href="https://archive.org/search?query=comptiq">https://archive.org/search?query=comptiq</a></li>
<li>The Symbol of the Knights of Eastern Calculus: <a href="https://web.archive.org/web/20200121124624/http://www.cjas.org/~leng/knights.htm">https://web.archive.org/web/20200121124624/http://www.cjas.org/~leng/knights.htm</a></li>
<li>MSX Magazine (1985-02) [Content in Japanese]: <a href="https://archive.org/details/msx-magazine-1985-02-ascii-jp/mode/2up">https://archive.org/details/msx-magazine-1985-02-ascii-jp/mode/2up</a></li>
</ul>
<h2 id="websites-i-visit-from-time-to-time">Websites I visit from time to time</h2>
<ul>
<li>A <del>modern</del> Javascript approach to SICP: <a href="https://sicp.sourceacademy.org/">https://sicp.sourceacademy.org/</a></li>
<li>A blog by Sam Greydanus: <a href="https://greydanus.github.io/">https://greydanus.github.io/</a></li>
<li>Xah Lee (he&rsquo;s also one of the minds behind ergoemacs and xah-fly-keys): <a href="https://xahlee.info/">https://xahlee.info/</a></li>
<li>Sasha Chua blog: <a href="https://sachachua.com/blog/">https://sachachua.com/blog/</a></li>
<li>Lunduke Journal: <a href="https://lunduke.substack.com/">https://lunduke.substack.com/</a></li>
</ul>
<p><strong>If you find a broken link or a website that shares things that are clearly illegal, please let me know by email so I can remove it: <a href="mailto:[email protected]">[email protected]</a></strong>.</p>
<p><strong>Also, if you don&rsquo;t want me to list your website here, feel free to contact me via email so I can remove it.</strong></p>
</description>
</item>
<item>
<title>About</title>
<link>http://localhost:1313/about/</link>
<pubDate>Sat, 17 Aug 2024 07:42:34 +0100</pubDate>
<guid>http://localhost:1313/about/</guid>
<description><h1 id="whois">whois</h1>
<p>Hello there! You can call me Henrique.
The main purpose of this website is to share some interesting things I find on the world wide web and the projects of mine.
Some of the stuff I work on <a href="https://github.com/henrique-marques-vsoft">Github</a>.</p>
<h2 id="my-setup">My setup</h2>
<p>Nothing fancy to be honest. Since I spend most of my time inside Emacs, I don&rsquo;t really <em>rice</em> my computer.
I&rsquo;ve been through that phase though. Remaping keybindings, customising themes, colourschemes etc.
Today things are simpler for me. Just my Emacs config and that&rsquo;s it.</p>
<p>Here are some of my configs:</p>
<ul>
<li>Laptop: Thinkpad T480</li>
<li>OS: GNU Guix</li>
<li>Shell: bash</li>
<li>Resolution: 1920x1080 (1 monitor is enough for me)</li>
<li>WM: EXWM</li>
<li>Terminal: eshell/vterm/kitty</li>
<li>CPU: Intel i5-8350U (8) @ 3.600GHz</li>
<li>GPU: 😕</li>
<li>RAM: 24Gb</li>
<li>Text editor: Emacs (29)</li>
</ul>
<h2 id="keyboards">Keyboards</h2>
<h3 id="the-charybdis-by-bastard-keyboards">The Charybdis by Bastard Keyboards</h3>
<!-- raw HTML omitted -->
<p>Right now I&rsquo;m using the Charybdis. It simply feels &ldquo;correct&rdquo; to type with it.<br>
The only <em>drawback</em> from this keyboard is the price, but I don&rsquo;t think you will find a dactyl for a cheap price.<br>
As far as I know, there&rsquo;s no company mass producing that type of keyboard.<br>
But at the end I think it&rsquo;s worth it, at least for me it is.</p>
<h3 id="the-sofle-v1-by-mechboards-uk">The Sofle V1 by Mechboards UK</h3>
<!-- raw HTML omitted -->
<p>The other one I have (although don&rsquo;t use very much anymore) is the Sofle V1 that I bought from Mechboards UK.
It was very nice to type on a <em>low profile</em> keyboard. It&rsquo;s not so expansive as the Charybdis.</p>
</description>
</item>
</channel>
</rss>
|