c.im Open in urlscan Pro
172.67.69.100  Public Scan

Submitted URL: http://www.c.im///@antonz
Effective URL: https://c.im/@antonz
Submission: On October 10 via api from US — Scanned from DE

Form analysis 0 forms found in the DOM

Text Content

Mastodon
Konto erstellenAnmelden

FRÜHERE SUCHANFRAGEN

Keine früheren Suchanfragen

SUCHOPTIONEN

Only available when logged in.
c.im ist Teil eines dezentralisierten sozialen Netzwerks, angetrieben von
Mastodon.

C.IM is a general, mainly English-speaking Mastodon instance.

VERWALTET VON:

C.IM Administrator @admin

SERVERSTATISTIK:

3,4 Tsd.
aktive Profile

--------------------------------------------------------------------------------

Mehr erfahren


c.im: Über · Status · Profilverzeichnis · Datenschutzerklärung

Mastodon: Über · App herunterladen · Tastenkombinationen · Quellcode anzeigen ·
v4.2.13

Zurück
Folgen


ANTON ZHIYANOV@ANTONZ@C.IM

Open source maintainer, book author and blogger.

Beigetreten29. Juli 2023Website https://antonz.orgGitHib
https://github.com/nalgeon
132 Beiträge4 Folge ich288 Follower
BeiträgeBeiträge und AntwortenMedien

Angehefteter Beitrag
8. Juni *

Anton Zhiyanov @antonz

Hey, I'm Anton, and I maintain some open-source projects you might find useful:

Redka
Redis reimplemented with SQLite, available as an in-process library and as a
standalone server.

Codapi
Interactive code examples for product documentation, online courses and blog
posts. Plus a lightweight code sandbox server.

Sqlean
A set of SQLite extensions along with a package manager for installing them (and
other extensions as well).

https://github.com/nalgeon


0

Anton Zhiyanov<p>The SQL Window Functions Explained book is out! It&#39;s a
clear and visual introduction to the subject, taking the reader step-by-step
from the basics to advanced topics.</p><p>— 100+ pictures and GIFs<br />— 56
interactive exercises (with solutions)<br />— 296 pages</p><p><a
href="https://antonz.org/sql-window-functions-book/" target="_blank"
rel="nofollow noopener noreferrer" translate="no"><span
class="invisible">https://</span><span
class="ellipsis">antonz.org/sql-window-function</span><span
class="invisible">s-book/</span></a></p>
Anton Zhiyanov
Anton Zhiyanov<p>There is a rat in Go&#39;s stdlib. And it&#39;s a big
one.</p><p>I&#39;m talking about the big.Rat type, which handles a/b type ratios
without losing precision (see the screenshot).</p>
Anton Zhiyanov<p>While SQLite provides a certain number of date functions, I
wanted something more.</p><p>So I&#39;ve created a high-precision date/time
extension with a structured API and a rich set of functions.</p><p><a
href="https://antonz.org/sqlean-time" target="_blank" rel="nofollow noopener
noreferrer" translate="no"><span class="invisible">https://</span><span
class="">antonz.org/sqlean-time</span><span class="invisible"></span></a></p>
Anton Zhiyanov
Anton Zhiyanov<p>You probably know about Python&#39;s built-in static HTTP
server:</p><p>python -m http.server 8080</p><p>You can reimplement it with Go in
a dozen lines of code, and then run it like this:</p><p>go run http.go 8080</p>
Anton Zhiyanov<p>The SQLite extension hub needs two more extensions to reach
100. Maybe you can write one? 🙃</p><p><a href="https://sqlpkg.org"
target="_blank" rel="nofollow noopener noreferrer" translate="no"><span
class="invisible">https://</span><span class="">sqlpkg.org</span><span
class="invisible"></span></a></p>
Anton Zhiyanov<p>My text SQLite extension didn&#39;t feel complete without
Unicode-aware case functions like upper, lower and title — so I added
them.</p><p><a href="https://github.com/nalgeon/sqlean/releases/0.25.0"
target="_blank" rel="nofollow noopener noreferrer" translate="no"><span
class="invisible">https://</span><span
class="ellipsis">github.com/nalgeon/sqlean/rele</span><span
class="invisible">ases/0.25.0</span></a></p>
Anton Zhiyanov
Anton Zhiyanov<p>I&#39;ve just published two chapters of my interactive book on
Go concurrency, and I invite you to read them!</p><p>If you are new to
concurrency, start with the Goroutines chapter.</p><p>Otherwise, try the Wait
groups chapter, I bet you&#39;ll learn something new.</p><p><a
href="https://antonz.org/go-concurrency" target="_blank" rel="nofollow noopener
noreferrer" translate="no"><span class="invisible">https://</span><span
class="">antonz.org/go-concurrency</span><span class="invisible"></span></a></p>
Anton Zhiyanov<p>One-line recursive directory copy is the kind of change I
welcome with all my heart. What could be more boring (and error-prone) than
manually juggling the file system?</p>
Anton Zhiyanov
Anton Zhiyanov<p>Proper date/time format strings are still my favorite Go
improvement. Generics aren&#39;t even close 😁</p>
Anton Zhiyanov<p>If you&#39;re interested in which Go features appeared in which
versions, I&#39;ve got an article just for you: <a
href="https://antonz.org/which-go" target="_blank" rel="nofollow noopener
noreferrer" translate="no"><span class="invisible">https://</span><span
class="">antonz.org/which-go</span><span class="invisible"></span></a></p>
Anton Zhiyanov<p>Go 1.23 is coming soon, and the official release notes are
pretty dry.</p><p>So I prepared an interactive version with lots of
examples.</p><p><a href="https://antonz.org/go-1-23" target="_blank"
rel="nofollow noopener noreferrer" translate="no"><span
class="invisible">https://</span><span class="">antonz.org/go-1-23</span><span
class="invisible"></span></a></p>
Anton Zhiyanov<p>Many Go concurrency books and tutorials are like: here&#39;s
goroutine, here&#39;s channel, here&#39;s select — use them as you like. Others
just throw concurrent patterns at you without really explaining them.</p><p>This
is not very helpful: the most important thing in concurrent programming is not
pure knowledge, but the understanding and ability to apply concurrency
primitives.</p><p>That&#39;s why I&#39;ve created an interactive book that
teaches Go concurrency from the ground up, with an emphasis on practical
application.</p><p>I&#39;ll be releasing it chapter by chapter over the next few
months, so stay tuned!</p>
Anton Zhiyanov
Anton Zhiyanov<p>Okay, so the Go team really did leave the timer channel
buffered in 1.23 (contrary to what the NewTimer code comment says).</p><p>But
they also hacked the chan type itself to return zero length and capacity for
timer channels.</p><p>What a terrible thing to do.</p>
Anton Zhiyanov<p>So in Go 1.22 and earlier, the Timer channel is buffered. And
starting with 1.23, it&#39;s unbuffered.</p><p>Except the code says it&#39;s
still buffered 🤯</p><p>Also, according to the docs, the timers in 1.22 and 1.23
are very different things, so this is a breaking change.</p><p>Except that
it&#39;s (supposedly) not, because the new timer behavior only takes effect with
&quot;go 1.23&quot; in go.mod.</p><p>This is all very confusing.</p>
Anton Zhiyanov<p>If you use Timer.Reset() in Go, you may be doing it
wrong.</p><p>Even the book &quot;100 Go Mistakes&quot; (which is usually right
about Go nuances) got it wrong.</p><p><a href="https://antonz.org/timer-reset"
target="_blank" rel="nofollow noopener noreferrer" translate="no"><span
class="invisible">https://</span><span
class="">antonz.org/timer-reset</span><span class="invisible"></span></a></p>
Anton Zhiyanov<p>I really like it when Go&#39;s stdlib sources tell me stories
like this. Please do more of them.</p>
Mehr laden
Mastodon

--------------------------------------------------------------------------------

EntdeckenLive-Feeds

--------------------------------------------------------------------------------

Melde dich an, um Profilen oder Hashtags zu folgen, Beiträge zu favorisieren, zu
teilen und auf sie zu antworten. Du kannst auch von deinem Konto aus auf einem
anderen Server interagieren.

Konto erstellenAnmelden

--------------------------------------------------------------------------------

Über




Zum Hochladen hereinziehen