<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Zen1th</title><link>https://zen1th.me/</link><description>Recent content on Zen1th</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 19 Apr 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://zen1th.me/index.xml" rel="self" type="application/rss+xml"/><item><title>String types considered harmful</title><link>https://zen1th.me/posts/strings-are-evil/</link><pubDate>Sat, 19 Apr 2025 00:00:00 +0000</pubDate><guid>https://zen1th.me/posts/strings-are-evil/</guid><description>Unicode is harder than it looks</description></item><item><title>Le trottoir</title><link>https://zen1th.me/posts/le-trottoir/</link><pubDate>Fri, 04 Apr 2025 20:15:00 +0000</pubDate><guid>https://zen1th.me/posts/le-trottoir/</guid><description>&lt;p&gt;&lt;em&gt;adapté de quelque chose écrit il y a plus de deux ans&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Il est humble. Il s&amp;rsquo;écrase sous le pas de passants. Quand on est un trottoir, on ne s&amp;rsquo;occupe pas de
qui nous marche dessus, car on a un secret. On représente une partie de la vie de chacun. Construit
par des ouvriers, organisé par la mairie, on a été pavé par tant de
parents et pourtant pris au piège à rester fixe. Sûrement dallé, roue à la main, il est avec nous
depuis des centaines d&amp;rsquo;années pour certains, ou, l&amp;rsquo;instant d&amp;rsquo;une simple vie humaine, pour d&amp;rsquo;autres.&lt;/p&gt;</description></item><item><title>It's Impossible To Know The Future</title><link>https://zen1th.me/posts/future/</link><pubDate>Tue, 31 Dec 2024 12:30:00 +0200</pubDate><guid>https://zen1th.me/posts/future/</guid><description>&lt;p&gt;The idea that it is impossible to know the future is quite a simple fact. Yet, I&amp;rsquo;ve wondered what a
definite proof of this would look like. Can it be done?&lt;/p&gt;
&lt;h1 id="simulations"&gt;Simulations&lt;/h1&gt;
&lt;p&gt;If we wanted to predict the future, one way would be to build a simulation of the universe, and
simulate the universe up to some time in the future. But for this to be useful, it would need to
go fast enough (no need to predict what happens in 2030 if we need to wait until 2040 to compute
the simulation).&lt;/p&gt;</description></item><item><title>Why does native UI still matter?</title><link>https://zen1th.me/posts/native-ui-still-matters/</link><pubDate>Tue, 28 Nov 2023 18:49:06 +0100</pubDate><guid>https://zen1th.me/posts/native-ui-still-matters/</guid><description>&lt;p&gt;In this day and age, most software being created have a completely different visual style from each other. It&amp;rsquo;s often the case that Electron is used and, because you have to re-implement all widgets anyways (a problem which has been solved since the 90s, but not for HTML), you end up going for your own unique style (notwithstanding web GUI frameworks)&lt;/p&gt;
&lt;h1 id="but-what-is-native-ui"&gt;But what IS native UI?&lt;/h1&gt;
&lt;p&gt;The way I would define it is an UI that&amp;rsquo;s used everywhere in an operating system. It&amp;rsquo;s the one that the user is the most familiar
with. It doesn&amp;rsquo;t just include the paradigms (like having a text box) but also the specifics (like the keyboard shortcuts
of a text box)&lt;/p&gt;</description></item><item><title>The Muse-sampleganger</title><link>https://zen1th.me/posts/the-musesampleganger/</link><pubDate>Wed, 21 Dec 2022 13:00:53 +0100</pubDate><guid>https://zen1th.me/posts/the-musesampleganger/</guid><description>&lt;p&gt;One of MuseScore 4&amp;rsquo;s biggest features is by far Muse Sounds.
By installing an external app named Muse Hub, you get access to much higher sound quality within MuseScore.&lt;/p&gt;
&lt;p&gt;Common sense would be that they made that using some sort of standard interface for audio renderers, except they didn&amp;rsquo;t. For context, Muse Hub is a proprietary closed-source app even though MuseScore&amp;rsquo;s main strength is open-source.&lt;br&gt;
This feels like some sort of back-stabbing to its contributors, but anyway.&lt;/p&gt;</description></item><item><title/><link>https://zen1th.me/zig-book/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://zen1th.me/zig-book/</guid><description>&lt;!DOCTYPE html&gt;
&lt;html lang="en-US"&gt;
	&lt;head&gt;
		&lt;meta charset="utf-8" /&gt;
		&lt;meta name="generator" content="pandoc" /&gt;
		&lt;meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /&gt;
		&lt;meta name="author" content="zenith391" /&gt;
		&lt;title&gt;Discovering The Zig Programming Language&lt;/title&gt;
		&lt;style&gt;
			code{white-space: pre-wrap;}
 span.smallcaps{font-variant: small-caps;}
 span.underline{text-decoration: underline;}
 div.column{display: inline-block; vertical-align: top; width: 50%;}
 div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
 ul.task-list{list-style: none;}
 pre &gt; code.sourceCode { white-space: pre; position: relative; }
 pre &gt; code.sourceCode &gt; span { display: inline-block; line-height: 1.25; }
 pre &gt; code.sourceCode &gt; span:empty { height: 1.2em; }
 code.sourceCode &gt; span { color: inherit; text-decoration: inherit; }
 div.sourceCode { margin: 1em 0; }
 pre.sourceCode { margin: 0; }
 @media screen {
 div.sourceCode { overflow: auto; }
 }
 @media print {
 pre &gt; code.sourceCode { white-space: pre-wrap; }
 pre &gt; code.sourceCode &gt; span { text-indent: -5em; padding-left: 5em; }
 }
 pre.numberSource code
 { counter-reset: source-line 0; }
 pre.numberSource code &gt; span
 { position: relative; left: -4em; counter-increment: source-line; }
 pre.numberSource code &gt; span &gt; a:first-child::before
 { content: counter(source-line);
 position: relative; left: -1em; text-align: right; vertical-align: baseline;
 border: none; display: inline-block;
 -webkit-touch-callout: none; -webkit-user-select: none;
 -khtml-user-select: none; -moz-user-select: none;
 -ms-user-select: none; user-select: none;
 padding: 0 4px; width: 4em;
 color: #aaaaaa;
 }
 pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
 div.sourceCode
 { background-color: #f8f8f8; }
 @media screen {
 pre &gt; code.sourceCode &gt; span &gt; a:first-child::before { text-decoration: underline; }
 }
 code span.al { color: #ef2929; } /* Alert */
 code span.an { color: #8f5902; font-weight: bold; font-style: italic; } /* Annotation */
 code span.at { color: #c4a000; } /* Attribute */
 code span.bn { color: #0000cf; } /* BaseN */
 code span.cf { color: #204a87; font-weight: bold; } /* ControlFlow */
 code span.ch { color: #4e9a06; } /* Char */
 code span.cn { color: #000000; } /* Constant */
 code span.co { color: #8f5902; font-style: italic; } /* Comment */
 code span.cv { color: #8f5902; font-weight: bold; font-style: italic; } /* CommentVar */
 code span.do { color: #8f5902; font-weight: bold; font-style: italic; } /* Documentation */
 code span.dt { color: #204a87; } /* DataType */
 code span.dv { color: #0000cf; } /* DecVal */
 code span.er { color: #a40000; font-weight: bold; } /* Error */
 code span.ex { } /* Extension */
 code span.fl { color: #0000cf; } /* Float */
 code span.fu { color: #000000; } /* Function */
 code span.im { } /* Import */
 code span.in { color: #8f5902; font-weight: bold; font-style: italic; } /* Information */
 code span.kw { color: #204a87; font-weight: bold; } /* Keyword */
 code span.op { color: #ce5c00; font-weight: bold; } /* Operator */
 code span.ot { color: #8f5902; } /* Other */
 code span.pp { color: #8f5902; font-style: italic; } /* Preprocessor */
 code span.sc { color: #000000; } /* SpecialChar */
 code span.ss { color: #4e9a06; } /* SpecialString */
 code span.st { color: #4e9a06; } /* String */
 code span.va { color: #000000; } /* Variable */
 code span.vs { color: #4e9a06; } /* VerbatimString */
 code span.wa { color: #8f5902; font-weight: bold; font-style: italic; } /* Warning */
			@font-face {
				font-family: Inter;
				src: url(./Inter.woff);
			}
			body {
				font-family: "Noto Sans", sans-serif;
				font-size: 13pt;
				max-width: 800px;
				margin: auto;
			}
			code {
				font-family: "Fira Code", monospace;
				font-size: 0.9em;
			}
			p &gt; code {
				background-color: #FFCCCC;
				border-radius: 5px;
			}
			figcaption {
				text-align: center;
			}
			.box-information {
				background-color: rgba(0, 0, 255, 0.2);
				padding: 1em 1em 1em 1em;
				margin: 0 1em 0 1em;
			}
			.box-information::before {
				content: "Information";
				font-weight: bold;
			}

			.box-warning {
				background-color: rgba(255, 255, 0, 0.2);
				padding: 1em 1em 1em 1em;
				margin: 0 1em 0 1em;
			}
			.box-warning::before {
				content: "Warning";
				font-weight: bold;
			}


 .zig-example {
				display: flex;
				justify-content: center;
				align-items: center;
				height: 100%;
			}

 .zig-example &gt; pre {
				min-width: 50vw;
			}

			@media (prefers-color-scheme: dark) {
				body {
					color: #bbbbbb;
					background-color: #111111;
				}
				a {
					color: #ffffff;
				}
				div.sourceCode, pre {
					margin-left: 3em; /* put them apart more due to the higher contrast */
					background-color: #ddd;
					color: initial;
				}
				.box-information {
					background-color: rgba(20, 20, 255, 0.5);
				}
			}
		&lt;/style&gt;
		&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/prism.min.js" data-manual&gt;&lt;/script&gt;
		&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/components/prism-css.min.js"&gt;&lt;/script&gt;
		&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/components/prism-zig.min.js"&gt;&lt;/script&gt;
		&lt;link href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/themes/prism-okaidia.min.css" rel="stylesheet" /&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;p&gt;&lt;b&gt;Disclaimer: This book is in pre-pre-beta and the quality might not be very good. So beware.&lt;/b&gt;&lt;/p&gt;</description></item></channel></rss>